Capítulo 3: Modelo Relacional - orium.pworium.pw/univ/lei/bd/slides/aula5.pdf · Álgebra...

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

Transcript of Capítulo 3: Modelo Relacional - orium.pworium.pw/univ/lei/bd/slides/aula5.pdf · Álgebra...

Page 1: Capítulo 3: Modelo Relacional - orium.pworium.pw/univ/lei/bd/slides/aula5.pdf · Álgebra relacional como linguagem de interrogação. Álgebra Relacional Seis operadores básicos

Capítulo 3: Modelo RelacionalCapítulo 3: Modelo Relacional

� Estrutura das Bases de Dados Relacionais

� Redução a tabelas de um Esquema ER

� Álgebra Relacional

� Operações Estendidas da Álgebra Relacional

� Modificação da Base de Dados

� Vistas

©Silberschatz, Korth and Sudarshan (modificado)1Database System Concepts

� Vistas

Page 2: Capítulo 3: Modelo Relacional - orium.pworium.pw/univ/lei/bd/slides/aula5.pdf · Álgebra relacional como linguagem de interrogação. Álgebra Relacional Seis operadores básicos

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

©Silberschatz, Korth and Sudarshan (modificado)2Database System Concepts

Page 3: Capítulo 3: Modelo Relacional - orium.pworium.pw/univ/lei/bd/slides/aula5.pdf · Álgebra relacional como linguagem de interrogação. Álgebra Relacional Seis operadores básicos

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 R

E.g. customer(Customer-schema)

©Silberschatz, Korth and Sudarshan (modificado)3Database System Concepts

Page 4: Capítulo 3: Modelo Relacional - orium.pworium.pw/univ/lei/bd/slides/aula5.pdf · Álgebra relacional como linguagem de interrogação. Álgebra Relacional Seis operadores básicos

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

atributosclientes

id nome morada cidade

©Silberschatz, Korth and Sudarshan (modificado)4Database System Concepts

tuplos

id nome morada cidade

13123 Luís Trindade Rue Central Paris

43242 Pedro Silva Rua da Sofia Coimbra

36645 Joana Sobral Rua Dª Maria Coimbra

21313 Susana Dias Av do Brasil Lisboa

Page 5: Capítulo 3: Modelo Relacional - orium.pworium.pw/univ/lei/bd/slides/aula5.pdf · Álgebra relacional como linguagem de interrogação. Álgebra Relacional Seis operadores básicos

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”:

©Silberschatz, Korth and Sudarshan (modificado)5Database System Concepts

� Á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 6: Capítulo 3: Modelo Relacional - orium.pworium.pw/univ/lei/bd/slides/aula5.pdf · Álgebra relacional como linguagem de interrogação. Álgebra Relacional Seis operadores básicos

Interrogação de bases de dadosInterrogação de bases de dados

� Como deve ser uma linguagem de interrogação?

� O que são perguntas (ou interrogações)?

� E como são as respostas?

� Uma resposta a uma pergunta a uma base de dados relacional é uma relação (ou tabela).

� Eg. a resposta à pergunta quais os clientes com contas com saldos

©Silberschatz, Korth and Sudarshan (modificado)6Database System Concepts

� Eg. a resposta à pergunta quais os clientes com contas com saldos inferiores a 10, e de quanto são esses saldos é uma relação com atributos nome (ou nº) de cliente e saldo, e cujos tuplos são aqueles que se pretendem

� Logo uma pergunta é uma “função” (ou melhor uma operação) que, dado um conjunto de relações, devolve uma relação

� Para “formalizar” uma pergunta precisamos de um conjunto de operadores que operem sobre relações

� Álgebra relacional como linguagem de interrogação

Page 7: Capítulo 3: Modelo Relacional - orium.pworium.pw/univ/lei/bd/slides/aula5.pdf · Álgebra relacional como linguagem de interrogação. Álgebra Relacional Seis operadores básicos

Álgebra RelacionalÁlgebra Relacional

� Seis operadores básicos

� selecção

� projecção

� união

� diferença de conjuntos

� produto cartesiano

©Silberschatz, Korth and Sudarshan (modificado)7Database System Concepts

� renomeação

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

Page 8: Capítulo 3: Modelo Relacional - orium.pworium.pw/univ/lei/bd/slides/aula5.pdf · Álgebra relacional como linguagem de interrogação. Álgebra Relacional Seis operadores básicos

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

onde p é uma fórmula do cálculo proposicional constituída por termos ligados por: ∧ (e), ∨ (ou), ¬ (não)

©Silberschatz, Korth and Sudarshan (modificado)8Database System Concepts

termos ligados por: ∧ (e), ∨ (ou), ¬ (não)� Cada termo é da forma:

<atributo> op <atributo> ou <constante>

onde op pode ser: =, ≠, >, ≥. <. ≤

� Exemplo de selecção:σ branch-name=‘Perryridge’ (account)

Page 9: Capítulo 3: Modelo Relacional - orium.pworium.pw/univ/lei/bd/slides/aula5.pdf · Álgebra relacional como linguagem de interrogação. Álgebra Relacional Seis operadores básicos

Operação de Selecção Operação de Selecção –– ExemploExemplo

� Relação r

r

A B C D

α α 1 7

α β 5 7

β β 12 3

β β 23 10

©Silberschatz, Korth and Sudarshan (modificado)9Database System Concepts

� σA=B ∧ D > 5 (r)

β β 23 10

σσσσA = B ∧∧∧∧ D > 5 (r)

A B C D

α α 1 7

β β 23 10

Page 10: Capítulo 3: Modelo Relacional - orium.pworium.pw/univ/lei/bd/slides/aula5.pdf · Álgebra relacional como linguagem de interrogação. Álgebra Relacional Seis operadores básicos

Operação de ProjecçãoOperação de Projecção

� Notação:

∏A1, A2, …, Ak (r)

onde 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

©Silberschatz, Korth and Sudarshan (modificado)10Database System Concepts

relações são conjuntos

� E.g. eliminar o atributo branch-name de account

∏account-number, balance (account)

Page 11: Capítulo 3: Modelo Relacional - orium.pworium.pw/univ/lei/bd/slides/aula5.pdf · Álgebra relacional como linguagem de interrogação. Álgebra Relacional Seis operadores básicos

Operação de Projecção Operação de Projecção –– ExemploExemplo

� Relação r:r

A B C

αααα 10 1

αααα 20 1

ββββ 30 1

ββββ 40 2

©Silberschatz, Korth and Sudarshan (modificado)11Database System Concepts

� ∏A,C (r)

⇒⇒⇒⇒

ββββ 40 2

A C

αααα 1

αααα 1

ββββ 1

ββββ 2

∏∏∏∏A,C (r)

A C

αααα 1

ββββ 1

ββββ 2

Page 12: Capítulo 3: Modelo Relacional - orium.pworium.pw/univ/lei/bd/slides/aula5.pdf · Álgebra relacional como linguagem de interrogação. Álgebra Relacional Seis operadores básicos

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)

©Silberschatz, Korth and Sudarshan (modificado)12Database System Concepts

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 13: Capítulo 3: Modelo Relacional - orium.pworium.pw/univ/lei/bd/slides/aula5.pdf · Álgebra relacional como linguagem de interrogação. Álgebra Relacional Seis operadores básicos

Operação de União Operação de União –– ExemploExemplo

� Relações r, s: r

A B

αααα 1

αααα 2

ββββ 1

s

A B

αααα 2

ββββ 3

©Silberschatz, Korth and Sudarshan (modificado)13Database System Concepts

� r ∪ s:r ∪ s

A B

αααα 1

αααα 2

ββββ 1

ββββ 3

Page 14: Capítulo 3: Modelo Relacional - orium.pworium.pw/univ/lei/bd/slides/aula5.pdf · Álgebra relacional como linguagem de interrogação. Álgebra Relacional Seis operadores básicos

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

©Silberschatz, Korth and Sudarshan (modificado)14Database System Concepts

� os domínios dos atributos de r e s devem ser compatíveis

Page 15: Capítulo 3: Modelo Relacional - orium.pworium.pw/univ/lei/bd/slides/aula5.pdf · Álgebra relacional como linguagem de interrogação. Álgebra Relacional Seis operadores básicos

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

� Relações r, s: r

A B

αααα 1

αααα 2

ββββ 1

s

A B

αααα 2

ββββ 3

©Silberschatz, Korth and Sudarshan (modificado)15Database System Concepts

� r – s:

r - s

A B

αααα 1

ββββ 1

Page 16: Capítulo 3: Modelo Relacional - orium.pworium.pw/univ/lei/bd/slides/aula5.pdf · Álgebra relacional como linguagem de interrogação. Álgebra Relacional Seis operadores básicos

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

©Silberschatz, Korth and Sudarshan (modificado)16Database System Concepts

se utilizar renomeações.

Page 17: Capítulo 3: Modelo Relacional - orium.pworium.pw/univ/lei/bd/slides/aula5.pdf · Álgebra relacional como linguagem de interrogação. Álgebra Relacional Seis operadores básicos

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

� Relações r e s:

� r x s:

s

C D E

αααα 10 a

αααα 13 a

ββββ 20 b

γγγγ 10 b

r

A B

αααα 1

ββββ 2

r x s

A B C D E

©Silberschatz, Korth and Sudarshan (modificado)17Database System Concepts

A B C D E

αααα 1 αααα 10 a

αααα 1 αααα 13 a

αααα 1 ββββ 20 b

αααα 1 γγγγ 10 b

ββββ 2 αααα 10 a

ββββ 2 αααα 13 a

ββββ 2 ββββ 20 b

ββββ 2 γγγγ 10 b

Page 18: Capítulo 3: Modelo Relacional - orium.pworium.pw/univ/lei/bd/slides/aula5.pdf · Álgebra relacional como linguagem de interrogação. Álgebra Relacional Seis operadores básicos

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 B C D E

αααα 1 αααα 10 a

σσσσA=C(r x s)

A B C D E

αααα 1 αααα 10 a

©Silberschatz, Korth and Sudarshan (modificado)18Database System Concepts

αααα 1 αααα 10 a

αααα 1 αααα 13 a

αααα 1 ββββ 20 b

αααα 1 γγγγ 10 b

ββββ 2 αααα 10 a

ββββ 2 αααα 13 a

ββββ 2 ββββ 20 b

ββββ 2 γγγγ 10 b

αααα 1 αααα 10 a

αααα 1 αααα 13 a

ββββ 2 ββββ 20 b

Page 19: Capítulo 3: Modelo Relacional - orium.pworium.pw/univ/lei/bd/slides/aula5.pdf · Álgebra relacional como linguagem de interrogação. Álgebra Relacional Seis operadores básicos

Operação de RenomeaçãoOperação de Renomeação

� Permite dar um nome a, e portanto referir, os resultados de expressões de álgebra relacional.

� Permite que uma relação seja referida por mais de um nome.

� A expressão:

ρ x (E)

devolve a expressão E com o nome X

©Silberschatz, Korth and Sudarshan (modificado)19Database System Concepts

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 20: Capítulo 3: Modelo Relacional - orium.pworium.pw/univ/lei/bd/slides/aula5.pdf · Álgebra relacional como linguagem de interrogação. Álgebra Relacional Seis operadores básicos

Exemplo ClínicaExemplo Clínica

fármacos

PK codF

nomeF

consultas

receitas

PK,FK1 codF

PK nConsulta

quantidade

©Silberschatz, Korth and Sudarshan (modificado)20Database System Concepts

médicos

PK nEmpr

nomeM

especialidade

pacientes

PK nBI

nomeP

telefone

morada

idade

consultas

PK nConsulta

data

FK1 nBI

FK2 nEmpr

Page 21: Capítulo 3: Modelo Relacional - orium.pworium.pw/univ/lei/bd/slides/aula5.pdf · Álgebra relacional como linguagem de interrogação. Álgebra Relacional Seis operadores básicos

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)

©Silberschatz, Korth and Sudarshan (modificado)21Database System Concepts

� receitas(codF,nConsulta,quantidade)

Page 22: Capítulo 3: Modelo Relacional - orium.pworium.pw/univ/lei/bd/slides/aula5.pdf · Álgebra relacional como linguagem de interrogação. Álgebra Relacional Seis operadores básicos

Exemplo ClínicaExemplo Clínica

médicos(nEmpr,nomeM,especialidade)

fármacos(codF,nomeF)

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

consultas(nConsulta,data,nBI,nEmpr)

receitas(codF,nConsulta,quantidade)

©Silberschatz, Korth and Sudarshan (modificado)22Database System Concepts

� 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 (pacientes))

Page 23: Capítulo 3: Modelo Relacional - orium.pworium.pw/univ/lei/bd/slides/aula5.pdf · Álgebra relacional como linguagem de interrogação. Álgebra Relacional Seis operadores básicos

Exemplo ClínicaExemplo Clínica

médicos(nEmpr,nomeM,especialidade)

fármacos(codF,nomeF)

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

consultas(nConsulta,data,nBI,nEmpr)

receitas(codF,nConsulta,quantidade)

©Silberschatz, Korth and Sudarshan (modificado)23Database System Concepts

� Quais os nomes dos fármacos que já foram receitados em consultas da clínica?

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

Page 24: Capítulo 3: Modelo Relacional - orium.pworium.pw/univ/lei/bd/slides/aula5.pdf · Álgebra relacional como linguagem de interrogação. Álgebra Relacional Seis operadores básicos

Exemplo ClínicaExemplo Clínica

médicos(nEmpr,nomeM,especialidade)

fármacos(codF,nomeF)

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

consultas(nConsulta,data,nBI,nEmpr)

receitas(codF,nConsulta,quantidade)

©Silberschatz, Korth and Sudarshan (modificado)24Database System Concepts

� Quais os nomes dos 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 - orium.pworium.pw/univ/lei/bd/slides/aula5.pdf · Álgebra relacional como linguagem de interrogação. Álgebra Relacional Seis operadores básicos

Exemplo ClínicaExemplo Clínica

médicos(nEmpr,nomeM,especialidade)

fármacos(codF,nomeF)

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

consultas(nConsulta,data,nBI,nEmpr)

receitas(codF,nConsulta,quantidade)

©Silberschatz, Korth and Sudarshan (modificado)25Database System Concepts

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

)

Page 26: Capítulo 3: Modelo Relacional - orium.pworium.pw/univ/lei/bd/slides/aula5.pdf · Álgebra relacional como linguagem de interrogação. Álgebra Relacional Seis operadores básicos

pacientesNome Idade

Ana 30

Rui 20

Carla 25

ρρρρd(pacientes)d.Nome d.Idade

Ana 30

Rui 20

Carla 25

pacientes x ρρρρd(pacientes)Nome Idade d.Nome d.Idade

Ana 30 Ana 30

Ana 30 Rui 20

Ana 30 Carla 25

Rui 20 Ana 30

Rui 20 Rui 20

Rui 20 Carla 25

Carla 25 Ana 30

σ σ σ σ pacientes.Idade < d.Idade(pacientes x ρρρρd(pacientes))

Nome Idade d.Nome d.Idade

Rui 20 Ana 30

Exemplo ClínicaExemplo Clínica

⇒⇒⇒⇒⇒⇒⇒⇒

©Silberschatz, Korth and Sudarshan (modificado)26Database System Concepts

Carla 25 Ana 30

Carla 25 Rui 20

Carla 25 Carla 25

Rui 20 Ana 30

Rui 20 Carla 25

Carla 25 Ana 30

Π Π Π Π pacientes.Idade (σ (σ (σ (σ pacientes.Idade < d.Idade(pacientes x ρρρρd(pacientes)))

Idade

20

25

ΠΠΠΠIdade (pacientes) –Π Π Π Π pacientes.Idade (σ (σ (σ (σ pacientes.Idade < d.Idade

(pacientes x ρρρρd(pacientes)))Idade

30

ΠΠΠΠIdade (pacientes)Idade

30

20

25

⇐⇐⇐⇐

⇓⇓⇓⇓

⇒⇒⇒⇒

Page 27: Capítulo 3: Modelo Relacional - orium.pworium.pw/univ/lei/bd/slides/aula5.pdf · Álgebra relacional como linguagem de interrogação. Álgebra Relacional Seis operadores básicos

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)

médicos

PK nEmpr

nomeM

especialidade

pacientes

PK nBI

nomeP

fármacos

PK codF

nomeF

consultas

PK nConsulta

data

FK1 nBI

FK2 nEmpr

receitas

PK,FK1 codF

PK nConsulta

quantidade

©Silberschatz, Korth and Sudarshan (modificado)27Database System Concepts

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

nomeP

telefone

morada

idade

Page 28: Capítulo 3: Modelo Relacional - orium.pworium.pw/univ/lei/bd/slides/aula5.pdf · Álgebra relacional como linguagem de interrogação. Álgebra Relacional Seis operadores básicos

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

©Silberschatz, Korth and Sudarshan (modificado)28Database System Concepts

1 2

� 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