©Silberschatz, Korth and Sudarshan (Modificado)3.1.1Database System Concepts Capítulo 3: Modelo...

24
©Silberschatz, Korth and Sudarshan (Modificad 3.1.1 Database System Concepts Capítulo 3: Modelo Relacional Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução a tabelas de uma Esquema ER Álgebra Relacional Operações Estendidas da Álgebra Relacional Modificação da Base de Dados Vistas

Transcript of ©Silberschatz, Korth and Sudarshan (Modificado)3.1.1Database System Concepts Capítulo 3: Modelo...

Page 1: ©Silberschatz, Korth and Sudarshan (Modificado)3.1.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.

©Silberschatz, Korth and Sudarshan (Modificado)3.1.1Database System Concepts

Capítulo 3: Modelo RelacionalCapítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução a tabelas de uma Esquema ER Álgebra Relacional Operações Estendidas da Álgebra Relacional Modificação da Base de Dados Vistas

Page 2: ©Silberschatz, Korth and Sudarshan (Modificado)3.1.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.

©Silberschatz, Korth and Sudarshan (Modificado)3.1.2Database System Concepts

Modelos de registosModelos de registos Os modelos ER ajudam na modelização dos dados Mas não ajudarão como modelo para “tratamento” dos dados

armazenados. Como é que os dados estão armazenados? Como consultar os dados? Como alterar os dados?

Ajudava mais ver os dados organizados em tabelas ... ou, usando nomenclatura matemática, em relações

Page 3: ©Silberschatz, Korth and Sudarshan (Modificado)3.1.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.

©Silberschatz, Korth and Sudarshan (Modificado)3.1.3Database System Concepts

Exemplo de uma RelaçãoExemplo de uma Relação

Page 4: ©Silberschatz, Korth and Sudarshan (Modificado)3.1.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.

©Silberschatz, Korth and Sudarshan (Modificado)3.1.4Database System Concepts

Estrutura BásicaEstrutura Básica Formalmente, dados os conjuntos D1, D2, …. Dn,, uma relação r é um

subconjunto de

D1 x D2 x … x Dn

Portanto, uma relação é um conjunto de tuplos (a1, a2, …, an) em que ai Di

Exemplo: Secustomer-name = {Jones, Smith, Curry, Lindsay}customer-street = {Main, North, Park}customer-city = {Harrison, Rye, Pittsfield}

Então r = { (Jones, Main, Harrison), (Smith, North, Rye), (Curry, North, Rye), (Lindsay, Park, Pittsfield)} é uma relação em customer-name x customer-street x customer-city

Page 5: ©Silberschatz, Korth and Sudarshan (Modificado)3.1.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.

©Silberschatz, Korth and Sudarshan (Modificado)3.1.5Database System Concepts

AtributosAtributos Todo o atributo de uma relação tem um nome O conjunto de valores que um atributo pode tomar é chamado

de domínio do atributo. Normalmente, obriga-se a que os valores dos atributos sejam

atómicos, ou seja, indivisíveis: E.g. atributos multivalor não são atómicos E.g. atributos compostos não são atómicos

O valor especial null pertence a todos os domínios O valor null causa complicações na definição de muitas

operações Ignoraremos o efeito dos valores nulos em grande parte da

apresentação mas consideraremos posteriormente as suas implicações

Page 6: ©Silberschatz, Korth and Sudarshan (Modificado)3.1.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.

©Silberschatz, Korth and Sudarshan (Modificado)3.1.6Database System Concepts

Esquema de RelaçãoEsquema de Relação A1, A2, …, An são atributos

R = (A1, A2, …, An ) é um esquema de relação

E.g. Customer-schema = (customer-name, customer-street, customer-city)

r(R) é uma relação no esquema de relação RE.g. customer(Customer-schema)

Page 7: ©Silberschatz, Korth and Sudarshan (Modificado)3.1.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.

©Silberschatz, Korth and Sudarshan (Modificado)3.1.7Database System Concepts

Instância de RelaçãoInstância de Relação Os valores correntes (instância da relação) de uma relação

são descritos por uma tabela Um elemento t de r é um tuplo, representado por uma linha da

tabela

JonesSmithCurry

Lindsay

customer-name

MainNorthNorthPark

customer-street

HarrisonRyeRye

Pittsfield

customer-city

customer

atributos

tuplos

Page 8: ©Silberschatz, Korth and Sudarshan (Modificado)3.1.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.

©Silberschatz, Korth and Sudarshan (Modificado)3.1.8Database System Concepts

As relação não estão ordenadasAs relação não estão ordenadas A ordem dos tuplos é irrelevante (os tuplos podem ser armazenadas segundo qualquer ordem) E.g. relação account com os tuplos desordenados

Page 9: ©Silberschatz, Korth and Sudarshan (Modificado)3.1.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.

©Silberschatz, Korth and Sudarshan (Modificado)3.1.9Database System Concepts

Base de DadosBase de Dados Uma base de dados é constituída por diversas relações A informação acerca de uma empresa é dividida em partes, em

que cada relação armazena uma parte dessa informação

E.g.: account : armazena informação acerca de contas depositor : regista os clientes que podem movimentar as contas customer : guarda informação acerca de clientes

O armazenamento da informação numa única relação bank(account-number, balance, customer-name, ..)origina repetição de informação (e.g. dois clientes que detêm uma conta) A necessidade de valores nulos (e.g. para representar um cliente

que não possui uma conta) A teoria da normalização (capítulo 7) especifica como se devem

desenhar esquemas de relação

Page 10: ©Silberschatz, Korth and Sudarshan (Modificado)3.1.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.

©Silberschatz, Korth and Sudarshan (Modificado)3.1.10Database System Concepts

ChavesChaves Seja K R K é uma super-chave de R se os valores de K são suficientes

para identificar um único tuplo de toda a relação r(R) possível. Por “relação possível” entende-se uma instância r que pode existir na empresa que estamos a modelar.Exemplo: {customer-name, customer-street} e {customer-name} são ambas super-chaves de Customer, se não é possível dois clientes terem o mesmo nome.

K é uma chave candidata se K é minimalExemplo: {customer-name} é uma chave candidata para Customer, dado ser uma super-chave (assumindo que dois clientes não podem ter o mesmo nome), e nenhum subconjunto dela é uma super-chave.

Page 11: ©Silberschatz, Korth and Sudarshan (Modificado)3.1.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.

©Silberschatz, Korth and Sudarshan (Modificado)3.1.11Database System Concepts

A relação A relação customercustomer

Page 12: ©Silberschatz, Korth and Sudarshan (Modificado)3.1.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.

©Silberschatz, Korth and Sudarshan (Modificado)3.1.12Database System Concepts

A relação A relação depositordepositor

Page 13: ©Silberschatz, Korth and Sudarshan (Modificado)3.1.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.

©Silberschatz, Korth and Sudarshan (Modificado)3.1.13Database System Concepts

DER para um bancoDER para um banco

Page 14: ©Silberschatz, Korth and Sudarshan (Modificado)3.1.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.

©Silberschatz, Korth and Sudarshan (Modificado)3.1.14Database System Concepts

Derivação de relações a partir de um DERDerivação de relações a partir de um DER

Uma base de dados que seja representável por um DER pode ser também representada por intermédio de um conjunto de relações.

Para cada conjunto de entidades e para cada conjunto de associações gera-se uma única relação (ou tabela) com o nome do conjunto de entidades ou conjunto de associações respectivo.

A conversão de um DER para um esquema de tabelas constitui a base para a derivação do desenho de uma base de dados relacional a partir de um DER

Page 15: ©Silberschatz, Korth and Sudarshan (Modificado)3.1.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.

©Silberschatz, Korth and Sudarshan (Modificado)3.1.15Database System Concepts

Conjuntos Conjuntos de Entidades como Tabelasde Entidades como Tabelas

Um conjunto forte de entidades reduz-se a uma relação com os mesmos atributos

Page 16: ©Silberschatz, Korth and Sudarshan (Modificado)3.1.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.

©Silberschatz, Korth and Sudarshan (Modificado)3.1.16Database System Concepts

Conjuntos de Entidades FracasConjuntos de Entidades Fracas Um conjunto de entidades fracas é representado por uma

relação que inclui colunas para a chave primária do conjunto de entidades identificador, juntamente com as colunas para os restantes atributos do conjunto de entidades fracas.

Page 17: ©Silberschatz, Korth and Sudarshan (Modificado)3.1.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.

©Silberschatz, Korth and Sudarshan (Modificado)3.1.17Database System Concepts

Conjuntos de AssociaçõesConjuntos de Associações Um conjunto de associações muitos para muitos é representado com uma tabela com

colunas para as chaves primárias dos dois conjuntos de entidades participantes, com colunas adicionais para os atributos próprios (ou descritivos) do conjunto de associações.

E.g.: tabela para o conjunto de associações borrower

Page 18: ©Silberschatz, Korth and Sudarshan (Modificado)3.1.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.

©Silberschatz, Korth and Sudarshan (Modificado)3.1.18Database System Concepts

Determinação de Chaves a partir do DERDeterminação de Chaves a partir do DER

Conjunto de entidades fortes. A chave primária do conjunto de entidades é a chave primária da relação.

Conjunto de entidades fracas. A chave primária da relação consiste na união da chave primária do conjunto de entidades forte com o discriminante do conjunto de entidades fracas.

Conjunto de relações. A união das chave primárias dos conjuntos de entidades relacionados é uma super-chave da relação. Para conjuntos de associações binários um-para-muitos, a chave

primária do lado “muitos” é a chave primária da relação. Para conjuntos de associações um-para-um, a chave primária da

relação é a chave primária de um dos conjuntos de entidades. Para conjuntos de associações muitos-para-muitos, a união das

chaves primárias é a chave primária da relação.

Page 19: ©Silberschatz, Korth and Sudarshan (Modificado)3.1.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.

©Silberschatz, Korth and Sudarshan (Modificado)3.1.19Database System Concepts

Tabelas RedundantesTabelas Redundantes Conjuntos de associações muitos-para-um e um-para-muitos, totais

no lado muitos podem ser representados adicionando atributos extra ao lado muitos contendo a chave primária do outro conjunto participante.

E.g.: Em vez de se criar uma tabela para a associação account-branch, adicionar uma coluna branch à tabela derivada a partir do conjunto de entidades account.

Page 20: ©Silberschatz, Korth and Sudarshan (Modificado)3.1.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.

©Silberschatz, Korth and Sudarshan (Modificado)3.1.20Database System Concepts

Redundância de Tabelas (Cont.)Redundância de Tabelas (Cont.) Para conjuntos de associações um-para-um, qualquer dos lados pode

receber a chave primária do outro lado. Se a participação é parcial no lado muitos, a substituição da tabela por

uma coluna extra pode levar à ocorrência de valores nulos. É redundante a tabela correspondente ao conjunto de associações

relacionando um conjunto de entidades fracas com o seu conjunto identificador. E.g. A tabela payment já contém a informação que apareceria na

tabela loan-payment (i.e., as colunas loan-number e payment-number).

Page 21: ©Silberschatz, Korth and Sudarshan (Modificado)3.1.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.

©Silberschatz, Korth and Sudarshan (Modificado)3.1.21Database System Concepts

Derivação de Tabelas para a EspecializaçãoDerivação de Tabelas para a Especialização

Método 1: Formar uma tabela para a entidade de maior nível (mais geral) Criar uma tabela para cada conjunto de entidades de nível abaixo,

incluindo a chave primária da entidade acima e os atributos locais.

table table attributespersonname, street, city customername, credit-ratingemployeename, salary

Desvantagem: obter a informação acerca de employee (por exemplo) obriga à consulta de duas tabelas

Page 22: ©Silberschatz, Korth and Sudarshan (Modificado)3.1.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.

©Silberschatz, Korth and Sudarshan (Modificado)3.1.22Database System Concepts

Derivação de Tabelas para a EspecializaçãoDerivação de Tabelas para a Especialização

Método 2: Formar uma tabela para cada conjunto de entidades com os

atributos locais e herdadostable table attributes

personname, street, citycustomername, street, city, credit-ratingemployee name, street, city, salary

Se a especialização é total, não há necessidade de criar uma tabela para a entidade mais geral (person)

Desvantagem: street e city podem ser duplicados para pessoas que são simultaneamente clientes e empregados

Page 23: ©Silberschatz, Korth and Sudarshan (Modificado)3.1.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.

©Silberschatz, Korth and Sudarshan (Modificado)3.1.23Database System Concepts

Relações Correspondendo à Relações Correspondendo à AgregaçãoAgregação

Para representar agregações, criar uma tabela com a chave primária da associação agregada, a chave primária do conjunto de entidades

participante Restantes atributos descritivos

Page 24: ©Silberschatz, Korth and Sudarshan (Modificado)3.1.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.

©Silberschatz, Korth and Sudarshan (Modificado)3.1.24Database System Concepts

Diagrama do esquema para o bancoDiagrama do esquema para o banco