introdução às bases de dados relacionais base de dados modelos

11

Click here to load reader

Upload: dinhkhue

Post on 10-Jan-2017

213 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Introdução às Bases de Dados Relacionais Base de dados Modelos

Introdução àsBases de Dados Relacionais

Introdução às BD relacionaisÁlgebra relacional

SQL

Alexandre Gonçalves, DECivil, [email protected]

Base de dados

• Uma base de dados (BD) é uma coleção estruturada de dados tal que é possível armazenar e extrair conhecimnto eficientemente.

• Um Sistema de Gestão de Base de Dados (SGBD/DBMS) é um programa informático para armazenar uma BD

Modelos / Níveis

MUNDO REAL

MODELODESCRITIVO

MODELOCONCEPTUAL

MODELOOPERATIVO

MODELOINTERNO

descrição das estruturas e transações*

estruturas de dados externas

manipulação e definição da estrutura

estruturas de dados internas

informação informal

dados

informação formal

instanciação dos dados

* ações de modificação de conteúdo da BD

Escolha de um modelo

• As questões mais importantes...– Identificação das entidades e relações– Capacidade de representar o comportamento– Facilidade de interrogação– Espaço exigido– Políticas de acesso– Robustez (consistência e integridade dos dados)

Desenho de uma BD

1. Análise de requisitos• que dados serão guardados• que operações são mais frequentes e sujeitas a

requisitos de performance

2. Desenho da BD conceptual• descrição dos dados em alto-nível• muitas vezes usa-se o modelo E/R, um modelo de dados

semântico

3. Desenho da BD lógica• conversão da BD conceptual para um esquema

(schema) no modelo de dados do SGBD

Desenho de uma BD

4. Refinamento do esquema• análise da coleção de relações• ex: normalização

5. Desenho da BD física• análise de volumes de trabalho expectáveis• ex: construção de índices

6. Desenho da aplicação e segurança• aspetos de implementação particulares

Page 2: Introdução às Bases de Dados Relacionais Base de dados Modelos

Modelo Relacional

• Modelo para estruturar informação baseado na teoria de conjuntos e lógica de predicados.

• Objetivos: armazenar dados no mínimo espaço possível; obtenção de informação no mínimo tempo; captura das relações inter-dados.

• Outros modelos possíveis: hierárquicos (arborescentes), em rede, orientados a objetos, orientados a conceitos, ...

Definições

• DOMÍNIO (conjunto de valores)

• RELAÇÃO (=TABELA) (esquema com nome e conjunto de atributos)

• ATRIBUTO (=COLUNA)• TUPLO (=LINHA)• CHAVE (K é chave para R significa K�R)

• RESTRIÇÕES DE INTEGRIDADE

TABELA

CLUBE J GM GS EUR TREINADOR

Barcelona 6 20 4 CL Tito Vilanova

Chelsea 6 14 4 CL Di MatteoPorto 6 13 3 CL Vítor PereiraAEK 4 9 9 Europe L.

Man.Utd 6 13 5 CL Alex Ferguson

Fiorentina 5 12 8 Europe L. Siniša Mihajlović

RESTRIÇÕES DE INTEGRIDADE

CLUBE JOGADOR SALÁRIO GOLOS

Porto Boga 24000 5Porto Zé Manel 20305 0Barcelona Roger 44333 12

GDA Pardal 12000 2

Consistência entre tabelas relacionadas

NORMALIZAÇÃO

1NF2NF

3NFBCNF

4NF5NF

NORMALIZAÇÃO

EQUIPA JOGADOR SALÁRIO TREINADOR

Barcelona Boga 24000 Tito Vilanova

Chelsea Juan Gol 20305 Mourinho

Chelsea John Doe 33500 Mourinho

AEK Agounis 44333 Traianos Dellas

Barcelona Smithson 12000 Gerardo Martino

•Normalizar evita (ou pelo menos, minimiza) algumas anomalias e redundância

•Anomalias: atualização / inserção / eliminação

Page 3: Introdução às Bases de Dados Relacionais Base de dados Modelos

FORMAS NORMAIS

1ª: «Uma relação está na 1FN se todos os seus atributos são simples»

2ª: «Uma relação está na 2FN se estiver na 1FN e todos os atributos não primários são dependentes da chave por inteiro»

3ª: «Uma relação está na 3FN se estiver na 2FN e todos os atributos não primários são independentes uns dos outros»

NORMALIZAÇÃO – 1ª FN

COMPRA Data Descrição

120 6 Jun 2007

133 14 Jul 2007

Item QuantPapel 31Tinta 41

Item QuantPapel 100Lápis 12

NORMALIZAÇÃO - 1ª FN

TRANSACTION

Date ITEM Quant

120 6 Jun 2007 Papel 31

120 6 Jun 2007 Tinta 41

133 14 Jul 2007 Papel 100

133 14 Jul 2007 Lápis 12

• Não há linhas duplicadas nos atributos-chave

• Não há vazios em atributos-chave

FORMAS NORMAIS

1ª: «Uma relação está na 1FN se todos os seus atributos são simples»

2ª: «Uma relação está na 2FN se estiver na 1FN e todos os atributos não primários são dependentes da chave por inteiro»

3ª: «Uma relação está na 3FN se estiver na 2FN e todos os atributos não primários são independentes uns dos outros»

NORMALIZAÇÃO – 2ª FN

NOME PROJETO Orçamento do projeto

Horas

Ana Prj1 400 30José Prj1 400 10Maria Prj2 175 250Maria Prj3 137 10José Prj2 175 25Maria Prj1 400 10David Prj4 260 75

NORMALIZAÇÃO – 2ª FN

NOME PROJETO Horas

Ana Prj1 30José Prj1 10Maria Prj2 50Maria Prj3 10José Prj2 25Maria Prj1 10David Prj4 75

PROJETO Orçamento

Prj1 400

Prj2 175

Prj3 137

Prj4 260

Page 4: Introdução às Bases de Dados Relacionais Base de dados Modelos

FORMAS NORMAIS

1ª: «Uma relação está na 1FN se todos os seus atributos são simples»

2ª: «Uma relação está na 2FN se estiver na 1FN e todos os atributos não primários são dependentes da chave por inteiro»

3ª: «Uma relação está na 3FN se estiver na 2FN e todos os atributos não primários são independentes uns dos outros»

NORMALIZAÇÃO – 3ª FN

PROJETO Gestor Data nasc.

Prj1 Joaquim Jan 75

Prj3 Teresa Mai 86

Prj2 Joaquim Jan 75

Prj4 Daniel Nov 88

Prj5 Alfreda Mai 86

NORMALIZAÇÃO – 3ª FN

GESTOR Data nasc.

Alfreda Mai 86

Joaquim Jan 75

Teresa Mai 86

Daniel Nov 88

PROJETO Gestor

Prj1 JoaquimPrj3 TeresaPrj2 JoaquimPrj4 DanielPrj5 Alfreda

NORMALIZAÇÃO além da 3ª FN

A maior parte das tabelas na 3NF estão livres de anomalias de atualização, inserção e remoção. Mas há ainda etapas de normalização além da 3FN:

•Boyce-Codd NF (BCNF): para todo o X�Y, X é chave candidata ou inclui uma chave candidata (qualquer atributo, do qual outro seja funcionalmente dependente [um determinante], é chave candidata)

•4FN: remove redundâncias com base em dependências multivaloradas

•5FN: toda a dependência de junção é consequência das chaves candidatas

NORMALIZAÇÃO BCNF

VENDE-DOR#

NOME VENDEDOR

PRODU-TO

PREÇO

1 Big Sell Sal 21

2 Vizinho Pimenta 140

1 Big Sell Pimenta 130

2 Vizinho Salsa 78

Se os nomes de vendedor são únicos, (VENDEDOR#; NOME VENDEDOR) e (VENDEDOR#; PRODUTO) são chaves candidatas, e VENDEDOR# e NOME VENDEDOR são determinantes que não são chaves candidatas

RELAÇÕES ENTRE TABELAS

• 1�M (um para muitos)• M�M (muitos para muitos)• 1�1 (um para um)

Page 5: Introdução às Bases de Dados Relacionais Base de dados Modelos

RELAÇÃO 1�M

ID NOME PAÍS5 Tapete 12 Tapete 16 Abacate 221 Caril 310 Lâmpada 50

PRODUTOS

NUM NOME CAPITAL1 Paquistão Islamabad

3 Índia Nova Deli

41 Burkina Faso Uagadugu

22 Guatemala Guatemala

50 Polónia Varsóvia

PAÍSES

chave estrangeira

RELAÇÃO M�M

ID AUTOR TÍTULO5 13 O Chão que

Ela Pisa

2 13 Versículos Satânicos

6 31 Mist. Estrada de Sintra

6 62 Mist. Estrada de Sintra

62 47 Anna Karenina

LIVROSNUM NOME PAÍS13 Salman

RushdieReino Unido

31 Eça Portugal

62 R. Ortigão Portugal

47 Tolstoi Rússia

AUTORES

RELAÇÃO M�M

ID TÍTULO

LIVROS

NUM NOME PAÍS

AUTORES

ID NUM

AUTORIA

RELAÇÃO 1�1

ID NOME ESPÉCIE5 Cão Canis Canis

24 Panda Panda Panda

56 Lobo Canis Lupus

9 Leão Felix Leo

ANIMAISNUM EXTINTO LEI24 N DL 4249B

56 N DL 4399A

PROTEGIDOS

Muitas relações 1�1 podem ser condensadas numa só tabela

Operadores

• SELEÇÃO• PROJEÇÃO• PRODUTO CARTESIANO• JUNÇÃO• JUNÇÃO NATURAL

SELEÇÃO

• Denota-se por σcond(R) onde• R é uma relação; e• cond é a condição de seleção.• O resultado da seleção é uma relação

com os mesmos atributos que R mas cujos tuplos verificam a condição indicada.

Page 6: Introdução às Bases de Dados Relacionais Base de dados Modelos

A B C5 2 B12 3 B26 2 B21 4 B2

R

A B C5 2 B16 2 B2

S = σB=2(R)

SELEÇÃO PROJEÇÃO

• Denota-se por πlista_de_atributos(R).• O resultado é uma relação onde se

encontram apenas os atributos dalista indicada, sendo retirados ostuplos idênticos, para que o resultadoseja uma relação.

PROJEÇÃO

A B C5 2 G2 3 95 2 T2 3 2

R

A B5 22 3

S = πA,B(R)

PRODUTO CARTESIANO

• Denota-se por R X S X … X T.• O resultado é uma relação U com

aridade igual à soma das aridades das relações argumento, cujos atributos formam os atributos de U. Os tuplos são as combinações possíveis de tuplos dos argumentos.

PRODUTO CARTESIANO

A B2 34 5

R

R.A B S.A C2 3 4 K2 3 3 Y4 5 4 K4 5 3 Y

U = R X S

A C4 K3 Y

S

JUNÇÃO

• Denota-se por R Xθ

S.• É um produto cartesiano seguido

de uma seleção com condição θ.

Page 7: Introdução às Bases de Dados Relacionais Base de dados Modelos

JUNÇÃO

A B2 34 5

R

R.A B S.A C2 3 4 24 5 4 24 5 3 4

T = R XB>C S

A C4 23 4

S

JUNÇÃO NATURAL

• Denota-se por R |X| S.• É uma junção com o operador “=”,

seguida de uma projeção dosatributos distintos da relaçãoresultado.

JUNÇÃO NATURAL

A B2 34 5

R

A B C4 5 2

T = R |X| S

A C4 23 4

S

SQL-Strutured Query Language

• linguagem padrão para aceder e manipular BD relacionais: SQL permite estruturar, manipular, inserir, questionar

• definida pelo ANSI (American National Standards Institute)

• SQL usada em muitos ambientes (SGBD) diferentes, como MS Access, MS SQL Server, Oracle, Sybase, DB2, Informix, etc.

SQL

• SQL Data Definition Language (DDL)– CREATE TABLE– ALTER TABLE– DROP TABLE– CREATE INDEX– DROP INDEX

• SQL Data Manipulation Language (DML)– UPDATE– DELETE– INSERT INTO – SELECT

SQL – Data Definition Language

CREATE TABLE table_name{column1 data_typecolumn2 data_type... colunmn data_type}exemplo:

CREATE TABLE Pinturas{ANO int(4) TITULO varchar(50)AUTOR varchar(50)LOCAL varchar (50)}

ALTER TABLE table_nameADD column data_type

exemplo:ALTER TABLE PinturasADD Materiais varchar(50)

Page 8: Introdução às Bases de Dados Relacionais Base de dados Modelos

SQL – Data Manipulation Language

UPDATE tableSET column = new_valueWHERE column = old_value

ex.:UPDATE Sistema_SolarSET type = ‘Planeta anão’WHERE name = ‘Plutão’

DELETE FROM tableWHERE column = value

ex.:DELETE FROM PaísesWHERE nome = ‘Sérvia e Montenegro’

INSERT INTO tableVALUES (value1, value2, ..., valuen)ex.:

INSERT INTO PinturasVALUES (‘1507’, ‘Gioconda’, ‘Leonardo da Vinci’, ‘Louvre’, ‘Óleo sobre madeira’)

SQL – Interrogação à BD

SELECT {DISTINCT | ALL}[ * | [ expr-coluna ]… ]

FROM [ tabela(s) ] …{ WHERE condição }{ GROUP BY [ coluna(s) ] … }{ HAVING condição }{ ORDER BY [esquema-ordenação] … }

SQL – SELECT ... FROM ...

SELECT ID, NOME FROM ANIMAIS

ID NOME ESPÉCIE5 Cão Canis Canis

24 Panda Panda Panda

56 Lobo Canis Lupus

9 Leão Felix Leo

ANIMAISID NOME5 Cão24 Panda56 Lobo9 Leão

RESPOSTA

SQL - WHERE

SELECT ID, NOME FROM ANIMAISWHERE ESPÉCIE LIKE “Canis%”

ID NOME ESPÉCIE5 Cão Canis Canis

24 Panda Panda Panda

56 Lobo Canis Lupus

9 Leão Felix Leo

ANIMAISID NOME5 Cão56 Lobo

RESPOSTA

SQL – WHERE

• A condição presente na cláusulaWHERE pode conter os seguintesoperadores:=, <, >, <=, >=, <>, AND, OR, NOT, BETWEEN, IN, LIKE, NULL, ANY e ALL

SQL - WHERE

SELECT NOME, ID FROM PRODUTOSWHERE PAÍS IN

(SELECT NUM FROM PAÍSESWHERE NOME LIKE “P%”)

ID NOME PAÍS

PRODUTOS

NUM NOME CAPITAL

PAÍSES

NOME IDTapete 5

Lâmpada 10Tapete 2

RESPOSTA

Page 9: Introdução às Bases de Dados Relacionais Base de dados Modelos

SQL

JOGADORES

JOGOS MULTASNumPagamento NumJog Data Quantia

Jog1 Jog2 NumJogo Resultado Data

NumJogador Nome AnoNasc Categ AnoSocio Morada Cidade Telef NumLiga

SQLExemplo 1: Obter os números dos jogadorese os números da liga dos jogadoresresidentes em Faro:SELECT NumJogador, NumLigaFROM JOGADORESWHERE Cidade = ‘Faro’

Exemplo 2: Obter o número de jogador dequem jogou no dia 21/09/2013:

A.B denota o atributo B da relação ASELECT Jog1, Jog2FROM JOGOSWHERE Data = ‘21/09/2013’

SQLExemplo 3: Obter os nomes e cidades dosjogadores que vivam em Tavira, Faro, Elvas ouTomar:

SELECT Nome, Cidade FROM JOGADORESWHERE Cidade IN (‘Tavira’, ‘Faro’, ‘Elvas’, ‘Tomar’)

Exemplo 4: Obter o nome e número dosjogadores cujo nome comece por ‘B’(maiúsculo) ou termine com ‘o’ (minúsculo):

SELECT Nome, NumJogador FROM JOGADORESWHERE Nome LIKE ‘B%’ OR Nome LIKE ‘%o’

SQL

Exemplo 5: Obter os nomes e números de ligados jogadores que tenham número de liga:

SELECT Nome, NumLigaFROM JOGADORESWHERE NumLiga IS NOT NULL

SQLExemplo 6: Obter os nomes dos jogadoresque jogaram pelo menos um jogo:

SELECT Nome FROM JOGADORESWHERE NumJogador IN

(SELECT Jog1 FROM JOGOS)OR NumJogador IN

(SELECT Jog2 FROM JOGOS)

SQLExemplo 7: Obter os nomes dos jogadoresmais velhos que Teresa Horta:

SELECT Nome FROM JOGADORESWHERE AnoNasc <

(SELECT AnoNasc FROM JOGADORESWHERE Nome = ‘Teresa Horta’)

Exemplo 8: Descobrir os nomes e ano denascimento dos jogadores mais velhos:

SELECT Nome, AnoNasc FROM JOGADORESWHERE AnoNasc <= ALL

(SELECT AnoNasc FROM JOGADORES)

Page 10: Introdução às Bases de Dados Relacionais Base de dados Modelos

SQL

Exemplo 9: Quais os nomes e anos denascimento dos jogadores que não seencontram entre os mais velhos ?

SELECT Nome, AnoNascFROM JOGADORESWHERE AnoNasc > ANY

(SELECT AnoNasc FROM JOGADORES)

SQL – GROUP BY

• Serve para agrupar linhas atravésde um atributo comum

NUM NOME PAÍS13 Salman

RushdieReino Unido

31 Eça de Queiroz

Portugal

62 R. Ortigão Portugal

47 Tolstoi Rússia

AUTORESSELECT NUMFROM AUTORESGROUP BY PAÍS

NUM13

31, 6247

SQL – HAVING

• Serve para indicar condições aoselementos agrupados com GROUP BY

SELECT NUMFROM AUTORESGROUP BY PAÍSHAVING COUNT(NOME)>1

NUM3162

Exemplo 10: Quais os números dos autores dos países com mais que um autor?

SQLExemplo 11: Obter os números dos jogadores dosquais foi recebida em multas a quantia de pelo menos150:

SELECT NumJog FROM MULTASGROUP BY NumJogHAVING SUM(Quantia) >= 150

Exemplo 12: Quantos jogadores vivem em Évora ?

SELECT COUNT(NumJogador)FROM JOGADORESWHERE Cidade = ‘Évora’

SQL

Exemplo 13: Número de multas aplicadas

SELECT COUNT(*)FROM MULTAS

Exemplo 14: Qual o número de cidades emque residem os jogadores ?

SELECT COUNT (DISTINCT Cidade)FROM JOGADORES

SQL – ORDER BY

• Serve para ordenar os resultadospor determinada coluna

NUM NOME PAÍS13 Salman

RushdieReino Unido

31 Eça de Queiroz

Portugal

62 R. Ortigão Portugal

47 Tolstoi Rússia

AUTORESSELECT NUMFROM AUTORESORDER BY NUM

NUM13

314762

Page 11: Introdução às Bases de Dados Relacionais Base de dados Modelos

SQLExemplo 15: Listar por ordem crescente o número dejogador e a data de cada multa aplicada:

SELECT NumJog, Data FROM MULTASORDER BY NumJog

Exemplo 16: Obter para cada jogador que pagou pelomenos uma multa o total pago e ordenar osresultados por esse valor:

SELECT NumJog, SUM(Quantia)FROM MULTASGROUP BY NumJogORDER BY 2 DESC

NOME GRUPO PAÍSContinental Sky Team E.U.A.

TAP Star Alliance Portugal

Iberia One World Espanha

Qantas One World Austrália

AeroCondor Portugal

Norfolk Air Austrália

Lufthansa Star Alliance Alemanha

Exercício

AERO_DEST

CIDADE_DEST

COMPANHIA AERO_ORI

MÊS NUM_PASSAG

CIDADE_ORI

VOO

EWR N.York Continental LPL Fev 2762 Liverpool CO959

ORY Paris Lufthansa EWR Jan 10423 N.York LH4145

LIS Lisboa AeroCondor OPO Jan 9492 Porto LXQ33

LIS Lisboa AeroCondor OPO Fev 9001 Porto LXQ33

POR Porto TAP LIS Fev 1482 Lisboa TP9192

POR Porto Lufthansa FRA Fev 1728 Frankfurt LH4711

ORY Paris Iberia MAD Jan 6167 Madrid IB013

ORY Paris Iberia MAD Fev 8914 Madrid IB013

CDG Paris TAP MAD Mar 34560 Madrid TP512

CDG Paris TAP MAD Fev 30050 Madrid TP512

EWR N.York TAP FNC Jan 4443 Funchal TP888

EWR N.York TAP FNC Fev 2790 Funchal TP888

Exercício� 1) NORMALIZAR PARA A 3FN� 2) QUERIES

� i. Quais são os voos de companhias portuguesas e quantospassageiros transportou cada um (no total do ano)?

� ii. Quais as companhias que têm voos em Fevereiro a partir deParis ou com destino a Paris ?

� iii. Quais as cidades no Brasil para onde há voos do grupo StarAlliance ?

� iv. Quais os países onde há cidades com mais de um aeroporto ?

Bibliografia

• Ramakrishnan & Gehrke, Database Management Systems, Ed. McGraw-Hill

Na Biblioteca:• J.C.Date, An Introduction to Database Systems [D-51]• Ullman & Widom, A First Course in Database Systems [5399 –

CMEST]• Date & Darwen, A Guide to the SQL Standard [D-34]• Batini, Ceri & Navethe, Conceptual Database Design [B-85]• Connolly, Begg & Strechan, Database Systems [5123 – CMEST]• Machado & Abreu, Projecto de Banco de Dados [5356 – CMEST]