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

25
©Silberschatz, Korth and Sudarshan (Modificad 3.2.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.2.1Database System Concepts Capítulo 3: Modelo...

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

©Silberschatz, Korth and Sudarshan (Modificado)3.2.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.2.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.

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

Linguagem de Consulta/InterrogaçãoLinguagem de Consulta/Interrogação Linguagem a que o utilizador recorre para obter informação a

partir da base de dados. Categorias de linguagens

procedimentais declarativas

Linguagens “Puras”: Álgebra Relacional Cálculo Relacional de Tuplos Cálculo Relacional de Domínios

As linguagens puras formam a base teórica das linguagens de consulta utilizadas na prática.

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

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

Álgebra RelacionalÁlgebra Relacional Linguagem declarativa Seis operadores básicos

selecção projecção união diferença de conjuntos produto cartesiano renomeação

Os operadores têm como argumentos relações de entrada e devolvem uma relação como resultado.

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

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

Operação de Selecção – ExemploOperação de Selecção – Exemplo

• Relação r A B C D

1

5

12

23

7

7

3

10

A=B ^ D > 5 (r)A B C D

1

23

7

10

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

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

Operação de SelecçãoOperação de Selecção

Notação: p(r) p é designado por predicado de selecção Definida como:

p(r) = {t | t r e p(t)}Em que p é uma fórmula do cálculo proposicional constituída por termos ligados por: (e), (ou), (não)Cada termo é da forma:<atributo> op <atributo> ou <constante>

em que op pode ser: =, , >, . <. Exemplo de selecção:

branch-name=‘Perryridge’ (account)

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

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

Operação de Projecção – ExemploOperação de Projecção – Exemplo

Relação r: A B C

10

20

30

40

1

1

1

2

A C

1

1

1

2

=

A C

1

1

2

A,C (r)

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

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

Operação de ProjecçãoOperação de Projecção Notação:

A1, A2, …, Ak (r)

em que A1, ..., Ak são nomes de atributos e r é uma relação.

O resultado é a relação com as k colunas obtidas eliminando as colunas que não estão listadas

São removidas as linhas duplicadas no resultado, dado que as relações são conjuntos

E.g. eliminar o atributo branch-name de account account-number, balance (account)

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

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

Operação de União – ExemploOperação de União – Exemplo

Relações r, s:

r s:

A B

1

2

1

A B

2

3

rs

A B

1

2

1

3

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

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

Operação de UniãoOperação de União Notação: r s Definida como:

r s = {t | t r ou t s}

Para r s ser válida:

1. r, s devem ter a mesma aridade (igual número de atributos)

2. Os domínios dos atributos têm de ser compatíveis (e.g., os valores da 2ª coluna de r são do mesmo tipo dos valores da 2ª coluna de s)

E.g. determinar quais os clientes que têm uma conta ou um empréstimo customer-name (depositor) customer-name (borrower)

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

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

Operação de Diferença de Conjuntos-Ex.Operação de Diferença de Conjuntos-Ex.

Relações r, s:

r – s:

A B

1

2

1

A B

2

3

rs

A B

1

1

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

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

Operação de Diferença de ConjuntosOperação de Diferença de Conjuntos Notação: r – s Definida como:

r – s = {t | t r e t s} As diferenças de conjuntos só podem ser efectuadas entre

relações compatíveis. r e s devem ter a mesma aridade os domínios dos atributos de r e s devem ser compatíveis

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

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

Operação de Produto Cartesiano-Ex.Operação de Produto Cartesiano-Ex.

Relations r, s:

r x s:

A B

1

2

A B

11112222

C D

1010201010102010

E

aabbaabb

C D

10102010

E

aabbr

s

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

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

Operação de Produto CartesianoOperação de Produto Cartesiano Notação: r x s Definida como:

r x s = {t q | t r e q s} Assume que os atributos de r(R) e s(S) são disjuntos. (Ou seja,

R S = ). Se os atributos de r(R) e s(S) não são disjuntos, então têm que

se utilizar renomeações.

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

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

Composição de OperaçõesComposição de Operações Pode-se construir expressões combinando várias operações Exemplo: A=C(r x s)

r x s

A=C(r x s)

A B

11112222

C D

1010201010102010

E

aabbaabb

A B C D E

122

102020

aab

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

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

Operação de RenomeaçãoOperação de Renomeação Permite dar um nome, e portanto referir, aos resultados de

expressões de álgebra relacional. Permite que uma relação seja referida por mais de um nome.

Exemplo:

x (E)

Devolve a expressão E com o nome XSe uma expressão de álgebra relacional E tem aridade n, então

x (A1, A2, …, An) (E)

Devolve a expressão E com o nome X, e com os atributos

renomeados para A1, A2, …., An.

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

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

Definição FormalDefinição Formal Uma expressão básica na álgebra relacional é:

Uma relação na base de dados Uma relação constante

Sejam E1 e E2 expressões de álgebra relacional; então todas as expressões abaixo são expressões de álgebra relacional:

E1 E2

E1 - E2

E1 x E2

p (E1), P é um predicado nos atributos de E1

s(E1), S é uma lista com alguns dos atributos de E1

x (E1), x é um novo nome para o resultado de E1

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

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

Exemplo BancárioExemplo Bancário

branch (branch-name, branch-city, assets)

customer (customer-name, customer-street, customer-only)

account (account-number, branch-name, balance)

loan (loan-number, branch-name, amount)

depositor (customer-name, account-number)

borrower (customer-name, loan-number)

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

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

Consultas de ExemploConsultas de Exemplo

Determinar todos os empréstimos superiores a $1200

amount > 1200 (loan) Encontrar os números dos empréstimos de montante superior a

$1200

loan-number (amount > 1200 (loan))

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

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

Consultas de ExemploConsultas de Exemplo

Listar os nomes de todos os clientes que têm um empréstimo, uma conta, ou ambas as coisas

customer-name (borrower) customer-name (depositor)

Encontrar os clientes que têm um empréstimo e uma conta no banco.

customer-name (borrower) customer-name (depositor)

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

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

Consultas de ExemploConsultas de Exemplo Determinar todos os clientes que têm um empréstimo na agência de

Perryridge.

customer-name (branch-name=‘Perryridge’

(borrower.loan-number = loan.loan-number(borrower x loan)))

Listar os nomes dos clientes que possuem um empréstimo na agência de Perryridge mas que não tem nenhuma conta no banco.

customer-name (branch-name = ‘Perryridge’

(borrower.loan-number = loan.loan-number(borrower x loan)))

– customer-name(depositor)

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

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

Consultas de ExemploConsultas de Exemplo Determinar todos os clientes que têm um empréstimo na agência de

Perryridge. Query 1

customer-name(branch-name = ‘Perryridge’

(borrower.loan-number = loan.loan-number(borrower x loan)))

Query 2

customer-name(loan.loan-number = borrower.loan-number( (branch-name = ‘Perryridge’(loan)) x borrower) )

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

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

Consultas de ExemploConsultas de Exemplo

Determinar o saldo mais elevado entre todas as contas Renomear a relação account como d A consulta é:

balance(account) - account.balance

(account.balance < d.balance (account x d (account)))

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

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

Exemplo ClínicaExemplo Clínica

médicos(nEmpr,nomeM,especialidade)

pacientes(nBI,nomeP,telefone,morada,idade)

fármacos(codF,nomeF)

consultas(nConsulta,data,nBI,nEmpr)

receitas(codF,nConsulta,quantidade)

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

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

Consultas de ExemploConsultas de Exemplo Quais os pacientes com mais de 50 anos de idade?

idade > 50 (pacientes) Quais os nomes dos pacientes com mais de 50 anos de idade?

nomeP (idade > 50 (loan)) Quais os fármacos que já foram receitados em consultas da clínica?

nomeF((receitas.codF = fármacos.codF(receitas x fármacos)))

Quais os fármacos que nunca foram receitados?

nomeF(fármacos) –

nomeF(receitas.codF = fármacos.codF(receitas x fármacos)))

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

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

Consultas de exemploConsultas de exemplo Qual a idade do paciente mais velho?

Renomear a relação pacientes como d A consulta é:

idade(pacientes) –

pacientes.idade(

pacientes.idade < d.idade (pacientes x d (pacientes) )

) E quais os (nomes dos) pacientes com essa idade?

Seja r a relação da pergunta anterior:

nomeP( pacientes.idade = r.idade (pacientes x r))