Transformando o Modelo E-R no Modelo Relacional
description
Transcript of Transformando o Modelo E-R no Modelo Relacional
Transformando o Modelo E-R no Modelo Relacional
Gerência de Banco de Dados
BCC – UFU
Profa. Sandra de Amo
Tranformando Entidade em Tabela
Empregado
cic Ne End Tel
CREATE TABLE EMP( CIC integer Ne char(30), End char(30), Tel integer, PRIMARY KEY (CIC) )
Transformando Relacionamento (sem restrição de chave) para Tabela
Empregado
Departamento
cic Ne End Tel
Nd Or
did
Trabalha-em
DataIn
LOCALEnd Area
CREATE TABLE TRAB-EM( CIC integer, DID char(4), End char(30), DataIn DATE, PRIMARY KEY (CID,DID,End), FOREIGN KEY (CIC)
REFERENCES EMP, FOREIGN KEY (DID) REFERENCES DEP, FOREIGN KEY (End) REFERENCES LOCAL)
Transformando Relacionamento (com restrição de chave) para Tabela
Empregado Departamento
cic Ne End Tel
Nd Or
didGERENCIA
DataIn
CREATE TABLE DEP( CIC integer, DID char(4), DNOME char(20), OR REAL, DataIn DATE, PRIMARY KEY (DID), FOREIGN KEY (CIC)
REFERENCES EMP)
Todo departamento que temgerente, este gerente é único
Transformando Relacionamento (com Restrição de Participação) em Tabela
Empregado Departamento
cic Ne End Tel
Nd Or
didGERENCIA
DataIn
Trabalha-emTodo departamento tem um gerentee este gerente é único
Entidade CHAVE
CREATE TABLE DEP( CIC integer NOT NULL, DID char(4), DNOME char(20), OR REAL, DataIn DATE, PRIMARY KEY (DID), FOREIGN KEY (CIC)
REFERENCES EMP)
Certas restrições em relacionamentos não podem ser especificadas facilmente...
Empregado Departamento
cic Ne End Tel
Nd Or
didGERENCIA
DataIn
Trabalha-em
Todos os valores de CIC aparecemna tabela Trabalha-em
CIC pode ser declarado em EMPcomo chave estrangeira Referenciando Trabalha-em ?
Não pode ! Pois CIC não é chave Candidata de Trabalha-em
Todos os valores de DID aparecem na tabela Trabalha-em
DID poderia ser declarado em DEPComo chave estrangeira Referenciando Trabalha-em ?
Não pode ! Pois DID não é chave Candidata de Trabalha-em
Certas restrições em relacionamentos não podem ser especificadas facilmente...
Empregado Departamento
cic Ne End Tel
Nd Or
didGERENCIA
DataIn
Trabalha-em
Tais restrições de participação só podem ser especificadas no modeloRelacional utilizando asserções em SQL (programas específicos).
Transformando Relacionamento ISA em Tabelas
Piloto
Empregado
Técnico
ISA ISA
cic N End Sal DN
B HV
Es
Primeira Alternativa Uma tabela EMP
Atributos CIC, DN, N, End,Sal Chave Primária CIC Uma tabela PILOTO Atributos CIC, B,HV Chave Primária CIC Chave Estrangeira : CIC referencia EMP Uma tabela TEC Atributos CIC, Es Chave Primária CIC Chave Estrangeira CIC referencia EMP
Vantagens e Desvantagens
Primeira Alternativa com 3 tabelas Mais geral Permite fazer consultas sobre empregados que
não são nem pilotos nem técnicos.o Não é a adequada quando se quer consultar
atributos gerais de Pilotos e Técnicos: é preciso combinar as tabelas PILOTO e TEC com a tabela EMP.
Segunda Alternativa
Uma tabela PILOTO
Atributos CIC, DN, N, End,Sal, B,HV
Chave Primária CIC
Uma tabela TEC
Atributos CIC, DN, N, End,Sal, Es
Chave Primária CIC
Vantagens e Desvantagens Segunda Alternativa com 2 tabelas
É adequada quando se quer consultar somente informações relacionadas a Pilotos ou Técnicos.
o Não é aplicável se tivermos empregados que não são nem Pilotos nem Técnicos.
o Não é aplicável se existem Pilotos que também são Técnicos e vice-versa : os dados deveriam ser armazenados duas vezes !!!
o Uma consulta que pede para listar todos os empregados deve varrer duas tabelas !!!
Transformando Diagramas E-R com Agregação em Tabelas
Projeto DepartamentoPatrocinado
Empregado
DataInP
DataInMMonitorado por
PROJ DEP
EMP
DP
DM
PAT
MON
CREATE TABLE MONITORA( CIC integer, ID_PAT char(4), DM DATE, PRIMARY KEY (CIC,ID_PAT), FOREIGN KEY (CIC)
REFERENCES EMP, FOREIGN KEY (ID_PAT) REFERENCES PAT)
CREATE TABLE PAT( DID char(4), PID char(4), ID_PAT char(4), DP DATE, PRIMARY KEY (ID_PAT), FOREIGN KEY (PID)
REFERENCES PROJ, FOREIGN KEY (DID) REFERENCES DEP)
PAT PROJ
DEP
MONITORA
EMP
DID
PID
CIC
ID_PAT
DiagramaReferencial
Transformando Diagramas E-R com Agregação em Tabelas
Projeto Empregado Trabalha- em
Maquina
DataIn
USA
PROJ EMP
MAQ
DI
TRAB
USA
CREATE TABLE TRAB( CIC INTEGER, PID char(4), ID_PAT char(4), DI DATE, CodM char(4), PRIMARY KEY (ID_PAT), FOREIGN KEY (PID)
REFERENCES PROJ, FOREIGN KEY (CIC) REFERENCES EMP, FOREIGN KEY CodM REFERENCES MAQ)
TRAB PROJ
EMP
MAQ
Não se cria tabela para o relacionamento USA !!
Diagrama Referencial PID
CodMCIC