2007-2
Introduo
Definies Preliminares
[Chu, 1985]
[Date, 2000]
Usurios/Programadores
Consultas/Programas
SGBD
Catlogo
(Meta-Dados)
Banco
de
Dados
Alunos
Disciplinas
Departamentos
Alguns relacionamentos:
Disciplinas
so
oferecidas
por
Departamentos
Alunos esto matriculados em Disciplinas
Caractersticas da Abordagem
de BD
Compartilhamento de dados e
processa-mento de transaes
concorrentes
Usurios em um Ambiente de
BD
Usurios casuais
Usurios leigos
Usurios especializados
Vantagens da Utilizao de um
SGBD
Recuperao de falhas
Implicaes da Abordagem de
BD
Adoo/imposio de padres
Reduo do tempo de
desenvolvimento das aplicaes
Flexibilidade
Economia de escala
Abstrao de dados
Estrutura = tipos de dados + relacionamentos +
restries (+operaes )
Modelo de
Dados
Esquema
Regras para
estruturao dos
dados
Regras para
verificao das
instncias
Instncia
Estado do Banco
Esquema do Banco
Armazenado no catlogo
Mudanas muito menos freqentes
Modelos conceituais
Exemplos:
Modelo relacional
Modelo de rede (CODASYL)
Modelo hierrquico
Modelos fsicos
Linguagens
Recuperao,
insero,
modificao do BD
remoo,
Linguagem de consulta
Exemplo: SQL
Utilitrios
Carregamento
Backup
(Re-)Organizao de arquivos
Monitoramento da performance
Relacionais
De rede
Hierrquicos
Orientados a objetos
Objeto-relacionais
Mono-usurios
Multi-usurios
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
Esquema Lgico
(em um modelo de dados lgico)
Projeto Fsico
Implementao
Programas
Esquema Fsico
(para um SGBD especfico)
Aplicao exemplo
Aplicao exemplo
Esquema conceitual
Modelo ER - Conceitos
Entidades:
Atributos:
e1
(Employee)
Name = John
Address = 2311 Kirby, Houston, TX
Age = 55
Home Phone = 713-749-2630
Modelo ER - Conceitos
Simples ou compostos
Monovalorados ou multivalorados
Ex. Profisso
Armazenados ou derivados
Data
de
Nascimento
trabalhando
no
NumeroDeEmpregados
Valores Null
No aplicvel
Desconhecido
Idade,
Empregados
departamento
Modelo ER - Conceitos
Tipo de entidade:
Employee, Company
Modelo ER - Conceitos
nico
para
cada
valor
Domnio de um atributo:
Figura 3.5
Esquema conceitual
Modelo ER - Conceitos
Relacionamentos:
Employee
John
Smith
Works-for
Department Research
Employee
Fred
Brown
Manages
Department Research
Departament Research Controls Project X
Modelo ER - Conceitos
Tipo de Relacionamento:
Exemplo:
Employee
Works-for
Department
Modelo ER - Conceitos
Tipo de Relacionamento:
Esquema conceitual
Modelo ER - Conceitos
Cardinalidade 1:1
Cardinalidade M:N
Esquema conceitual
Modelo ER - Conceitos
Figure 3.11
1 Supervisor
2 - Supervisee
Esquema conceitual
Modelo ER - Conceitos
Esquema conceitual
Notao ER
(Resumo)
Introduo
Conceitos Bsicos
Conceitos Bsicos
Esquema de relao
Descreve a relao
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)
Benjamin Bayer
3.21
305-61-2425
373-1616
null
19
Registros
em
um
arquivo
so
ordenados de acordo com a posio
em que so armazenados no disco
Restries de Integridade
Restries de domnio
Restries de chave
Restries de Integridade
Restries de chave
Restries de Integridade
Esquema de um BD Relacional
Restries de Integridade
Nenhum componente
primria pode ser nulo
de
uma
chave
Restries de Integridade
Restries de Integridade
Instncia de um BD Relacional
1
4
5
5
5
Houston
Instncia de um BD Relacional
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
As operaes sobre um BD
podem ser classificadas em:
relacional
Insero (insert)
Remoo (delete)
Modificao (modify)
Operaes de atualizao
Insero
Operaes de atualizao
Remoo
Operaes de atualizao
Modificao
A Linguagem SQL
Introduo
SQL1 (SQL-86)
SQL2 (SQL-92)
SQL3 (SQL:1999)
Introduo
LDD:
LMD:
LCD:
GRANT, REVOKE
Conceitos:
Table = Relao
Row = tupla
Column = atributo
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));
CASCADE (propagao)
SET NULL (substituio por nulos)
SET DEFAULT (substituio por um valor default)
Opo default: bloqueio (RESTRICT)
Restrio de Integridade
Referencial em SQL
Restrio de Integridade
Referencial em SQL
RESTRICT:
SE NENHUMA
REFERENCIA A COLUNA
VISAO
OU
RESTRICAO
Exemplo:
SELECT BDATE, ADDRESS
FROM EMPLOYEE
WHERE FNAME=John AND
MINIT=B AND
LNAME=Smith;
AND
condio de juno
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;
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);
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);
Facilidades Adicionais
NATURAL
JOIN
Facilidades Adicionais
Agrupamento
SELECT DNO, COUNT(*), AVG(SALARY)
FROM EMPLOYEE
GROUP BY DNO;
Facilidades Adicionais
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);
Tpicos
Processo de Projeto de
Bancos de Dados
Caracterizao
Complexidade
Multiplicidade de tarefas
Fases
Anlise de
Requisitos
Requisitos Funcionais
Requisitos do BD
Anlise Funcional
Projeto Conceitual
Projeto Fsico
Implementao
Programas
Esquema Fsico
(para um SGBD especfico)
Relacionais
Mini-Mundo
Modelo ER
Anlise de
Requisitos
Requisitos Funcionais
Requisitos do BD
Anlise Funcional
Projeto Conceitual
Esquema Lgico
(em um modelo de dados
lgico)
Projeto Fsico
Implementao
Programas
Modelo
Relacional
Esquema Fsico
(para um SGBD especfico)
SGBD
Relacional
Aplicao exemplo
Aplicao exemplo
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
Modelo Relacional
Notao
Esquema de relao
Restries estruturais
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]
SQL
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 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