2007-2
Introdução
O que é um banco de dados?
Definições Preliminares
[Chu, 1985]
Um banco de dados é um conjunto de arquivos
relacionados entre si
[Date, 2000]
Um banco de dados é uma coleção de dados
operacionais armazenados usados pelas
aplicações de uma determinada organização
Outra Definição de Banco de Dados
[Elmasri & Navathe, 2000]
Um banco de dados é uma coleção de dados
relacionados
Representando algum aspecto do mundo real
(mini-mundo ou universo de discurso)
Logicamente coerente, com algum significado
Projetado, construído e gerado (“povoado”) para
uma aplicação específica
Sistema de Gerência de Banco de Dados
Um sistema de gerência 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 gerência constitui um sistema
de banco de dados
Usuários/Programadores
Consultas/Programas
SGBD
Catálogo Banco
de
(Meta-Dados)
Dados
Modelo de
Esquema Instância
Dados Regras para Regras para
estruturação dos verificação das
dados instâncias
Modelo de Dados, Esquema e Instância
Estado do Banco
Dados do banco em qualquer ponto do tempo
Inicialmente vazio
Muda freqüentemente
Validade parcialmente guarantida pelo SGBD
Esquema do Banco
Armazenado no catálogo
Mudanças muito menos freqüentes
Tipos de Modelo de Dados
Modelos conceituais
Utilizados para se descrever a estrutura de um
banco de dados de uma forma mais próxima da
percepção dos usuários (independente de
aspectos de implementação)
Ex. Conceitos: entidades, atributos,
relacionamentos
Exemplos:
Modelo entidade-relacionamento (ER)
Modelo funcional
Modelo orientado a objetos (OO)
Tipos de Modelo de Dados
Modelos representacionais (lógicos)
Utilizados para se descrever a estrutura de um banco
de dados da forma como será manipulado através de
SGBD (mais dependente das estruturas físicas de
armazenamento de dados)
Exemplos:
Modelo relacional
Modelo de rede (CODASYL)
Modelo hierárquico
Tipos de Modelo de Dados
Modelos físicos
Utilizados para descrever como os dados são
fisicamente armazenados
Linguagens
Linguagem de definição de dados (LDD)
Usada para definir esquemas
Linguagem de manipulação de dados
(LMD)
Recuperação, inserção, remoção, modificação
do BD
Linguagem de consulta
LMD de alto nivel usada em modo “stand-
alone”
Exemplo: SQL
Utilitários
Carregamento
Backup
E.g. dumps do banco de dados
(Re-)Organização de arquivos
Monitoramento da performance
Classificação dos SGBDs
Quanto ao modelo de dados adotado:
Relacionais
De rede
Hierárquicos
Orientados a objetos
Objeto-relacionais
Quanto ao número de usuários suportados:
Mono-usuários
Multi-usuários
Quanto à localização dos dados:
Centralizados
Distribuídos
Exemplo de um BD Relacional
NumEmp NomeEmp Salário Dept
Empregado 032 J Silva 380 21
074 M Reis 400 25
089 C Melo 520 28
092 R Silva 480 25
112 R Pinto 390 21
121 V Simão 905 28
130 J Neves 640 28
Departamento
21 Pessoal 142 25 Financeiro 143 28 Técnico 144
Empregado
032 J Silva 380 074 M Reis 400 089 C Melo 520
112 R Pinto 390 092 R Silva 480 121 V Simão 905
130 J Neves 640
Modelo Entidade-Relacionamento
Processo de Projeto de
Bancos de Dados
Mini-Mundo
Análise de
Requisitos
Independente de SGBD
Projeto Lógico
Esquema Lógico
Específico para um SGBD
(em um modelo de dados lógico)
Projeto das Aplicações
Projeto Físico
Esquema Físico
Implementação
(para um SGBD específico)
Programas
Aplicação exemplo
Banco de Dados de uma companhia
Organizada em departamentos que têm um nome e um
número únicos e um empregado que gerencia o
departamento. A data de quando o empregado
começou a gerenciar o departamento deve ser
registrada. Um departamento pode ter varias
localizações
Um departamento controla um número de projetos,
cada qual com um nome e número únicos e uma única
localização
Aplicação exemplo
Banco de Dados de uma companhia
Nós armazenamos para cada empregado seu
nome, identidade, endereço, salário, sexo, e data
de nascimento. Um empregado é assinalado a um
departamento mas pode trabalhar em diversos
projetos, os quais não são necessariamente
controlados pelo mesmo departamento. Nos
registramos o número de horas por semana que o
empregado trabalha em cada projeto e o
supervisor direto de cada empregado
Nós 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.
M
Esquema conceitual
Modelo ER - Conceitos
Entidades:
Objetos do mundo real que são de interesse
para alguma aplicação
Atributos:
Propriedades utilizadas para descrever uma
entidade
Name = John
Address = 2311 Kirby, Houston, TX
Age = 55
e1 Home Phone = 713-749-2630
(Employee)
Modelo ER - Conceitos
Tipos (classes) de atributo:
Simples ou compostos
Ex. Endereço (Endereço da Rua (número, nome da rua,
número do apto), Cidade, Estado, CEP)
Monovalorados ou multivalorados
Ex. Profissão
Armazenados ou derivados
Data de Nascimento Idade, Empregados trabalhando
no departamento NumeroDeEmpregados
Valores Null
Não aplicável
Ex. Número do apartamento
Desconhecido
Ex. Telefone de casa
Modelo ER - Conceitos
Tipo de entidade:
Define um conjunto de entidades que têm
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 valor único para cada entidade
(instância)
Ex. Nome da companhia, identidade do empregado
Chave pode ser formada por vários atributos: chave
composta
Registro do Veiculo: Numero de Registro e Estado
Domínio de um atributo:
Conjunto de valores que podem ser atribuídos a um
atributo para cada entidade individualmente
Ex. Idade do Empregado: (16,70); Nome do
Empregado:String
Figura 3.5
Esquema conceitual
Modelo ER - Conceitos
Relacionamentos:
Associações entre duas ou mais entidades
distintas (instâncias) 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 associações entre n
tipos de entidade E1, E2,...,En
Exemplo:
Works-for entre Employee e Department
Esquema conceitual
Modelo ER - Conceitos
Restrições sobre tipos de relacionamento:
Limitam as possiveis combinações de entidades que
podem participar no conjunto de relacionamentos
Cardinalidade: Especifica o número de instâncias de
um tipo de relacionamento do qual uma entidade pode
participar
Participação: Especifica se a existência de uma
entidade depende de seu relacionamento com outra
entidade através 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 + Participação Restrições
Estruturais
Cardinalidade 1:1
Cardinalidade M:N
M
Esquema conceitual
Modelo ER - Conceitos
Papéis e relacionamentos recursivos
Entidades atuam com um determinado papel
Significado do papel é dado por um nome,
atribuído a cada tipo de entidade
Nomes só são necessários em tipos de
relacionamento que envolvam mais de uma vez
o mesmo tipo de entidade relacionamentos
recursivos
Exemplo: Supervision, onde Employee tem os
papéis de Supervisor e Supervisee
Figure 3.11
1 – Supervisor
2 - Supervisee
M
Esquema conceitual
Modelo ER - Conceitos
Tipos de Entidade Fraca
Tipos de entidade que não têm chave própria
As instâncias são identificadas através do
relacionamento com entidades de outro tipo,
chamado de dono ou identificador, juntamente
com os valores de alguns atributos (chave
parcial)
Exemplo: Dependent
M
Esquema conceitual
Notação ER
(Resumo)
Modelo de Dados Relacional
Introdução
O modelo relacional representa um banco de dados
como um conjunto de relações
1
4
5
5
5 Houston
Instância de um BD Relacional
Opções de Remoção da RIR
A cada RIR R1[FK] R2[PK] é possível associar uma
opção de remoção que especifica como a remoção
de uma tupla de R2 é executada em relação a R1
As opções de remoção possíveis são:
bloqueio
propagação
substituição por nulos
Notação: op
R1[FK] R2[PK],
onde op {b, p, n}
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]
n
b b
b
b
FOREIGN KEY (ESSN) REFERENCES EMPLOYEE(SSN) FOREIGN KEY (PNO) REFERENCES PROJECT(PNUMBER)
(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
Comparação 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
Comparação 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 função 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);
UPDATE EMPLOYEE
SET SALARY=SALARY*1.1
WHERE DNO IN (SELECT DNUMBER
FROM DEPARTMENT
WHERE DNAME=‘Research’);
Projeto Lógico de Bancos de
Dados Relacionais
Tópicos
Processo de Projeto de Bancos de Dados
Exemplo Preliminar
Representação Relacional de Esquemas ER
Implementação Usando SQL
Referências Bibliográficas
Processo de Projeto de
Bancos de Dados
Caracterização
Complexidade
Multiplicidade de tarefas
Fases
Coleção e análise de requisitos
Projeto conceitual
Escolha de um sistema gerenciador de banco de dados
Projeto lógico (ou mapeamento para o modelo de
dados do SGBD escolhido)
Projeto físico
Implementação e “tuning”
Fases do Processo de Projeto de
Bancos de Dados
Mini-Mundo
Análise de
Requisitos
Independente de SGBD
Projeto Lógico
Esquema Lógico
Específico para um SGBD
(em um modelo de dados lógico)
Projeto das Aplicações
Projeto Físico
Esquema Físico
Implementação
(para um SGBD específico)
Programas
Abordagem ER para Projeto Lógico de
Bancos de Dados Relacionais
Mini-Mundo
Modelo ER
Análise de
Requisitos
Independente de SGBD
Projeto Lógico Modelo
Relacional
Esquema Lógico
Específico para um SGBD (em um modelo de dados
lógico)
Projeto das Aplicações
SGBD
Projeto Físico Relacional
Esquema Físico
Implementação
(para um SGBD específico)
Programas
Aplicação exemplo
Banco de Dados de uma companhia
Organizada em departamentos que têm um nome e um
número únicos e um empregado que gerencia o
departamento. A data de quando o empregado
começou a gerenciar o departamento deve ser
registrada. Um departamento pode ter varias
localizações
Um departamento controla um número de projetos,
cada qual com um nome e número únicos e uma única
localização
Aplicação exemplo
Banco de Dados de uma companhia
Nós armazenamos para cada empregado seu
nome, identidade, endereço, salário, sexo, e data
de nascimento. Um empregado e’ assinalado a um
departamento mas pode trabalhar em diversos
projetos, os quais não são necessariamente
controlados pelo mesmo departamento. Nos
registramos o número de horas por semana que o
empregado trabalha em cada projeto e o
supervisor direto de cada empregado
Nós 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.
M
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]
Representação Relacional de Esquemas
ER
Estratégias de representação
Mapeamento 1-1: cada tipo de entidade ou de
relacionamento é representado por um esquema de
relação separado
Mapeamento otimizado: tipos de relacionamento
funcionais (1:1 e N:1) e subtipos de entidade são
colapsados e representados através de atributos em
outro esquema de relação
Modelo Relacional
Notação
Esquema de relação
Trabalha-para 1
N
Empregado Departamento
1 1 1 1
Gerencia
Possui M Controla
N N
Participa-de N
Dependente Projeto
NEmp
Empregado NomeEmp
Salário
Empregado (NEmp(nn),NomeEmp,Salário)
Representação de Tipos de Entidade
(com atributos multivalorados)
NDept
NomeDept
Departamento
Ramal
Departamento (NDept(nn),NomeDept)
Ramal-Departamento (NDept(nn), Ramal(nn))
p
Ramal-Departamento [NDept] Departamento [NDept]
Representação de Tipos de
Entidade Fraca
1 N
Empregado Possui Dependente
Empregado (NEmp(nn),...)
NEmp NDept
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)
Representação de Tipos de
Relacionamento N:1
(mapeamento otimizado)
N 1
Empregado Trabalha-para Departamento
NEmp NDept
Empregado (NEmp(nn),...,NDept(nn))
Departamento (NDept(nn),...)
b
Empregado [NDept] Departamento [NDept]
Representação de Tipos de
Relacionamento 1:1
(mapeamento otimizado)
1 1
Empregado Gerencia Departamento
NEmp NDept
Empregado (NEmp(nn),...)
Departamento (NDept(nn),...,NEmp(nn))
Chave alternativa
b
Departamento [NEmp] Empregado [NEmp]
Representação de Tipos de
Relacionamento M:N
M N
Empregado Participa-de Projeto
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]
Implementação usando SQL
SQL
Composta de três sublinguagens: LDD, LMD e LCD
Objeto de padronização pelo ANSI/ISO
Comando básico de definição de dados:
create table <table name>
(<column definitions>
<primary key definition>
<alternate key definitions>
<foreign key definitions>)
Definição de um Esquema de Relação
em SQL
create table Empregado
(NEmp char(3) not null,
NomeEmp char(30) not null,
Salario decimal(6,2),
NDept char(2) not null,
primary key (NEmp),
foreign key (NDept) references Departamento)
Restrições de Integridade em SQL
Restrições de unicidade (unique constraints) que
indicam a chave primária e as chaves alternativas
de uma tabela
Restrições de integridade referencial (referential
constraints) que especificam as chaves estrangei-
ras de uma tabela
Restrições de verificação (check constraints) que
especificam condições que devem ser satisfeitas
por coluna/linhas de uma tabela ou entre tabelas
Restrições de Unicidade
Chave primária
primary key (<attribute list>)
Chaves alternativas
unique (<attribute list>)
create table Departamento
( ...
primary key (NDept),
unique (NomeDept),
...)
Restrições 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)
Referências
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 Entity-Relationship Schemas. In
Thalheim, B. (ed.). Conceptual Modeling -ER’96. 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.