Sunteți pe pagina 1din 11

Base de dados

Introdução às • Uma base de dados (BD) é uma coleção


estruturada de dados tal que é possível
Bases de Dados Relacionais armazenar e extrair conhecimnto
eficientemente.
Introdução às BD relacionais • Um Sistema de Gestão de Base de
Álgebra relacional Dados (SGBD/DBMS) é um programa
SQL informático para armazenar uma BD
Alexandre Gonçalves, DECivil, IST
alexandre.goncalves@ist.utl.pt

Modelos / Níveis Escolha de um modelo


MUNDO REAL • As questões mais importantes...
– Identificação das entidades e relações
informação informal descrição das
MODELO estruturas e – Capacidade de representar o comportamento
DESCRITIVO transações*
– Facilidade de interrogação
informação formal manipulação e
MODELO definição da estrutura – Espaço exigido
CONCEPTUAL
– Políticas de acesso
dados estruturas de dados – Robustez (consistência e integridade dos dados)
MODELO externas
OPERATIVO

instanciação dos estruturas de dados


MODELO
dados internas
INTERNO
* ações de modificação
de conteúdo da BD

Desenho de uma BD Desenho de uma BD


1. Análise de requisitos 4. Refinamento do esquema
• que dados serão guardados • análise da coleção de relações
• que operações são mais frequentes e sujeitas a • ex: normalização
requisitos de performance
5. Desenho da BD física
2. Desenho da BD conceptual • análise de volumes de trabalho expectáveis
• descrição dos dados em alto-nível • ex: construção de índices
• muitas vezes usa-se o modelo E/R, um modelo de dados
semântico 6. Desenho da aplicação e segurança
• aspetos de implementação particulares
3. Desenho da BD lógica
• conversão da BD conceptual para um esquema
(schema) no modelo de dados do SGBD
Modelo Relacional Definições
• Modelo para estruturar informação baseado na • DOMÍNIO (conjunto de valores)
teoria de conjuntos e lógica de predicados.
• RELAÇÃO (=TABELA) (esquema com nome e
• Objetivos: armazenar dados no mínimo espaço conjunto de atributos)
possível; obtenção de informação no mínimo • ATRIBUTO (=COLUNA)
tempo; captura das relações inter-dados.
• Outros modelos possíveis: hierárquicos
• TUPLO (=LINHA)
(arborescentes), em rede, orientados a • CHAVE (K é chave para R significa KR)
objetos, orientados a conceitos, ... • RESTRIÇÕES DE INTEGRIDADE

RESTRIÇÕES DE
TABELA
INTEGRIDADE
CLUBE JOGADOR SALÁRIO GOLOS
CLUBE J GM GS EUR TREINADOR
Barcelona 6 20 4 CL Tito Vilanova
Porto Boga 24000 5
Chelsea 6 14 4 CL Di Matteo
Porto Zé Manel 20305 0
Porto 6 13 3 CL Vítor Pereira
Barcelona Roger 44333 12
AEK 4 9 9 Europe L.
Man.Utd
GDA Pardal 12000 2
6 13 5 CL Alex Ferguson
Fiorentina 5 12 8 Europe L. Siniša Mihajlović Consistência entre tabelas
relacionadas

NORMALIZAÇÃO NORMALIZAÇÃO
1NF
•Normalizar evita (ou pelo menos, minimiza)
2NF algumas anomalias e redundância
3NF
BCNF •Anomalias: atualização / inserção / eliminação
4NF
5NF 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
FORMAS NORMAIS NORMALIZAÇÃO – 1ª FN
COMPRA Data Descrição

1ª: «Uma relação está na 1FN se todos os


seus atributos são simples» 120 6 Jun 2007 Item Quant
2ª: «Uma relação está na 2FN se estiver Papel 31
na 1FN e todos os atributos não primários Tinta 41
são dependentes da chave por inteiro»
133 14 Jul 2007 Item Quant
3ª: «Uma relação está na 3FN se estiver Papel 100
na 2FN e todos os atributos não primários
são independentes uns dos outros» Lápis 12

NORMALIZAÇÃO - 1ª FN FORMAS NORMAIS


TRANSAC Date ITEM Quant
TION
6 Jun 2007
1ª: «Uma relação está na 1FN se todos os
120 Papel 31
seus atributos são simples»
120 6 Jun 2007 Tinta 41
2ª: «Uma relação está na 2FN se estiver
133 14 Jul 2007 Papel 100 na 1FN e todos os atributos não primários
133 14 Jul 2007 Lápis 12 são dependentes da chave por inteiro»

• Não há linhas duplicadas nos atributos-chave 3ª: «Uma relação está na 3FN se estiver
na 2FN e todos os atributos não primários
• Não há vazios em atributos-chave
são independentes uns dos outros»

NORMALIZAÇÃO – 2ª FN NORMALIZAÇÃO – 2ª FN

NOME PROJETO Orçamento Horas


do projeto PROJETO Orçamento
Ana Prj1 400 30 Prj1 400 NOME PROJETO Horas
José Prj1 400 10 Prj2 175 Ana Prj1 30
Maria Prj2 175 250 Prj3 137 José Prj1 10
Maria Prj3 137 10 Prj4 260 Maria Prj2 50
José Prj2 175 25 Maria Prj3 10
José Prj2 25
Maria Prj1 400 10 Maria Prj1 10
David Prj4 260 75 David Prj4 75
FORMAS NORMAIS NORMALIZAÇÃO – 3ª FN

PROJETO Gestor Data nasc.


1ª: «Uma relação está na 1FN se todos os Prj1 Joaquim Jan 75
seus atributos são simples»
Prj3 Teresa Mai 86
2ª: «Uma relação está na 2FN se estiver Prj2 Joaquim Jan 75
na 1FN e todos os atributos não primários
são dependentes da chave por inteiro» Prj4 Daniel Nov 88
Prj5 Alfreda Mai 86
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
NORMALIZAÇÃO – 3ª FN
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á
PROJETO Gestor GESTOR Data nasc. ainda etapas de normalização além da 3FN:
•Boyce-Codd NF (BCNF): para todo o XY, X é chave
Prj1 Joaquim Alfreda Mai 86 candidata ou inclui uma chave candidata (qualquer
Prj3 Teresa Joaquim Jan 75 atributo, do qual outro seja funcionalmente dependente
[um determinante], é chave candidata)
Prj2 Joaquim Teresa Mai 86
Prj4 Daniel •4FN: remove redundâncias com base em dependências
Daniel Nov 88 multivaloradas
Prj5 Alfreda
•5FN: toda a dependência de junção é consequência das
chaves candidatas

NORMALIZAÇÃO
RELAÇÕES ENTRE TABELAS
BCNF
VENDE- NOME PRODU- PREÇO • 1M (um para muitos)
DOR# VENDEDOR TO
• MM (muitos para muitos)
1 Big Sell Sal 21
• 11 (um para um)
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ÇÃO 1M RELAÇÃO MM

chave estrangeira
LIVROS AUTORES
PRODUTOS PAÍSES ID AUTOR TÍTULO NUM NOME PAÍS
ID NOME PAÍS NUM NOME CAPITAL 5 13 O Chão que 13 Salman Reino
Ela Pisa Rushdie Unido
5 Tapete 1 1 Paquistão Islamabad
2 13 Versículos 31 Eça Portugal
2 Tapete 1 3 Índia Nova Deli Satânicos
62 R. Ortigão Portugal
Abacate Burkina Faso Uagadugu 6 31 Mist. Estrada
6 22 41 de Sintra Tolstoi Rússia
47
1 Caril 3 22 Guatemala Guatemala Mist. Estrada
6 62
de Sintra
10 Lâmpada 50 50 Polónia Varsóvia
62 47 Anna
Karenina

RELAÇÃO MM RELAÇÃO 11

LIVROS AUTORES ANIMAIS PROTEGIDOS


ID TÍTULO NUM NOME PAÍS ID NOME ESPÉCIE NUM EXTINTO LEI
5 Cão Canis Canis 24 N DL 4249B
AUTORIA 24 Panda Panda Panda 56 N DL 4399A
ID NUM 56 Lobo Canis Lupus
Muitas relações 11 podem
9 Leão Felix Leo ser condensadas numa só
tabela

Operadores SELEÇÃO
• SELEÇÃO
• Denota-se por σcond(R) onde
• PROJEÇÃO
• R é uma relação; e
• PRODUTO CARTESIANO
• cond é a condição de seleção.
• JUNÇÃO
• O resultado da seleção é uma relação
• JUNÇÃO NATURAL
com os mesmos atributos que R mas
cujos tuplos verificam a condição
indicada.
SELEÇÃO PROJEÇÃO

• Denota-se por πlista_de_atributos(R).


R S = σB=2(R) • O resultado é uma relação onde se
A B C A B C encontram apenas os atributos da
5 2 B1 5 2 B1 lista indicada, sendo retirados os
2 3 B2 6 2 B2 tuplos idênticos, para que o resultado
6 2 B2 seja uma relação.
1 4 B2

PROJEÇÃO PRODUTO CARTESIANO

• Denota-se por R X S X … X T.
R S = πA,B(R) • O resultado é uma relação U com
A B C A B aridade igual à soma das aridades
5 2 G 5 2 das relações argumento, cujos
2 3 9 2 3 atributos formam os atributos de
5 2 T U. Os tuplos são as combinações
2 3 2 possíveis de tuplos dos
argumentos.

PRODUTO CARTESIANO JUNÇÃO

R • Denota-se por R Xθ S.
A B U=RXS • É um produto cartesiano seguido
2 3 R.A B S.A C de uma seleção com condição θ.
4 5 2 3 4 K
S 2 3 3 Y
4 5 4 K
A C
4 5 3 Y
4 K
3 Y
JUNÇÃO JUNÇÃO NATURAL

R • Denota-se por R |X| S.


A B T = R XB>C S • É uma junção com o operador “=”,
2 3 R.A B S.A C seguida de uma projeção dos
4 5 2 3 4 2 atributos distintos da relação
4 5 4 2 resultado.
S
4 5 3 4
A C
4 2
3 4

JUNÇÃO NATURAL SQL-Strutured Query Language

• linguagem padrão para aceder e manipular BD


R relacionais: SQL permite estruturar, manipular,
T = R |X| S inserir, questionar
A B
• definida pelo ANSI (American National
2 3 A B C Standards Institute)
4 5 4 5 2 • SQL usada em muitos ambientes (SGBD)
diferentes, como MS Access, MS SQL Server,
S Oracle, Sybase, DB2, Informix, etc.
A C
4 2
3 4

SQL – Data Definition


SQL
Language
• SQL Data Definition Language (DDL)
– CREATE TABLE CREATE TABLE table_name ALTER TABLE table_name
– ALTER TABLE {column1 data_type ADD column data_type
– DROP TABLE column2 data_type
– CREATE INDEX ... colunmn data_type exemplo:
– DROP INDEX }
ALTER TABLE Pinturas
• SQL Data Manipulation Language (DML) exemplo:
– UPDATE CREATE TABLE Pinturas ADD Materiais
– DELETE {ANO int(4) varchar(50)
– INSERT INTO TITULO varchar(50)
AUTOR varchar(50)
– SELECT LOCAL varchar (50)}
SQL – Data Manipulation
SQL – Interrogação à BD
Language
UPDATE table
SET column = new_value
DELETE FROM table SELECT {DISTINCT | ALL}
WHERE column = value
WHERE column = old_value [ * | [ expr-coluna ]… ]
ex.:
ex.:
DELETE FROM Países FROM [ tabela(s) ] …
UPDATE Sistema_Solar
WHERE nome = ‘Sérvia e
SET type = ‘Planeta anão’
Montenegro’
{ WHERE condição }
WHERE name = ‘Plutão’
{ GROUP BY [ coluna(s) ] … }
INSERT INTO table
VALUES (value1, value2, ..., valuen) { HAVING condição }
ex.:
INSERT INTO Pinturas { ORDER BY [esquema-ordenação] … }
VALUES (‘1507’, ‘Gioconda’, ‘Leonardo da Vinci’, ‘Louvre’, ‘Óleo sobre madeira’)

SQL – SELECT ... FROM ... SQL - WHERE

SELECT ID, NOME FROM ANIMAIS SELECT ID, NOME FROM ANIMAIS
WHERE ESPÉCIE LIKE “Canis%”
ANIMAIS RESPOSTA
ID NOME ESPÉCIE ID NOME ANIMAIS RESPOSTA
5 Cão Canis Canis 5 Cão ID NOME ESPÉCIE ID NOME
5 Cão Canis Canis 5 Cão
24 Panda Panda Panda 24 Panda
24 Panda Panda Panda 56 Lobo
56 Lobo Canis Lupus 56 Lobo
56 Lobo Canis Lupus
9 Leão Felix Leo 9 Leão
9 Leão Felix Leo

SQL – WHERE SQL - WHERE

SELECT NOME, ID FROM PRODUTOS


• A condição presente na cláusula WHERE PAÍS IN
WHERE pode conter os seguintes (SELECT NUM FROM PAÍSES
WHERE NOME LIKE “P%”)
operadores:
=, <, >, <=, >=, <>, AND, OR, NOT, PRODUTOS RESPOSTA
BETWEEN, IN, LIKE, NULL, ANY e ID NOME PAÍS NOME ID
ALL Tapete 5
PAÍSES
Lâmpada 10
NUM NOME CAPITAL Tapete 2
SQL SQL
Exemplo 1: Obter os números dos jogadores
e os números da liga dos jogadores
residentes em Faro:
JOGADORES SELECT NumJogador, NumLiga
NumJogador Nome AnoNasc Categ AnoSocio Morada Cidade Telef NumLiga FROM JOGADORES
WHERE Cidade = ‘Faro’

Exemplo 2: Obter o número de jogador de


Jog1 Jog2 NumJogo Resultado Data
quem jogou no dia 21/09/2013:
A.B denota o atributo B da relação A
JOGOS MULTAS SELECT Jog1, Jog2
NumPagamento NumJog Data Quantia FROM JOGOS
WHERE Data = ‘21/09/2013’

SQL SQL
Exemplo 3: Obter os nomes e cidades dos
jogadores que vivam em Tavira, Faro, Elvas ou
Tomar: Exemplo 5: Obter os nomes e números de liga
dos jogadores que tenham número de liga:
SELECT Nome, Cidade FROM JOGADORES
WHERE Cidade IN (‘Tavira’, ‘Faro’, ‘Elvas’, ‘Tomar’) SELECT Nome, NumLiga
FROM JOGADORES
Exemplo 4: Obter o nome e número dos
WHERE NumLiga IS NOT NULL
jogadores cujo nome comece por ‘B’
(maiúsculo) ou termine com ‘o’ (minúsculo):

SELECT Nome, NumJogador FROM JOGADORES


WHERE Nome LIKE ‘B%’ OR Nome LIKE ‘%o’

SQL SQL
Exemplo 6: Obter os nomes dos jogadores
Exemplo 7: Obter os nomes dos jogadores
que jogaram pelo menos um jogo:
mais velhos que Teresa Horta:
SELECT Nome FROM JOGADORES
WHERE NumJogador IN SELECT Nome FROM JOGADORES
(SELECT Jog1 FROM JOGOS) WHERE AnoNasc <
OR NumJogador IN (SELECT AnoNasc FROM JOGADORES
(SELECT Jog2 FROM JOGOS) WHERE Nome = ‘Teresa Horta’)

Exemplo 8: Descobrir os nomes e ano de


nascimento dos jogadores mais velhos:

SELECT Nome, AnoNasc FROM JOGADORES


WHERE AnoNasc <= ALL
(SELECT AnoNasc FROM JOGADORES)
SQL SQL – GROUP BY

• Serve para agrupar linhas através


Exemplo 9: Quais os nomes e anos de
nascimento dos jogadores que não se de um atributo comum
encontram entre os mais velhos ? AUTORES
SELECT NUM
NUM NOME PAÍS
SELECT Nome, AnoNasc FROM AUTORES NUM
13 Salman Reino
FROM JOGADORES Rushdie Unido GROUP BY PAÍS 13
WHERE AnoNasc > ANY 31 Eça de Portugal
31,
(SELECT AnoNasc FROM JOGADORES) Queiroz
R. Ortigão Portugal 62
62
Tolstoi Rússia 47
47

SQL – HAVING SQL


Exemplo 11: Obter os números dos jogadores dos
quais foi recebida em multas a quantia de pelo menos
• Serve para indicar condições aos 150:
elementos agrupados com GROUP BY SELECT NumJog FROM MULTAS
GROUP BY NumJog
SELECT NUM NUM HAVING SUM(Quantia) >= 150
FROM AUTORES 31
GROUP BY PAÍS
62 Exemplo 12: Quantos jogadores vivem em Évora ?
HAVING COUNT(NOME)>1
Exemplo 10: Quais os números dos autores dos SELECT COUNT(NumJogador)
países com mais que um autor? FROM JOGADORES
WHERE Cidade = ‘Évora’

SQL SQL – ORDER BY


Exemplo 13: Número de multas aplicadas
• Serve para ordenar os resultados
SELECT COUNT(*) por determinada coluna
FROM MULTAS AUTORES
SELECT NUM
NUM NOME PAÍS
Exemplo 14: Qual o número de cidades em Salman Reino
FROM AUTORES NUM
13
que residem os jogadores ? Rushdie Unido ORDER BY NUM 13
31 Eça de Portugal
Queiroz 31
SELECT COUNT (DISTINCT Cidade) R. Ortigão Portugal 47
62
FROM JOGADORES
47 Tolstoi Rússia 62
SQL Exercício
Exemplo 15: Listar por ordem crescente o número de
jogador e a data de cada multa aplicada:
NOME GRUPO PAÍS
SELECT NumJog, Data FROM MULTAS Continental Sky Team E.U.A.
ORDER BY NumJog
TAP Star Alliance Portugal
Exemplo 16: Obter para cada jogador que pagou pelo Iberia One World Espanha
menos uma multa o total pago e ordenar os Qantas One World Austrália
resultados por esse valor:
AeroCondor Portugal
SELECT NumJog, SUM(Quantia) Norfolk Air Austrália
FROM MULTAS
GROUP BY NumJog Lufthansa Star Alliance Alemanha
ORDER BY 2 DESC

AERO_ CIDADE COMPANHIA AERO MÊS NUM_P CIDADE VOO Exercício


DEST _DEST _ORI ASSAG _ORI
EWR N.York Continental LPL Fev 2762 Liverpool CO959
 1) NORMALIZAR PARA A 3FN
ORY Paris Lufthansa EWR Jan 10423 N.York LH4145  2) QUERIES
LIS Lisboa AeroCondor OPO Jan 9492 Porto LXQ33
LIS Lisboa AeroCondor OPO Fev 9001 Porto LXQ33
POR Porto TAP LIS Fev 1482 Lisboa TP9192  i. Quais são os voos de companhias portuguesas e quantos
passageiros transportou cada um (no total do ano)?
POR Porto Lufthansa FRA Fev 1728 Frankfurt LH4711
 ii. Quais as companhias que têm voos em Fevereiro a partir de
ORY Paris Iberia MAD Jan 6167 Madrid IB013
Paris ou com destino a Paris ?
ORY Paris Iberia MAD Fev 8914 Madrid IB013
 iii. Quais as cidades no Brasil para onde há voos do grupo Star
CDG Paris TAP MAD Mar 34560 Madrid TP512 Alliance ?
CDG Paris TAP MAD Fev 30050 Madrid TP512  iv. Quais os países onde há cidades com mais de um aeroporto ?
EWR N.York TAP FNC Jan 4443 Funchal TP888
EWR N.York TAP FNC Fev 2790 Funchal TP888

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]

S-ar putea să vă placă și