Transformando o Modelo
E-R no Modelo Relacional
Gerência de Banco de Dados
BCC – UFU
Profa. Sandra de Amo
Tranformando Entidade em Tabela
cic
Ne
End
Empregado
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
Departamento
did
DataIn
Nd
cic
Ne
End
Tel
Trabalha-em
Empregado
End
LOCAL
Or
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
DataIn
cic
Ne
End
Empregado
Todo departamento que tem
gerente, este gerente é único
Tel
Departamento
GERENCIA
Nd
did
Or
CREATE TABLE DEP
( CIC integer,
DID char(4),
DNOME char(20),
OR REAL,
DataIn DATE,
PRIMARY KEY (DID),
FOREIGN KEY (CIC)
REFERENCES EMP)
Transformando Relacionamento (com
Restrição de Participação) em Tabela
Entidade
CHAVE
DataIn
cic
Ne
End
Empregado
Tel
Departamento
GERENCIA
Nd
Trabalha-em
did
Or
Todo departamento
tem um gerente
e este gerente é único
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...
DataIn
cic
Ne
End
Tel
Empregado
Departamento
GERENCIA
Nd
Todos os valores de
CIC aparecem
na tabela Trabalha-em
did
Or
Todos os valores de DID
aparecem na tabela Trabalha-em
Trabalha-em
CIC pode ser declarado em EMP
como chave estrangeira
Referenciando Trabalha-em ?
DID poderia ser declarado em DEP
Como chave estrangeira
Referenciando Trabalha-em ?
Não pode ! Pois CIC não é chave
Candidata de 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...
DataIn
cic
Ne
End
Empregado
Tel
Departamento
GERENCIA
Nd
did
Or
Trabalha-em
Tais restrições de participação só podem ser especificadas no modelo
Relacional utilizando asserções em SQL (programas específicos).
Transformando Relacionamento ISA
em Tabelas
DN
cic
N
End
Sal
Empregado
ISA
ISA
Es
Piloto
B
HV
Técnico
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
DataInP
Projeto
Patrocinado
Monitorado
por
Empregado
Departamento
DataInM
DP
PROJ
PAT
MON
DEP
DM
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)
EMP
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)
Diagrama
Referencial
DID
PROJ
PAT
PID
ID_PAT
DEP
MONITORA
CIC
EMP
Transformando Diagramas E-R com
Agregação em Tabelas
DataIn
Projeto
Trabalhaem
USA
Maquina
Empregado
DI
PROJ
EMP
TRAB
USA
MAQ
Diagrama Referencial
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)
PID
TRAB
PROJ
CIC
CodM
EMP
MAQ
Não se cria tabela para o
relacionamento USA !!
Download

Transformando o Modelo E-R no Modelo Relacional