96
© Korth • Silberschatz • Sundarshan Sistema de Banco de Dados, 5/E Capítulo 2: Modelo relacional

Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

Embed Size (px)

Citation preview

Page 1: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Capítulo 2: Modelo relacional

Page 2: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Capítulo 2: Modelo relacional

Estrutura dos bancos de dados relacionais

Operações fundamentais da álgebra relacional

Outras operações de álgebra relacional

Operações de álgebra relacional estendidas

Valores nulos

Modificação do banco de dados

Page 3: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Exemplo de uma relação

Page 4: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Estrutura 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 n tuplas (a1, a2, …, an) onde cada ai Di

• Exemplo: Senome_cliente = {Jones, Smith, Curry,

Lindsay}rua_cliente = {Main, North, Park}cidade_cliente = {Harrison, Rye, Pittsfield}

Então r = { (Jones, Main, Harrison), (Smith, North, Rye), (Curry, North, Rye), (Lindsay, Park, Pittsfield) }é uma relação sobre

nome_cliente x rua_cliente x cidade_cliente

Page 5: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Tipos de atributo

Cada atributo de uma relação possui um nome

O conjunto de valores permitidos para cada atributo é chamado o domínio do atributo

Os valores de atributo têm (normalmente) a exigência de serem atômicos; isto é, indivisíveis

Nota: valores de atributo de valores múltiplos não são atômicos

Nota: valores de atributo compostos não são atômicos

O valor especial nulo é um membro de todo domínio

O valor nulo causa complicações na definição de muitas operações

Iremos ignorar o efeito dos valores nulos em nossa apresentação principal e consideraremos seu efeito mais adiante

Page 6: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Esquema de relação

A1, A2, …, An são atributos

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

– Exemplo:

– Esquema_cliente = (nome_cliente, rua_cliente, cidade_cliente)

r(R) é uma relação no esquema de relação R

– Exemplo:

– cliente (Esquema_cliente)

Page 7: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Instância de relação

Os valores atuais (instância de relação) de uma relação são especificados por uma tabela

Um elemento t de r é uma tupla, representada por uma linha em uma tabela

atributos(ou colunas)

tuplas(ou linhas)

Page 8: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Relações são desordenadas

A ordem das tuplas é irrelevante (as tuplas podem estar em uma ordem arbitrária)

Exemplo: relação conta com tuplas não ordenadas

Page 9: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Banco de dados

Um banco de dados consiste em múltiplas relações

As informações sobre uma empresa são divididas em partes, com cada relação armazenando uma parte das informações

conta : armazena informações sobre contasdepositante : armazena informações sobre que cliente possui que conta cliente : armazena informações sobre clientes

Armazenar todas as informações como uma única relação como banco (número_conta, saldo, nome_cliente, ..)resulta em

Repetição de informações (por exemplo, dois clientes possuem uma única conta)

A necessidade de valores nulos (por exemplo, representar um cliente sem uma conta)

Teoria da normalização (Capítulo 7) trata de como projetar esquemas relacionais

Page 10: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

A relação cliente

Page 11: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

A relação depositante

Page 12: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Chaves

• Seja K R• K é uma superchave de R se os valores para K são

suficientes para identificar uma tupla única de cada relação r(R) possível

• Com “r possível”, queremos dizer uma relação r que poderia existir na empresa que estamos modelando.

• Exemplo: {nome_cliente, rua_cliente} e {nome_cliente} são, ambas, superchaves de Cliente, se nenhum cliente puder ter o mesmo nome de outro cliente.

• K é uma chave candidata se K for mínimo Exemplo: {nome_cliente} é uma chave candidata para Cliente, já que ela é uma superchave (considerando que nenhum cliente pode ter o mesmo nome de outro cliente), e nenhum de seus subconjuntos é uma superchave.

• Chave primária

Page 13: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Linguagens de consulta

Linguagem em que um usuário requisita informações do banco de dados.

Categorias de linguagens

Procedural

Não procedural, ou declarativa

Linguagens “puras”:

Álgebra relacional

Cálculo relacional de tupla

Cálculo relacional de domínio

Linguagens puras formam base das linguagens de consulta que as pessoas usam.

Page 14: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Álgebra relacional

Linguagem procedural

Seis operadores básicos

seleção:

projeção:

união:

diferença de conjuntos: –

produto cartesiano: x

renomeação:

Os operadores usam uma ou duas relações como entrada e produzem uma nova relação como resultado.

Page 15: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Operação seleção – Exemplo

• Relação r

A=B ^ D > 5 (r)

A B C D

1

5

12

23

7

7

3

10

A B C D

1

23

7

10

Page 16: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Operação select

Notação: p(r)

p é chamado o predicado de seleção

Definida como:

p(r) = {t | t r and p(t)}

– Onde p é uma fórmula em cálculo proposicional consistindo em termos conectados por: (and), (or), (not)Cada termo pode ser:

– <atributo> op <atributo> ou <constante>

– onde op pode ser: =, , >, . <.

Exemplo de seleção:

nome_agência=“Perryridge”(conta)

Page 17: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Operação projeção – Exemplo

Relação r:

A,C (r)

A B C

10

20

30

40

1

1

1

2

A C

1

1

1

2

=

A C

1

1

2

Page 18: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Operação projeção

Notação: A1, A2,..., Ak(r)

– onde A1, A2 são nomes de atributo e r é um nome relacional.

O resultado é definido como a relação de k colunas obtidas excluindo-se as colunas que não estão listadas

Linhas duplicadas são removidas do resultado, de modo que as relações sjam conjuntos

Exemplo: Para eliminar o atributo nome_agência de conta

número_conta, saldo (conta)

Page 19: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Operação 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 20: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Operação união

Notação: r s

Definida como:

– r s = {t | t r or t s}

Para que r s seja válido:

– 1. r e s precisam ser da mesma aridade (o mesmo número de atributos)

– 2. Os domínios de atributo precisam ser compatíveis (exemplo: 2a coluna de r lida com o mesmo tipo de valores que a 2a coluna de s)

Exemplo: encontrar todos os clientes com uma conta ou um empréstimo nome_cliente (depositante) nome_cliente (tomador)

Page 21: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Operação diferença de conjuntos – Exemplo

Relações r, s:

r – s

A B

1

2

1

A B

2

3

rs

A B

1

1

Page 22: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Operação diferença de conjuntos

Notação r – s

Definida como:

– r – s = {t | t r and t s}

As diferenças de conjunto precisam ser relações compatíveis.

r e s precisam ter a mesma aridade

os domínios de atributo de r e s precisam ser compatíveis

Page 23: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Operação produto cartesiano – Exemplo

• Relações r, s

• r s A B

11112222

C D

1010201010102010

E

aabbaabb

A B

1

2

C D

10102010

E

aabbr

s

Page 24: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Operação produto cartesiano

Notação r x s

Definida como:

– r x s = {t q | t r and q s}

Considere que os atributos de r(R) e s(S) sejam disjuntos. (Ou seja, R S = ).

Se os atributos de r(R) e s(S) não forem disjuntos, então, o restante precisa ser usado.

Page 25: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Composição das operações

• Pode construir expressões usando 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

101020

aab

Page 26: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Operação renomeação

• Permite nomear e, portanto, referir-se aos resultados das expressões de álgebra relacional.

• Permite referir-se a uma relação por mais de um nome.• Exemplo:• x (E)

• retorna a expressão E sob o nome X• Se uma expressão de álgebra relacional E tiver aridade n,

então x(A1, A2,..., An)(E)• retorna o resultado da expressão E com o nome x,

e com os atributos renomeados para A1, A2,..., An.

Page 27: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Exemplo de banking

– agência (nome_agência, cidade_agência, ativo)

– cliente (nome_cliente, rua_cliente, cidade_cliente)

– conta (número_conta, nome_agência, saldo)

– empréstimo (número_empréstimo, nome_agência, quantia)

– depositante (nome_cliente, número_conta)

– tomador (nome_cliente, número_empréstimo)

Page 28: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Consultas de exemplo

• Encontre todos os empréstimos de mais de US$ 1200

quantia > 1200 (empréstimo)

Encontre o número de empréstimo para cada empréstimo de uma quantia maior que US$ 1200

número_empréstimo (quantia > 1200 (empréstimo))

Page 29: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Consultas de exemplo

• Encontre os nomes de todos os clientes que têm um

empréstimo, uma conta, ou ambos, do banco

nome_cliente (tomador) nome_cliente (depositante)

• Encontre os nomes de todos os clientes que têm um

empréstimo e uma conta no banco

nome_cliente (tomador) nome_cliente (depositante)

Page 30: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Consultas de exemplo

• Encontre os nomes de todos os clientes que têm um empréstimo na agência Perryridge.

nome_cliente (nome_agência =“Perryridge”

(tomador.número_empréstimo =empréstimo.número_empréstimo(tomador x

empréstimo)))

• Encontre os nomes de todos os clientes que têm um empréstimo na agência Perryridge mas não têm uma conta em qualquer agência do banco.

nome_cliente(nome_agência = “Perryridge” (tomador.número_empréstimo = empréstimo.

número_empréstimo (tomador x empréstimo))) – nome_cliente

(depositante)

Page 31: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Consultas de exemplo

• Encontre os nomes de todos os clientes que têm um empréstimo na agência Perryridge.

• Consulta 1 nome_cliente (nome_agência =“Perryridge”

(tomador.número_empréstimo =empréstimo.número_empréstimo(tomador x

empréstimo)))

• Consulta 2 nome_cliente(empréstimo.número_empréstimo = tomador.número_empréstimo

((nome_agência = “Perryridge” (empréstimo)) x tomador))

Page 32: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Consultas de exemplo

Encontre o maior saldo de conta

Estratégia:

Encontre os saldos que não são o maior

– Renomeie a relação conta como d de modo que possamos comparar cada saldo de conta com todos os outros

Use diferença de conjuntos para encontrar os saldos de conta que não foram encontrados na primeira etapa.

A consulta é:

saldo (conta) conta.saldo (conta.saldo < d.saldo (conta d

(conta)))

Page 33: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Definição formal

Uma expressão básica na álgebra relacional consiste em qualquer um dos seguintes:

Uma relação no banco de dados

Uma relação constante

Seja E1 e E2 expressões de álgebra relacional; todas as expressões a seguir são de álgebra relacional:

E1 E2

E1 – E2

E1 x E2

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

s(E1), S é uma lista consistindo em alguns dos atributos em E1

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

Page 34: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Outras operações

• Definimos operações adicionais que não acrescentam poder à álgebra relacional, mas que simplificam consultas comuns.

Interseção de conjuntos

Junção natural

Divisão

Atribuição

Page 35: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Operação interseção de conjuntos

Notação: r s

Definida como:

r s = { t | t r and t s }

Considere:

r, s possuem a mesma aridade

os atributos de r e s são compatíveis

Nota: r s = r – (r – s)

Page 36: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Operação interseção de conjuntos – Exemplo

Relação r, s:

r s

A B

121

A B

23

r s

A B

2

Page 37: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Operação junção natural

Notação: r [SIMBOLO] s

Sejam r e s relações nos esquemas R e S respectivamente. Então, r [SIMBOLO] s é uma relação no esquema R S obtida desta forma:

Considere cada par de tuplas tr de r e ts de s.

Se tr e ts possuem o mesmo valor em cada um dos atributos em R S, acrescente uma tupla t ao resultado, onde

t possui o mesmo valor de tr em r

t possui o mesmo valor de ts em s

Exemplo:

• R = (A, B, C, D)

• S = (E, B, D)

Esquema resultado = (A, B, C, D, E)

r [SIMBOLO] s é definido como: r.A, r.B, r.C, r.D, s.E (r.B = s.B r.D = s.D (r x s))

Page 38: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Operação junção natural – Exemplo

• Relações r, s:

• r [ ] s

A B

12412

C D

aabab

r

A B

11112

C D

aaaab

E

B

13123

D

aaabb

E

s

Page 39: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Operação divisão

Notação: r ÷ s

Adequado para consultas que incluem a frase “para todo”.

Sejam r e s relações nos esquemas R e S respectivamente, onde

R = (A1, …, Am , B1, …, Bn )

S = (B1, …, Bn)

• O resultado de r s é uma relação no esquema

• R – S = (A1, …, Am)

• r s = { t | t R-S (r) u s ( tu r ) }

• Onde tu significa a concatenação das tuplas t e u para produzir uma única tupla

Page 40: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Operação divisão – Exemplo

• Relações r, s:

• r ÷ s: A

r

B

1

2

A B

12311134612

s

Page 41: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Outro exemplo de divisão

• Relações r, s:

• r ÷ s:A B

aa

C

A B

aaaaaaaa

C D

aabababb

E

11113111

D

ab

E

11

r

s

Page 42: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Operação divisão (cont.)

Propriedade

Seja q = r s

Então, q é a maior relação que satisfaz q x s r

Definição em termos da operação de álgebra básica Seja r(R) e s(S) relações e seja S R

– r s = R-S (r ) – R-S ( ( R-S (r ) x s ) – R-S,S(r ))

– Para ver por quê

R-S,S (r) simplesmente reordena atributos de r

R-S (R-S (r ) x s ) – R-S,S(r) ) fornece as tuplas t em R-S (r ) tal que, para alguma tupla u s, tu r.

Page 43: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Operação atribuição A operação atribuição () fornece uma maneira conveniente de

expressar consultas complexas

Escreva consulta como um programa seqüencial consistindo em

uma série de atribuições

seguidas de uma expressão cujo valor é exibido como resultado da consulta

A atribuição precisa sempre ser feita para uma variável de relação temporária.

Exemplo: Escreva r s como

– temp1 R-S (r ) temp2 R-S ((temp1 x s ) – R-S,S (r ))result = temp1 – temp2

O resultado à esquerda do é atribuído à variável de relação à esquerda do .

Pode usar variável em expressões subseqüentes.

Page 44: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Exemplo de consultas de banco

Encontre o nome de todos os clientes que têm um empréstimo e uma conta no banco.

nome_cliente (tomador) nome_cliente (depositante)

Encontre o nome de todos os clientes que têm um empréstimo no banco e descubra a quantia do empréstimo.

nome_cliente, número_empréstimo, quantia (tomador [ ] empréstimo)

Page 45: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Exemplo de consultas de banco

Encontre todos os clientes que posuem uma conta pelo menos das agências “Downtown” e Uptown”.

Consulta 1:

nome_cliente(nome_agência = “Downtown” (depositante conta)) nome_cliente (nome_agência

= “Uptown” (depositante conta))

Consulta 2:

nome_cliente, nome_agência(depositante conta) temp(nome_agência) ({(“Downtown” ),

(“Uptown” )})

• Observe que a Consulta 2 usa uma relação constante.

Page 46: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Consultas de exemplo

Encontre todos os clientes que têm uma conta em todas as agências localizadas na cidade de Brooklyn.

nome_cliente, nome_agência(depositante [ ] conta) nome_agência(cidade_agência =

“Brooklyn”(agência))

Page 47: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Operações de álgebra relacional estendidas

Projeção generalizada

Funções agregadas

Junção externa

Page 48: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Projeção generalizada

Estende a operação projeção permitindo que funções aritméticas sejam usadas na lista de projeção.F1, F2,..., Fn(E)

E é qualquer expressão de álgebra relacional

Cada F1, F2,..., Fn é uma expressão aritmética envolvendo constantes e atributos no esquema de E.

Dada a relação info_crédito(nome_cliente, limite, saldo_crédito), descubra quanto mais cada pessoa pode gastar:

nome_cliente, limite saldo_crédito (info_crédito)

Page 49: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Funções e operações agregadas

As funções agregadas tomam uma coleção de valores e retornam um único valor como resultado.

– avg: valor médiomin: valor mínimomax: valor máximosum: soma dos valorescount: número de valores

Operação agregada na álgebra relacional

–G1, G2,..., GnGF1(A1), F2(A2),..., Fm(Am)(E)

–E é qualquer expressão de álgebra relacional

G1, G2 …, Gn uma lista de atributos em que agrupar (pode ser vazia)

Cada Fi é uma função agregada

Cada Ai é um nome de atributo

Page 50: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Operação agregada – Exemplo

• Relação r:

• gsum(c) (r)

A B

C

7

7

3

10

sum(c )

27

Page 51: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Operação agregada – Exemplo

Relação conta agrupada por nome_agência:

nome_agência G sum(saldo) (conta)

nome_agência número_conta soma

PerryridgePerryridgeBrightonBrightonRedwood

A-102A-201A-217A-215A-222

400900750750700

nome_agência sum(saldo)

PerryridgeBrightonRedwood

13001500700

Page 52: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Funções agregadas (cont.)

O resultado da agregação não possui um nome

Pode usar a operação renomeação para fornecer-lhe um nome

Para conveniência, permitimos a renomeação como parte da operação agregada

• nome_agência G sum(saldo) as saldo_soma (conta)

Page 53: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Junção externa

Uma extensão da operação junção que evita a perda de informações.

Calcula a junção e acrescenta ao resultado as tuplas de uma relação que não correspondem às tuplas na outra relação.

Usa valores nulos:

nulo significa que o valor é desconhecido ou inexistente

Todas as comparações envolvendo valores nulos são (grosseiramente falando) falsas por definição.

Estudaremos o significado exato das comparações com nulos mais adiante

Page 54: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Junção externa – Exemplo

Relação empréstimo

Relação tomador

Page 55: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Junção externa – Exemplo

• Junção internaempréstimo tomador

• Junção externa esquerda• empréstimo tomador

número_empréstimo quantia

L-170L-230

30004000

nome_funcionário

JonesSmith

nome_agência

DowntownRedwood

JonesSmithnull

número_empréstimo quantia

L-170L-230L-260

300040001700

nome_funcionárionome_agência

DowntownRedwoodPerryridge

Page 56: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Junção externa – Exemplo

• Junção externa direita • empréstimo tomador

• Junção externa integral• empréstimo tomador

número_empréstimo quantia

L-170L-230L-155

30004000null

nome_funcionário

JonesSmithHayes

nome_agência

DowntownRedwoodnull

número_empréstimo quantia

L-170L-230L-260L-155

300040001700null

nome_funcionário

JonesSmithnullHayes

nome_agência

DowntownRedwoodPerryridgenull

Page 57: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Valores nulos

É possível que as tuplas tenham um valor nulo, indicado por nulo, para alguns dos seus atributos.

nulo significa um valor desconhecido ou que um valor não existe.

O resultado de qualquer expressão aritmética envolvendo nulo é nulo.

As funções agregadas simplesmente ignoram valores nulos (como na SQL)

Para eliminação e agrupamento de duplicatas, nulo é tratado como qualquer outro valor e dois nulos são considerados iguais (como na SQL)

Page 58: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Valores nulos

As comparações com valores nulos retornam o valor de verdade especial desconhecido

Se falso fosse usado no lugar de desconhecido, então, not (A < 5) seria equivalente a A >= 5

Lógica de três valores usando o valor de verdade desconhecido:

OR: (desconhecido or verdadeiro) = verdadeiro, (desconhecido or falso) = desconhecido (desconhecido or desconhecido) = desconhecido

AND: (verdadeiro and desconhecido) = desconhecido (falso and desconhecido) = falso (desconhecido and desconhecido) = desconhecido

NOT: (not desconhecido) = desconhecido

Na SQL “P is unknown” avalia para verdadeiro se o predicado P avaliar para desconhecido

Resultado do predicado select é tratado como falso se ele avaliar para desconhecido

Page 59: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Modificação do banco de dados

O conteúdo do banco de dados pode ser modificado usando as seguintes operações:

Exclusão

Inserção

Atualização

Todas essas operações são expressas usando o operador de atribuição.

Page 60: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Exclusão

Uma requisição de exclusão é expressa semelhantemente a uma consulta, exceto que, em vez de exibir tuplas ao usuário, as tuplas selecionadas são removidas do banco de dados.

Pode excluir apenas tuplas inteiras; não pode excluir valores em atributos específicos.

Na álgebra relacional, uma exclusão é expressa por:

– r r – E

– onde r é uma relação e E é uma consulta de álgebra relacional.

Page 61: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Exemplos de exclusão

Exclua todos os registros de conta na agência Perryridge.

• conta conta – nome_agência = “Perryridge” (conta)

Exclua todos os empréstimos com quantia na faixa de 0 a 50

• empréstimo empréstimo quantia 0 e quantia 50

(empréstimo) Exclua todas as contas em agências localizadas no Brooklyn.

• r1 cidade_agência = “Brooklyn” (conta agência)

r2 nome_agência, número_conta, saldo (r1)

r3 nome_cliente, número_conta, (r2 depositante)

conta conta - r2

depositante depositante - r3

Tathyana Viana
Esse slide tem uns simbolos a maisVerificar
Page 62: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Inserção

Para inserir dados em uma relação:

especificamos uma tupla a ser inserida

escrevemso uma consulta cujo resultado é um conjunto de tuplas a serem inseridas

Na álgebra relacional, uma inserção é expressa por:

– r r E

– onde r é uma relação e E é uma expressão de álgebra relacional.

A inserção de uma única tupla é expressa fazendo E ser uma relação constante contendo uma tupla.

Page 63: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Exemplos de inserção

Insira informações no banco de dados especificando que Smith possui US$ 1200 na conta A-973 na agência Perryridge.

• conta conta {(A-973, “Perryridge”, 1200)}

depositante depositante {(“Smith”, A-973)}

Forneça, como um presente a todos os clientes de empréstimo da agência Perryridge, uma conta de poupança de US$200. Deixe o número de empréstimo servir como o número de conta para a conta de poupança.

• r1 (nome_agência = “Perryridge” (tomador empréstimo))

conta conta nome_agência, número_empréstimo, 200 (r1)

depositante depositante nome_cliente, número_empréstimo (r1)

Tathyana Viana
verificar quadradinhos
Page 64: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Atualização

Um mecanismo para mudar um valor em uma tupla sem mudar todos os valores na tupla

Use o operador de projeção generalizada para realizar essa tarefar F1, F2,..., Fn (r)

Cada Fi é:

o io atributo de r, se o io atributo não estiver atualizado, ou,

se o atributo precisar ser atualizado, Fi é uma expressão, envolvendo apenas constantes e os atributos de r, que fornece o novo valor para o atributo

Page 65: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Exemplos de atualização

Faça pagamentos de juros acrescendo todos os saldos de 5 por cento.

• conta número_conta, nome_agência, saldo * 1,05 (conta)

Pague 6 por cento de juros a todas as contas com saldos acima de US$10.000 e pague 5 por cento a todas as outras contas.

• conta número_conta, nome_agência, saldo * 1,06 (saldo > 10000 (conta))

número_conta, nome_agência, saldo * 1,05 (saldo 10000 (conta))

Page 66: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Fim do Capítulo 2

Page 67: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.3. A relação agência

Page 68: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.6: A relação empréstimo

Page 69: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.7: A relação tomador

Page 70: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.8: Diagrama de esquema

Page 71: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.9: Resultado de nome_agência = “Perryridge”

(empréstimo)

Page 72: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.10: Número e quantiado empréstimo

Page 73: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.11: Nomes de todos os clientes que têm um empréstimo ou

uma conta

Page 74: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.12: Clientes com uma conta, mas sem empréstimos

Page 75: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.13: Resultado de tomador empréstimo

Page 76: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.14

Page 77: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.15

Page 78: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.16

Page 79: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.17: Maior saldo do banco

Page 80: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.18: Clientes que moramna mesma cidade e na mesma rua de

Smith

Page 81: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.19: Clientes com uma conta

e um empréstimo no banco

Page 82: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.20

Page 83: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.21

Page 84: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.22

Page 85: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.23

Page 86: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.24: A relação info_crédito

Page 87: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.25

Page 88: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.26: A relação func_mp

Page 89: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.27The pt_works relation after

regrouping

Page 90: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.28

Page 91: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.29

Page 92: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.30Relações funcionário e func_pi

Page 93: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.31

Page 94: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.32

Page 95: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.33

Page 96: Sistema de Banco de Dados, 5/E © Korth Silberschatz Sundarshan Capítulo 2: Modelo relacional

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.34