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

Preview:

Citation preview

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

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

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Exemplo de uma relação

© 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

© 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

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

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

© 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

© 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

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

A relação cliente

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

A relação depositante

© 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

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

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

© 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

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

© 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

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

© 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

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

© 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

© 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

© 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

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

© 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

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

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

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

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

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

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

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

© 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

© 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

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

© 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

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

© 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

© 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

© 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

© 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

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

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

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

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

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

© 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

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

© 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

© 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

© 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

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

© 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

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Junção externa – Exemplo

Relação empréstimo

Relação tomador

© 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

© 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

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

© 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

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

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

© 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

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

© 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

© 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

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

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Fim do Capítulo 2

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.3. A relação agência

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.6: A relação empréstimo

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.7: A relação tomador

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.8: Diagrama de esquema

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

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

(empréstimo)

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.10: Número e quantiado empréstimo

© 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

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

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

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.13: Resultado de tomador empréstimo

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.14

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.15

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.16

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.17: Maior saldo do banco

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

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

Smith

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.19: Clientes com uma conta

e um empréstimo no banco

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.20

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.21

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.22

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.23

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.24: A relação info_crédito

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.25

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.26: A relação func_mp

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.27The pt_works relation after

regrouping

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.28

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.29

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.30Relações funcionário e func_pi

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.31

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.32

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.33

© Korth • Silberschatz • Sundarshan

Sistema de Banco de Dados, 5/E

Figura 2.34

Recommended