15
1 Bases de Dados Conversão para Modelo Relacional 2 Modelo Entidade-Associação IST DEI ▪ Bases de Dados

Bases de Dados - web.ist.utl.ptweb.ist.utl.pt/diogo.ferreira/bd/2008-2009/aula04.pdf1 Bases de Dados Conversão para Modelo Relacional 2 Modelo Entidade-Associação IST DEI Bases

  • Upload
    vudang

  • View
    225

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Bases de Dados - web.ist.utl.ptweb.ist.utl.pt/diogo.ferreira/bd/2008-2009/aula04.pdf1 Bases de Dados Conversão para Modelo Relacional 2 Modelo Entidade-Associação IST DEI Bases

1

Bases de Dados

Conversão para Modelo Relacional

2

Modelo Entidade-Associação

IST ▪ DEI ▪ Bases de Dados

Page 2: Bases de Dados - web.ist.utl.ptweb.ist.utl.pt/diogo.ferreira/bd/2008-2009/aula04.pdf1 Bases de Dados Conversão para Modelo Relacional 2 Modelo Entidade-Associação IST DEI Bases

2

3IST ▪ DEI ▪ Bases de Dados

Conversão de entidades

� Entidade forte converte-se numa tabela

loan = (loan_number, amount)

• atributos simples mantêm-se

• chave é a mesma da entidade

4IST ▪ DEI ▪ Bases de Dados

Conversão de entidades

� Entidade fraca inclui uma coluna extra com a chave

primária da entidade identificadora

payment = (loan_number, payment_number,

payment_date, payment_amount )

• dispensa conversão da associação identificadora!

Page 3: Bases de Dados - web.ist.utl.ptweb.ist.utl.pt/diogo.ferreira/bd/2008-2009/aula04.pdf1 Bases de Dados Conversão para Modelo Relacional 2 Modelo Entidade-Associação IST DEI Bases

3

5IST ▪ DEI ▪ Bases de Dados

Conversão de associações

� Associação “muitos-para-muitos” converte-se numa

tabela com chaves primárias e atributos descritivos

borrower = (customer_id, loan_number)

• chave primária da tabela é união das chaves

� Associações n-árias são tratadas de modo semelhante

▫ se houver seta essa entidade não faz parte da chave

6IST ▪ DEI ▪ Bases de Dados

Conversão de associações

� Associações “um-para-muitos” ou “muitos-para-um”

• pode não ser necessário criar uma tabela

• exemplo

▫ existe participação total do lado “muitos”

▫ adicionar o atributo branch_name à tabela account

Page 4: Bases de Dados - web.ist.utl.ptweb.ist.utl.pt/diogo.ferreira/bd/2008-2009/aula04.pdf1 Bases de Dados Conversão para Modelo Relacional 2 Modelo Entidade-Associação IST DEI Bases

4

7IST ▪ DEI ▪ Bases de Dados

Conversão de associações

� Associação “um-para-um”

• pode não ser necessário criar uma tabela

• qualquer um dos lados pode ter uma chave

estrangeira

▫ se a participação for parcial, aparecem nulls

8IST ▪ DEI ▪ Bases de Dados

Conversão de atributos

� Atributos compostos

• representados como atributos individuais

• exemplo

▫ customer com name composto (first_name e last_name)

▫ resulta em name.first_name e name.last_name

Page 5: Bases de Dados - web.ist.utl.ptweb.ist.utl.pt/diogo.ferreira/bd/2008-2009/aula04.pdf1 Bases de Dados Conversão para Modelo Relacional 2 Modelo Entidade-Associação IST DEI Bases

5

9IST ▪ DEI ▪ Bases de Dados

Conversão de atributos

� Atributos multi-valor

• necessária tabela adicional ≈ “um-para-muitos”

• chave primária da entidade E e valor do atributo M

• exemplo: dependentes

employee_dependent_names = (employee_id, dname)

• para um funcionário com chave primária 123-45-

6789 e dependentes João e Teresa

▫ ('123-45-6789', 'João') e ('123-45-6789', 'Teresa')

10IST ▪ DEI ▪ Bases de Dados

Conversão de especialização/generalização

� Método 1

• tabela para a entidade genérica

• tabela para cada entidade específica, com chave

para a entidade genérica

person(name, street, city)

customer(name, credit_rating)

employee(name, salary)

• desvantagem: informação dispersa

Page 6: Bases de Dados - web.ist.utl.ptweb.ist.utl.pt/diogo.ferreira/bd/2008-2009/aula04.pdf1 Bases de Dados Conversão para Modelo Relacional 2 Modelo Entidade-Associação IST DEI Bases

6

11IST ▪ DEI ▪ Bases de Dados

Conversão de especialização/generalização

� Método 2

• repetir os atributos em cada tabela

person(name, street, city)

customer(name, street, city, credit_rating)

employee(name, street, city, salary)

• se a especialização for total, super-classe parece

dispensável

▫ mas continua a ser necessária para chaves estrangeiras!

• desvantagem: redundância

12IST ▪ DEI ▪ Bases de Dados

Conversão de agregação

� Criar uma nova tabela, contendo:

• chave primária da associação agregada

• chave primária da entidade associada

• atributos descritivos

Page 7: Bases de Dados - web.ist.utl.ptweb.ist.utl.pt/diogo.ferreira/bd/2008-2009/aula04.pdf1 Bases de Dados Conversão para Modelo Relacional 2 Modelo Entidade-Associação IST DEI Bases

7

13IST ▪ DEI ▪ Bases de Dados

Conversão de agregação

manages (employee_id, branch_name, title, manager_name)

14IST ▪ DEI ▪ Bases de Dados

Conversão de agregação

� Podia evitar-se uma nova tabela guardando

manager_name em works_on

• admitindo que manager_name pode ser null

Page 8: Bases de Dados - web.ist.utl.ptweb.ist.utl.pt/diogo.ferreira/bd/2008-2009/aula04.pdf1 Bases de Dados Conversão para Modelo Relacional 2 Modelo Entidade-Associação IST DEI Bases

8

Bases de Dados

Modelo Relacional

16IST ▪ DEI ▪ Bases de Dados

Bases de dados relacionais

� Estrutura de uma base de dados relacional

• conjunto de tabelas com nome único

• cada tabela guarda entidades desse tipo

� Dentro das tabelas

• cada coluna é um atributo da entidade

• cada linha contém os valores desses atributos

� Cada tabela estabelece uma relação entre um

conjunto de valores

Page 9: Bases de Dados - web.ist.utl.ptweb.ist.utl.pt/diogo.ferreira/bd/2008-2009/aula04.pdf1 Bases de Dados Conversão para Modelo Relacional 2 Modelo Entidade-Associação IST DEI Bases

9

17IST ▪ DEI ▪ Bases de Dados

Exemplo

� A relação “conta bancária” (account)

• exemplo de atributos: número, agência, saldo

18IST ▪ DEI ▪ Bases de Dados

Atributos

� Cada atributo tem um domínio

• o conjunto de valores possíveis

� Para o exemplo anterior

• agência – conjunto de todas as localidades

• cada linha é um tuplo (v1 , v2 , v3)

• cada vi tem domínio Di

� Uma relação contem apenas um sub-conjunto de

D1 x D2 x … x Dn

Page 10: Bases de Dados - web.ist.utl.ptweb.ist.utl.pt/diogo.ferreira/bd/2008-2009/aula04.pdf1 Bases de Dados Conversão para Modelo Relacional 2 Modelo Entidade-Associação IST DEI Bases

10

19IST ▪ DEI ▪ Bases de Dados

Tuplos

� A relação contém 7 tuplos

� Para o primeiro tuplo t

• t[account_number] = “A-101”

• t[branch_name] = “Downtown”

20IST ▪ DEI ▪ Bases de Dados

Esquema

� Esquema vs. instância

• conteúdo da relação num determinado instante

• analogia com linguagens de programação

▫ relação ≈ variável

▫ esquema da relação ≈ tipo

� Esquema da relação

Account_schema = (account_number, branch_name, balance)

Page 11: Bases de Dados - web.ist.utl.ptweb.ist.utl.pt/diogo.ferreira/bd/2008-2009/aula04.pdf1 Bases de Dados Conversão para Modelo Relacional 2 Modelo Entidade-Associação IST DEI Bases

11

21IST ▪ DEI ▪ Bases de Dados

A relação “agência” (branch)

branch_schema = (branch_name, branch_city, assets)

22IST ▪ DEI ▪ Bases de Dados

Atributos comuns

� branch_name é um atributo comum

• forma de associar tuplos de relações distintas

Page 12: Bases de Dados - web.ist.utl.ptweb.ist.utl.pt/diogo.ferreira/bd/2008-2009/aula04.pdf1 Bases de Dados Conversão para Modelo Relacional 2 Modelo Entidade-Associação IST DEI Bases

12

23IST ▪ DEI ▪ Bases de Dados

A relação “cliente” (customer)

customer_schema = (customer_name, customer_street, customer_city)

(Nota: neste exemplo não há customer_id e assume-se que a chave é customer_name)

24IST ▪ DEI ▪ Bases de Dados

A relação “titular” (depositor)

depositor_schema = (customer_name, account_number)

Page 13: Bases de Dados - web.ist.utl.ptweb.ist.utl.pt/diogo.ferreira/bd/2008-2009/aula04.pdf1 Bases de Dados Conversão para Modelo Relacional 2 Modelo Entidade-Associação IST DEI Bases

13

25IST ▪ DEI ▪ Bases de Dados

A relação “empréstimo” (loan)

loan_schema = (loan_number, branch_name, amount)

26IST ▪ DEI ▪ Bases de Dados

A relação “devedor” (borrower)

borrower_schema = (customer_name, loan_number)

Page 14: Bases de Dados - web.ist.utl.ptweb.ist.utl.pt/diogo.ferreira/bd/2008-2009/aula04.pdf1 Bases de Dados Conversão para Modelo Relacional 2 Modelo Entidade-Associação IST DEI Bases

14

27IST ▪ DEI ▪ Bases de Dados

Notas

� A ordem dos tuplos é irrelevante

� Podiam existir valores null

� Assume-se que os clientes não têm nomes iguais

� Assume-se que pode haver clientes com conta mas

sem empréstimo, ou vice-versa, ou nenhuma das

coisas

28IST ▪ DEI ▪ Bases de Dados

Chaves

� Como distinguir tuplos?

• não pode haver 2 tuplos exactamente iguais

• super-chave

▫ o conjunto de atributos que identificam univocamente

• chave candidata

▫ conjunto mínimo de atributos

• chave primária

▫ a chave candidata escolhida

▫ normalmente prefere-se um atributo separado por si só

◦ atenção aos atributos (supostamente) únicos

Page 15: Bases de Dados - web.ist.utl.ptweb.ist.utl.pt/diogo.ferreira/bd/2008-2009/aula04.pdf1 Bases de Dados Conversão para Modelo Relacional 2 Modelo Entidade-Associação IST DEI Bases

15

29IST ▪ DEI ▪ Bases de Dados

Chaves estrangeiras

� Chave estrangeira

• referência entre relações