Upload
trinhcong
View
213
Download
0
Embed Size (px)
Citation preview
© 2012 IST
Sumário
• Modelo Relacional – Relação, tabela – Restrições domínio, chave e integridade
referencial • Conversão Modelo EA para Modelo
Relacional
1
© 2012 IST
Conjunto de entidades para relações
• Conjunto de entidades (fortes) origina uma relação no esquema relacional – atributos do conjunto de entidades mapeados
em atributos com o mesmo nome na relação – chave primária é a mesma do conjunto de
entidades
2
Employees(ssn: string, name: string, lot: integer)
Employees
ssn name
lot
© 2012 IST
Atributos Multi-valor, Compostos e Derivados
3
Employees
lot
name ssn
phone
age
Date_of_birth
Address
Street City
Employees(ssn, name, lot, date_of_birth, street, city) Phone(ssn, phone_number)
ssn: FK(Employees)
• Mul$-‐valor: tabela adicional
• Compostos: apenas os atributos externos são representados
• Derivados: não se representam
© 2012 IST
Conjunto de associações para relações (1)
• Conjunto de associações “muitos-para-muitos” origina uma relação com esquema composto por: – chave constituída pelas chaves primárias das
relações que correspondem às entidades participantes
– atributos descritivos do conjunto de associações
– chaves estrangeiras que correspondem às chaves primárias das entidades participantes
4
© 2012 IST
Conjunto de associações para relações (1)
5
dname
budget did
since
lot
name
ssn
Manages Employees Departments
Employees(ssn, name, lot) Departments(did, dname, budget) Manages(ssn, did, since) ssn: FK(Employees) did: FK(Departments)
© 2012 IST
Employees(ssn, name, lot) Reports_To(supervisor_ssn, subordinate_ssn) supervisor_ssn: FK(Employees) subordinate_ssn: FK(Employees) Reports_To
lot
name
Employees
subor-dinate
super-visor
ssn
Conjunto de associações para relações (2)
© 2012 IST
Works_In4(ssn, did, from, to, obs) ssn: FK(Employees) did: FK(Departaments) from, to: FK(Duration)
dname budget did
name
Departments
ssn lot
Employees Works_In4
Duration from to
obs
Conjunto de associações ternárias para relações
© 2012 IST
Associações com Restrições de Chave
• Primeira abordagem: – A associação origina uma nova relação em
que • a chave primária é a chave da relação que
corresponde à entidade com restrição; • chaves estrangeiras correspondem às chaves
primárias das entidades participantes
8
dname budget did
since
lot name
ssn
Manages Employees Departments
© 2012 IST
Employees(ssn, name, lot) Departments(did, dname, budget) Manages(did, ssn, since) ssn: FK(Employees) did: FK(Departments)
dname
budget did
since
lot
name
ssn
Manages Employees Departments
Abordagem 1
© 2012 IST
Associações com Restrições de Chave
• Segunda abordagem: – Adicionar os atributos que compõem a
chave da entidade sem restrição como chave estrangeira da relação que corresponde à entidade com restrição
– E adicionar os atributos da associação
10
© 2012 IST
Employees(ssn, name, lot) Departments(did, dname, budget, ssn, since) ssn: FK(employees)
dname
budget did
since
lot
name
ssn
Manages Employees Departments
Abordagem 2
© 2012 IST
Vantagens e Desvantagens
12
Employees(ssn, name, lot) Departments(did, dname, budget) Manages(ssn, did, since) ssn: FK(Employees) did: FK(Departments)
• MAIS uma relação • Algumas consultas (interrogações) precisam juntar relações (joins)
• Evita valores nulos
Employees(ssn, name, lot) Departments(did, dname, budget, ssn, since) ssn: FK(employees)
• Não consegue evitar valores nulos (null)
• Mais eficiente • Menos uma relação • Sem necessidade de joins em consultas
© 2012 IST
Restrições de Participação Duas abordagens:
1. Adicionar a restrição NOT NULL à chave estrangeira
2. Acrescentar uma RI • Menos eficiente
© 2012 IST
Departments(did, dname, budget, ssn, since)
ssn: FK(Employees) NOT NULL (ssn)
dname
budget did
since
lot
name
ssn
Manages Employees Departments
Abordagem 1
© 2012 IST
Manages(did, ssn, since) ssn: FK(Employees) did: FK(Departments)
RI: Todos os departamentos têm que ter um gestor associado.
dname
budget did
since
lot
name
ssn
Manages Employees Departments
Abordagem 2
© 2012 IST
Entidades Fracas
• Conjunto de entidades fracas origina uma relação que tem – uma chave composta por a chave da
relação que corresponde à entidade forte e a chave parcial
16
© 2012 IST
Entidades Fracas
• Adicionar RI – Quando um tuplo da relação correspondente à
entidade forte é eliminado, os correspondentes tuplos da relação correspondente à entidade fraca também o são.
• Dispensa conversão da associação identificadora em tabela.
17
© 2012 IST
Entidades Fracas
Dept_Policy(ssn, pname, age, cost) ssn: FK(Employees)
RI: Quando um empregado fôr removido da base de dados, os seus dependentes também o devem ser
lot
name
age pname
Dependents Employees
ssn
Policy
cost
© 2012 IST
Policies (policyid, cost, ssn) ssn: FK(Employees) NOT NULL(ssn)
Dependents(policyid, pname, age)
policyid: FK(Policies) RI: Quando uma apólice fôr removida da base de dados, os seus dependentes também o devem ser.
Beneficiary
age pname
Dependents
policyid cost
Policies
Purchaser
name
Employees
ssn lot
© 2012 IST
Dependents(ssn, policyid, pname, age) ssn, policyid: FK(Policies)
RI: Quando um empregado fôr removido da base de dados, as suas apólices e dependentes que lhe correspondem também o devem ser.
Beneficiary
age pname
Dependents
policyid cost
Policies
Purchaser
name
Employees
ssn lot
© 2012 IST
Generalizações
• Opção 1 – Mapear cada conjunto de entidades e sub-
classes em relações distintas • Sempre aplicável • Relação da sub-classe tem como chave primária:
– a chave da relação correspondente à super-classe que tb é chave estrangeira
• RI: se um tuplo da relação correspondente à super-classe é removido, o respectivo tuplo da relação da sub-classe tb o é
– Restrições de cobertura e disjunção como RIs
23
© 2012 IST
Employees(ssn, name, lot) Contract_Emps(ssn, contractid)
ssn: FK(Employees) Hourly_Emps(ssn, hours_worked, hourly_wages)
ssn: FK(Employees) RI1: Quando se elimina um empregado da BD tb tem que se eliminar o tuplo correspondente de Hourly_Emps/Contract_Emps RI2(disjoint): Um empregado ou é contratado ou recebe à hora
Contract_Emps
name ssn
Employees
lot
hourly_wages ISA
Hourly_Emps
contractid
hours_worked
Opção 1
© 2012 IST
Generalizações • Opção 2
– Mapear apenas as sub-classes em relações distintas • Ambas têm os mesmos atributos da super-classe • Mais eficiente para interrogações a sub-entidades
específicas • Apenas aplicável quando existe cobertura total • Quando há RI “overlaps” pode haver dados
duplicados
– Restrições de cobertura e disjunção como RIs
25
© 2012 IST
Contract_Emps
name ssn
Employees
lot
hourly_wages ISA
Hourly_Emps
contractid
hours_worked
Opção 2 RI: Hourly_Emps AND Contract_Emps COVER Employees Contract_Emps(ssn, name, lot, contractid) Hourly_Emps(ssn, name, lot, hours_worked, hourly_wages) RI(disjoint): Não pode existir o mesmo empregado (mesmo ssn) em Hourly_Emps e Contract_Emps
© 2012 IST
Agregações
• É um processo semelhante ao aplicado às associações
• Primeiro mapeia-se o interior da agregação
© 2012 IST
budget did pid
started_on
pbudget dname
until
Departments Projects Sponsors
Employees
Monitors
lot name
ssn
since
© 2012 IST
Sponsors(pid, did, since)
pid: FK(projects) did: FK(Departments)
Monitors(ssn, pid, did, until)
ssn: FK(Employees) pid, did: FK(Sponsors)
budget did pid
started_on
pbudget dname
until
Departments Projects Sponsors
Employees
Monitors
lot name
ssn
since