©silberschatz, korth and sudarshan (modificado)3.4.1database system concepts capítulo 3: modelo...
TRANSCRIPT
![Page 1: ©Silberschatz, Korth and Sudarshan (Modificado)3.4.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução](https://reader035.vdocuments.mx/reader035/viewer/2022062502/5706384b1a28abb8238f5d01/html5/thumbnails/1.jpg)
©Silberschatz, Korth and Sudarshan (Modificado)3.4.1Database System Concepts
Capítulo 3: Modelo RelacionalCapítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução a tabelas de uma Esquema ER Álgebra Relacional Operações Estendidas da Álgebra Relacional Modificação da Base de Dados Vistas
![Page 2: ©Silberschatz, Korth and Sudarshan (Modificado)3.4.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução](https://reader035.vdocuments.mx/reader035/viewer/2022062502/5706384b1a28abb8238f5d01/html5/thumbnails/2.jpg)
©Silberschatz, Korth and Sudarshan (Modificado)3.4.2Database System Concepts
Operações Estendidas da Álg. RelacionalOperações Estendidas da Álg. Relacional
Aumentam a expressividade da Álgebra Relacional: Projecção Generalizada Funções de Agregação Junção Externa
![Page 3: ©Silberschatz, Korth and Sudarshan (Modificado)3.4.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução](https://reader035.vdocuments.mx/reader035/viewer/2022062502/5706384b1a28abb8238f5d01/html5/thumbnails/3.jpg)
©Silberschatz, Korth and Sudarshan (Modificado)3.4.3Database System Concepts
Projecção GeneralizadaProjecção Generalizada Permite a utilização de funções aritméticas na lista de projecção.
F1, F2, …, Fn(E) E é uma expressão arbitrária de álgebra relacional. Cada uma das expressões F1, F2, …, Fn é uma expressão
aritmética envolvendo constantes e atributos no esquema de E. Dada a relação credit-info(customer-name, limit, credit-balance),
encontrar quanto cada cliente pode ainda gastar:
customer-name, limit – credit-balance (credit-info)
Há quantos dias foi cada uma das consultas
nConsulta, today – data (consultas)
![Page 4: ©Silberschatz, Korth and Sudarshan (Modificado)3.4.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução](https://reader035.vdocuments.mx/reader035/viewer/2022062502/5706384b1a28abb8238f5d01/html5/thumbnails/4.jpg)
©Silberschatz, Korth and Sudarshan (Modificado)3.4.4Database System Concepts
Funções de Agregação e OperaçõesFunções de Agregação e Operações Funções de Agregação aplicam-se a uma colecção de valores
e devolvem um único valor como resultado.avg: média dos valoresmin: mínimo dos valoresmax: máximo dos valoressum: soma dos valorescount: número dos valores
Operação de Agregação na álgebra relacional
G1, G2, …, Gn g F1( A1), F2( A2),…, Fn( An) (E) E é uma expressão de álgebra relacional G1, G2 …, Gn é uma lista de atributos de agrupamento (pode ser
vazia) Cada Fi é uma função de agregação Cada Ai é um nome de um atributo
![Page 5: ©Silberschatz, Korth and Sudarshan (Modificado)3.4.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução](https://reader035.vdocuments.mx/reader035/viewer/2022062502/5706384b1a28abb8238f5d01/html5/thumbnails/5.jpg)
©Silberschatz, Korth and Sudarshan (Modificado)3.4.5Database System Concepts
Operação de Agregação - ExemploOperação de Agregação - Exemplo Relação r:
A B
C
77310
g sum(c) (r)sum-C
27
![Page 6: ©Silberschatz, Korth and Sudarshan (Modificado)3.4.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução](https://reader035.vdocuments.mx/reader035/viewer/2022062502/5706384b1a28abb8238f5d01/html5/thumbnails/6.jpg)
©Silberschatz, Korth and Sudarshan (Modificado)3.4.6Database System Concepts
Operação de Agregação - ExemploOperação de Agregação - Exemplo
Relação account agrupada por branch-name:
branch-name g sum(balance) (account)
branch-name account-number balance
PerryridgePerryridgeBrightonBrightonRedwood
A-102A-201A-217A-215A-222
400900750750700
branch-name balancePerryridgeBrightonRedwood
13001500700
![Page 7: ©Silberschatz, Korth and Sudarshan (Modificado)3.4.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução](https://reader035.vdocuments.mx/reader035/viewer/2022062502/5706384b1a28abb8238f5d01/html5/thumbnails/7.jpg)
©Silberschatz, Korth and Sudarshan (Modificado)3.4.7Database System Concepts
Funções de Agregação (Cont.)Funções de Agregação (Cont.) O resultado da agregação não tem um nome
Pode-se recorrer à operação de renomeação para lhe dar um nome Por conveniência, permite-se a renomeação de atributos na
operação de agregação
Qual a média de idades dos pacientes de cada um dos médicos?
branch-name g sum(balance) as sum-balance (account)
nEmpr g avg(idade) as média (consultas pacientes)
![Page 8: ©Silberschatz, Korth and Sudarshan (Modificado)3.4.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução](https://reader035.vdocuments.mx/reader035/viewer/2022062502/5706384b1a28abb8238f5d01/html5/thumbnails/8.jpg)
©Silberschatz, Korth and Sudarshan (Modificado)3.4.8Database System Concepts
Mais exemplosMais exemplos Quantos fármacos diferentes foram receitados em cada uma das
consultas?
nconsulta g count(codF) as quantos (receitas) Para cada médico, qual a quantidade média de fármacos receitados
por consulta?quantCons nconsulta g sum(quant) as soma (receitas)
nEmpr g avg(soma) (quantCons consultas)
Nota: Nas duas perguntas anteriores não se entra em conta com as consultas com 0 fármacos receitados!! (veremos já como resolver este problema)
Qual a idade do paciente mais velho?
g max(idade) as idade (pacientes)
![Page 9: ©Silberschatz, Korth and Sudarshan (Modificado)3.4.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução](https://reader035.vdocuments.mx/reader035/viewer/2022062502/5706384b1a28abb8238f5d01/html5/thumbnails/9.jpg)
©Silberschatz, Korth and Sudarshan (Modificado)3.4.9Database System Concepts
Junção Externa (ou exterior)Junção Externa (ou exterior) Uma extensão da operação de junção que evita a perda de
informação. Calcula a junção e depois adiciona ao resultado os tuplos de
uma relação que não estão relacionados com a outra relação na junção.
Utiliza valores nulos : null significa que o valor é desconhecido ou que não existe Simplificadamente, todas as comparações com null são falsas por
definição. Estudaremos já de seguida o significado preciso das
comparações com nulos,
![Page 10: ©Silberschatz, Korth and Sudarshan (Modificado)3.4.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução](https://reader035.vdocuments.mx/reader035/viewer/2022062502/5706384b1a28abb8238f5d01/html5/thumbnails/10.jpg)
©Silberschatz, Korth and Sudarshan (Modificado)3.4.10Database System Concepts
Junção Externa - ExemploJunção Externa - Exemplo
Relação loan
loan-number amountL-170L-230L-260
300040001700
Relação borrower
customer-name loan-numberJonesSmithHayes
L-170L-230L-155
branch-nameDowntownRedwoodPerryridge
![Page 11: ©Silberschatz, Korth and Sudarshan (Modificado)3.4.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução](https://reader035.vdocuments.mx/reader035/viewer/2022062502/5706384b1a28abb8238f5d01/html5/thumbnails/11.jpg)
©Silberschatz, Korth and Sudarshan (Modificado)3.4.11Database System Concepts
Junção Externa – ExemploJunção Externa – Exemplo
Junção interna
loan Borrower
loan borrower
Junção externa esquerda
loan-number amount
L-170L-230
30004000
customer-name
JonesSmith
branch-name
DowntownRedwood
loan-number amountL-170L-230L-260
300040001700
customer-nameJonesSmithnull
branch-nameDowntownRedwoodPerryridge
![Page 12: ©Silberschatz, Korth and Sudarshan (Modificado)3.4.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução](https://reader035.vdocuments.mx/reader035/viewer/2022062502/5706384b1a28abb8238f5d01/html5/thumbnails/12.jpg)
©Silberschatz, Korth and Sudarshan (Modificado)3.4.12Database System Concepts
Junção Externa - ExemploJunção Externa - Exemplo Junção externa direita loan borrower
loan-number amountL-170L-230L-155
30004000null
customer-nameJonesSmithHayes
loan-number amount
L-170L-230L-260L-155
300040001700null
customer-name
JonesSmithnullHayes
loan borrower Junção externa
branch-nameDowntownRedwoodnull
branch-name
DowntownRedwoodPerryridgenull
![Page 13: ©Silberschatz, Korth and Sudarshan (Modificado)3.4.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução](https://reader035.vdocuments.mx/reader035/viewer/2022062502/5706384b1a28abb8238f5d01/html5/thumbnails/13.jpg)
©Silberschatz, Korth and Sudarshan (Modificado)3.4.13Database System Concepts
Consultas de exemploConsultas de exemplo Quais os fármacos que nunca foram receitados?
nomeF( nConsulta=null(fármacos receitas))
Quais as consultas em que não foi receitado qualquer fármaco?
nConsulta( nCodF=null(consultas receitas)) Quantos fármacos diferentes foram receitados em cada uma das
consultas?
nconsulta g count(codF) as quantos (consultas receitas) Para cada médico, qual a quantidade média de fármacos receitados
por consulta?quantCons nconsulta g sum(quant) as soma (consultas receitas)
nEmpr g avg(soma) (quantCons consultas)
![Page 14: ©Silberschatz, Korth and Sudarshan (Modificado)3.4.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução](https://reader035.vdocuments.mx/reader035/viewer/2022062502/5706384b1a28abb8238f5d01/html5/thumbnails/14.jpg)
©Silberschatz, Korth and Sudarshan (Modificado)3.4.14Database System Concepts
Valores NulosValores Nulos É possível que um tuplo tenha um valor nulo, denotado por null,
para algum dos seus atributos null significa um valor desconhecido ou que não existe. O resultado de qualquer expressão aritmética envolvendo um
null é null. As funções de agregação ignoram os valores nulos
Decisão arbitrária. Alternativamente, poderia-se retornar null. Segue-se a semântica da SQL no tratamento de valores nulos.
Na eliminação de duplicados e agrupamento, um null é tratado como um outro valor qualquer, assumindo-se que dois nulls são o mesmo Alternativa: assumir que cada null é diferente de todos os outros Ambas são decisões arbitrárias, portanto segue-se a SQL
![Page 15: ©Silberschatz, Korth and Sudarshan (Modificado)3.4.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução](https://reader035.vdocuments.mx/reader035/viewer/2022062502/5706384b1a28abb8238f5d01/html5/thumbnails/15.jpg)
©Silberschatz, Korth and Sudarshan (Modificado)3.4.15Database System Concepts
Valores NulosValores Nulos Comparações com valores nulos devolvem o valor de verdade
unknown Se false fosse usado em vez unknown, então not (A < 5)
não seria equivalente a A >= 5 Lógica a três valores com o valor de verdade unknown:
OR: (unknown or true) = true, (unknown or false) = unknown (unknown or unknown) = unknown
AND: (true and unknown) = unknown, (false and unknown) = false, (unknown and unknown) = unknown
NOT: (not unknown) = unknown Em SQL “P is unknown” é verdade se o predicado P tem valor de
verdade unknown Resultado do predicado de selecção é tratado como false se
tiver valor de verdade unknown
![Page 16: ©Silberschatz, Korth and Sudarshan (Modificado)3.4.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução](https://reader035.vdocuments.mx/reader035/viewer/2022062502/5706384b1a28abb8238f5d01/html5/thumbnails/16.jpg)
©Silberschatz, Korth and Sudarshan (Modificado)3.4.16Database System Concepts
Modificação da Base de DadosModificação da Base de Dados O conteúdo da base de dados pode ser modificado através das
seguintes operações: Remoção Inserção Actualização
Todas estas operação são expressas por intermédio do operador de atribuição.
![Page 17: ©Silberschatz, Korth and Sudarshan (Modificado)3.4.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução](https://reader035.vdocuments.mx/reader035/viewer/2022062502/5706384b1a28abb8238f5d01/html5/thumbnails/17.jpg)
©Silberschatz, Korth and Sudarshan (Modificado)3.4.17Database System Concepts
RemoçãoRemoção Uma operação de remoção é expressa de uma maneira
semelhante a uma consulta, excepto que os tuplos seleccionados são removidos da base de dados.
Só se podem remover tuplos integralmente; não se podem apagar valores de determinados atributos
Uma remoção é expressa em álgebra relacional por:
r r – Eem que r é uma relação e E é uma operação de álgebra relacional.
![Page 18: ©Silberschatz, Korth and Sudarshan (Modificado)3.4.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução](https://reader035.vdocuments.mx/reader035/viewer/2022062502/5706384b1a28abb8238f5d01/html5/thumbnails/18.jpg)
©Silberschatz, Korth and Sudarshan (Modificado)3.4.18Database System Concepts
Exemplos de RemoçãoExemplos de Remoção
Apagar todas as contas na agência de Perryridge.
account account – branch-name = ‘Perryridge’ (account) Apagar todos os registos de empréstimos de montante entre 0 e 50
loan loan – amount 0and amount 50 (loan)
Apagar todas as contas de balcões localizados em Needham.
r1 branch-city = ‘Needham’ (account branch)
r2 branch-name, account-number, balance (r1)
r3 customer-name, account-number (r2 depositor)
account account – r2
depositor depositor – r3
![Page 19: ©Silberschatz, Korth and Sudarshan (Modificado)3.4.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução](https://reader035.vdocuments.mx/reader035/viewer/2022062502/5706384b1a28abb8238f5d01/html5/thumbnails/19.jpg)
©Silberschatz, Korth and Sudarshan (Modificado)3.4.19Database System Concepts
Exemplos de Remoção (cont)Exemplos de Remoção (cont)
Apagar toda a informação relativa a consultas anteriores a 2000:
r1 data < 01-01-2000 (consultas)
r2 codF,nConsulta,quant (receitas r1)
consultas consultas – r1
receitas receitas – r2
![Page 20: ©Silberschatz, Korth and Sudarshan (Modificado)3.4.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução](https://reader035.vdocuments.mx/reader035/viewer/2022062502/5706384b1a28abb8238f5d01/html5/thumbnails/20.jpg)
©Silberschatz, Korth and Sudarshan (Modificado)3.4.20Database System Concepts
InserçãoInserção Para inserir informação numa relação podemos:
especificar um tuplo a ser inserido escrever uma consulta cujo resultado é um conjunto de tuplos a
inserir Na álgebra relacional, uma inserção é expressa por:
r r Eem que r é uma relação e E é uma expr. de álgebra relacional.
A inserção de um único tuplo é efectuada quando a expressão E é a relação constante contendo esse tuplo.
![Page 21: ©Silberschatz, Korth and Sudarshan (Modificado)3.4.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução](https://reader035.vdocuments.mx/reader035/viewer/2022062502/5706384b1a28abb8238f5d01/html5/thumbnails/21.jpg)
©Silberschatz, Korth and Sudarshan (Modificado)3.4.21Database System Concepts
Exemplos de InserçãoExemplos de Inserção Inserir informação na base de dados especificando que o cliente
Smith tem $1200 na conta A-973 na agência de Perryridge.
account account {(‘Perryridge’, A-973, 1200)}
depositor depositor {(‘Smith’, A-973)}
Dar um bónus a todos os mutuários na agência de Perryridge: uma conta de poupança de $200. O número do empréstimo é utilizado para número da conta de poupança.
r1 (branch-name = “Perryridge” (borrower loan))
account account branch-name, account-number,200 (r1)
depositor depositor customer-name, loan-number,(r1)
![Page 22: ©Silberschatz, Korth and Sudarshan (Modificado)3.4.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução](https://reader035.vdocuments.mx/reader035/viewer/2022062502/5706384b1a28abb8238f5d01/html5/thumbnails/22.jpg)
©Silberschatz, Korth and Sudarshan (Modificado)3.4.22Database System Concepts
Exemplos de InserçãoExemplos de Inserção Inserir informação na base de dados especificando que um novo
paciente, com BI nº 10000000 e nome Paulo, teve uma consulta (nº1000) no dia 30-09-2003 com o médico João (assumindo que só há um médico com esse nome)
pacientes pacientes {(10000000,‘Paulo’,null,null,null)}
consultas consultas 1000,30-09-2003,1000,nEmpr (nomeM = “João” (médicos))
![Page 23: ©Silberschatz, Korth and Sudarshan (Modificado)3.4.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução](https://reader035.vdocuments.mx/reader035/viewer/2022062502/5706384b1a28abb8238f5d01/html5/thumbnails/23.jpg)
©Silberschatz, Korth and Sudarshan (Modificado)3.4.23Database System Concepts
ActualizaçãoActualização Um mecanismo para alterar um valor de um tuplo sem alterar
todos os valores do tuplo. Recorre-se ao operador de projecção generalizada para
efectuar este tipo de tarefa
r F1, F2, …, FI, (r)
Cada Fi, ou é o i-ésimo atributo de r, se o i-ésimo atributo não for alterado, ou
uma expressão Fi, envolvendo apenas constantes e atributos de r, que permite calcular o novo valor do atributo.
![Page 24: ©Silberschatz, Korth and Sudarshan (Modificado)3.4.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução](https://reader035.vdocuments.mx/reader035/viewer/2022062502/5706384b1a28abb8238f5d01/html5/thumbnails/24.jpg)
©Silberschatz, Korth and Sudarshan (Modificado)3.4.24Database System Concepts
Exemplos de ActualizaçõesExemplos de Actualizações Pague juros de 5% em todas as contas
account AN, BN, BAL * 1.05 (account)
em que AN, BN e BAL são abreviaturas para account-number, branch-name e balance, respectivamente.
Pague 6% de juros em todas as contas com saldo superior a $10,000 e 5% às restantes contas.
account AN, BN, BAL * 1.06 ( BAL 10000 (account)) AN, BN, BAL * 1.05 (BAL 10000 (account))
![Page 25: ©Silberschatz, Korth and Sudarshan (Modificado)3.4.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução](https://reader035.vdocuments.mx/reader035/viewer/2022062502/5706384b1a28abb8238f5d01/html5/thumbnails/25.jpg)
©Silberschatz, Korth and Sudarshan (Modificado)3.4.25Database System Concepts
VistasVistas Em certas circunstâncias, não é desejável que todos os
utilizadores possam aceder a todo o modelo lógico (i.e. a todas as relações armazenadas na base de dados)
Considere o caso de um empregado que necessita de saber o número de empréstimo de um cliente, mas que não precisa de saber o montante desse empréstimo. Este empregado deverá ver apenas a relação descrita em álgebra relacional por
customer-name, loan-number (borrower loan) Ou alguém que pode aceder a dados de nomes de médicos e
pacientes das consultas, mas não ao que foi prescrito nem a outra informação dos médicos e pacientes:
nConsulta,nomeP,nomeM,data (pacientes consultas médicos) Qualquer relação que não pertença ao modelo conceptual mas
que se torne visível ao utilizador como uma “relação virtual” é designada por vista.
![Page 26: ©Silberschatz, Korth and Sudarshan (Modificado)3.4.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução](https://reader035.vdocuments.mx/reader035/viewer/2022062502/5706384b1a28abb8238f5d01/html5/thumbnails/26.jpg)
©Silberschatz, Korth and Sudarshan (Modificado)3.4.26Database System Concepts
Definição de vistasDefinição de vistas Uma vista é definida por intermédio da instrução create view
create view v as <query expression>
em que <query expression> é uma expressão de álgebra relacional qualquer. O nome da vista é v.
Após a definição de uma vista, o seu nome pode ser utilizado para se referir à relação virtual gerada pela vista.
Uma definição de uma vista não é o mesmo que criar uma nova relação a partir da avaliação da sua expressão. Em vez disso, a definição da vista permite guardar a expressão que depois é substituída nas consultas que utilizam a vista.
![Page 27: ©Silberschatz, Korth and Sudarshan (Modificado)3.4.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução](https://reader035.vdocuments.mx/reader035/viewer/2022062502/5706384b1a28abb8238f5d01/html5/thumbnails/27.jpg)
©Silberschatz, Korth and Sudarshan (Modificado)3.4.27Database System Concepts
Exemplos de VistasExemplos de Vistas Considere-se a vista (com o nome all-customer) contento os
nomes das agências e seus clientes.
create view all-customer asbranch-name, customer-name (depositor account)
branch-name, customer-name (borrower loan)
Pode-se assim encontrar todos os clientes da agência de Perryridge através de:
branch-name
(branch-name = ‘Perryridge’ (all-customer))
![Page 28: ©Silberschatz, Korth and Sudarshan (Modificado)3.4.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução](https://reader035.vdocuments.mx/reader035/viewer/2022062502/5706384b1a28abb8238f5d01/html5/thumbnails/28.jpg)
©Silberschatz, Korth and Sudarshan (Modificado)3.4.28Database System Concepts
Actualizações através de VistasActualizações através de Vistas Modificações nas bases de dados através de vistas devem ser
traduzidas para modificações das verdadeiras relações presentes na base de dados.
Considere-se a pessoa que deve ter acesso à informação dos empréstimos com a excepção do seu montante. A vista que essa pessoa pode utilizar, branch-loan, define-se como:
create view branch-loan asbranch-name, loan-number (loan)
Como se permite que o nome de uma vista ocorra em qualquer sítio onde se pode usar uma relação, essa pessoa poderá sentir-se tentada a escrever:
branch-loan branch-loan {(“Perryridge”, L-37)}
![Page 29: ©Silberschatz, Korth and Sudarshan (Modificado)3.4.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução](https://reader035.vdocuments.mx/reader035/viewer/2022062502/5706384b1a28abb8238f5d01/html5/thumbnails/29.jpg)
©Silberschatz, Korth and Sudarshan (Modificado)3.4.29Database System Concepts
Actualizações através de Vistas (Cont.)Actualizações através de Vistas (Cont.)
A inserção anterior deve ser traduzida para uma inserção na relação loan a partir da qual se construiu branch-loan.
Uma inserção em loan requer um valor para amount. Podemos: Rejeitar a inserção e enviar uma mensagem de erro para o
utilizador. Inserir o tuplo (“L-37”, “Perryridge”, null) na relação loan
Algumas actualizações através de vistas são impossíveis de traduzir para actualizações das relações da base de dados: create view v as branch-name = “Perryridge” (account)) v v (L-99, Downtown, 23)
Outras não têm uma tradução única all-customer all-customer (Perryridge, John)
Deve-se escolher loan ou account, ecriar um novo número de empréstimo ou de conta!
![Page 30: ©Silberschatz, Korth and Sudarshan (Modificado)3.4.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução](https://reader035.vdocuments.mx/reader035/viewer/2022062502/5706384b1a28abb8238f5d01/html5/thumbnails/30.jpg)
©Silberschatz, Korth and Sudarshan (Modificado)3.4.30Database System Concepts
Vistas definidas a partir de outras vistasVistas definidas a partir de outras vistas Uma vista pode ser utilizada na expressão de definição de outra
vista Uma vista v1 depende directamente de uma vista v2 se v2 é
utilizada na expressão que define v1
Uma vista v1 depende de uma vista v2 se v1 depende directamente de v2 ou se existe um caminho de dependências entre v1 e v2
Uma vista v diz-se recursiva se depender dela própria.
![Page 31: ©Silberschatz, Korth and Sudarshan (Modificado)3.4.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução](https://reader035.vdocuments.mx/reader035/viewer/2022062502/5706384b1a28abb8238f5d01/html5/thumbnails/31.jpg)
©Silberschatz, Korth and Sudarshan (Modificado)3.4.31Database System Concepts
Expansão de vistasExpansão de vistas Forma de atribuir significado a vistas definidas em termos de
outras vistas. Seja a vista v1 definida em termos de uma expressão e1 que
pode ela própria conter vistas. Para expandir as vistas numa expressão repete-se
sucessivamente o seguinte passo:
repeatEncontrar uma vista vi em e1
Substituir a vista vi pela expressão que a define until não ocorram mais vistas em e1
Desde que as definições das vistas não sejam recursivas, este ciclo terminará sempre.