Você está na página 1de 16

Parte 2

Modelo Relacional:
Conceitos, Restries,
Linguagens, Design e
Programao

Captulos
1. O Modelo de Dados Relacional e as Restries
de um Banco de Dados Relacional
2. A lgebra Relacional e o Clculo Relacional
3. Projeto de Banco de Dados Relacional pelo
Mapeamento dos Modelos
4. Sql-99: Definio de Esquema, Restries
Bsicas e Consultas (queries)
5. 9 - Mais Sql: Asseres (assertions), Vises
(views) e Tcnicas de Programao
Banco de Dados Professora Mariangela Molina
FATEC Mogi das Cruzes

Captulo 9

SQL: Assees e
Vises
Copyright 2004 Pearson Education, Inc.

Constraints como Asseres


Constraints gerais: constraints que no se
enquadram nas categorias de SQL bsico
(apresentado no captulo 8)
Mecanismo: CREAT ASSERTION

Components incluem: o nome da constraint,


seguido por CHECK, seguido pela condio

Banco de Dados Professora Mariangela Molina


FATEC Mogi das Cruzes

Slide 9-4

Asseres: Um exemplo
O salrio de um empregado no pode ser
maior que o salrio do gerente do
departamento onde o empregado trabalha
CREAT ASSERTION SALARY_CONSTRAINT
CHECK (NOT EXISTS
(SELECT *
FROM EMPLOYEE E, EMPLOYEE M, DEPARTMENT D
WHERE E.SALARY > M.SALARY AND
E.DNO=D.NUMBER AND
D.MGRSSN=M.SSN
))
Banco de Dados Professora Mariangela Molina
FATEC Mogi das Cruzes

Slide 9-5

Usando Asseres
Especifique a query que viola a condio;
inclua a clusula NOT EXISTS
A query resultante deve ser vazia
Se a query resultante no for vazia, a assero
ser violada

Banco de Dados Professora Mariangela Molina


FATEC Mogi das Cruzes

Slide 9-6

Gatilhos
Objetivo: monitorar um banco de dados e
tomar uma ao quando uma condio
ocorrer
Triggers (gatilhos) so expressos em uma
sintaxe similar s asseres e inclui:
evento (por exemplo, uma operao de update)
condio
ao (a ser tomada quando a condio for
satisfeita)
Banco de Dados Professora Mariangela Molina
FATEC Mogi das Cruzes

Slide 9-7

Gatilhos: Um exemplo
Um trigger para comparar o salrio de um empregado e
seu/sua supervisor durante uma insero ou alterao:
CREATE TRIGGER INFORM_SUPERVISOR
BEFORE INSERT OR UPDATE OF
SALARY, SUPERVISOR_SSN ON EMPLOYEE
FOR EACH ROW
WHEN
(NEW.SALARY> (SELECT SALARY FROM EMPLOYEE
WHERE SSN=NEW.SUPERVISOR_SSN))
INFORM_SUPERVISOR (NEW.SUPERVISOR_SSN,NEW.SSN);

Banco de Dados Professora Mariangela Molina


FATEC Mogi das Cruzes

Slide 9-8

Vises em SQL
Uma viso uma tabela virtual qie
derivada de outras tabelas
Permite operaes limitadas de update (uma
vez que a tabela no pode ser fisicamente
armazenada)
Permite todas as operaes de consulta
conveniente para expressar certas
operaes
Banco de Dados Professora Mariangela Molina
FATEC Mogi das Cruzes

Slide 9-9

Especificao de Vises
Comando SQL: CREATE VIEW
o nome de uma tabela (view)
uma lista possvel de nome de atributos (por
exemplo, quando usados operadores aritmticos
ou quando queremos nomes diferentes dos
nomes originais dos atributos nas relaes de
base)
uma query para especificar os dados da tabela
Banco de Dados Professora Mariangela Molina
FATEC Mogi das Cruzes

Slide 9-10

Vises: Um exemplo
Especifica uma tabela diferente para
WORKS_ON
CREATE VIEW WORKS_ON_NEW AS
SELECT FNAME, LNAME, PNAME, HOURS
FROM EMPLOYEE, PROJECT, WORKS_ON
WHERE SSN=ESSN AND PNO=PNUMBER
GROUP BY PNAME;

Banco de Dados Professora Mariangela Molina


FATEC Mogi das Cruzes

Slide 9-11

Usando Tabelas Virtuais


Podemos especificaar consultas SQL na
nova viso:
SELECT FNAME, LNAME FROM WORKS_ON_NEW
WHERE PNAME=Seena;

Quando no foi mais necessria, a viso


pode ser removida:
DROP WORKS_ON_NEW;

Banco de Dados Professora Mariangela Molina


FATEC Mogi das Cruzes

Slide 9-12

Implementao Eficiente de
Vises
Query de modificao: apresenta uma query
na view em termos de query na tabela base
Desvantagem: ineficiente para vises definidas
via queries complexas (especialmente se
queries adicionais esto para ser aplicadas na
viso em um curto perodo de tempo)

Banco de Dados Professora Mariangela Molina


FATEC Mogi das Cruzes

Slide 9-13

Implementao Eficiente de
VIses
View materializada: envolve a criao fsica
e mantem a tabela temporariamente no
banco de dados
Suposio: outras queries na view aparecero
Preocupao: manter a correspondncia entre a
tabela base e a view quando a tabela base
alterada
Estratgia: update incremental
Banco de Dados Professora Mariangela Molina
FATEC Mogi das Cruzes

Slide 9-14

Update na View
Update em uma view simples (sem
operaes de agregao): update deve
mapear um update na tabela base
Views envolvendo joins: um update deveria
mapear para um update nas relaes base
Nem sempre possvel

Banco de Dados Professora Mariangela Molina


FATEC Mogi das Cruzes

Slide 9-15

Views que No Suportam


Update
Views definidas usando funes de grupo
ou agregao
Views definidas usando joins e mltiplas
tabelas
WITH CHECK OPTION: deve ser adicionado
definio da view para que a mesma possa
sofrer updates

Banco de Dados Professora Mariangela Molina


FATEC Mogi das Cruzes

Slide 9-16