Bases de Dados Modelo Relacional 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 IST ▪ DEI ▪ Bases de Dados 2 Exemplo A relação “conta bancária” (account) • exemplo de atributos: número, agência, saldo IST ▪ DEI ▪ Bases de Dados 3 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 IST ▪ DEI ▪ Bases de Dados 4 Tuplos A relação contém 7 tuplos Para o primeiro tuplo t • t[account_number] = “A-101” • t[branch_name] = “Downtown” IST ▪ DEI ▪ Bases de Dados 5 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) IST ▪ DEI ▪ Bases de Dados 6 A relação “agência” (branch) Branch_schema = (branch_name, branch_city, assets) IST ▪ DEI ▪ Bases de Dados 7 Atributos comuns branch_name é um atributo comum • forma de relacionar tuplos de relações distintas IST ▪ DEI ▪ Bases de Dados 8 A relação “cliente” (customer) Customer_schema = (customer_name, customer_street, customer_city) IST ▪ DEI ▪ Bases de Dados 9 A relação “titular” (depositor) Depositor_schema = (customer_name, account_number) IST ▪ DEI ▪ Bases de Dados 10 A relação “empréstimo” (loan) Loan_schema = (loan_number, branch_name, amount) IST ▪ DEI ▪ Bases de Dados 11 A relação “mutuário” (borrower) Borrower_schema = (customer_name, loan_number) IST ▪ DEI ▪ Bases de Dados 12 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 IST ▪ DEI ▪ Bases de Dados 13 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 IST ▪ DEI ▪ Bases de Dados 14 Chaves estrangeiras Chave estrangeira • referência entre relações IST ▪ DEI ▪ Bases de Dados 15 Bases de Dados Modelo Entidade-Associação Processo de desenvolvimento características do domínio requisitos funcionais descrição do tema desenho conceptual modelo E-A conversão p/ modelo relacional modelo relacional IST ▪ DEI ▪ Bases de Dados 17 Alternativas de desenho Decisões sucessivas sobre a representação de “coisas” • um bom desenho ▫ explora aspectos comuns ▫ mantém flexibilidade para o futuro • um mau desenho ▫ redundante ▫ incompleto IST ▪ DEI ▪ Bases de Dados 18 Dilemas Cliente compra um produto • será que a venda do produto é uma associação entre cliente e produto? C V P • ou será que a venda é uma entidade relacionada com cliente e produto? C ? P V IST ▪ DEI ▪ Bases de Dados 19 Entidades Objecto distinto de outros objectos • com existência física ou não • com um conjunto de atributos específicos • e um valor para cada um desses atributos Conjunto de entidades (entity set) • partilham os mesmos atributos • podem não ser disjuntos ▫ p. ex. pessoa que é simultaneamente funcionário e cliente IST ▪ DEI ▪ Bases de Dados 20 Entidades customer_id customer_name customer_street customer_city IST ▪ DEI ▪ Bases de Dados loan_number amount 21 Tipos de atributos Atributos têm um domínio Podem também ser • simples ou compostos ▫ p.ex. morada • de valor único ou valor múltiplo ▫ p.ex. telefone • derivados ▫ p.ex. idade, existindo já data_de_nascimento IST ▪ DEI ▪ Bases de Dados 22 Atributos compostos – exemplos IST ▪ DEI ▪ Bases de Dados 23 Associações As entidades podem ter associações entre si Hayes customer entity depositor relationship set A-102 account entity Em termos formais {(e1, e2, … en) | e1 E1, e2 E2, …, en En} onde (e1, e2, …, en) é uma associação Exemplo: (Hayes, A-102) depositor IST ▪ DEI ▪ Bases de Dados 24 A associação borrower IST ▪ DEI ▪ Bases de Dados 25 Atributos descritivos em associações IST ▪ DEI ▪ Bases de Dados 26 Grau de uma associação Conjuntos de entidades que participam na associação Associações entre 2 conjuntos de entidades chamamse binárias Associações entre mais do que 2 entidades • p.ex. funcionários com diferentes tarefas em diferentes agências • são menos comuns e normalmente evitam-se! IST ▪ DEI ▪ Bases de Dados 27 Cardinalidade de uma associação Número de entidades com as quais outra entidade está associada • especialmente útil em associações binárias • potencialmente confuso noutras associações Uma associação binária pode ser • um para um • um para muitos • muitos para um • muitos para muitos IST ▪ DEI ▪ Bases de Dados 28 Cardinalidade de uma associação um para um um para muitos (alguns elementos de A ou B podem não estar associados) IST ▪ DEI ▪ Bases de Dados 29 Cardinalidade de uma associação muitos para um muitos para muitos (alguns elementos de A ou B podem não estar associados) IST ▪ DEI ▪ Bases de Dados 30 Chaves de entidades A chave de um conjunto de entidades • super chave • chaves candidatas • chave primária Cuidados a ter • identificadores únicos num ambiente restrito ▫ p.ex. clientes internacionais • atributos sujeitos a alterações ▫ p.ex. fusão de empresas IST ▪ DEI ▪ Bases de Dados 31 Chaves de associações A combinação das chaves primárias descreve uma associação individual primary_key(E1) U … U primary_key(En) Se a associação tiver atributos descritivos {a1, a2,…,an} primary_key(E1) U … U primary_key(En) U {a1, a2,…,an} Em ambos os casos, uma super-chave é: primary_key(E1) U … U primary_key(En) IST ▪ DEI ▪ Bases de Dados 32 Chaves de associações A chave primária depende da cardinalidade • seja (customer_id, account_number) depositor • se a associação for ▫ ▫ ▫ ▫ muitos para muitos: (customer_id, account_number) muitos para um: (customer_id, account_number) um para muitos: (customer_id, account_number) um-para-um: ◦ (customer_id, account_number) ou ◦ (customer_id, account_number) IST ▪ DEI ▪ Bases de Dados 33 Participação nas associações A participação de um entidade pode ser • total • parcial Exemplos • todos os empréstimos têm um devedor ▫ a participação de loan em borrower é total • nem todos os clientes têm empréstimos ▫ a participação de customer em borrower é parcial IST ▪ DEI ▪ Bases de Dados 34