Anda di halaman 1dari 134

Sistemas de Banco de Dados

Marcos Andr Gonalves

2007-2

Introduo

O que um banco de dados?

Definies Preliminares

[Chu, 1985]

Um banco de dados um conjunto de


arquivos relacionados entre si

[Date, 2000]

Um banco de dados uma coleo de


dados operacionais armazenados usados
pelas aplicaes de uma determinada
organizao

Outra Definio de Banco de


Dados

[Elmasri & Navathe, 2000]

Um banco de dados uma coleo de


dados relacionados

Representando algum aspecto do mundo


real (mini-mundo ou universo de discurso)
Logicamente
coerente,
com
algum
significado
Projetado, construdo e gerado (povoado)
para uma aplicao especfica

Sistema de Gerncia de Banco de


Dados

Um sistema de gerncia de banco de


dados (SGBD) um conjunto de
programas que permite a criar e
manter um banco de dados
Um banco de dados juntamente com o
SGBD que o gerncia constitui um
sistema de banco de dados

Usurios/Programadores

Consultas/Programas

SGBD
Catlogo
(Meta-Dados)

Banco
de
Dados

Sistema de Banco de Dados

Exemplo de um Banco de Dados

Mini-mundo: parte de uma universidade


Algumas entidades:

Alunos
Disciplinas
Departamentos

Alguns relacionamentos:

Disciplinas
so
oferecidas
por
Departamentos
Alunos esto matriculados em Disciplinas

Exemplo de um Banco de Dados

Exemplo de um Banco de Dados

Caractersticas da Abordagem
de BD

Auto-descrio dos dados

Isolamento entre programas e dados:


abstrao de dados

Suporte a mltiplas vises dos dados

Compartilhamento de dados e
processa-mento de transaes
concorrentes

Usurios em um Ambiente de
BD

Administradores de banco de dados


Projetistas de banco de dados
Analistas de sistema e programadores
Usurios finais:

Usurios casuais
Usurios leigos
Usurios especializados

Vantagens da Utilizao de um
SGBD

Controle de redundncia dos dados

Controle de acesso (segurana)

Armazenamento persistente dos dados

Existncia de mltiplas interfaces para os usurios

Representao de relacionamentos complexos


entre os dados

Manuteno de restries de integridade

Recuperao de falhas

Implicaes da Abordagem de
BD

Adoo/imposio de padres

Reduo do tempo de
desenvolvimento das aplicaes

Flexibilidade

Atualidade da informao disponvel

Economia de escala

Quando no Utilizar um SGBD

Aplicaes simples e bem definidas onde no


se espera mudanas
Aplicaes de tempo-real
Aplicaes onde no necessrio acesso multiusurio
Motivos:

Investimento inicial alto


Generalidade na definio e manipulao dos dados
Custo adicional para prover outras facilidades
funcionais (manuteno de segurana, controle de
concorrncia, recuperao de falhas, etc.)

Modelo de Dados, Esquema e


Instncia

Modelo de dados: Conjunto de conceitos


usados para descrever a estrutura de um
banco de dados

Abstrao de dados
Estrutura = tipos de dados + relacionamentos +
restries (+operaes )

Esquema: Descrio (textual ou grfica) da


estrutura de um banco de dados de acordo
com um determinado modelo de dados
Instncia: Conjunto de dados armazenados
em um banco de dados em um determinado
instante de tempo

Modelo de Dados, Esquema e


Instncia

Esquema do banco de dados de exemplo

Modelo de Dados, Esquema e


Instncia

Instncia do banco de dados de


exemplo

Relao entre Modelo de Dados,


Esquema e Instncia

Modelo de
Dados

Esquema

Regras para
estruturao dos
dados

Regras para
verificao das
instncias

Instncia

Modelo de Dados, Esquema e


Instncia

Estado do Banco

Dados do banco em qualquer ponto do tempo


Inicialmente vazio
Muda freqentemente
Validade parcialmente guarantida pelo SGBD

Esquema do Banco

Armazenado no catlogo
Mudanas muito menos freqentes

Tipos de Modelo de Dados

Modelos conceituais

Utilizados para se descrever a estrutura de


um banco de dados de uma forma mais
prxima da percepo dos usurios
(independente de aspectos de
implementao)
Ex. Conceitos: entidades, atributos,
relacionamentos
Exemplos:

Modelo entidade-relacionamento (ER)


Modelo funcional
Modelo orientado a objetos (OO)

Tipos de Modelo de Dados

Modelos representacionais (lgicos)

Utilizados para se descrever a estrutura de um


banco de dados da forma como ser manipulado
atravs de SGBD (mais dependente das
estruturas fsicas de armazenamento de dados)

Exemplos:

Modelo relacional
Modelo de rede (CODASYL)
Modelo hierrquico

Tipos de Modelo de Dados

Modelos fsicos

Utilizados para descrever como os dados


so fisicamente armazenados

Linguagens

Linguagem de definio de dados (LDD)

Linguagem de manipulao de dados


(LMD)

Recuperao,
insero,
modificao do BD

remoo,

Linguagem de consulta

Usada para definir esquemas

LMD de alto nivel usada em modo standalone

Exemplo: SQL

Utilitrios

Carregamento
Backup

E.g. dumps do banco de dados

(Re-)Organizao de arquivos
Monitoramento da performance

Classificao dos SGBDs

Quanto ao modelo de dados adotado:

Quanto ao nmero de usurios suportados:

Relacionais
De rede
Hierrquicos
Orientados a objetos
Objeto-relacionais
Mono-usurios
Multi-usurios

Quanto localizao dos dados:

Centralizados
Distribudos

Exemplo de um BD Relacional
Empregado

NumEm
p
032

NomeEmp

Salrio

Dept

J Silva

380

21

074
089

M Reis
C Melo

400
520

25
28

092
112

R Silva
R Pinto

480
390

25
21

121
130

V Simo
J Neves

905
640

28
28

Departamento

NumDept

NomeDe
pt

Ramal

21

Pessoal

142

25

Financeiro

143

28

Tcnico

144

Exemplo de um BD de Rede
Empregado
Departamento
21

25

28

Pessoa
l

Financeiro

Tcnic
o

142

143

144

032

J Silva

380

074

M Reis

400

089

C Melo

520

092

R Silva

480

112

R Pinto

390

121

V Simo

130

J
Neves

905
640

Exemplo de um BD Hierrquico
Departamento
21

Pessoa
l

142

25

Financeir
o

380

074

M Reis

143

28

Tcnico

144

089

C
Melo
V

520

Empregado
032
112

J Silva
R
Pinto

390

092

R
Silva

400
480

121
130

JSimo
Neves

905
640

Modelo EntidadeRelacionamento

Processo de Projeto de
Bancos de Dados
Mini-Mundo

Anlise de
Requisitos

Requisitos Funcionais

Requisitos do BD

Anlise Funcional

Projeto Conceitual

Especificao das Transaes


Esquema Conceitual
(em alto nvel)
(em um modelo de dados de alto nvel)
Independente de SGBD
Projeto Lgico

Esquema Lgico
(em um modelo de dados lgico)

Especfico para um SGBD


Projeto das Aplicaes

Projeto Fsico

Implementao

Programas

Esquema Fsico
(para um SGBD especfico)

Aplicao exemplo

Banco de Dados de uma companhia

Organizada em departamentos que tm um


nome e um nmero nicos e um empregado que
gerencia o departamento. A data de quando o
empregado
comeou
a
gerenciar
o
departamento
deve
ser
registrada.
Um
departamento pode ter varias localizaes
Um departamento controla um nmero de
projetos, cada qual com um nome e nmero
nicos e uma nica localizao

Aplicao exemplo

Banco de Dados de uma companhia

Ns armazenamos para cada empregado seu


nome, identidade, endereo, salrio, sexo, e
data de nascimento. Um empregado
assinalado a um departamento mas pode
trabalhar em diversos projetos, os quais no so
necessariamente
controlados
pelo
mesmo
departamento. Nos registramos o nmero de
horas por semana que o empregado trabalha em
cada projeto e o supervisor direto de cada
empregado
Ns mantemos registro para cada empregado,
do numero de dependentes (para seguro) e para
cada dependente o primeiro nome, sexo, data de
nascimento e relacionamento com o empregado.

Esquema conceitual

Modelo ER - Conceitos

Entidades:

Objetos do mundo real que so de


interesse para alguma aplicao

Atributos:

Propriedades utilizadas para descrever


uma entidade

e1
(Employee)

Name = John
Address = 2311 Kirby, Houston, TX
Age = 55
Home Phone = 713-749-2630

Modelo ER - Conceitos

Tipos (classes) de atributo:

Simples ou compostos

Monovalorados ou multivalorados

Ex. Profisso

Armazenados ou derivados

Ex. Endereo (Endereo da Rua (nmero, nome da


rua, nmero do apto), Cidade, Estado, CEP)

Data
de
Nascimento
trabalhando
no
NumeroDeEmpregados

Valores Null

No aplicvel

Ex. Nmero do apartamento

Desconhecido

Ex. Telefone de casa

Idade,
Empregados
departamento

Modelo ER - Conceitos

Tipo de entidade:

Define um conjunto de entidades que


tm
os
mesmos
atributos
(propriedades)
Descreve o esquema para um
conjunto
de
entidades
que
compartilham a mesma estrutura
Exemplos:

Employee, Company

Modelo ER - Conceitos

Chave de um tipo de entidade:

Atributo que possui


entidade (instncia)

nico

para

cada

Ex. Nome da companhia, identidade do empregado

Chave pode ser formada por vrios atributos:


chave composta

valor

Registro do Veiculo: Numero de Registro e Estado

Domnio de um atributo:

Conjunto de valores que podem ser atribudos a


um atributo para cada entidade individualmente
Ex. Idade do Empregado: (16,70); Nome do
Empregado:String

Figura 3.5

Tipos de entidade e suas instncias

Esquema conceitual

Modelo ER - Conceitos

Relacionamentos:

Associaes entre duas ou mais


entidades distintas (instncias) com
um significado
Exemplo:

Employee
John
Smith
Works-for
Department Research
Employee
Fred
Brown
Manages
Department Research
Departament Research Controls Project X

Modelo ER - Conceitos

Tipo de Relacionamento:

Define um conjunto de associaes


entre n tipos de entidade E1, E2,...,En

Exemplo:

Works-for entre Employee e Department

Employee

Works-for

Department

Modelo ER - Conceitos

Tipo de Relacionamento:

Matematicamente, um tipo de relacionamento


R um conjunto de (instncias de)
relacionamentos ri, onde cada ri associa n
(instncias de) entidades (e1,...,en) e cada ej
pertence a um tipo de entidade Ej
R E1 x E2 x ... x En
ri = (e1,...,en)

Grau de um Tipo de Relacionamento

Nmero de tipos de entidade participantes de


um tipo de relacionamento

Instncias de um tipo de relacionamento binrio

Instncias de um tipo de relacionamento ternrio

Esquema conceitual

Modelo ER - Conceitos

Restries sobre tipos de relacionamento:

Limitam as possiveis combinaes de entidades que


podem participar no conjunto de relacionamentos
Cardinalidade: Especifica o nmero de instncias de
um tipo de relacionamento do qual uma entidade
pode participar
Participao: Especifica se a existncia de uma
entidade depende de seu relacionamento com outra
entidade atravs de um tipo de relacionamento
parcial ou total

Ex. Todo empregado deve trabalhar para um departamento


(total)
Ex. Nem todo empregado gerencia um departamento
(parcial)

Cardinalidade + Participao Restries


Estruturais

Cardinalidade 1:1

Cardinalidade M:N

Esquema conceitual

Modelo ER - Conceitos

Papis e relacionamentos recursivos

Entidades atuam com um determinado


papel
Significado do papel dado por um nome,
atribudo a cada tipo de entidade
Nomes s so necessrios em tipos de
relacionamento que envolvam mais de
uma vez o mesmo tipo de entidade
relacionamentos recursivos
Exemplo: Supervision, onde Employee tem
os papis de Supervisor e Supervisee

Figure 3.11

1 Supervisor
2 - Supervisee

Esquema conceitual

Modelo ER - Conceitos

Tipos de Entidade Fraca

Tipos de entidade que no tm chave


prpria
As instncias so identificadas atravs do
relacionamento com entidades de outro
tipo, chamado de dono ou identificador,
juntamente com os valores de alguns
atributos (chave parcial)
Exemplo: Dependent

Esquema conceitual

Notao ER
(Resumo)

Modelo de Dados Relacional

Introduo

O modelo relacional representa um banco de


dados como um conjunto de relaes

Informalmente, uma relao uma tabela de


valores, onde cada linha representa uma coleo
de dados relacionados

Cada linha de uma tabela representa um fato


que tipicamente corresponde a uma entidade ou
relacionamento do mundo real

Conceitos Bsicos

As linhas de uma relao (tabela) so


chamadas de tuplas
Ao cabealho de cada coluna d-se o nome
de atributo
O conjunto de valores que pode aparecer em
cada coluna chamado de domnio

Conceitos Bsicos

Esquema de relao

Descreve a relao

R(A1,A2, ...,An), onde:

R Nome da relao
Ai Nome de um atributo
n Grau da relao
Cada Atributo Ai e o nome de um papel
desempenhado por algum dominio D no
Esquema da relao R

Exemplo:

Student(Name, SSN,
OfficePhine, Age,GPA)

HomePhone,

Address,

Conceitos Bsicos

Relao r(R)

Conjunto de tuplas: r = {t1,t2, ..., tm}


Cada tupla uma lista ordenada de
valores: t = <v1,v2, ..., vn>

Caractersticas de uma Relao

As tuplas de uma relao no so


ordenadas

Benjamin Bayer
3.21

305-61-2425

373-1616

2918 Bluebonnet Lane

null

19

Registros
em
um
arquivo
so
ordenados de acordo com a posio
em que so armazenados no disco

Caractersticas de uma Relao

Uma tupla uma lista ordenada de valores


O valor de cada atributo em uma tupla
atmico

Atributos compostos e multivalorados no so


permitidos
O valor especial null utilizado para representar
valores no conhecidos ou no aplicveis a uma
determinada tupla

Restries de Integridade

Restries de domnio

Especificam que o valor de cada atributo A de uma


relao deve ser um valor atmico do domnio
dom(A)

Restries de chave

Por definio todas as tuplas sao distintas


Um conjunto de atributos SK de um esquema de
relao R tal que, para duas tuplas quaisquer t 1 e t2
de r(R), t1[SK] t2[SK] uma super-chave de R

Super-chave default: todos os atributos

Uma chave de R uma super-chave com a


propriedade adicional de que nenhum de seus
subconjuntos tambm seja uma super-chave de R

{SSN,Name,Age} = super-chave; {SSN} = chave

Restries de Integridade

Restries de chave

Um esquema de relao pode ter mais de uma


chave chaves candidatas
Dentre as chaves candidatas de um esquema de
relao, uma delas indicada como chave
primria e as demais constituem as chaves
alternativas

Restries de Integridade

Restries em valores null

Especifica se a um atributo permitido ter


valores null
Exemplo. Todo Estudante deve ter um nome
vlido, no-null

Esquema de um BD Relacional

Restries de Integridade

Alm das restries de domnio e de


chave as seguintes restries de
integridade so parte do modelo
relacional:

Restrio de integridade de entidade

Nenhum componente
primria pode ser nulo

de

uma

chave

Restries de Integridade

Restrio de integridade referencial

Usada para manter a consistencia entre tuplas


de duas relacoes
Uma tupla em uma relao que se refere a
outra relao deve referenciar uma tupla
existente nesta outra relao
Aparecem devido aos relacionamentos entre
entidades
Seja FK um conjunto de atributos de um
esquema de relao R1 definido sobre o
mesmo domnio dos atributos da chave
primria PK de outro esquema R2. Ento, para
qualquer tupla t1 de R1:

t1[FK] = t2[PK], onde t2 uma tupla de R2 ou


t1[FK] nulo

Restries de integridade referencial

Restries de Integridade

A restrio de integridade referencial pode


ser expressa pela notao
R1[FK] R2[PK],

onde PK a chave primria de R2 e FK a


chave estrangeira de R1
Exemplos:
EMPLOYEE[DNO] DEPARTMENT[DNUMBER]
WORKS_ON[ESSN] EMPLOYEE[SSN]
WORKS_ON[PNO] PROJECT[PNUMBER]

Instncia de um BD Relacional

1
4
5
5
5

Houston

Instncia de um BD Relacional

Opes de Remoo da RIR

A cada RIR R1[FK] R2[PK] possvel associar


uma opo de remoo que especifica como a
remoo de uma tupla de R2 executada em
relao a R1
As opes de remoo possveis so:

bloqueio
propagao
substituio por nulos

Notao:
R1[FK] R2[PK],

onde op {b, p, n}

op

Exemplos de RIR
EMPLOYEE(FNAME,MINT,LNAME,SSN,BDATE,ADDRESS,SEX,
SALARY,SUPERSSN,DNO)
n
EMPLOYEE[SUPERSSN] EMPLOYEE[SSN]
b
EMPLOYEE[DNO] DEPARTMENT[DNUMBER]
DEPARTMENT[DNAME,DNUMBER,MGRSSN,MGRDATE]
b
DEPARTMENT[MGRSSN] EMPLOYEE[SSN]
DEPT_LOCATIONS(DNUMBER,LOCATION)
p
DEPT_LOCATIONS[DNUMBER] DEPARTMENT[DNUMBER]

p
b
b
p

Restries de integridade referencial com opes de remo

Operaes sobre Relaes

As operaes sobre um BD
podem ser classificadas em:

relacional

Operaes de recuperao (consulta)


Operaes de atualizao

Operaes de atualizao (sobre tuplas):

Insero (insert)
Remoo (delete)
Modificao (modify)

Operaes sobre Relaes

Operaes de atualizao

Restries de integridade no podem ser


violadas

Insero

Restrio de Dominio: valor fora do dominio


Restrio de Chave: valor ja existe
Restrio de integridade de entidade: se chave for
null
Restrio de integridade referencial: se chave
estrangeira referencia tupla inexistente
Ao default: rejeitar insero (com explicao)

Operaes sobre Relaes

Operaes de atualizao

Restries de integridade no podem ser


violadas

Remoo

Restrio de integridade referencial: tupla deletada


e referenciada por chaves estrangeiras
Ao default: rejeitar insero (com explicao)
Segunda opo: propagar remoo de tuplas que
violem uma restrio de integridade referencial
Terceira Opcao: Modificar o valor da chave
estrangeira para nulo

Operaes sobre Relaes

Operaes de atualizao

Restries de integridade no podem ser


violadas

Modificao

Modificar o valor de um atributo que nao e chave


primaria ou estrangeira no causa problemas (se o
valor for do dominio, e, se for null, que este valor
seja permitido)
Modificar a chave primaria e igual a remover uma
tupla e inserir outra
Modificar chave estrangeira: SGBD deve verificar
se novo valor do atributo referencia tupla existente

A Linguagem SQL

Introduo

Originalmente proposta para o System R


desenvolvido nos laboratrios da IBM na
dcada de 70 SEQUEL (Structured
English QUEry Language)
Objeto de um esforo de padronizao
coordenado pelo ANSI/ISO:

SQL1 (SQL-86)
SQL2 (SQL-92)
SQL3 (SQL:1999)

Introduo

SQL = LDD + LMD + LCD


Principais comandos:

LDD:

LMD:

SELECT, INSERT, UPDATE, DELETE

LCD:

CREATE SCHEMA / TABLE / VIEW


DROP SCHEMA / TABLE / VIEW
ALTER TABLE

GRANT, REVOKE

Conceitos:

Table = Relao
Row = tupla
Column = atributo

Definio de Dados em SQL

Comando CREATE SCHEMA


CREATE SCHEMA COMPANY AUTHORIZATION
JS;
Comando CREATE TABLE
CREATE TABLE <nome da tabela>
(<definies de colunas>
<definio da chave primria>
<definies de chaves alternativas>
<definies de chaves estrangeiras>);

Definio de Dados em SQL

Exemplo de um comando CREATE TABLE


CREATE TABLE EMPLOYEE
(FNAMEVARCHAR(15) NOT NULL,
MINIT CHAR,
LNAME VARCHAR(15) NOT NULL,
SSN
CHAR(9)
NOT NULL,

SUPERSSN
CHAR(9),
DNO INT
NOT NULL,
PRIMARY KEY (SSN),
FOREIGN KEY (SUPERSSN) REFERENCES EMPLOYEE (SSN)
ON DELETE SET NULL,
FOREIGN KEY (DNO) REFERENCES DEPARTMENT
(DNUMBER));

Definio de Dados em SQL

Opes de remoo (clusula ON DELETE):

CASCADE (propagao)
SET NULL (substituio por nulos)
SET DEFAULT (substituio por um valor default)
Opo default: bloqueio (RESTRICT)

As mesmas opes se aplicam clusula ON


UPDATE

Restrio de Integridade
Referencial em SQL

FOREIGN KEY (SUPERSSN) REFERENCES EMPLOYEE(SSN)


ON DELETE SET NULL

FOREIGN KEY (DNO) REFERENCES DEPARTMENT(DNUMBER)


FOREIGN KEY (MGRSSN) REFERENCES EMPLOYEE(SSN)
FOREIGN KEY (DNUMBER) REFERENCES DEPARTMENT(DNUMBER)
ON DELETE CASCADE

FOREIGN KEY (DNUM) REFERENCES DEPARTMENT(DNUMBER)

FOREIGN KEY (ESSN) REFERENCES EMPLOYEE(SSN)

FOREIGN KEY (ESSN) REFERENCES EMPLOYEE(SSN)


ON DELETE CASCADE

FOREIGN KEY (PNO) REFERENCES PROJECT(PNUMBER)

Restrio de Integridade
Referencial em SQL

Definio de Dados em SQL


Comandos DROP SCHEMA e DROP TABLE

DROP SCHEMA COMPANY CASCADE (RESTRICT);

DROP TABLE DEPENDENT CASCADE (RESTRICT);

RESTRICT: APENAS SE NAO TEM ELEMENTOS


RESTRICT: SE A TABELA NAO E REFERENCIADA EM
QUALQUER RESTRICAO

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 NENHUMA
REFERENCIA A COLUNA

VISAO

OU

RESTRICAO

Consultas Bsicas em SQL

Formato bsico do comando SELECT:


SELECT <lista de atributos>
FROM <lista de tabelas>
WHERE <condio>;

Exemplo:
SELECT BDATE, ADDRESS
FROM EMPLOYEE
WHERE FNAME=John AND
MINIT=B AND
LNAME=Smith;

Consultas Bsicas em SQL

SELECT FNAME, LNAME, ADDRESS


FROM EMPLOYEE, DEPARTMENT
WHERE
DNAME=Research
DNO=DNUMBER;
condio de
seleo

AND

condio de juno

SELECT PNUMBER, DNUM, LNAME, ADDRESS,


BDATE FROM PROJECT, DEPARTMENT, EMPLOYEE
WHERE PLOCATION=Stafford AND
DNUM=DNUMBER AND MGRSSN=SSN;

Consultas Bsicas em SQL

Atributos ambguos e pseudnimos (alias)


SELECT DNAME, DLOCATION
FROM DEPARTMENT, DEPT_LOCATIONS
WHERE DEPARTMENT.DNUMBER =
DEPT_LOCATIONS.DNUMBER;
SELECT E.FNAME, E.LNAME, S.FNAME, S.LNAME
FROM EMPLOYEE AS E, EMPLOYEE AS S
WHERE E.SUPERSSN=S.SSN;

Consultas Bsicas em SQL

Consultas sem a clusula WHERE


SELECT SSN, LNAME, SALARY
FROM EMPLOYEE;
SELECT LNAME, DNAME
FROM EMPLOYEE, DEPARTMENT
WHERE DNO=DNUMBER;
Ateno! Esta consulta corresponde a um
produto cartesiano das tabelas EMPLOYEE e
DEPARTMENT

Consultas Bsicas em SQL

Manipulando tabelas como conjuntos


SELECT SALARY
FROM EMPLOYEE;

No elimina linhas (tuplas) duplicatas


SELECT DISTINCT SALARY
FROM EMPLOYEE;
(SELECT PNUMBER
FROM PROJECT, DEPARTMENT, EMPLOYEE
WHERE DNUM=DNUMBER AND MGRSSN=SSN AND
LNAME=Smith)
UNION
(SELECT PNUMBER
FROM PROJECT, WORKS_ON, EMPLOYEE
WHERE PNUMBER=PNO AND ESSN=SSN AND
LNAME=Smith);

Consultas Complexas em SQL

Consultas aninhadas
SELECT FNAME, LNAME, ADDRESS
FROM EMPLOYEE
WHERE DNO IN (SELECT DNUMBER
FROM DEPARTMENT
WHERE DNAME=Research);

equivalente consulta
SELECT FNAME, LNAME, ADDRESS
FROM EMPLOYEE, DEPARTMENT
WHERE DNO=DNUMBER AND DNAME=Research;

Consultas Complexas em SQL

Comparao de conjuntos
SELECT DISTINCT PNUMBER
FROM PROJECT
WHERE PNUMBER IN (SELECT PNUMBER
FROM PROJECT, DEPARTMENT,
EMPLOYEE
WHERE DNUM =DNUMEBR AND
MGRSSN=SSN AND
LNAME=Smith)
OR
PNUMBER IN (SELECT PNO
FROM WORKS_ON, EMPLOYEE
WHERE ESSN=SSN AND
LNAME=Smith);

Consultas Complexas em SQL

Comparao de conjuntos
SELECT DISTINCT ESSN
FROM WORKS_ON
WHERE (PNO, HOURS) IN (SELECT PNO, HOURS
FROM WORKS_ON
WHERE ESSN=123456789);
SELECT LNAME, FNAME
FROM EMPLOYEE
WHERE SALARY > ALL (SELECT SALARY

FROM EMPLOYEE
WHERE DNO=5);

Consultas Complexas em SQL

Uso da funo EXISTS


SELECT E.FNAME, E.LNAME
FROM EMPLOYEE AS E
WHERE EXISTS (SELECT *
FROM DEPENDENT
WHERE E.SSN=ESSN AND
E.SEX=SEX AND
E.FNAME=DEPENDENT_NAME);
SELECT FNAME, LNAME
FROM EMPLOYEE
WHERE NOT EXISTS (SELECT *
FROM DEPENDENT
WHERE SSN=ESSN);

Consultas Complexas em SQL

Uso do operador CONTAINS


SELECT FNAME, LNAME
FROM EMPLOYEE
WHERE ((SELECT PNO
FROM WORKS_ON
WHERE SSN=ESSN)
CONTAINS
(SELECT PNUMBER
FROM PROJECT
WHERE DNUM=5));

Facilidades Adicionais

Uso do operador JOIN


SELECT FNAME, LNAME, ADDRESS
FROM (EMPLOYEE JOIN DEPARTMENT
ON DNO=DNUMEBR)
WHERE DNAME=Research;
SELECT DNAME, DLOCATION
FROM
(DEPARTMENT
DEPT_LOCATIONS);

NATURAL

SELECT FNAME, LNAME, DEPENDENT_NAME


FROM (EMPLOYEE LEFT OUTER JOIN DEPENDENT
ON SSN=ESSN);

JOIN

Facilidades Adicionais

Agrupamento
SELECT DNO, COUNT(*), AVG(SALARY)
FROM EMPLOYEE
GROUP BY DNO;

Facilidades Adicionais

Agrupamento com a clusula HAVING


SELECT PNUMBER, PNAME, COUNT(*)
FROM PROJECT, WORKS_ON
WHERE PNUMBER=PNO
GROUP BY PNUMBER, PNAME
HAVING COUNT(*) > 2;

3
3
3
3

Atualizaes em SQL

Comando INSERT
INSERT INTO EMPLOYEE
VALUES
(Richard,K,Marini,653258653,196212-30,
98 Oak Forest, Katy, TX,37000,987654321,4);
INSERT INTO EMPLOYEE(FNAME, LNAME, SSN, DNO)
VALUES (Richard,Marini,653258653,4);
INSERT INTO EMPLOYEE(FNAME, LNAME, SSN, DNO)
SELECT * FROM INPUT;

Atualizaes em SQL

Comando DELETE
DELETE FROM EMPLOYEE
WHERE LNAME=Brown;
DELETE FROM EMPLOYEE
WHERE DNO IN (SELECT DNUMBER
FROM DEPARTMENT
WHERE DNAME=Research);
DELETE FROM EMPLOYEE;

Atualizaes em SQL

Comando UPDATE
UPDATE PROJECT
SET PLOCATION=Bellaire, DNUM=5
WHERE PNUMBER=10;
UPDATE EMPLOYEE
SET SALARY=SALARY*1.1
WHERE DNO IN (SELECT DNUMBER
FROM DEPARTMENT
WHERE DNAME=Research);

Projeto Lgico de Bancos de


Dados Relacionais

Tpicos

Processo de Projeto de Bancos de Dados


Exemplo Preliminar
Representao Relacional de Esquemas ER
Implementao Usando SQL
Referncias Bibliogrficas

Processo de Projeto de
Bancos de Dados

Caracterizao

Complexidade
Multiplicidade de tarefas

Fases

Coleo e anlise de requisitos


Projeto conceitual
Escolha de um sistema gerenciador de banco de
dados
Projeto lgico (ou mapeamento para o modelo de
dados do SGBD escolhido)
Projeto fsico
Implementao e tuning

Fases do Processo de Projeto de


Bancos de Dados
Mini-Mundo

Anlise de
Requisitos
Requisitos Funcionais

Requisitos do BD

Anlise Funcional

Projeto Conceitual

Especificao das Transaes


Esquema Conceitual
(em alto nvel)
(em um modelo de dados de alto nvel)
Independente de SGBD
Projeto Lgico
Esquema Lgico
(em um modelo de dados lgico)

Especfico para um SGBD


Projeto das Aplicaes

Projeto Fsico

Implementao
Programas

Esquema Fsico
(para um SGBD especfico)

Abordagem ER para Projeto Lgico


de Bancos de Dados

Relacionais

Mini-Mundo
Modelo ER
Anlise de
Requisitos
Requisitos Funcionais

Requisitos do BD

Anlise Funcional

Projeto Conceitual

Especificao das Transaes


Esquema Conceitual
(em alto nvel) (em um modelo de dados de alto nvel)
Independente de SGBD
Projeto Lgico

Especfico para um SGBD


Projeto das Aplicaes

Esquema Lgico
(em um modelo de dados
lgico)
Projeto Fsico

Implementao
Programas

Modelo
Relacional

Esquema Fsico
(para um SGBD especfico)

SGBD
Relacional

Aplicao exemplo

Banco de Dados de uma companhia

Organizada em departamentos que tm um


nome e um nmero nicos e um empregado que
gerencia o departamento. A data de quando o
empregado
comeou
a
gerenciar
o
departamento
deve
ser
registrada.
Um
departamento pode ter varias localizaes
Um departamento controla um nmero de
projetos, cada qual com um nome e nmero
nicos e uma nica localizao

Aplicao exemplo

Banco de Dados de uma companhia

Ns armazenamos para cada empregado seu


nome, identidade, endereo, salrio, sexo, e
data de nascimento. Um empregado e
assinalado a um departamento mas pode
trabalhar em diversos projetos, os quais no so
necessariamente
controlados
pelo
mesmo
departamento. Nos registramos o nmero de
horas por semana que o empregado trabalha em
cada projeto e o supervisor direto de cada
empregado
Ns mantemos registro para cada empregado,
do numero de dependentes (para seguro) e para
cada dependente o primeiro nome, sexo, data de
nascimento e relacionamento com o empregado.

n
EMPLOYEE[SUPERSSN] EMPLOYEE[SSN]
b
EMPLOYEE[DNO] DEPARTMENT[DNUMBER]
b
DEPARTMENT[MGRSSN] EMPLOYEE[SSN]
p
DEPT_LOCATIONS[DNUMBER] DEPARTMENT[DNUMBER]
b
PROJECT[DNUM] DEPARTMENT[DNUMBER]
b
WORKS_ON[ESSN] EMPLOYEE[SSN]
b
WORKS_ON[PNO] PROJECT[PNUMBER]
p
DEPENDENT[ESSN] EMPLOYEE[SSN]

Representao Relacional de
Esquemas ER

Estratgias de representao

Mapeamento 1-1: cada tipo de entidade ou de


relacionamento representado por um esquema
de relao separado
Mapeamento otimizado: tipos de relacionamento
funcionais (1:1 e N:1) e subtipos de entidade so
colapsados e representados atravs de atributos
em outro esquema de relao

Modelo Relacional
Notao

Esquema de relao

Restrio de integridade referencial

R (A1,A2,,An), onde A1 a chave primria de R


R1 [X] R2 [Y], onde X um conjunto de
atributos de R1 que referencia a chave Y de R2

Restries estruturais

<expr1> op <expr2>, onde <expr1> e <expr2>


so expresses da lgebra relacional e op um
dos operadores , , ou

Exemplo de um Diagrama ER
NEmp

NomeEmp

Empregado
1

Salrio
Trabalha-para

N
1

Possui

NDept

Gerencia

NomeDep

DataNasc

Ramal

1
Departamento
1
1

Controla

N
Dependente

NomeDept

Participa-de

HsTrab

NProj

N
Projeto

NomeProj

Local

Representao de Tipos de
Entidade (sem atributos
multivalorados)
NEmp

Empregado

NomeEmp
Salrio

Empregado (NEmp(nn),NomeEmp,Salrio)

Representao de Tipos de
Entidade (com atributos
multivalorados)
NDept

Departamento

NomeDept

Ramal

Departamento (NDept(nn),NomeDept)
Ramal-Departamento (NDept(nn), Ramal(nn))
p
Ramal-Departamento [NDept]
Departamento [NDept]

Representao de Tipos de
Entidade Fraca
Empregado

Possui

NEmp

Dependente

NomeDep

DataNasc

Empregado (NEmp(nn),...)
Dependente (NEmp(nn),NomeDep(nn), DataNasc)
p
Dependente [NEmp]
Empregado [NEmp]

Representao de Tipos de
Relacionamento N:1
(mapeamento 1-1)
Empregado

Trabalha-para

Departamento

NDept

NEmp

Empregado (NEmp(nn),...)
Departamento (NDept(nn),...)
Trabalha-para (NEmp(nn),NDept(nn))
p
Trabalha-para [NEmp]
Empregado [NEmp]
b
Trabalha-para [NDept]
Departamento [NDept]
NEmp (Empregado) = NEmp (Trabalha-para)

Representao de Tipos de
Relacionamento N:1
(mapeamento otimizado)
Empregado

Trabalha-para

NEmp

Departamento

NDept

Empregado (NEmp(nn),...,NDept(nn))
Departamento (NDept(nn),...)
b
Empregado [NDept]
Departamento [NDept]

Representao de Tipos de
Relacionamento 1:1
(mapeamento otimizado)
Empregado

Gerencia

Departamento

NEmp

NDept

Empregado (NEmp(nn),...)
Departamento (NDept(nn),...,NEmp(nn))
Chave alternativa
b
Departamento [NEmp]
Empregado [NEmp]

Representao de Tipos de
Relacionamento M:N
Empregado

NEmp

Participa-de

HsTrab

Projeto

NProj

Empregado (NEmp(nn),...)
Projeto (NProj(nn), ...)
Participa-de (NEmp(nn),NProj(nn), HsTrab)
p
Participa-de [NEmp]
Empregado [NEmp]
p
Participa-de [NProj]
Projeto [NProj]

Implementao usando SQL

SQL

Composta de trs sublinguagens: LDD, LMD e


LCD
Objeto de padronizao pelo ANSI/ISO

Comando bsico de definio de dados:


create table <table name>
(<column definitions>
<primary key definition>
<alternate key definitions>
<foreign key definitions>)

Definio de um Esquema de
Relao em SQL
create table Empregado
(NEmp char(3) not null,
NomeEmp char(30) not null,
Salariodecimal(6,2),
NDept char(2) not null,
primary key (NEmp),
foreign
key
(NDept)
references
Departamento)

Restries de Integridade em SQL

Restries de unicidade (unique constraints)


que indicam a chave primria e as chaves
alternativas de uma tabela
Restries
de
integridade
referencial
(referential constraints) que especificam as
chaves estrangei-ras de uma tabela
Restries de verificao (check constraints)
que especificam condies que devem ser
satisfeitas por coluna/linhas de uma tabela
ou entre tabelas

Restries de Unicidade

Chave primria
primary key (<attribute list>)
Chaves alternativas
unique (<attribute list>)
create table Departamento
( ...
primary key (NDept),
unique (NomeDept),
...)

Restries de Integridade
Referencial
foreign key (<attribute list>)
references <table name> [(<attribute list>)]
[on delete cascade | set null | set default]
[on update cascade | set null | set default]
create table Participa-de
(...
foreign key NEmp references Empregado
on delete cascade)

Referncias

Batini, C.; Ceri, S.; Navathe, S.B. Conceptual Database Design: An


Entity-Relationship Approach. Benjamin/Cummings, Redwood City,
CA, 1992.
Elmasri, R.; Navathe, S.B. Fundamentals of Database Systems, 3rd
ed., Addison-Wesley, MA, 2000.
Laender, A.H.F.; Casanova, M.A.; Carvalho, A.P.; Ridolfi, L.F. An
Analysis of SQL Integrity Constraints from an Entity-Relationship
Model Perspective. Information Systems 4, 3(1994), 423-464.
Silva, A.S.; Laender, A.H.F.; Casanova,
M.A. An Approach to
Maintaining Optimizing Relational Representations
of EntityRelationship Schemas. In Thalheim, B. (ed.). Conceptual Modeling
-ER96. Springer-Verlag, Berlin, 1996, pp. 242-256.
Silva, A.S.; Laender, A.H.F.; Casanova,
M.A. On the Relational
Representation of Specialization Structures. Information Systems 25,
6(2000), 399-415.

Anda mungkin juga menyukai