Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouLara Machuca Alterado mais de 9 anos atrás
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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.