26
Hugo Pedro Proença, © 2007 Modelo Relacional Modelo Relacional Proposto em 1970 por Codd, como uma forma mais fácil de armazenar e manipular dados em relação aos modelos manipular dados em relação aos modelos anteriores Modelo de rede Modelo hierárquico Modelo hierárquico Estes modelos tornavam o acesso à informação computacionalmente pesado. As estruturas necessárias para armazenar a informação (árvores, grafos) tornavam necessário o conhecimento anterior sobre a estrutura da informação.

Modelo de rede Modelo hierárquico - UBIhugomcp/bd2/t02.pdf · Modelo Relacional Modelo Relacional -- JunçõesJunções zImagine o seguinte esquema de relações: Empregado Trabalho

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Modelo de rede Modelo hierárquico - UBIhugomcp/bd2/t02.pdf · Modelo Relacional Modelo Relacional -- JunçõesJunções zImagine o seguinte esquema de relações: Empregado Trabalho

Hugo Pedro Proença, © 2007

Modelo RelacionalModelo Relacional

Proposto em 1970 por Codd, como uma forma mais fácil de armazenar e manipular dados em relação aos modelos manipular dados em relação aos modelos anteriores– Modelo de rede

Modelo hierárquico– Modelo hierárquico

Estes modelos tornavam o acesso à informação computacionalmente pesado.As estruturas necessárias para armazenar a informação (árvores, grafos) tornavam necessário o conhecimento anterior sobre a estrutura da informação.

Page 2: Modelo de rede Modelo hierárquico - UBIhugomcp/bd2/t02.pdf · Modelo Relacional Modelo Relacional -- JunçõesJunções zImagine o seguinte esquema de relações: Empregado Trabalho

Hugo Pedro Proença, © 2007

Modelo RelacionalModelo Relacional

No modelo de Codd, toda a informação é guardada em estruturas bidimensionais ( l õ )(relações)Os clientes apenas necessitam de se referir à informação sob a forma de referir à informação sob a forma de “linhas” e “colunas”O modelo original, baseado na teoria dos

j i i d i â i conjuntos, exigia que todas as instâncias de uma relação tivessem pelo menos um atributo distinto.

Page 3: Modelo de rede Modelo hierárquico - UBIhugomcp/bd2/t02.pdf · Modelo Relacional Modelo Relacional -- JunçõesJunções zImagine o seguinte esquema de relações: Empregado Trabalho

Hugo Pedro Proença, © 2007

Modelo RelacionalModelo Relacional

Actualmente os sistemas gestores de bases de dados não impõem esta

t i ãrestrição– Para algumas aplicações pode ser útil a

existência de linhas repetidas numa tabela.– No SGBD utilizado, podem existir várias

instâncias com todos os valores de atributos exactamente igual numa única relação.

Nome B.I. CodPostal

José 1234567 6200

José 1234567 6200José 1234567 6200

Rita 6272632 6300

Page 4: Modelo de rede Modelo hierárquico - UBIhugomcp/bd2/t02.pdf · Modelo Relacional Modelo Relacional -- JunçõesJunções zImagine o seguinte esquema de relações: Empregado Trabalho

Hugo Pedro Proença, © 2007

Modelo RelacionalModelo Relacional

A ideia nuclear do modelo relacional consiste na integridade referencial.Alguns atributos de uma relação são chaves primárias de outras e denotam a existência de uma relação lógica entre existência de uma relação lógica entre duas ou mais instâncias.

Nome B.I. Produto B.I. Produto Nome

José 1234567

Rita 6272632

Joana 6182930

2 1234567

1 6272632

1 6182930

1 Vaso

2 Pote

3 JarraJoana 6182930 1 6182930 3 Jarra

Page 5: Modelo de rede Modelo hierárquico - UBIhugomcp/bd2/t02.pdf · Modelo Relacional Modelo Relacional -- JunçõesJunções zImagine o seguinte esquema de relações: Empregado Trabalho

Hugo Pedro Proença, © 2007

Modelo RelacionalModelo Relacional

Apesar de não estar explicito na base de dados, podemos inferir que:

– “Um cliente chamado José comprou um Pote”– “Uma cliente chamado Rita comprou um Vaso”Uma cliente chamado Rita comprou um Vaso

É essencial garantir que para todas as h i chaves externas existe sempre o

correspondente conjunto de chaves primárias noutra relação.p ç

Page 6: Modelo de rede Modelo hierárquico - UBIhugomcp/bd2/t02.pdf · Modelo Relacional Modelo Relacional -- JunçõesJunções zImagine o seguinte esquema de relações: Empregado Trabalho

Hugo Pedro Proença, © 2007

Modelo RelacionalModelo Relacional

O SQL (Structured Query Language) é um standard de acesso a bases de dados relacionaisrelacionais– É uma linguagem de alto nível, de fácil

aprendizagem e bastante intuitiva.– Disponibiliza um conjunto de comandos que Disponibiliza um conjunto de comandos que

permitem a:• Manipulação da informação existente numa base

de dados (DML – Data Manipulation Language):– Inserção (INSERT)– Remoção (DELETE)– Actualização (UPDATE)– Consulta (SELECT)Consulta (SELECT)

Page 7: Modelo de rede Modelo hierárquico - UBIhugomcp/bd2/t02.pdf · Modelo Relacional Modelo Relacional -- JunçõesJunções zImagine o seguinte esquema de relações: Empregado Trabalho

Hugo Pedro Proença, © 2007

Modelo RelacionalModelo Relacional

• Manipulação da estrutura de uma base de dados (DDL - Data Definition Language)

– Criação de relações (CREATE TABLE)ç ç ( )– Remoção de relações (DROP TABLE)– Alteração de relações (ALTER TABLE)

• Administração dos utilizadores e privilégios associados a cada um, bem como a customização do sistema gestor de bases de dados (DAL – Data Administração Language)Administração Language)

– Criação de utilizadores (CREATE USER)– Definição de privilégios (GRANT)– ...

Page 8: Modelo de rede Modelo hierárquico - UBIhugomcp/bd2/t02.pdf · Modelo Relacional Modelo Relacional -- JunçõesJunções zImagine o seguinte esquema de relações: Empregado Trabalho

Hugo Pedro Proença, © 2007

Modelo Relacional Modelo Relacional –– Junções Junções

Existem duas formas distintas de explicitar a união entre 2 relações:

– Forma ANSI-92– Forma T-SQL, agora ANSI

Para juntar 2 relações é necessário que elas possuam algo em comum: "Chave-Comum"

Chama-se “chave-comum”, ou “chave de junção”, ao conjunto de atributos partilhados pelas relações e que permitem a manutenção de significado após a junçãosignificado após a junção.

Page 9: Modelo de rede Modelo hierárquico - UBIhugomcp/bd2/t02.pdf · Modelo Relacional Modelo Relacional -- JunçõesJunções zImagine o seguinte esquema de relações: Empregado Trabalho

Hugo Pedro Proença, © 2007

Modelo Relacional Modelo Relacional –– Junções Junções

Normalmente o relacionamento é algo definido ao nível lógico.

O sistema gestor de bases de dados não dispõe de informação sobre os relacionamentos possíveis entre relações de uma base de dadosentre relações de uma base de dados.

Produto B I Produto DepartamentoProduto B.I.

2 1234567

1 6272632

1 6182930

Produto Departamento

1 2

2 3

3 1?1 6182930 3 1?

Page 10: Modelo de rede Modelo hierárquico - UBIhugomcp/bd2/t02.pdf · Modelo Relacional Modelo Relacional -- JunçõesJunções zImagine o seguinte esquema de relações: Empregado Trabalho

Hugo Pedro Proença, © 2007

Modelo Relacional Modelo Relacional –– Junções Junções Cliente Venda

Codigo Nome Morada CodPostal

2 Joana Xyz 6200

CodProd CodCli Data Quant. PreçoUn

1 1 1/01/04 2 100

Cliente Venda

1 Rita Abc 1000

3 Paula Def 1000

1 3 1/01/04 3 20

2 3 3/01/04 1 21

Junção Natural ANSI-92

SELECT *SELECT *FROM Venda V, Cliente CWHERE V.CodCli=C.Codigo;

Page 11: Modelo de rede Modelo hierárquico - UBIhugomcp/bd2/t02.pdf · Modelo Relacional Modelo Relacional -- JunçõesJunções zImagine o seguinte esquema de relações: Empregado Trabalho

Hugo Pedro Proença, © 2007

Modelo Relacional Modelo Relacional –– Junções Junções Junção Natural T-SQL (ANSI)

SELECT *SELECT FROM Venda V INNER JOIN Cliente CON V.CodCliente=C.Codigo;

Com mais que duas relações,...

SELECT *SELECT FROM Venda V INNER JOIN Cliente C

ON V.CodCliente=C.CodigogINNER JOIN Produto P

ON V.CodProduto=P.Codigo;

Page 12: Modelo de rede Modelo hierárquico - UBIhugomcp/bd2/t02.pdf · Modelo Relacional Modelo Relacional -- JunçõesJunções zImagine o seguinte esquema de relações: Empregado Trabalho

Hugo Pedro Proença, © 2007

Modelo Relacional Modelo Relacional -- JunçõesJunções

Em todas as junções (naturais) efectuadas até ao momento, eram excluídas as instâncias de qualquer das relações que não tivessem o valor correspondente na outra relação (Inner Join).

Na maior parte dos casos, estas consultas não são as i ú imais úteis.

A B C

RC D

S R ∞ Sa1 b1 c1

a2 b2 c2

a3 b3 c3

a b c

c1 d1

c0 d2

c2 d3

c d

A B C D

a1 b1 c1 d1

a2 b2 c2 d3

a2 b4 c4 c5 d2

Page 13: Modelo de rede Modelo hierárquico - UBIhugomcp/bd2/t02.pdf · Modelo Relacional Modelo Relacional -- JunçõesJunções zImagine o seguinte esquema de relações: Empregado Trabalho

Hugo Pedro Proença, © 2007

Modelo Relacional Modelo Relacional -- JunçõesJunções

Existe um outro tipo de junção que permite a devolução de instâncias com e sem valor correspondente na outra relação (junção não-natural, Outer Join).

Para efectuar uma junção não-natural entre duas relações deve-se explicitar qual a que servirá de base

j ã ã d f lpara a junção. Por esta razão pode-se falar em:

– "left outer join" (*=) "right outer join"( *)– "right outer join"(=*).

Page 14: Modelo de rede Modelo hierárquico - UBIhugomcp/bd2/t02.pdf · Modelo Relacional Modelo Relacional -- JunçõesJunções zImagine o seguinte esquema de relações: Empregado Trabalho

Hugo Pedro Proença, © 2007

Modelo Relacional Modelo Relacional -- JunçõesJunções

Imagine o seguinte esquema de relações:

Empregado TrabalhoCodigo Nome

2 Joana

1 Rita

CodEmpregado

Data Departamento

Horas

1 1/01/04 2 11

1 1/01/04 3 1

– Elabore um ranking relativo ao total de horas

3 Paula1 1/01/04 3 1

2 3/01/04 1 5

gde trabalho efectuado por cada empregado de uma empresa.

• Uma junção natural poderia omitir aqueles que nem sequer tinham trabalhado nenhuma horanem sequer tinham trabalhado nenhuma hora

Page 15: Modelo de rede Modelo hierárquico - UBIhugomcp/bd2/t02.pdf · Modelo Relacional Modelo Relacional -- JunçõesJunções zImagine o seguinte esquema de relações: Empregado Trabalho

Hugo Pedro Proença, © 2007

Modelo Relacional Modelo Relacional -- JunçõesJunções

A solução passaria por uma junção não natural, neste caso um “left-outer join”:

select E.Codigo, E.Nome, Sum(T.Horas) AS TotalFROM Empregado E, Trabalho TFROM Empregado E, Trabalho TWHERE E.Codigo*=T.CodEmpregadoORDER BY Total DESC

Codigo Nome Total

1 Rita 12

2 Joana 5

3 Paula 0

Page 16: Modelo de rede Modelo hierárquico - UBIhugomcp/bd2/t02.pdf · Modelo Relacional Modelo Relacional -- JunçõesJunções zImagine o seguinte esquema de relações: Empregado Trabalho

Hugo Pedro Proença, © 2007

Clausulas CASEClausulas CASE

Avalia um conjunto de possibilidades para determinado atributo de cada instância d l ã t dif t de uma relação e retorna diferentes resultados.

– Tem como finalidade potenciar a eficiência de um cliente da base de dados, ao diminuir o número de consultas necessárias para obter e número de consultas necessárias para obter e formatar toda a informação necessária

Page 17: Modelo de rede Modelo hierárquico - UBIhugomcp/bd2/t02.pdf · Modelo Relacional Modelo Relacional -- JunçõesJunções zImagine o seguinte esquema de relações: Empregado Trabalho

Hugo Pedro Proença, © 2007

Clausulas CASEClausulas CASE

Exemplo:– A Empresa “SoConstroi” deseja enviar para

t d li t t d btodos os seus clientes uma carta de boas-festas:

• Uma solução poderia passar por uma consulta SQL que devolva como informação o contéudo SQL que devolva como informação, o contéudo das respectivas cartas:

– SELECT “Exmo Sr ”, C.Nome, “\t\t”, C.Morada, SELECT Exmo Sr , C.Nome, \t\t , C.Morada, C.CodPostal, “\nA SOConstroi deseja-lhe um Feliz Natal e Próspero Ano Novo”

Page 18: Modelo de rede Modelo hierárquico - UBIhugomcp/bd2/t02.pdf · Modelo Relacional Modelo Relacional -- JunçõesJunções zImagine o seguinte esquema de relações: Empregado Trabalho

Hugo Pedro Proença, © 2007

Clausulas CASEClausulas CASE

Esta consulta iria devolver uma relação que, posteriormente processada por uma aplicação cliente, poderia formatar e imprimir as cartas cliente, poderia formatar e imprimir as cartas desejadas:

– SELECT “Exmo Sr ”+C.Nome+“\t\t” + C.Morada+ C.CodPostal+CP.Cidade+“\nA SOConstroi deseja-lh F li N l P ó A N ” AS lhe um Feliz Natal e Próspero Ano Novo” AS cartaFROM Cliente C, CodPostal CPWHERE C.CodPostal=CP.CodPostal

Carta

Exmo Sr José Carlos Rua XYZ 6200 CovilhãA SOConstroi deseja-lhe um Feliz Natal e Próspero Ano Novo

Exmo Sr Andreia Silva Rua ABC 1000 CovilhãExmo Sr Andreia Silva Rua ABC 1000 CovilhãA SOConstroi deseja-lhe um Feliz Natal e Próspero Ano Novo

...

Page 19: Modelo de rede Modelo hierárquico - UBIhugomcp/bd2/t02.pdf · Modelo Relacional Modelo Relacional -- JunçõesJunções zImagine o seguinte esquema de relações: Empregado Trabalho

Hugo Pedro Proença, © 2007

Clausulas CASEClausulas CASE

Exemplo 2:– Uma instituição bancária deseja enviar uma

tifi ã t d li t i f ã notificação a todos os clientes com informação qualitativa sobre o estado do seu saldo.

• O mesmo tipo de consulta obrigava aExecução de 2 consultas– Execução de 2 consultas

• Uma para os clientes com saldo positivo• Outra para clientes com saldo negativo

– Execução de consulta com união• Computacionalmente pesada• Elevados recursos gastos

Page 20: Modelo de rede Modelo hierárquico - UBIhugomcp/bd2/t02.pdf · Modelo Relacional Modelo Relacional -- JunçõesJunções zImagine o seguinte esquema de relações: Empregado Trabalho

Hugo Pedro Proença, © 2007

Clausulas CASEClausulas CASE

Nesta situação poderia utilizar a clausula CASE:SELECt "Exmº Sr.“+Nome+Morada As “Inicio” CASECASE

WHEN Saldo < 0 THEN "Cliente com saldo negativo"

WHEN Saldo < 1000 THEN "Cliente com WHEN Saldo < 1000 THEN "Cliente com saldo positivo"

ELSE "Cliente Milionario"" l ifi "END "Classificacao"

FROM ClienteORDER BY Classificacao, PrimeiroNome

Page 21: Modelo de rede Modelo hierárquico - UBIhugomcp/bd2/t02.pdf · Modelo Relacional Modelo Relacional -- JunçõesJunções zImagine o seguinte esquema de relações: Empregado Trabalho

Hugo Pedro Proença, © 2007

Clausulas CASEClausulas CASE

A clausula permite a avaliação do atributo “Saldo” para cada instância da relação “Cli t ” t l “Cliente” e consoante o seu valor devolver um resultado diferente.– Na Clausula CASE, é garantido que apenas uma , g q p

condição é avaliada positivamente.• Por esta razão o teste (<0) aparece antes de

(<1000)

– Caso nenhuma tenha valor lógico positivo, é avaliado o bloco a seguir a “ELSE”

Page 22: Modelo de rede Modelo hierárquico - UBIhugomcp/bd2/t02.pdf · Modelo Relacional Modelo Relacional -- JunçõesJunções zImagine o seguinte esquema de relações: Empregado Trabalho

Hugo Pedro Proença, © 2007

Clausulas CASEClausulas CASE

Resultado:

Início Classificação

Exmo Sr José Carlos Rua XYZ

Cliente com saldo negativo

Exmo Sr Andreia Silva Rua ABC

Cliente com saldo positivo

Exmo Sr Silvana Andrade Rua DER

Cliente milionário

Page 23: Modelo de rede Modelo hierárquico - UBIhugomcp/bd2/t02.pdf · Modelo Relacional Modelo Relacional -- JunçõesJunções zImagine o seguinte esquema de relações: Empregado Trabalho

Hugo Pedro Proença, © 2007

Clausulas CASEClausulas CASE

Exemplo 2:

Uma livraria necessita de um relatório onde esteja – Uma livraria necessita de um relatório onde esteja indicado a quantidade total de vendas de cada livro num ano.

– Além deste requisito, deseja a informação num Além deste requisito, deseja a informação num formato específico:

• Livro, AnoX, AnoY, AnoZ

– Este ultimo requisito inviabiliza a utilização de uma clausula de agregação por livro e ano, que produziria informação para o mesmo livro em anos diferentes em diferentes linhas em diferentes linhas

Page 24: Modelo de rede Modelo hierárquico - UBIhugomcp/bd2/t02.pdf · Modelo Relacional Modelo Relacional -- JunçõesJunções zImagine o seguinte esquema de relações: Empregado Trabalho

Hugo Pedro Proença, © 2007

Clausulas CASEClausulas CASE

Exemplo 2:

SELECT L.ISBN, L.Titulo, SUM( CASE V.Ano, , (WHEN 2001 THEN V.QuantidadeELSE 0END ) "2001",

SUM( CASE V.AnoWHEN 2002 THEN V.QuantidadeELSE 0END ) "2002",

SUM( CASE V.AnoWHEN 2003 THEN V Q id dWHEN 2003 THEN V.QuantidadeELSE 0END ) "2003"

FROM Livro L, Venda VWHERE L ISBN=V ISBNWHERE L.ISBN=V.ISBNORDER BY L.Titulo

Page 25: Modelo de rede Modelo hierárquico - UBIhugomcp/bd2/t02.pdf · Modelo Relacional Modelo Relacional -- JunçõesJunções zImagine o seguinte esquema de relações: Empregado Trabalho

Hugo Pedro Proença, © 2007

Clausulas CASEClausulas CASE

Exemplo 2 - Resultado:

ISBN Título 2001 2002 2003

1 ABCD 12 11 13

3 XYZ 5 25 75

2 ZQQA 0 3 1

Page 26: Modelo de rede Modelo hierárquico - UBIhugomcp/bd2/t02.pdf · Modelo Relacional Modelo Relacional -- JunçõesJunções zImagine o seguinte esquema de relações: Empregado Trabalho

Hugo Pedro Proença, © 2007

Modelo RelacionalModelo Relacional

Exercício:– Uma empresa de sondagens pretende construir

uma base de dados para guardar informação uma base de dados para guardar informação sobre todas as pessoas entrevistadas. Para cada indivíduo é necessário registar o nome, data de nascimento, profissão e morada. O

bl é i it ã problema é que os requisitos são extremamente dinâmicos e, consoante a profissão, é necessário constantemente alterar a informação a guardar.a informação a guardar.

– Proponha um modelo de base de dados que possa fornecer uma solução ao problema.