sistema de banco de dados, 5/e © korth silberschatz sundarshan capítulo 2: modelo relacional
TRANSCRIPT
© 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
© 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)
© 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