A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Projetos de Bancos de Dados Relacionais Álvaro Vinícius de Souza Coêlho

Apresentações semelhantes


Apresentação em tema: "Projetos de Bancos de Dados Relacionais Álvaro Vinícius de Souza Coêlho"— Transcrição da apresentação:

1 Projetos de Bancos de Dados Relacionais Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

2 Bancos de Dados Relacionais Um conjunto de dados organizados em Tabelas e estruturas auxiliares –Tabelas: Linhas e Colunas –Estruturas Auxiliares: Para acesso rápido a dados: Clusters, Índices, Segmentos de RollBack. As estruturas auxiliares são concebidas para o melhor funcionamento do banco – Administração (BDA)

3 Bancos de Dados Relacionais Projetando a estrutura de tabelas A partir do MER A princípio, deseja-se que toda entidade seja uma tabela –Atributos  Colunas –Linhas  Instâncias

4 Bancos de Dados Relacionais Por exemplo, a entidade Aluno se torna uma tabela da seguinte forma: Aluno -Matrícula -Nome -Endereço Create Table Aluno ( matricula char(11), nome varchar2(50), endereçovarchar2(100) )

5 Bancos de Dados Relacionais Tabelas, em geral, devem ter uma ou mais colunas escolhidas como chave primária –Chave Primária: Coluna cujo valor não pode se repetir numa tabela, e que identifica unicamente uma instância –Não pode ser nulo –Pode ser natural ou artificialmente construída para o sistema

6 Bancos de Dados Relacionais Por exemplo, numa tabela Automóvel a chave primária pode ser a coluna Placa ou Renavan a depender da abordagem. Numa tabela de Matrículas, a identificação de uma instância só poderá ser feita sabendo-se o aluno e a turma em que ele está matriculado

7 Bancos de Dados Relacionais Escolhida a chave primária de cada tabela, alguns aspectos devem ser observado a respeito dos relacionamentos: –Relacionamentos 1 para 1 – Uma chave segue, como única (alternativa) em outra tabela –Relacionamentos 1 para N – Uma chave segue para outra tabela –Relacionamentos N para N – Uma nova tabela é criada

8 Bancos de Dados Relacionais Relacionamentos 1 para 1 Uma instância de uma entidade relaciona-se a uma e somente uma instância de outra e a recíproca é verdadeira Por exemplo: Cliente e Cônjuge

9 Bancos de Dados Relacionais Relacionamentos deste tipo são feitos com: –Cópia da chave primária de uma tabela para a outra (surge uma nova coluna dita chave estrangeira) –Restrição de Unicidade da Chave Estrangeira

10 Bancos de Dados Relacionais Note, no exemplo, que se a chave estrangeira não for única (unique, em SQL) a relação não é de 1 para 1 MatrículaNome P01José P02Carlos P03Maria P04Éverton CodMáquinaOperador M01OlivettiP01 M02XeroxP03 M03HPP02 M04IBMP04

11 Bancos de Dados Relacionais Obrigatoriedade: Deve-se permitir ou não que a chave estrangeira seja nula a depender da obrigatoriedade ou não da relação MatrículaNome P01José P02Carlos P03Maria P04Éverton CodMáquinaOperador M01Olivetti M02XeroxP03 M03HP M04IBMP04

12 Bancos de Dados Relacionais Deve-se escolher como tabela mandatória (que exporta a chave) a que possui maior independência semântica –O lado não-obrigatório da relação (se houver) –A entidade menos dependente da outra, caso contrário

13 Bancos de Dados Relacionais Relacionamentos 1 para N Uma instância de uma entidade se relaciona com várias instâncias da outra, mas a recíproca não é verdadeira Por exemplo Automóvel e Proprietário

14 Bancos de Dados Relacionais Relacionamentos deste tipo são feitos com: –Cópia da chave primária de uma tabela para a outra (surge uma nova coluna dita chave estrangeira) –Sem restrições de unicidade

15 Bancos de Dados Relacionais Note, no exemplo, que se a chave estrangeira for única a relação não é de 1 para N MatrículaProfessor P01Degas P02Diego P03Vânia CodDisciplinaProfessor D01BDP01 D02IAP02 D03LabBDP01 D04RecCompP03

16 Bancos de Dados Relacionais Obrigatoriedade: Deve-se permitir ou não que a chave estrangeira seja nula a depender da obrigatoriedade ou não da relação MatrículaProfessor P01Degas P02Diego P03Vânia CodDisciplinaProfessor D01BDP01 D02IAP02 D03LabBD D04RecCompP03

17 Bancos de Dados Relacionais Observações gerais para relacionamentos 1 para 1 e 1 para N –A tabela que exporta a chave nunca é obrigatoriamente relacionada (a não ser via programação) –A tabela que recebe a chave estrangeira pode ser dependente da relação se esta coluna for obrigatória

18 Bancos de Dados Relacionais Relações de dependência ocorrem quando –Uma instância de uma entidade é parte de outra, e não tem sentido sem ela – Setor e Empresa –Uma instância de uma entidade não pode existir sem a ocorrência de outra – Automóvel e Proprietário –Boas modelagens especificam casos assim

19 Bancos de Dados Relacionais Relacionamentos N para N Uma instância de uma entidade se relaciona com várias instâncias da outra, e a recíproca é verdadeira Por exemplo Cliente e Conta

20 Bancos de Dados Relacionais Relacionamentos desse tipo são feitos com –Criação de uma tabela (chamada tabela- relacionamento) –Esta tabela recebe chaves estrangeiras das duas entidades –Restringindo-se a unicidade (chave primária) ao par das chaves relacionadas (talvez com mais alguma(s) coluna(s))

21 Bancos de Dados Relacionais Por exemplo: CodDescrição P01Biela P02Virabrequim P03Pistão P04Mancal CodDescrição F01GP Peças F02MM Motores F03KV Válvulas PçForn P01F01 P02F02 P03F01 P04F02 P01F02 P03F02 P04F01

22 Bancos de Dados Relacionais Relações mostradas: –O fornecedor GP Peças fornece Biela, Pistão e Mancal –O fornecedor MM Motores fornece Biela, Virabrequim, Pistão e Mancal –KV Válvulas não oferece nada –Biela, Pistão e Mancal são ofertados por MM Motores e GP Peças –Virabrequim é ofertado apenas por MM Motores

23 Bancos de Dados Relacionais No exemplo anterior a chave primária da tabela-relacionamento é composta pelas duas chaves estrangeiras que ela recebe. Com efeito não há sentido registrar-se mais de uma vez que MM Motores oferece Biela

24 Bancos de Dados Relacionais Em alguns casos, porém, é necessário que a chave primária de tabelas deste tipo abranja mais que as chaves estrangeiras:

25 Bancos de Dados Relacionais Exemplo: MatAluno M01José M02Maria M03Julio M04Esmeralda CodDisciplina D01IA D02BD D03Redes MatDiscNotaSem M01D014.500.1 M02D0210.000.2 M01D017.201.2 M02D039.001.1 M01D027.000.2 M03D014.501.2 M03D035.002.1 M02D038.001.2

26 Bancos de Dados Relacionais A chave primária não pode ser o par (Mat, Disc) porque ele pode se repetir até que o aluno tenha uma nota maior ou igual a cinco. –Não pode igualmente ser a tripla (Mat, Disc, Nota) –Pode ser (Mat, Disc, Sem) ou as quatro colunas (por considerações de performance)

27 Bancos de Dados Relacionais Atributos de Relacionamentos –Muitas vezes os relacionamentos possuem atributos –Nos casos de relacionamentos 1 para 1 e 1 para N os atributos devem seguir o caminho da chave, e migrar para uma das tabelas –Nos casos de relacionamentos N para N estes ficarão alojados na tabela-relacionamento – e possivelmente farão parte da chave primária

28 Bancos de Dados Relacionais Relacionamentos de Agregação Alguns relacionamentos especiais entre entidades, chamados de Agregação ou Todo-Parte, indicam que uma entidade é parte de outra –Por exemplo, no domínio do RH de uma universidade, Professor e Departamento.

29 Bancos de Dados Relacionais Estes relacionamentos são modelados como uma relação de 1 para N, sendo mandatória (que exporta a chave) a tabela Todo. –Professor tem uma coluna indicando o departamento onde está alocado

30 Bancos de Dados Relacionais Caso se estabeleça uma relação de dependência da parte com o todo (uma classe não pode existir sem a outra) deve-se exigir a obrigatoriedade da chave estrangeira –Ex: Vinho e Vinícola

31 Bancos de Dados Relacionais Relacionamentos de Generalização Muitas vezes as entidades se associam formando uma relação de Generalização ou Especialização (ou Supertipos e Subtipos) Neste caso há uma entidade que contém os atributos que serão compartilhados pelas demais

32 Bancos de Dados Relacionais Por Exemplo as entidades Automóvel, Automóvel Passeio e Automóvel Utilitário Automóvel Passeio Automóvel Utilitário Automóvel

33 Bancos de Dados Relacionais Neste exemplo, os atributos que AutomóvelPasseio e AutomóvelUtilitário têm em comum são colocados na entidade Automóvel Cada subtipo fica com seus atributos específicos

34 Bancos de Dados Relacionais Automóvel –Ano, Fabricante, Placa AutomóvelPasseio –NumPortas, ArCond(s/n) AutomóvelUtilitário –PesoMaximo, VolMaximo

35 Bancos de Dados Relacionais Como se projeta? Duas alternativas –Criar uma tabela com todos os atributos A identificação do tipo é feita com um flag –Criar todas as tabelas e relacioná-las entre si por chave estrangeira

36 Bancos de Dados Relacionais Uma única tabela Terá tantas colunas quantas forem necessárias para mapear todos os atributos Uma coluna a mais identificará o sub-tipo que de fato está sendo considerado

37 Bancos de Dados Relacionais No exemplo: –Automóvel(Ano, Fabricante, Placa, NumPortas, ArCond(s/n), PesoMaximo, VolMaximo, Tipo(P,U)) –Tipo identifica se é de Passeio ou utilitário Se o tipo for P as colunas PesoMaximo, VolMaximo devem ser nulas Se o tipo for U as colunas NumPortas, ArCond(s/n) devem ser nulas

38 Bancos de Dados Relacionais Em SQL: –Check( (Tipo = ‘U’ and NumPortas is null and ArCond is null) or (Tipo = ‘P’ and PesoMaximo is null and VolMaximo is null))

39 Bancos de Dados Relacionais Tabelas relacionadas Duas alternativas: Chave exportada do supertipo para o subtipo ou o contrário

40 Bancos de Dados Relacionais Exportando a chave do supertipo para o subtipo Cria-se uma tabela com colunas para todos os atributos do supertipo Cria-se tabelas com colunas para todos os atributos dos subtipos, acrescidas de uma chave-estrangeira referenciando o Supertipo

41 Bancos de Dados Relacionais No exemplo: –Automóvel(Ano, Fabricante, Placa) –AutomóvelPasseio(NumPortas, ArCond(s/n), Placa) –AutomóvelUtilitário(PesoMaximo, VolMaximo, Placa)

42 Bancos de Dados Relacionais Exportando a chave do subtipo para o supertipo Cria-se uma tabela com colunas para todos os atributos do supertipo, mais tantas colunas quantos forem os subtipos possíveis – serão chaves estrangeiras Cria-se tabelas com colunas para todos os atributos dos subtipos, acrescidas de uma chave primária gerada pelo sistema

43 Bancos de Dados Relacionais No exemplo: –Automóvel(Ano, Fabricante, Placa, AutPasseio, AutUtilitário) –AutomóvelPasseio(Cod, NumPortas, ArCond(s/n), Placa) –AutomóvelUtilitário(Cod, PesoMaximo, VolMaximo, Placa)

44 Bancos de Dados Relacionais Observar que em Automóvel(Ano, Fabricante, Placa, AutPasseio, AutUtilitário) as chaves estrangeiras AutPasseio e AutUtilitário são mutuamente exclusivas – Quando uma tiver valor a outra será nula e vice-versa)

45 Bancos de Dados Relacionais Em SQL: –Check( ((AutPasseio is null and AutUtilitario is not null) or (AutPasseio is not null and AutUtilitario is null))

46 Bancos de Dados Relacionais Resumindo, para se implementar a generalização em Bancos de Dados Relacionais há as seguintes opções: Uma Tabela Várias Tabelas Generalização Chave SuperTipo Chave SubTipo

47 Projeto de BDs Relacionais FIM! “Não é que eu tenha medo de morrer. É que eu não quero estar lá na hora que isso acontecer” Woody Allen Escher


Carregar ppt "Projetos de Bancos de Dados Relacionais Álvaro Vinícius de Souza Coêlho"

Apresentações semelhantes


Anúncios Google