Capítulo 3: Modelo Relacional

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

description

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. Linguagem de Consulta/Interrogação. - PowerPoint PPT Presentation

Transcript of Capítulo 3: Modelo Relacional

Page 1: Capítulo 3:  Modelo Relacional

©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: Capítulo 3:  Modelo Relacional

©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: Capítulo 3:  Modelo Relacional

©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: Capítulo 3:  Modelo Relacional

©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: Capítulo 3:  Modelo Relacional

©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: Capítulo 3:  Modelo Relacional

©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: Capítulo 3:  Modelo Relacional

©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: Capítulo 3:  Modelo Relacional

©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: Capítulo 3:  Modelo Relacional

©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: Capítulo 3:  Modelo Relacional

©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: Capítulo 3:  Modelo Relacional

©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: Capítulo 3:  Modelo Relacional

©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: Capítulo 3:  Modelo Relacional

©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: Capítulo 3:  Modelo Relacional

©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: Capítulo 3:  Modelo Relacional

©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 X

Se 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: Capítulo 3:  Modelo Relacional

©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: Capítulo 3:  Modelo Relacional

©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: Capítulo 3:  Modelo Relacional

©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: Capítulo 3:  Modelo Relacional

©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: Capítulo 3:  Modelo Relacional

©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: Capítulo 3:  Modelo Relacional

©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: Capítulo 3:  Modelo Relacional

©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: Capítulo 3:  Modelo Relacional

©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: Capítulo 3:  Modelo Relacional

©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: Capítulo 3:  Modelo Relacional

©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))