Você está na página 1de 28

DCC011:

Introdução a Banco de Dados


Rodrygo Santos
rodrygo@dcc.ufmg.br

Departamento de Ciência da Computação


Universidade Federal de Minas Gerais
Revisão: definição de dados
§ Comando CREATE SCHEMA
CREATE SCHEMA COMPANY AUTHORIZATION
JS;
§ Comando CREATE TABLE
CREATE TABLE <nome da tabela>
(<definições de colunas>
<definição da chave primária>
<definições de chaves alternativas>
<definições de chaves estrangeiras>);
Revisão: definição de dados
§ Opções de remoção (cláusula ON DELETE):
§ CASCADE (propagação)
§ SET NULL (substituição por nulos)
§ SET DEFAULT (substituição por um valor default)
§ Opção default: bloqueio (RESTRICT)
§ As mesmas opções se aplicam à cláusula ON
UPDATE
Revisão: drop e alter
§ Comandos DROP SCHEMA e DROP TABLE
§ DROP SCHEMA COMPANY CASCADE (RESTRICT);
§ RESTRICT: se não tem elementos
§ DROP TABLE DEPENDENT CASCADE (RESTRICT);
§ RESTRICT: se não referenciada em restrição ou visão
§ Comando ALTER TABLE
§ ALTER TABLE COMPANY.EMPLOYEE
ADD JOB VARCHAR(12);
§ Inicialmente Null para todas as tuplas
§ ALTER TABLE COMPANY.EMPLOYEE
DROP ADDRESS CASCADE (RESTRICT);
§ RESTRICT: se não referenciada em restrição ou visão
Revisão: consultas básicas
§ SELECT PNUMBER, DNUM, LNAME, ADDRESS, BDATE
FROM PROJECT, DEPARTMENT, EMPLOYEE
WHERE PLOCATION=‘Stafford’ AND
DNUM=DNUMBER AND MGRSSN=SSN;
§ SELECT SSN, LNAME, SALARY
FROM EMPLOYEE;
§ SELECT LNAME, DNAME
FROM EMPLOYEE, DEPARTMENT; è PROD. CART.
§ SELECT *
FROM EMPLOYEE;
§ SELECT DISTINCT SALARY
FROM EMPLOYEE;
Revisão: consultas complexas
§ Consultas aninhadas (fetch valores existentes)
§ SELECT FNAME, LNAME, ADDRESS
FROM EMPLOYEE
WHERE DNO IN (SELECT DNUMBER
FROM DEPARTMENT
WHERE DNAME=‘Research’);
§ SELECT LNAME, FNAME
FROM EMPLOYEE
WHERE SALARY > ALL (SELECT SALARY
FROM EMPLOYEE
WHERE DNO=5);
§ SELECT E.FNAME, E.LNAME
FROM EMPLOYEE AS E
WHERE EXISTS (SELECT *
FROM DEPENDENT
WHERE E.SSN=ESSN AND
E.FNAME=DEPENDENT_NAME);
Revisão: JOINs
§ SELECT FNAME, LNAME, ADDRESS
FROM (EMPLOYEE JOIN DEPARTMENT
ON DNO=DNUMEBR)
WHERE DNAME=‘Research’;
§ SELECT DNAME, DLOCATION
FROM (DEPARTMENT NATURAL JOIN
DEPT_LOCATIONS);
§ SELECT fname, lname, dependent_name
FROM (EMPLOYEE LEFT OUTER JOIN
DEPENDENT ON ssn=essn);
Revisão: Agrupamento
§ Aplicar funções de agregação a subgrupos de tuplas em
uma relação
§ Exemplo: média de salário em cada departamento
§ SELECT DNO, COUNT(*), AVG(SALARY)
FROM EMPLOYEE
GROUP BY DNO;
Revisão: Agrupamento condicional
§ Somente os grupos que satisfazem a condição
especificada em HAVING são retornados
§ SELECT PNUMBER, PNAME, COUNT(*)
FROM PROJECT, WORKS_ON
WHERE PNUMBER=PNO
GROUP BY PNUMBER, PNAME
HAVING COUNT(*) > 2;
§ WHERE à tuplas; HAVING à grupos de tuplas
Revisão: INSERT/UPDATE/DELETE
§ INSERT INTO EMPLOYEE
VALUES (‘Richard’,‘K’,‘Marini’,‘653258653’,‘1962-12-
30’, ’98 Oak Forest, Katy, TX’, 37000, ’987654321’, 4);
§ DELETE FROM EMPLOYEE WHERE LNAME=‘Brown’;
§ UPDATE PROJECT
SET PLOCATION=‘Bellaire’, DNUM=5
WHERE PNUMBER=10;
Mapeamento ER - Relacional

1. Transformações entre Modelos


2. Algoritmo de mapeamento ER à Relacional
Regras gerais de tradução
§ Evitar junções
§ Acesso randômico
§ Diminuir o número de chaves
§ Espaço extra + gerenciamento
§ Evitar campos opcionais
§ Ambiguidade no tratamento de NULLs
Algoritmo de Mapeamento
Elmasri & Navathe
§ a. Entidades regulares
§ b. Atributos multivalorados
§ c. Entidades fracas
§ d. Relacionamentos
§ d.1 Relacionamentos binários 1:1
§ d.2 Relacionamentos binários 1:N
§ d.3 Relacionamentos binários N:M
§ d.4 Relacionamentos N-ários
§ e. Hierarquias
(especialização/generalização)
a. Entidades regulares
(sem atributos multivalorados)

NEmp
Empregado NomeEmp

Salário

Empregado (NEmp, NomeEmp, Salário)


b. Atributos Multivalorados
NDept

Departamento NomeDept

Ramal

Departamento (NDept, NomeDept)


Ramal-Departamento (NDept, Ramal)
NDept referencia Departamento, por propagação
c. Entidade Fraca
1 N
Empregado Possui Dependente

NEmp NomeDep DataNasc

Empregado (NEmp,...)
Dependente (NEmp,NomeDep, DataNasc)
NEmp referencia Empregado, por propagação
d. Relacionamentos
§ Tabela própria
§ Adição de colunas a uma das tabelas
§ Fusão de tabelas
§ Alternativa depende da cardinalidade
(máxima e mínima) do relacionamento
d.1 Relacionamentos binários 1:1
d.2 Relacionamentos binários 1:N
d.3 Relacionamentos binários N:M
d.4 Relacionamentos N-ários
d.1. Relacionamento binário
(1:1)

© Carlos A. Heuser
Projeto de Banco de Dados Ed. Sgra & Luzzatto
d.2. Relacionamentos binários
(1:N)

© Carlos A. Heuser
Projeto de Banco de Dados Ed. Sgra & Luzzatto
d.3 Relacionamento binário
(N:M)

© Carlos A. Heuser
Projeto de Banco de Dados Ed. Sgra & Luzzatto
d.4. Relacionamento N-ario
§ Não são definidas regras específicas
§ O relacionamento é transformado em uma
entidade
§ Nova entidade Rel
§ Colunas = chaves primárias das tabelas
relacionadas
e. Hierarquias
§ e.1. Relações : superclasse e subclasses
§ Funciona para total/partial + disjoint/overlapping
§ e.2. Relações : subclasses
§ Funciona somente para total + disjoint
§ Precisa de OUTER UNION (ou FULL OUTER JOIN)
para obter todas as instâncias da superclasse
§ e.3. Relação única (disjoint)
e.4. Relação única + tipos (overlapping)
§ Trade-off esparsidade vs. eficiência
Normalização
§ Processo através do qual esquemas de relação
são sucessivamente decompostos até que
satisfaçam determinadas propriedades ou
formas normais.
§ Medidas informais de qualidade do projeto de
um esquema relacional:
§ Atributos das relações semanticamente compatíveis
§ Ausência de valores redundantes nas relações
(inexistência de anomalias de atualização)
§ Número reduzido de valores nulos nas relações
§ Sem possibilidade de gerar tuplas espúrias/falsas
Primeira Forma Normal (1NF)
§ Primeira Forma Normal (1FN):
Um esquema de relação R está na 1FN se todos os
seus atributos forem atômicos.
= simples e monovalorados
§ Contra-exemplo
§ Atributo composto
§ Atributo multivalorado
Dependências Funcionais
A B
AàB

Se duas tuplas t
em R concordam
nos atributos A1,
A2, .., AN (i.e. as
tuplas têm os
mesmos valores),
u
então eles Se t e u Então eles
devem concordar concordam devem concordar
em um outro aqui aqui
atributo, B
Garcia-Molina, Ullman, Widom: Database Systems, The Complete Book
Segunda Forma Normal (2FN)
§ Um esquema de relação R está na 2FN se todo
atributo de R não pertencente a uma de suas
chaves for totalmente dependente da chave
primária
§ Contra-exemplo
§ Dependências parciais
Terceira Forma Normal (3FN)
§ Um esquema de relação R está na 3FN se
estiver na 2FN e nenhum atributo não-chave
de R depender de outro atributo não-chave
§ Contra-exemplo
§ Dependência transitiva
Cronograma
§ 08/11: Revisão
§ 13/11: Prova 2
§ 15/11: Feriado
§ 19/11: Relatório TP2
§ 20/11, 22/11: Apresentações TP2
§ 27/11: Prova Substitutiva
§ 29/11: Exame Especial

Você também pode gostar