P. 1
Slides Modelagem

Slides Modelagem

|Views: 194|Likes:
Publicado porjoarlan

More info:

Published by: joarlan on Mar 29, 2012
Direitos Autorais:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PPT, PDF, TXT or read online from Scribd
See more
See less

03/29/2012

pdf

text

original

© Francisco Alves Carneiro Banco de Dados

1
Modelagem de Dados
Parte I
Francisco Alves Carneiro

Faculdade Estácio do Ceará
Estacio-FIC
francisco.carneiro@estacio.br
© Francisco Alves Carneiro Banco de Dados 2
Sumário
- Introdução aos Sistemas de Banco de Dados
- Modelo de Entidades e Relacionamentos
- Bancos de Dados Relacionais
-O Modelo Relacional
-Modelagem de Dados
-Linguagem de Manipulação e Consulta
- Projeto de Bancos de Dados Relacionais

© Francisco Alves Carneiro Banco de Dados 3
Introdução aos Sistemas de Bancos de Dados
- Histórico -
· Processamento de arquivo (anos 60 e 70)
· Paradigma de processamento de dados
· Cada aplicação
· Definir e manter seus próprios dados

Descrição
de dados
Programa 1
Descrição
de dados
Programa 2
Descrição
de dados
Programa 3
Arquivo B
Arquivo A
Arquivo C
© Francisco Alves Carneiro Banco de Dados 4
· Redundância e inconsistência
· Dificuldade de acesso aos dados
· Isolamento dos dados
· Problemas de integridade
· Anomalias de acesso concorrente
· Problemas de segurança
Introdução aos Sistemas de Bancos de Dados
- Histórico -
× Dados em Arquivos
© Francisco Alves Carneiro Banco de Dados 5
× Tecnologia de banco de dados
· Definição e gerenciamento centralizado de dados
· Independência de dados
· Alteração na organização lógica ou física dos dados não
implicar na alteração de programas
· Eliminar redundância de dados
· Eliminar inconsistência de dados
· Facilitar acesso a dados através de uma linguagem de
consulta
· Evitar inconsistências produzidas pelo acesso
concorrente
· Recuperar estado consistente dos dados após situação
de falha
Introdução aos Sistemas de Bancos de Dados
© Francisco Alves Carneiro Banco de Dados 6
× Tecnologia de banco de dados
Programa 1 Programa 2 Programa 3
Descrição
de Dados
Banco
de Dados
Sistema de Banco de Dados
•Conjunto de dados inter-relacionados (banco de dados)
•Componente de software (SGBD)
•Acesso e modificação dos dados
• Garantir uma visão abstrata dos dados
Tornar transparente como os dados são
armazenados e gerenciados
Introdução aos Sistemas de Bancos de Dados
© Francisco Alves Carneiro Banco de Dados 7
- Nível físico: descreve como os dados são armazenados
- Nível lógico: descreve quais dados são armazenados e os
relacionamentos entre eles
- Nível de visualização: descreve partes de interesse do
usuário/aplicação
Sistemas
de
Bancos
de Dados
Usuário tem uma
visão abstrata dos
dados
Introdução aos Sistemas de Bancos de Dados
- Abstração de Dados -
© Francisco Alves Carneiro Banco de Dados 8
Esquema
Externo 1
Esquema
Externo 2
Esquema
Externo n
Esquema Conceitual
Esquema Interno
(Banco de Dados armazenado)
DBMS
Camada
Conceitual
Camada
Interna (Física)
Camada
Externa
Introdução aos Sistemas de Bancos de Dados
- Arquitetura em Três Camadas -
© Francisco Alves Carneiro Banco de Dados 9
× Esquema Interno - Camada Interna
· Descreve como os dados estão fisicamente armazenados
· Exemplo
· Organização de arquivo
· seqüencial-indexado, hashing, seqüencial, heap
· Alocação em disco
· Contígua, lista encadeada, lista encadeada utilizando índice
· Tipo de registro
· Fixo, variável
· Esquema Conceitual - Camada Conceitual
· Descreve quais dados estão armazenados no banco de dados
· Descreve os relacionamentos entre os dados armazenados
· Esquema Externo - Camada Externa
· Descreve parte do banco de dados
· Simplificar a visão do usuário
· “Ver” só o que interessa
· Segurança
Introdução aos Sistemas de Bancos de Dados
- Arquitetura em Três Camadas -
© Francisco Alves Carneiro Banco de Dados 10
× Ocorrências (instâncias)
· Coleção de informações armazenadas na base
· Altamente mutáveis
× Esquemas
· Projeto ou estrutura da base - definição
· Um esquema para cada nível de abstração
· Esquema físico - nível interno
· Esquema lógico - nível conceitual
· Sub-esquemas ou esquemas de visualização - nível
externo
Introdução aos Sistemas de Bancos de Dados
- Ocorrências e Esquemas -
© Francisco Alves Carneiro Banco de Dados 11
× Sistema de Bancos de Dados (SBD ou DBS)
· Banco de Dados (BD ou DB)
· Conjunto de dados relacionados
· Sistema Gerenciador de Bancos de Dados (SGBD ou DBMS)
· Componente de software
· Armazenamento
· Acesso
· Controle de Concorrência
· Recuperação
Introdução aos Sistemas de Bancos de Dados
- Definição-
© Francisco Alves Carneiro Banco de Dados 12
× Finalidade
· garantir a especificação do esquema de um banco de dados
· permitir consultas e atualizações sobre o banco de dados
· Componentes
· DDL - Data Description Language
· Utilizada para especificar o esquema de um BD
· Expressões da DDL
· Interpretadas (compilados) gerando a especificação de um
conjunto de tabelas
· A especificação das tabelas é armazenada no catálogo do
banco de dados
· Exemplo (SQL)
· create table Empregado
(matr integer not null,
nome varchar(35),
salário real,
primary key(matr))

Introdução aos Sistemas de Bancos de Dados
- Linguagem de Banco de Dados -
© Francisco Alves Carneiro Banco de Dados 13
× Componentes (cont.)
· DML - Data Manipulation Language
· Utilizada para permitir
· Consultas sobre um BD
· Exemplo (SQL)
· select nome
· from Empregado
· where salario > 7000
· Inserções em uma tabela
· Exemplo (SQL)
· insert into Empregado values(123, “Bárbara”, 5000.00)
· Remoções em uma tabela
· Exemplo (SQL)
· delete from Empregado
· where matr=14
· Atualizar valores de atributos de uma tabela
· Exemplo (SQL)
· update Empregado set salário=salário-1.15
· where salário<1500.00
DML
Procedural
- requer a especificação de quais dados
devem ser acessados e como devem ser
acessados
Nonprocedural
- requer somente a especificação de quais
dados devem ser acessados
Introdução aos Sistemas de Bancos de Dados
- Linguagem de Banco de Dados -
© Francisco Alves Carneiro Banco de Dados 14
× SGBD
· Processador de Consultas + Sistema de Armazenamento
· Processador de Consultas
· Compilador DML
· Analisa sintaticamente e semanticamente comandos DML expressos
em uma linguagem de consulta (ex. SQL)
· Traduz estes comandos para uma das formas de representação
interna de consultas (ex. álgebra relacional)
· Pré-Compilador DML
· Traduz comandos DML em chamadas a procedimentos (rotinas) na
linguagem hospedeira
· Interpretador DDL
· Interpreta comandos DDL e os armazena no catálogo
· Tabelas contendo meta-dados
· Descrição do banco de dados (Esquema)
· Mecanismo de Consultas
· Responsável pela otimização e geração de planos de execução de
consultas
Introdução aos Sistemas de Bancos de Dados
- Definição-
© Francisco Alves Carneiro Banco de Dados 15
× SGBD
· Sistema de Armazenamento
· Gerenciador de Transações
· Controle de concorrência
· Recuperação do banco de dados após falhas
· Gerenciador de Buffer
· Responsável para recuperar objetos em disco e carregá-los na
memória principal em forma de páginas
· SGBD possui uma área de buffer em memória principal
· Mapeamento: Bloco Página
· (disco) (buffer do SGBD)
Gerenciador de Arquivo (File System)
· Responsável pelo armazenamento físico em disco
· Gerencia a alocação de espaço em disco
Introdução aos Sistemas de Bancos de Dados
- Definição-
· Definição da política de alocação do buffer
· MRU, LRU, FIFO, etc
© Francisco Alves Carneiro Banco de Dados 16
× BD
· Arquivos de dados + Índices + Catálogo
· Arquivos de dados
· Armazena os dados
· Índices
· Estruturas de índices para os arquivos de dados
· Catálogo
· Armazena esquema do banco de dados (meta-dados)
· Nomes das tabelas
· Atributos de cada tabela
· Definição de índice para uma tabela, etc…
· Armazena informações estatísticas
· Exemplo
· Cardinalidade de uma tabela
· Utilizadas na otimização de consultas
Introdução aos Sistemas de Bancos de Dados
- Definição-
© Francisco Alves Carneiro Banco de Dados 17
Esquema Consulta Programa Aplicativo
Gerenciador
de Transações
Mecanismo
de Consultas
Gerenciador
de Buffer
Gerenciador
de Arquivo
Compilador
DML
Pre-compilador
DML
Sistema de
Armazenamento
Processador
de Consultas
DBMS
DBS
Código Objeto
aplicativos
Arquivos
de dados
índices
Catálogo
DB
DBA Usuário experiente Programadores
Interpretador
DDL
Introdução aos Sistemas de Bancos de Dados
- Arquitetura de SGBD’s-
© Francisco Alves Carneiro Banco de Dados 18
- Definição do esquema conceitual
- Definição dos métodos de acesso e estruturas
de armazenamento
- Manutenção do esquema e da organização física
dos dados
- Definição da política de acesso aos dados
- Especificação de restrições de integridade
Introdução aos Sistemas de Bancos de Dados
- O Administrador de Bancos de Dados (DBA) -
© Francisco Alves Carneiro Banco de Dados 19
- Programadores de aplicação
- Usuários sofisticados
- Usuários especializados em aplicações não-
convencionais
- Usuários de programas de aplicação
Introdução aos Sistemas de Bancos de Dados
- Usuários de Bancos de Dados -
© Francisco Alves Carneiro Banco de Dados 20
· Um modelo de dados é definido por três componentes
· Uma coleção de tipos de estrutura de dados
· blocos de construção do banco de dados
· Uma coleção de operadores
· Podem ser aplicados a qualquer instância dos tipos de
dados definidos em 1
· Uma coleção de regras de integridade
· Definem o conjunto de estados consistentes do banco de
dados
· Definem o conjunto de transições consistentes de estado
do banco de dados
· Representar dados do mundo real
· Capturar a semântica e incorporá-la em um banco de dados
· Exemplo
· Através do modelo relacional representar os dados de uma
universidade
Introdução aos Sistemas de Bancos de Dados
- Modelo de Dados-
© Francisco Alves Carneiro Banco de Dados 21
· Classificação de SBDs - Modelo de Dados
· Sistema de Banco de Dados Relacional
· Modelo Relacional
· Tipo primitivo de dados
· Relação (tabela)
· - Conjunto de tuplas (linhas)
· Conjunto de Operadores
· Álgebra Relacional
· Cálculo Relacional
· Restrições de integridade
· Integridade de chave primária
· Integridade referencial
Introdução aos Sistemas de Bancos de Dados
- Classificação de Sistemas de Bancos de Dados -
© Francisco Alves Carneiro Banco de Dados 22
× Classificação de SBDs - Modelo de Dados
· Sistema de Banco de Dados Orientado a Objeto
· Modelo orientado a objeto
· Tipos primitivos
· Objeto, conjunto, lista, string, integer, real
· Restrições de integridade
· Unicidade de Objeto e identidade de objeto
· Hierarquia de classes
· Herança
· - Uma classe herda as propriedades da superclasse
· Comportamento de objetos de uma classe
· - Método
· Sistema de Banco de Dados Objeto-Relacional
· Modelo relacional + Modelo OO
Introdução aos Sistemas de Bancos de Dados
- Classificação de Sistemas de Bancos de Dados -
© Francisco Alves Carneiro Banco de Dados 23
Sumário
× Introdução aos Sistemas de Banco de Dados
× Modelo de Entidades e Relacionamentos
× Bancos de Dados Relacionais
· O Modelo Relacional
· Modelagem de Dados
· Álgebra Relacional
· Linguagem de Manipulação e Consulta
× Projeto de Bancos de Dados Relacionais
× Projeto Lógico de Bancos de Dados

© Francisco Alves Carneiro Banco de Dados 24
2. Modelo Entidade-Relacionamento
- Conceitos Básicos -
× Modelo de dados MER
· Não é implementado por nenhum SBD
· Utilizado como modelo conceitual para projeto de BDs
· Ferramenta para a modelagem de BDs
· Proposto por P. Chen em 1976
· Princípio básico
· Representar dados através
· Entidades
· Relacionamentos entre as entidades
· Atributos
· Propriedades de entidades ou relacionamentos
© Francisco Alves Carneiro Banco de Dados 25
2. Modelo Entidade-Relacionamento
- Conceitos Básicos -
· Entidade
· Representação abstrata de um objeto do mundo real
· Exemplos de entidades do mundo real
· Objeto concreto
· Um empregado, um carro, um estudante
· Objeto abstrato
· Uma empresa, uma conta bancária, uma disciplina
· Conjunto de entidades (tipo de entidade)
· Entidades que apresentam características semelhantes
· Exemplo
· Estudantes, Empregados, Professores

© Francisco Alves Carneiro Banco de Dados 26
2. Modelo Entidade-Relacionamento
- Conceitos Básicos -
· Atributos de uma entidade
· Propriedades que caracterizam uma entidade
· Exemplos
· Atributos de empregados
· matrícula, nome, endereço, rg, cpf, data-nasc, salário,
lotação, data-admissão
· Atributos de estudantes
· matrícula, nome, curso, rg, cpf, data-ingresso
· Conjunto de entidades
· Grupo de entidades que apresentam mesmo conjunto
de atributos
· A cada atributo de uma entidade deve estar associado um
valor
© Francisco Alves Carneiro Banco de Dados 27
2. Modelo Entidade-Relacionamento
- Conceitos Básicos -
· Atributos de uma entidade (cont.)
· Um atributo pode ser ainda definido como
· Uma função que associa um elemento do conjunto de
entidades a um elemento de um conjunto de valores do
atributo (domínio do atributo)
¤
¤
13
Conjunto
de matrículas
¤
¤
¤
¤
¤
Bárbara
Conjunto
de nomes
¤
¤
¤
¤
¤
R. X, 9
Conjunto
de endereços
¤
¤
¤
¤ ¤
¤
¤
¤
¤
¤
¤
Empregados matrícula
nome
endereço
© Francisco Alves Carneiro Banco de Dados 28
· Atributos de uma entidade (cont.)
· Atributos chave de uma entidade
· Conjunto de atributos que identificam univocamente um
elemento ou objeto da entidade
· Seja f um atributo chave para um conjunto de entidades
D, xeD e f(x)=v, então
· ¬deD e d=x, f(d)=v
· Exemplo
· Matrícula é atributo chave para Estudante
· Tipos de atributos
· Atributo atômico
· Atributo que não pode ser subdividido:cargo
· Atributo composto
· Atributo formado por vários atributos
Endereço, local

2. Modelo Entidade-Relacionamento
- Conceitos Básicos -
endereço
local cep cidade
rua número
© Francisco Alves Carneiro Banco de Dados 29
· Atributos de uma entidade (cont.)
· Tipos de atributos
· Atributo mono-valorado
· Atributo para o qual está associado um único valor
· Exemplo
· Nome
· Atributo multi-valorado
· Atributo para qual podem estar associados vários valores
· Função que associa um elemento do conjunto de
entidades a um subconjunto de um conjunto de valores
· Exemplo
· Para o atributo telefone podem estar associados vários
valores, como telefone residencial, comercial e celular
· Atributo derivado
· Atributo cujo valor é derivado com base no valor de um
outro atributo (atributo base)
· Exemplo
· Atributo idade pode ser derivado do atributo data_nasc
2. Modelo Entidade-Relacionamento
- Conceitos Básicos -
© Francisco Alves Carneiro Banco de Dados 30
· Relacionamento
· Abstração que representa associações entre diferentes
conjuntos de entidades
· Exemplo
· Pode-se definir um relacionamento que associa o
empregado Bárbara com o departamento “Ciência da
Computação”
· Conjunto de relacionamentos (tipo de relacionamento)
· Grupo de relacionamentos que representam o mesmo
tipo de associação
· Exemplo
· Conjunto de relacionamentos lotação
· +Contém todos os relacionamentos entre empregado e
.departamento
· Seja R um conjunto de relacionamentos representando
associações entre os conjuntos de entidade E
1
, E
2
, ... E
n
,
2. Modelo Entidade-Relacionamento
- Conceitos Básicos -
© Francisco Alves Carneiro Banco de Dados 31
· Relacionamento (cont.)
· Conjunto de relacionamentos (cont)
· Seja R um conjunto de relacionamentos, representando
associações entre os conjuntos de entidades E
1
, E
2
, ... E
n
,
então R _ E
1
x E
2
x E
n
· Seja reR, então r=(e
1
, e
2
, …, e
n
), onde e
1
eE
1
, e
2
eE
2
, …, e
n
eE
n
,
· Exemplo
· Considere o conjunto de relacionamentos lotação
· lotação _ Departamento x Empregado
· (Bárbara, Ciência da Computação) elotação
· Papel (role)
· Função que uma entidade desempenha no
relacionamento
· Exemplo
· Papel de empregado
· É lotado (Bábara é lotada em Ciência da Computação)
· Papel de departamento
· Lota (Ciência da Computação lota Bárbara)
2. Modelo Entidade-Relacionamento
- Conceitos Básicos -
© Francisco Alves Carneiro Banco de Dados 32
Agência_Conta-Cliente
· Relacionamento (cont.)
· Grau de Relacionamento
· Número de entidades participantes no relacionamento
· Relacionamento binário
· Relacionamento de grau 2
· Exemplo: Relacionamento aluno-disciplina

· Relacionamento ternário
· Relacionamento de grau 3
· Exemplo
· Relacionamento Agência-Conta-Cliente

2. Modelo Entidade-Relacionamento
- Conceitos Básicos -
¤ ¤
¤
¤
¤
¤
¤
¤
Cliente
¤
¤
¤
¤
¤
¤
¤
Conta
¤ ¤
¤
¤
¤
¤
¤
¤
Agência
© Francisco Alves Carneiro Banco de Dados 33
2. Modelo Entidade-Relacionamento
- Conceitos Básicos -
· Relacionamento (cont.)
· Auto-relacionamento (relacionamento recursivo)
· Relacionamento envolvendo um único conjunto de
entidades
· O conjunto de entidades apresenta diferentes papéis
· Considere o seguinte cenário:
· Cada departamento possui vários supervisores
· responsáveis por um subconjunto de empregados do
departamento
· Modelagem do relacionamento entre empregado e
supervisor
· Um supervisor também é uma entidade do tipo Empregado
· Relacionamento supervisiona
Supervisiona
¤
¤
¤
¤
Empregado
¤
¤
1
1
2
2
1
1
Empregado desempenha dois papéis
- é-supervisionado-por (1)
- é-supervisor-de (2)
© Francisco Alves Carneiro Banco de Dados 34
2. Modelo Entidade-Relacionamento
- Conceitos Básicos -
· Relacionamento (cont.)
· Atributos de relacionamento
· Propriedades que descrevem um relacionamento
· Exemplo
· Considere o atributo data-lotação
· Representa a data em que um empregado foi lotado em um
determinado departamento
· data-lotação é um atributo do relacionamento lotação
· Considere o atributo nota na modelagem de dados da FIC
· Descreve a nota de um aluno em uma disciplina
· nota é um atributo do relacionamento cursa
· Cursa representa o relacionamento entre os conjuntos de
entidades Estudante e Disciplina
© Francisco Alves Carneiro Banco de Dados 35
2. Modelo Entidade-Relacionamento
- Conceitos Básicos -
¯Restrições estruturais de relacionamentos
· Cardinalidade de relacionamento
· Indica o número de entidades que podem participar de
um determinado relacionamento
· Seja R um relacionamento binário entre os conjuntos de
entidades A e B
· A Cardinalidade de R deve ser uma das seguintes:
· Um para um (1:1)
Uma entidade de A só pode estar associada a uma
..…entidade de B
Uma entidade de B só pode estar associada a uma
..…entidade de A
· Um para muitos (1:N)
Uma entidade de A pode estar associada a qualquer
..…quantidade de entidades de B
Uma entidade de B só pode estar associada a uma
..…entidade de A
· Muitos para um (N:1)
Uma entidade de A só pode estar associada a uma
..…entidade de B
Uma entidade de B pode estar associada a qualquer
..…quantidade de entidades de A
© Francisco Alves Carneiro Banco de Dados 36
2. Modelo Entidade-Relacionamento
- Conceitos Básicos -
· Restrições estruturais de relacionamentos (cont.)
· Cardinalidade de relacionamento (cont.)
· Muitos para muitos (N:N)
Uma entidade de A pode estar associada a qualquer
..…quantidade de entidades de B
Uma entidade de B só pode estar associada a
qualquer
..…quantidade de entidades de A
· Exemplos
· Cardinalidade do relacionamento lotação entre
Departamento e Empregado

· Cardinalidade do relacionamento cursa entre Estudante
e Disciplina

· Cardinalidade do auto-relacionamento supervisiona

· Cardinalidade do relacionamento que modela o fato de
que cada departamento da empresa possui um gerente
1:N
N:N
1:N
1:1
© Francisco Alves Carneiro Banco de Dados 37
2. Modelo Entidade-Relacionamento
- Conceitos Básicos -
· Restrições estruturais de relacionamentos (cont.)
· Restrição de participação
· Especifica a obrigatoriedade ou não de uma entidade e
participar de um relacionamento com outra entidade
· Participação total
· A participação de um conjunto de entidades A é total em um
relacionamento R, se toda entidade de A participa de pelo menos
um relacionamento em R
· Dependência existencial
· Exemplo
· Considere o relacionamento lotação, para o qual todo
empregado deve estar lotado em algum departamento
· A participação de Empregado em lotação é total
· Participação parcial
· A participação de um conjunto de entidades A é parcial em um
relacionamento R, se apenas um subconjunto de entidades de A
participa em R
· Exemplo
· Relacionamento cursa entre Estudante e Disciplina
© Francisco Alves Carneiro Banco de Dados 38
2. Modelo Entidade-Relacionamento
- Conceitos Básicos -
· Entidade fraca
· Entidade cuja existência depende de estar associada, via
um relacionamento (relacionamento de identificação), com
uma outra entidade (entidade forte)
· Exemplo
· Considere o relacionamento dependência entre os
conjuntos de entidades Empregado e Dependente
· Dependente contém os dependentes dos empregados da
empresa
· A existência de um dependente Bárbara
· Depende da existência de um empregado André e que
· Bárbara esteja relacionada a André através do
relacionamento dependência
· Uma entidade fraca é identificada
· Por estar relacionada com uma entidade forte
· Pelo atributo chave da entidade forte
· Atributos da própria entidade fraca
· Chave parcial
© Francisco Alves Carneiro Banco de Dados 39
2. Modelo Entidade-Relacionamento
- Diagrama ER -
× Ferramenta de projeto
· Capaz de capturar e representar graficamente toda
estrutura lógica de um banco de dados
· Utilizada para modelagem de BDs
· Existem ferramentas
· Fornecem uma interface gráfica para o
desenvolvimento de DERs
· A partir do DER especificado, geram o esquema do BD
relacional
· ERWin
· DBDesigner
© Francisco Alves Carneiro Banco de Dados 40
2. Modelo Entidade-Relacionamento
- Diagrama ER -
× Notação
Nome atributo
Símbolo Representação
Conjunto de entidades
Conjunto de entidades
fracas
Conjunto de relacionamentos
(relacionamento)
Relacionamento de
identificação
Atributo
© Francisco Alves Carneiro Banco de Dados 41
2. Modelo Entidade-Relacionamento
- Diagrama ER -
× Notação
Nome atributo
Símbolo Representação
Atributo chave
Nome atributo
Atributo derivado
Nome atributo
*
Nome atributo
Nome atributo
Nome atributo
Atributo multivalorado
Atributo composto
© Francisco Alves Carneiro Banco de Dados 42
2. Modelo Entidade-Relacionamento
- Diagrama ER -
× Notação
Símbolo Representação
E1 R E2
1 N
Cardinalidade 1:N
R E
(min,max)
Restrição estrutural de
participação de E em R
E1 R E2
Participação total de E2
em R
Nome atributo
Atributo chave parcial de
uma entidade fraca
© Francisco Alves Carneiro Banco de Dados 43
2. Modelo Entidade-Relacionamento
- Diagrama ER -
- Exercício
· Utilize o DER para modelar o BD para o seguinte cenário
· A empresa X tem seus dados organizados da seguinte forma:
· Os empregados estão lotados em diversos departamentos.
Funcionários são diretamente chefiados por supervisores. É
importante identificar o supervisor de cada funcionário
· Todo funcionário deve estar lotado em um departamento.
Nenhum funcionário pode estar lotado em mais de um
departamento
· Um departamento possui no mínimo 5 empregados, onde um
deles é o gerente do departamento.
· Os dependentes dos funcionários devem possuir como
atributos: nome, data-nasc. A idade limite para ser dependente
de um empregado é 18 anos
· O salário de um empregado é calculado com base nos seus
diversos vencimentos.
· Para tipo de vencimento, existe uma descrição e o valor
correspondente
© Francisco Alves Carneiro Banco de Dados 44
2. Modelo Entidade-Relacionamento
- Diagrama ER -
Empregado
(5,n)
Departamento
lotação
(1,1)
(0,n)
Vencimento
ganha
(1,n)
supervisiona
dependência
Dependente
é-supervisionado
é-supervisor
Quando um departamento for participar de lotação,
terá, no mínimo, cinco empregados
(1,1) (0,n)
(0,n)
(1,1)
matr
nome
dt_nasc
dt_lotação
dt_nasc
idade
Cod_venc descrição
valor
nome
gerência
(0,1)
(1,1)
© Francisco Alves Carneiro Banco de Dados 45
2. Modelo Entidade-Relacionamento
- Diagrama ER -
Empregado
n
Departamento
lotação
1
n
Vencimento
ganha
n
supervisiona
dependência
Dependente
é-supervisionado
é-supervisor
n 1
n
1
matr
nome
dt_nasc
dt_lotação
dt_nasc
idade
Cod_venc descrição
valor
nome
gerência
1
1
© Francisco Alves Carneiro Banco de Dados 46
2. Modelo Entidade-Relacionamento
- Propriedades Avançadas -
× Especialização
· Existem conjuntos de entidades compostos de subgrupos de
entidades
· Cada subgrupo apresenta propriedades diferentes dos outros
subgrupos
· Considere o conjuntos de entidades Empregado na modelagem dos
dados de um universidade
· Podemos identificar os seguintes subconjuntos dentro de
Empregado
· Professores
· Titulação
· Universidade de titulação
· Regime de trabalho (DE, 40h, 20h)
· Escriturários
· Grau de instrução
· Área de atuação (contador, secretária, etc…)
· Engenheiros
· Especialidade
· Subconjuntos diferenciados por tipo de empregado
© Francisco Alves Carneiro Banco de Dados 47
2. Modelo Entidade-Relacionamento
- Propriedades Avançadas -
× Especialização (cont.)
· Definição
· Processo de identificação de subgrupos de entidades
dentro de um conjunto de entidades
· Processo de especialização pode ser recursivo
· Um único conjunto de entidades pode ser especializado
por mais de uma característica de diferenciação
(especialização)
· No exemplo de Empregado em uma universidade
· Especialização por tipo de empregado
· Especialização por tipo de contrato
· CLT
· Serviços prestados
· Um entidade deve pertencer às várias especializações
· Os subgrupos identificados em um processo de especialização
podem participar de relacionamentos que não se aplicam a
todas entidades do conjunto de entidades de origem
© Francisco Alves Carneiro Banco de Dados 48
2. Modelo Entidade-Relacionamento
- Propriedades Avançadas -
× Especialização (cont.)
· Notação MER
Empregado
Professor Escriturário Engenheiro
ISA
titulação uni_tit
regime_tr
especialidade
Grau_ins área_atua
is a (é um)
Empregado is a Professor ou
Empregado is a Escriturário ou
Empregado is a Engenheiro
© Francisco Alves Carneiro Banco de Dados 49
2. Modelo Entidade-Relacionamento
- Propriedades Avançadas -
× Especialização (cont.)
· Herança de propriedades
· Os subgrupos de entidades herdam todas as
propriedades do conjunto de entidade de mais alto
nível
Empregado
Professor Escriturário Engenheiro
ISA
titulação uni_tit
regime_tr
especialidade
Grau_ins área_atua
nome
dt_nasc
matr
© Francisco Alves Carneiro Banco de Dados 50
2. Modelo Entidade-Relacionamento
- Propriedades Avançadas -
· Especialização (cont.)
· É realizada sobre um único conjunto de entidades
· Identificar subgrupos
· Ênfase nas diferenças entre entidades de um mesmo
subconjunto de entidades
· Através dos subgrupos mais especializados
· Generalização
· Processo de identificação de conjuntos de entidades que
possuem características em comum
· Mesmos atributos e participam de mesmos
relacionamentos
· Formação de um único conjunto de entidades de mais alto
nível
· É realizada sobre vários conjuntos de entidades
· Identificar um conjunto de entidades de mais alto nível
© Francisco Alves Carneiro Banco de Dados 51
2. Modelo Entidade-Relacionamento
- Propriedades Avançadas -
· Generalização (cont.)
· Ênfase nas similaridades entre diversos conjuntos de
entidades
· Redução de redundância de representação
· Atributos compartilhados só serão representados no
conjunto de entidades de nível mais alto
· Não serão repetidos
· Na prática
· Generalização é o processo inverso da especialização
· Duas estratégias que devem ser utilizadas
· Especializar onde for necessário
· Generalizar onde for possível
© Francisco Alves Carneiro Banco de Dados 52
2. Modelo Entidade-Relacionamento
- Propriedades Avançadas -
× Especificação de restrições de generalização e especialização
· Sejam E
1
, E
2
, …, E
n
conjuntos de entidades de nível mais baixo que o
conjunto de entidades E
· Disjunção
· ¬ 0<i,jsn, i=j : E
i
· E
j
= C
· Nenhuma entidade de E pode pertencer a mais de um
subgrupo
E
E
1
E
2
E
n
ISA
...
...
© Francisco Alves Carneiro Banco de Dados 53
2. Modelo Entidade-Relacionamento
- Propriedades Avançadas -
× Especificação de restrições de generalização e
especialização
· Completeza
· Especifica se uma entidade de E tem que pertencer
obrigatoriamente a um dos conjuntos de entidades de
mais baixo nível ou não
· Total
· E= E
i

· Parcial
· E _ E
i
n
i=1
n
i=1
© Francisco Alves Carneiro Banco de Dados 54
2. Modelo Entidade-Relacionamento
- Propriedades Avançadas -
× Agregação
· Abstração que representa relacionamentos como
entidades
· Mecanismo utilizado para representar relacionamentos de
relacionamentos
· Exemplo
· Considere a modelagem de dados em um banco BX.
Clientes do BX estão relacionados a agência e conta
· Estratégia 1
Agência Conta
Cliente
1 n
n
© Francisco Alves Carneiro Banco de Dados 55
2. Modelo Entidade-Relacionamento
- Propriedades Avançadas -
× Agregação (cont.)
· Problemas na Estratégia 1
· Não representa a estrutura lógica que deve ser
modelada
· Relacionamento de cliente com o relacionamento
agência-conta
· Na prática, para acessar todas as contas de uma
agência
· Terão que ser acessadas todas triplas
(agência,conta,cliente)
· Uma conta pode pertencer a vários clientes
· Vários acessos redundantes
© Francisco Alves Carneiro Banco de Dados 56
2. Modelo Entidade-Relacionamento
- Propriedades Avançadas -
· Agregação (cont.)
· Utilizar o mecanismo de agregação
n
Agência
Cliente
Conta
n
1 n
saldo
num_conta
cod_ag nome
gerente ender
cod_cliente
nome
data-nasc
ender
CPF
data_abertura
© Francisco Alves Carneiro Banco de Dados
57
Bancos de Dados I
Parte II
Francisco Alves Carneiro
- FIC -
Faculdade Integrada do Ceará
Sistemas de Informação
alvesfa@fic.br
© Francisco Alves Carneiro Banco de Dados 58
Sumário
OIntrodução aos Sistemas de Banco de Dados
OModelo de Entidades e Relacionamentos
OBancos de Dados Relacionais
×O Modelo Relacional
×Modelagem de Dados
×Álgebra Relacional
×Linguagem de Manipulação e Consulta
OProjeto de Bancos de Dados Relacionais
OProjeto Lógico de Bancos de Dados

© Francisco Alves Carneiro Banco de Dados 59
Sumário
OIntrodução aos Sistemas de Banco de Dados
OProjeto de Bancos de Dados Relacionais
OBancos de Dados Relacionais
×O Modelo Relacional
×Modelagem de Dados
×Álgebra Relacional
×Linguagem de Manipulação e Consulta
OProjeto Lógico de Bancos de Dados

© Francisco Alves Carneiro Banco de Dados 60
3. Modelo Relacional
- Introdução -
OProposto em 1970 por Codd
×IBM
OConsolidou-se como principal modelo de dados para
aplicações comerciais
OModelo de dados para Bancos de Dados Relacionais
OSBDs relacionais
×DB2 (IBM)
×Informix
×ADABAS
×Sybase
×Oracle
×SQL Server (Microsoft)
© Francisco Alves Carneiro Banco de Dados 61
3. Modelo Relacional
- Estrutura de um Banco de Dados Relacional -
OUm banco de dados relacional consiste
×Um conjunto de tabelas
RRelações
OTabelas
×Conjunto de linhas
RTuplas
OLinhas
×Conjunto de colunas
RNome das colunas
^Atributos
matr nome cpf end dt-nasc
1 1 231 R X, 50 20000102
2 1 451 R Y, 1 19991001
3 1 472 R V, 502 19990510
3 2 549 R Z, 501 19980601
3 3 465 R A, 501 20000203
Estudante
© Francisco Alves Carneiro Banco de Dados 62
3. Modelo Relacional
- Conceitos Básicos -
ODomínio
×Conjunto de valores permitidos para um atributo
RValores são atômicos
^Indivisíveis
RExemplo: Domínio do atributo matrícula
+Conjunto de todos os valores válidos de matrícula
×dom(A) denota o domínio do atributo A
×Tipo de dados e formato
RUtilizados para especificar um domínio
^Exemplo: telefone
+tipo char com formato (ddd)ddd-dddd
+dom(telefone) representa o conjunto de valores atômicos
válidos para o tipo char e formato especificado
OO atributo A
i
é um papel de D no esquema de R
OGrau de R = número de A
i

© Francisco Alves Carneiro Banco de Dados 63
3. Modelo Relacional
- Conceitos Básicos -
OEsquema de relação
×Utilizado para descrever uma relação
×Representado por R(A
1
, A
2
, …, A
n
), onde
RR é nome de uma relação e
RA
1
, A
2
, …, A
n
uma lista de atributos
© Francisco Alves Carneiro Banco de Dados 64
3. Modelo Relacional
- Conceitos Básicos -
OInstância de Relação
×Seja o esquema de relação R(A
1
, A
2
, …, A
n
)
×Um instância de relação (ou relação) para este esquema
Rr(R)={t
1
, t
2
, …, t
k
}
RCada t
i
representa uma n-tupla de n valores
<v
1
, v
2
, …, v
n
>, onde cada v
j
e dom(A
j
), 0<jsn
×r representa a extensão para R
Rr contém os dados
RR descreve os dados armazenados em r
ORelação
×Seja r uma relação com esquema R
×r(R) _ dom(A
1
) x dom(A
2
) x dom(A
3
) x … x dom(A
n
)
Rr(R) é um subconjunto do produto cartesiano dos
domínios dos atributos que definem R
Rcada tupla de r(R) relaciona valores dos vários domínios
^r é uma relação (matemática)
Rr(R) representa um conjunto de tuplas
© Francisco Alves Carneiro Banco de Dados 65
3. Modelo Relacional
- Conceitos Básicos -
O Esquema de um banco de dados relacional
× Conjunto de esquemas de relação mais um conjunto de restrições de
integridade IC
RS={R
1
, R
2
, …, R
n
} e um conjunto de restrições de integridade IC
O Instância de um banco de dados relacional
× Seja o esquema S
× Uma instância DB para o esquema S
RDB={r
1
, r
2
, …, r
n
} , onde
RCada r
i
é uma instância de relação de R
i
e
RCada r
i
satisfaz as restrições de integridade especificadas em IC
O Exercício
× Considere uma banco de dados relacional DBR com as relações
Empregado e Departamento
× Construa um esquema S e mostre uma possível instância para DBR
© Francisco Alves Carneiro Banco de Dados 66
3. Modelo Relacional
- Conceitos Básicos -
O Restrições do modelo relacional
× Restrição de domínio
RO valor de cada atributo A
^Tem que ser um valor atômico de dom(A)
× Restrição de Chave
RUma relação é definida como um conjunto de tuplas
^Elementos de um conjunto são distintos entre si
RTuplas de uma relação têm que serem distintas entre si
^Duas tuplas em uma relação não podem ter a mesma
combinação de valores para seus atributos
RGeralmente existe um subconjunto SC de atributos em um
esquema de relação R
^Todas as tuplas de qualquer instância r(R) apresentam uma
combinação diferente de valores para os atributos de SC
^ ¬ t
i
, t
j
e r 0<i,jsn, i=j : t
i
[SC] = t
j
[SC]
^Super chave (superkey)
© Francisco Alves Carneiro Banco de Dados 67
3. Modelo Relacional
- Conceitos Básicos -
O Restrições do modelo relacional (cont.)
× Restrição de Chave (cont.)
RSuper chave pode apresentar atributos redundantes
^Empregado(matr,nome,ender,cpf)
+matr e cpf são atributos da super chave
+Apenas matr ou apenas cpf
- condição necessária e suficiente para garantir a não
existência de tuplas repetidas
RChave (key)
^Super chave sem atributos redundantes
^Para Empregado existem duas possíveis chaves
+matr ou cpf
RChave candidata (candidate key)
^Atributos da super chave que podem funcionar como chave da
relação
RChave primária (primary key)
^Chave candidata escolhida como chave da relação
^Identifica tuplas em uma relação
+Garante a unicidade de uma tupla na relação
© Francisco Alves Carneiro Banco de Dados 68
3. Modelo Relacional
- Conceitos Básicos -
ORestrições do modelo relacional (cont.)
×Restrição de Integridade de Entidade
REspecifica que nenhuma chave primária pode ter valor
nulo (null)
^Garante que a chave primária identifique tuplas em uma
relação
×Restrição de Integridade Referencial
RSejam dois esquemas de relação R e S
RUm conjunto de atributos FK de um esquema de relação
R é chave estrangeira (foreign key) em R se
^Os atributos em FK têm o mesmo domínio que a chave
primária PK de um outro esquema de relação S, e
^Um valor de FK em uma tupla t
1
de r(R)
+Ou ocorre em como valor de PK para uma tupla t
2
em s(S)
t
1
[FK] = t
2
[PK]
+ou é nulo
t
1
referencia a tupla t
2

© Francisco Alves Carneiro Banco de Dados 69
3. Modelo Relacional
- Conceitos Básicos -
ORestrições do modelo relacional (cont.)
×Restrição de Integridade Referencial (cont.)
RExemplo: Considere o seguinte esquema de banco de
dados
Departamento(cod_depart, nome, ender)
Empregado(matr, nome, ender, cpf, lotação)
^Se lotação referenciar cod_depart, então lotação é chave
estrangeira em Empregado
^Deve ser garantido que o valor de lotação ou seja nulo ou
referencie um valor existente em Departamento
+Integridade referencial
+Atualmente é garantida automaticamente pelos SGBD
existente no mercado
© Francisco Alves Carneiro Banco de Dados 70
3. Modelo Relacional
- Conceitos Básicos -
ORestrições do modelo relacional (cont.)
×Restrição de Integridade Referencial (cont.)
RExemplo: Considere o seguinte esquema de banco de
dados
Departamento(cod_depart, nome, ender)
Empregado(matr, nome, ender, cpf, lotação)
Create table Departamento
(cod_depart integer not null,
nome varchar(30) not null,
ender varchar(30),
primary key (cod_depart))
Create table Empregado
(matr integer not null,
nome varchar(30) not null,
ender varchar(30),
cpf integer not null,
lotação integer not null,
primary key (matr),
unique key (cpf),
foreign key (lotação) references
Departamento on delete cascade)
© Francisco Alves Carneiro Banco de Dados 71
×Insere t em r(R)
×Lista de valores
×Pode violar:
^Restrição de domínio
^Restrição de chave
^Integridade existencial
^Integridade referencial
×Tratamento
^Rejeitar a inclusão
^Solicitar novas informações
Inclusão
3. Modelo Relacional
- Operações de Atualização -
© Francisco Alves Carneiro Banco de Dados 72
×Exclui t em r(R)
×Condição sobre valores de atributos
×Pode violar:
^Integridade referencial
×Tratamento
^Rejeitar a exclusão
^Propagação em cascata
^Mudar fk em R‟ que referencia R
Exclusão
3. Modelo Relacional
- Operações de Atualização -
© Francisco Alves Carneiro Banco de Dados 73
×Modifica t[A1,A2,...,Ak] em r(R)
×Condição sobre valores de atributos
×Alguns SGBDs: update=delete+insert
×Violação + tratamento:
RDepende do atributo modificado
^Domínio para qualquer atributo
^PK = exclusão + inclusão
^FK = verificar integridade referencial
Modificação
3. Modelo Relacional
- Operações de Atualização -
© Francisco Alves Carneiro Banco de Dados 74
4. Projeto de Bancos de Dados
- Fases -
Análise de
Requisitos
Projeto
Conceitual
Projeto Lógico
(mapeamento de
modelo de dados)
Projeto Físico
Requisitos de dados
Esquema Conceitual (MER)
Esquema Conceitual representado
no modelo de dados do SGBD
Mini-mundo
(mundo real)
Análise
Funcional
Projeto
(Software)
Implementação
Independente
do SGBD
Específico para
cada SGBD
Implementação
Estruturas de armazenamento
e caminhos de acesso (índices)
Expressões DDL e carga do BD
© Francisco Alves Carneiro Banco de Dados 75
4. Projeto de Bancos de Dados
- Fases -
*Análise (especificação) de requisitos
×Projetista de banco de dados deve realizar entrevista com
usuários prospectivos do banco de dados
REntender e documentar
^Requisitos de dados
-Projeto conceitual
×Com base nos requisitos de dados
RCriar um esquema conceitual para o banco de dados
^Modelo de dados conceitual
+MER
+Construir um DER
4Projeto lógico
×Com base no DER definido na fase anterior
RCriar um diagrama relacional
^Representação gráfica de um esquema relacional
© Francisco Alves Carneiro Banco de Dados 76
4. Projeto de Bancos de Dados
- Fases -
^ Projeto Físico
× Definir estruturas de armazenamento
RComo e onde devem ser armazenadas as tabelas
^Uma tabela em um arquivo
^Várias tabelas em um único arquivo
× Definir caminhos de acesso
RDefinir índices
RDefinir tipo de índice
^Ordenado
+Primário
+Secundário
^Hash
× Utilizar critérios de performance
REspecífico por SGBD
= Implementação
× Com base no DR definido na fase 3 e as estruturas de armazenamento
e caminhos de acesso definidos na fase anterior
RCriar o banco de dados
^Expressões DDL
RCarregar o BD
© Francisco Alves Carneiro Banco de Dados 77
OFerramentas CASE
×Modelagem ER gráfica
×Geração automática de esquema (DDL)
OAlgoritmo de mapeamento
×Sete passos
4. Projeto de Bancos de Dados
- Mapeamento do MER para um Banco de Dados Relacional -
© Francisco Alves Carneiro Banco de Dados 78
4. Projeto de Bancos de Dados
- Mapeamento do MER para um Banco de Dados Relacional -
ODiagrama relacional (DR)
×Ferramenta gráfica utilizada para representar um
esquema de banco de dados relacional
OA partir de um DER, pode-se construir um DR como
descrito a seguir
×Passo 1
RPara cada conjunto de entidades E, deve ser criada
uma tabela como todos os atributos de E
^Escolher uma chave candidata para ser a chave primária
da tabela
^Apenas os componentes atômicos de atributos
compostos devem ser incluídos
RNotação de tabela no DR

Nome da
Tabela
© Francisco Alves Carneiro Banco de Dados 79
4. Projeto de Bancos de Dados
- Mapeamento do MER para um Banco de Dados Relacional -
×Passo 2
RPara cada relacionamento binário 1:1 entre os
conjuntos de entidades E1 e E2
^Escolher uma das tabelas, por exemplo E2, e incluir
como chave estrangeira em E2 a chave primária da outra
tabela (E1)
+Critério de escolha
>> Entidade com participação total no relacionamento
^Atributos de relacionamentos devem ser incluídos na
tabela com chave estrangeira
RNotação
E1 E2
PK
PK
© Francisco Alves Carneiro Banco de Dados 80
×Passo 3
RPara cada relacionamento binário 1:N entre os
conjuntos de entidades E1 e E2
^Identificar o conjunto de entidades que participa do lado
N (suponha que seja E2)
^Incluir como chave estrangeira na tabela E2 a chave
primária da outra tabela (E1)
^Atributos de relacionamentos devem ser incluídos na
tabela com chave estrangeira
RNotação
E1 E2
PK
4. Projeto de Bancos de Dados
- Mapeamento do MER para um Banco de Dados Relacional -
© Francisco Alves Carneiro Banco de Dados 81
4. Projeto de Bancos de Dados
- Mapeamento do MER para um Banco de Dados Relacional -
×Passo 4
RPara cada relacionamento binário N:N entre os
conjuntos de entidades E1 e E2
^Criar uma nova tabela auxiliar tab-aux para representar o
relacionamento
^Incluir como chaves estrangeiras na tabela tab-aux as
chaves primárias de E1 e E2
+Estes dois atributos comporão a chave primária de tab-aux
^Atributos de relacionamentos devem ser incluídos na
tabela tab-aux
RNotação
E1 E2
Tab-aux
PK-E1 PK-E2
PK-E1
PK-E2
© Francisco Alves Carneiro Banco de Dados 82
4. Projeto de Bancos de Dados
- Mapeamento do MER para um Banco de Dados Relacional -
× Passo 5
RPara relacionamento de grau maior que 2
^Criar uma nova tabela auxiliar tab-aux para representar o
relacionamento
^Incluir como chaves estrangeiras na tabela tab-aux as chaves
primárias das tabelas que participam do relacionamento
+Estes atributos comporão a chave primária de tab-aux
× Passo 6
RPara cada conjunto de entidades fracas F
^Cria uma tabela TFr com todos os atributos de F
^Incluir como chave estrangeira de TF a chave primária da
tabela correspondentes ao conjunto de entidades fortes R
^A chave primária de TFr será a chave parcial de F mais a
chave primária de R
© Francisco Alves Carneiro Banco de Dados 83
4. Projeto de Bancos de Dados
- Mapeamento do MER para um Banco de Dados Relacional -
×Passo 7
RPara cada atributo multivalorado A de um conjunto de
entidades E1
^Criar uma tabela T com o atributo A
^Incluir como chave estrangeira em T a chave primária de
E1
^A chave primária de T será composta do atributo A mais
a chave primária de E1
© Francisco Alves Carneiro Banco de Dados 84
4. Projeto de Bancos de Dados
- Mapeamento do MER para um Banco de Dados Relacional -
OExercício
×Construa o DR para o seguinte DER
n
Agência
Cliente
Conta
n
1 n
saldo
num-conta
cod-ag nome
gerente ender
cod-cliente
nome
data-nasc
ender
CPF
data_abertura
© Francisco Alves Carneiro Banco de Dados 85
4. Projeto de Bancos de Dados
- Mapeamento do MER para um Banco de Dados Relacional -
Agência
cod-ag nome
gerente ender
Conta
saldo
num-conta
data-abert
Cliente
cod-cliente
nome
data-nasc
ender
CPF
cod_ag
AG_CC
Cliente_Conta
cod-ag, num-conta
tipo-conta
cod-ag
num-conta
cod-cliente
© Francisco Alves Carneiro Banco de Dados 86
O A cada pedido está associado um ou mais produtos e pertence a
somente um cliente;
O Os produtos são adquiridos em mais de um fornecedor;
O Há fornecedores cadastrados que poderão não estar fornecendo
produtos;
O Os fornecedores poderão ser locais ou estaduais;
O Para os fornecedores estaduais faz-se necessário indicar o estado de
origem, a taxa de ICMS do estado, o tempo previsto para entrega e o tipo
de transporte utilizado (aéreo, terrestre ou marítimo).

Elabore o projeto lógico da aplicação acima descrita,
considerando que cada entidade tem no mínimo 4 atributos
fundamentais e execute o mapeamento para implementação em
um BD relacional.
Controle de Fornecimento – Semântica da aplicação
3. Modelo Relacional
- Estudo de caso -
© Francisco Alves Carneiro Banco de Dados 87
OO resultado de uma operação
×op(r‟) ÷ r‟‟
OGrupos de operações
×Operações relacionais
RSeleção; projeção; junção
×Operações de conjunto
RUnião; interseção; diferença; produto cartesiano
×Operações especiais
Coleção de operações usadas para manipular relações
3. Modelo Relacional
- Álgebra Relacional -
© Francisco Alves Carneiro Banco de Dados 88
3. Modelo Relacional
- Álgebra Relacional -
OLinguagem de consulta para bancos de dados
relacionais

Relação Consulta Relação
OColeção de operadores sobre relações
ODesenvolvida por Codd
-Linguagem procedimental
OOperações básicas
×Seleção (o)
×Projeção (H)
×União ()
×Diferença (-)
×Produto cartesiano (x)
Operações unárias
Operações binárias
© Francisco Alves Carneiro Banco de Dados 89
3. Modelo Relacional
- Álgebra Relacional [Operações Básicas] -
O Operação de seleção
× Seleciona um subconjunto de tuplas de uma relação
RCom base em um predicado
× Notação
Ro
P
(r)
^r é uma relação e
^P representa um predicado (condição de seleção)
RPredicados são construídos através de átomos
^Átomos
+t[A
i
] u t[A
k
] , t e r e A
i
e A
k
são atributos de r.
+t[A
i
] u k, onde k é uma constante
+O símbolo u denota um operador de comparação
=, =, >, >, <, s
-Átomos podem ser conectados por . (and), v (or), ÷ (not)
RRegras para construção de fórmulas
^Todo átomo é uma fórmula
^Se P
1
e

P
2
são fórmulas
+ P
1
.

P
2
, P
1
v

P
2
e ÷P
1
também são fórmulas
Os atributos devem possuir domínios iguais
© Francisco Alves Carneiro Banco de Dados 90
3. Modelo Relacional
- Álgebra Relacional [Operações Básicas] -
OOperação de seleção (cont.)
×Exemplo
RConsidere a relação Empregado
^Empregado(matr, nome, ender, cpf, salário, lotação)
RListar todos os empregados que ganham salário maior
que 5000
^ o
salário>5000
(Empregado)
RListar todos os empregados do departamento com
código igual a 002 e que ganham salários maior que
5000

RListar todos os empregados não lotados no
departamento com código igual a 002 e que ganham
salários entre 5000 e 10000
© Francisco Alves Carneiro Banco de Dados 91
3. Modelo Relacional
- Álgebra Relacional [Operações Básicas] -
OOperação de seleção (cont.)
×Propriedade da seleção
Ro
u1.u2
(r) · o
u1
(o
u2
(r))
Ro
u1
(o
u2
(r)) · o
u2
(o
u1
(r))
^Comutatividade da operação de seleção
© Francisco Alves Carneiro Banco de Dados 92
3. Modelo Relacional
- Álgebra Relacional [Operações Básicas] -
OOperação de Projeção
×Seleciona um subconjunto de atributos de uma relação
×Notação
RH
A
i
1
, A
i
2
,…, A
i
n

(r)
^r é uma relação com esquema R(A
1
, A
2
, …, A
n
)
^{A
i
1
, A
i
2
, …, A
i
n
} _ {A
1
, A
2
, …, A
n
}
^Projeção de R sobre os atributos A
i
1
, A
i
2
, …, A
i
n

×Exemplo
RListar o nome e salário de todos os funcionários
^H
nome, salário

(Empregado)
RListar nome e salário de todos os empregado que
ganham salário maior que 9000
Projeção
¯Filtro de atributos
Seleção
¯ Filtro de tuplas
© Francisco Alves Carneiro Banco de Dados 93
3. Modelo Relacional
- Álgebra Relacional [Operações Básicas] -
OOperação de União
×Executa a união de duas relações compatíveis
×Duas relações com esquemas R(A
1
, A
2
, …, A
n
) e
S(B
1
, B
2
, …, B
n
) são compatíveis
RApresentam o mesmo número de atributos
Rdom(A
i
)= dom(B
i
), 0<isn
×Notação
Rr s
×Exemplo
RConsidere as seguintes relações
^Empregado(matr, nome, ender, dt-nasc, cpf, salário, lotação)
^Dependente(nome-dep, data-nasc, matr-resp)
RListe o nome e data de nascimento de todos os
funcionários e dependentes existentes na empresa
^H
nome, dt-nasc

(Empregado) H
nome-dep, data-nasc

(Dependente)
© Francisco Alves Carneiro Banco de Dados 94
3. Modelo Relacional
- Álgebra Relacional [Operações Básicas] -
OOperação de Diferença
×O resultado da operação r - s é uma relação que contém
todas as tuplas de r que não pertencem a s
Rr e s são relações compatíveis
×Exemplo
RConsiderando que na empresa só existam as relações
Empregado e Dependente que referem-se a pessoas,
execute a seguinte consulta. Listar nomes de
empregados, desde que não existam dependentes com
mesmo nome
^H
nome

(Empregado) - H
nome-dep

(Dependente)
© Francisco Alves Carneiro Banco de Dados 95
3. Modelo Relacional
- Álgebra Relacional [Operações Básicas] -
OOperação de Produto Cartesiano
×Sejam r e s relações com esquemas R(A
1
, A
2
, …, A
n
) e
S(B
1
, B
2
, …, B
m
), respectivamente
×Resultado da operação r x s é uma relação
RT(r.A
1
, r.A
2
, …, r.A
n
, s.B
1
, s.B
2
, …, s.B
m
)
Rcom n+m atributos
Rcada tupla de T é uma combinação entre uma tupla de
r e uma tupla de s
RteT · -v e r e -u e s, tal que t[A
i
]=v[A
i
], 0<isn, e
t[B
j
]=u[B
j
], 0<jsm
RSe a cardinalidade de r é n
r
tuplas e a cardinalidade s é
n
s
tuplas
^A cardinalidade de T é n
r
- n
s

© Francisco Alves Carneiro Banco de Dados 96
3. Modelo Relacional
- Álgebra Relacional [Operações Básicas] -
OOperação de Produto Cartesiano (cont.)
×Exemplo
RSejam r e s mostradas abaixo. Calcule r x s
A B
a1 b1
a1 b2
a2 b1
A B C
a1 b1 c1
a2 b3 c3
a2 b1 c4
r.A r.B s.A s.B s.C
a1 b1 a1 b1 c1
a1 b1 a2 b3 c3
a1 b1 a2 b1 c4
a1 b2 a1 b1 c1
a1 b2 a2 b3 c3
a1 b2 a2 b1 c4
a2 b1 a1 b1 c1
a2 b1 a2 b3 c3
a2 b1 a2 b1 c4
r s
r x s
© Francisco Alves Carneiro Banco de Dados 97
Rr
condição
s = o
condição
(r x s)
Rcondição de junção é da forma
Rr.A
g
u s.B
i
. r.A
h
u s.B
k
..... r.A
m
u s.B
L

R Para cada r.A
i
u s.B
j
, dom(r.A
i
) = dom(s.B
J
) e
ue{=, =, >, >, <, s}

3. Modelo Relacional
- Álgebra Relacional [Operações Derivadas] -
OOperação de junção theta (theta-join)
×Sejam r e s relações com esquemas R(A
1
, A
2
, …, A
n
) e
S(B
1
, B
2
, …, B
m
), respectivamente
×O resultado da operação junção theta entre r e s é uma
relação T(r.A
1
, r.A
2
, …, r.A
n
, s.B
1
, s.B
2
, …, s.B
m
) definida
por
Rcada tupla de T é uma combinação entre uma tupla de
r e uma tupla de s, sempre que a combinação satisfaça
condição de junção
© Francisco Alves Carneiro Banco de Dados 98
3. Modelo Relacional
- Álgebra Relacional [Operações Derivadas] -
OOperação de junção theta (cont.)
×Exemplo
RSejam r e s mostradas abaixo. Calcule T= r s
A B
a1 b1
a1 b2
a2 b1
A B C
a1 b1 c1
a2 b3 c3
a2 b1 c4
r.A r.B s.A s.B s.C
a1 b1 a2 b3 c3
a1 b2 a1 b1 c1
a1 b2 a2 b3 c3
a1 b2 a2 b1 c4
a2 b1 a2 b3 c3
r s
T
r.B = s.B
© Francisco Alves Carneiro Banco de Dados 99
3. Modelo Relacional
- Álgebra Relacional [Operações Derivadas] -
OOperação de Junção de Igualdade (Equijoin)
×Operação de junção theta, cujo operador de comparação
é a igualdade (=)
×Sejam r e s relações com esquemas R(A
1
, A
2
, …, A
n
) e
S(B
1
, B
2
, …, B
m
), respectivamente
×O resultado da operação junção de igualdade entre r e s é
uma relação T(r.A
1
, r.A
2
, …, r.A
n
, s.B
1
, s.B
2
, …, s.B
m
)
definida por
Rr
condição
s = o
condição
(r x s)
Rcondição de junção é da forma
Rr.A
g
= s.B
i
. r.A
h
= s.B
k
. … . r.A
m
= s.B
L

R Para cada r.A
i
=s.B
J
, dom(r.A
i
) = dom(s.B
J
)
© Francisco Alves Carneiro Banco de Dados 100
OOperação de Junção de Igualdade (cont.)
×Exemplo
RConsidere as relações Departamento (d) e Empregado (e) mostradas
abaixo. Calcule a seguinte junção de igualdade
Departamento Empregado
3. Modelo Relacional
- Álgebra Relacional [Operações Derivadas] -
cod-dep nome ender gerente
1 Informática R. X,10 21
2 R. Humanos R. Y,5 11
3 Financeiro R. Z. 2 40
Departamento
Matr Nome cpf salário lotação
11 Bárbara 231 8000 2
21 André 451 9000 1
33 Sofia 472 3000 2
35 Lucas 549 500 2
37 Rebeca 465 400 3
40 Caio 555 800 1
57 Yasmin 800 400 1
Empregado
d.cod-dep=e.lotação
© Francisco Alves Carneiro Banco de Dados 101
3. Modelo Relacional
- Álgebra Relacional [Operações Derivadas] -
OOperação de Junção de Igualdade (cont.)
×Exemplo

Para cada empregado, listar seu nome e o
nome do departamento onde está lotado.
e.matr e.nome e.cpf e.salário e.lotação
21 André 451 9000 1
40 Caio 555 800 1
57 Yasmin 800 400 1
11 Bárbara 231 8000 2
33 Sofia 472 3000 2
35 Lucas 549 500 2
37 Rebeca 465 400 3
d.cod-dep d.nome d. ender d. gerente
1 Informática R. X,10 21
1 Informática R. X,10 21
1 Informática R. X,10 21
2 R. Humanos R. Y,5 11
2 R. Humanos R. Y,5 11
2 R. Humanos R. Y,5 11
3 Financeiro R. Z. 2 40
Departamento Empregado
d.cod-dep=e.lotação
H
e.nome,d.nome
(Departamento Empregado)
d.cod-dep=e.lotação
© Francisco Alves Carneiro Banco de Dados 102
3. Modelo Relacional
- Álgebra Relacional [Operações Derivadas] -
O Operação de Junção Natural (Natural Join)
× Operação de junção de igualdade
RTodos os com o mesmo nome nas duas relações
^Participam obrigatoriamente da condição de junção
+Envolvidos no operador de comparação (=)
^Aparecem só uma vez na relação resultado
× Sejam r e s relações com esquemas
RR(A
1
, A
2
, …, A
n
, B
1
, B
2
, …, B
i
) e
S(B
1
, B
2
, …, B
i
, C
1
, C
2
, …, C
m
), respectivamente
× O resultado da operação junção natural entre r e s é uma relação T(r.A
1
,
r.A
2
, …, r.A
n
,B
1
, B
2
, …, B
i
,s.C
1
, s.C
2
, …,s.C
m
) definida por
Rr
condição
s = o
condição
(r x s)
Rcondição de junção é da forma
Rr.B
1
= s.B
1
. r.B
2
= s.B
2
. … . r.B
i
= s.B
i
×Notação
Rr s
© Francisco Alves Carneiro Banco de Dados 103
OOperação de Junção Natural (cont.)
×Exemplo
RConsidere as relações Departamento (d) e Empregado (e) mostradas
abaixo. Calcule a seguinte junção de igualdade
Departamento Empregado
3. Modelo Relacional
- Álgebra Relacional [Operações Derivadas] -
cod-dep nome ender gerente
1 Informática R. X,10 21
2 R. Humanos R. Y,5 11
3 Financeiro R. Z. 2 40
Departamento
Matr Nome cpf salário cod-dep
11 Bárbara 231 8000 2
21 André 451 9000 1
33 Sofia 472 3000 2
35 Lucas 549 500 2
37 Rebeca 465 400 3
40 Caio 555 800 1
57 Yasmin 800 400 1
Empregado
© Francisco Alves Carneiro Banco de Dados 104
3. Modelo Relacional
- Álgebra Relacional [Operações Derivadas] -
OOperação de Junção de Igualdade (cont.)
×Exemplo

e.matr e.nome e.cpf e.salário
21 André 451 9000
40 Caio 555 800
57 Yasmin 800 400
11 Bárbara 231 8000
33 Sofia 472 3000
35 Lucas 549 500
37 Rebeca 465 400
d.cod-dep d.nome d. ender d. gerente
1 Informática R. X,10 21
1 Informática R. X,10 21
1 Informática R. X,10 21
2 R. Humanos R. Y,5 11
2 R. Humanos R. Y,5 11
2 R. Humanos R. Y,5 11
3 Financeiro R. Z. 2 40
Departamento Empregado
© Francisco Alves Carneiro Banco de Dados 105
3. Modelo Relacional
- Álgebra Relacional [Operações Derivadas] -
OOperação de Semi-Junção (Semi-join)
×Definida por
r s = H
R
(r s)

u
u
OOperação de Interseção
×O resultado da operação r · s é uma relação que contém
todas as tuplas de r e que pertencem a s
Rr e s são relações compatíveis
×O resultado de r · s é definido por
Rr · s= r - (r-s)
Ru representa uma condição de junção qualquer
© Francisco Alves Carneiro Banco de Dados 106
3. Modelo Relacional
- Álgebra Relacional [Operações Derivadas] -
OOperação de divisão
×Sejam r e s relações com esquemas
R(A
1
, A
2
, …, A
n
, B
1
, B
2
, …, B
m
) e
S(B
1
, B
2
, …, B
m
), respectivamente
×Resultado da operação r ÷ s
RÉ uma relação T(A
1
, A
2
, …, A
n
), onde, para uma tupla v
pertencer a T, todos os valores de v precisam aparecer
em R em associação com toda tupla de S
×Exemplo 1
A B C
a1 b1 c1
a1 b3 c1
a1 b3 c2
a1 b3 c3
a2 b2 c3
r
C
c1
c2
c3
s
A B
a1 b3
r ÷ s
© Francisco Alves Carneiro Banco de Dados 107
3. Modelo Relacional
- Álgebra Relacional [Operações Derivadas] -
OOperação de divisão (cont.)
×Exemplo 2
A B C
a1 b1 c1
a1 b3 c1
a2 b3 c1
a2 b3 c2
a2 b1 c1
a2 b1 c2
r
C
c1
c2
s
A B
a2 b3
a2 b1
r ÷ s
×Exemplo 3
RConsidere a relação r do exemplo 2 e a relação s abaixo.
Calcule r ÷ s
B C
b3 c1
s
A
a1
a2
r ÷ s
© Francisco Alves Carneiro Banco de Dados 108
3. Modelo Relacional
- Álgebra Relacional [Operações Derivadas] -
OOperação de divisão (cont.)
×Exemplo
RConsidere as tabelas Emp-Desc(matr,cod-desc) e
Desconto(cod-desc,valor,descrição), onde
^A tabela Emp-Desc relaciona os empregados com os
diversos descontos que é obrigado a pagar
matr Cod-desc
11 2
11 3
15 1
15 2
15 3
17 2
Emp-Desc
Exercício:
Utilizando a definição de divisão, mostrar passo a passo como é
encontrado os empregados que têm descontados de seu salário todos
os tipos de descontos possíveis
Cod-desc Valor descrição
1 10 IR
2 8 INSS
3 5 seguro
Desconto
© Francisco Alves Carneiro Banco de Dados 109
3. Modelo Relacional
- Álgebra Relacional [Outras Operações] -
O Funções Agregadas
× Funções aplicadas sobre uma coleção de valores do banco de dados
× sum
RRetorna o somatório dos valores de uma coleção
× avg
RRetorna a média dos valores de uma coleção
× max
RRetorna o maior valor de uma coleção de valores
× min
RRetorna o menor valor de uma coleção
× count
RRetorna o número de elementos de uma coleção
× distinct
RAlgumas vezes, torna-se necessário eliminar repetições para o
cálculo das funções agregadas
RConcatena-se a palavra distinct após o nome da função
© Francisco Alves Carneiro Banco de Dados 110
3. Modelo Relacional
- Álgebra Relacional [Outras Operações] -
O Funções Agregadas (cont.)
× Exemplos
RConsidere a relação
^Empregado(matr, nome, ender, salário, cpf, lotação)
+matr é a chave primária de Empregado
REncontre o número de empregados lotados no departamento 001
^count(H
matr
(o
lotação=001
(Empregado)))
REncontre o maior salário da empresa
^max(H
salário
(Empregado))
REncontre o salário médio da empresa
^avg-distinct(H
salário
(Empregado))
REncontre a quantidade de salários distintos no departamento
001
^count-distinct(H
salário
(o
lotação=001
(Empregado)))
REncontre o primeiro e segundo maiores salários da empresa
© Francisco Alves Carneiro Banco de Dados 111
3. Modelo Relacional
- Álgebra Relacional [Outras Operações] -
OOperação de Junção Externa (outer-join)
×Considere as seguintes relações
RVendedor(matr, nome, ender, salário, cpf, lotação)
RVendas(matr-vend,cod-item,quantidade, pr-venda)
×Considere a seguinte consulta
RListar o histórico de vendas de cada vendedor
^Esquema do resultado
+Res(matr,nome,cod-item,quantidade,pr-venda)
^H
Res
(Vendedor Vendas)
RConsulta com perda de informação
^Não aparecerão no resultado
+Vendedores que não efetuaram vendas
RDefinir uma operação que evite esta perda de informação
^Outer join
+Adicionar tuplas extras ao resultado de uma junção
natural
© Francisco Alves Carneiro Banco de Dados 112
3. Modelo Relacional
- Álgebra Relacional [Outras Operações] -
OOperação de outer-join (cont.)
×Tipos
RJunção externa à esquerda (left outer join)
RJunção externa à direita (right outer join)
RJunção externa completa (full outer join)
×left outer join
RNotação
^A B
RCalcula o resultado da junção de A com B
^Adiciona ao resultado da junção
+Tuplas da relação à esquerda (A) que não satisfazem a
condição de junção
+Atribui valores nulos aos atributos não definidos para estas
tuplas
© Francisco Alves Carneiro Banco de Dados 113
3. Modelo Relacional
- Álgebra Relacional [Outras Operações] -
OOperação de outer-join (cont.)
×left outer join (cont.)
RConsidere as seguintes relações
^Vendedor(matr, nome, salário)
^Vendas(matr,cod-item,qtde, pr-venda)
RListar o histórico de vendas de cada vendedor

matr nome salário
11 Bárbara 5000
14 André 7000
15 Sofia 3000
17 Caio 500
19 Lucas 700
21 Camila 900
Vendedor
matr cod-item qtde pr-venda
11 72727 160 2.00
11 545 50 15.50
14 545 87 15.50
21 13 10 8.75
Vendas
© Francisco Alves Carneiro Banco de Dados 114
3. Modelo Relacional
- Álgebra Relacional [Outras Operações] -
OOperação de outer-join (cont.)
×left outer join (cont.)
RListar o histórico de vendas de cada vendedor
^Vendedor Vendas
matr nome salário cod-item qtde pr-venda
11 Bárbara 5000 72727 160 2.00
11 Bárbara 5000 545 50 15.50
14 André 7000 545 87 15.50
15 Sofia 3000 Null Null Null
17 Caio 500 Null Null Null
19 Lucas 700 Null Null Null
21 Camila 900 13 10 8.75
© Francisco Alves Carneiro Banco de Dados 115
3. Modelo Relacional
- Álgebra Relacional [Outras Operações] -
OOperação de outer-join (cont.)
×right outer join
RNotação
^A B
RCalcula o resultado da junção de A com B
^Adiciona ao resultado da junção
+Tuplas da relação à direita (B) que não satisfazem a
condição de junção
+Atribui valores nulos aos atributos não definidos para estas
tuplas
×full outer join
RNotação
^A B
RCalcula o resultado da junção de A com B
^Adiciona ao resultado da junção
+Tuplas das relações A e B que não satisfazem a condição
de junção
+Atribui valores nulos aos atributos não definidos para estas
tuplas
© Francisco Alves Carneiro Banco de Dados 116
5. SQL
- Histórico -
OStructured Query Language - SQL
×Desenvolvida pela IBM
RStructured English Query Language - Sequel
RLinguagem de consulta para o sistema R
^Primeiro protótipo de SBD relacional
×Especificar consultas de forma interativa
Rad hoc queries
OPadrão
×ANSI
RSQL 86
RSQL 89
RSQL 92
RSQL 99
^Propriedade de SBDs objeto-relacional
© Francisco Alves Carneiro Banco de Dados 117
5. SQL
- Definição de Esquemas em SQL -
OEsquema de um banco de dados relacional
×Conjunto de esquemas de relação mais um conjunto de
restrições de integridade IC
OExpressões DDL do SQL permitem especificar
×Esquema de relações(tabelas)
×Domínio de valores associados a cada atributo
×Restrições de integridade
×Conjunto de índices a serem mantidos para cada relação
×Estrutura de armazenamento físico de cada relação em
disco
×Autorização de acesso para cada relação

© Francisco Alves Carneiro Banco de Dados 118
5. SQL
- Definição de Esquemas em SQL -
OCriando tabelas (cont.)
×Alguns tipos de dados suportados pelo SQL 92
Rchar(n)
^string de caracteres de tamanho fixo n
Rvarchar(n)
^string de caracteres de tamanho variável (máximo n)
RInteger (Int)
Rsmallint
Rdecimal(p,d)
^numérico com p dígitos
^Dos p dígitos, d dígitos representam casas decimais
após a vírgula
Rreal
^numérico ponto flutuante
Rdate
^data de calendário
•Alphabetic date formats ( „April 15, 1998‟)
•Numeric date formats ( „4/15/1998‟, „April 15, 1998‟)
•Unseparated string formats („19981207‟,
„December 12, 1998‟)
© Francisco Alves Carneiro Banco de Dados 119
OCriando Objeto
×Estrutura básica
RCREATE <nome do Objeto> [Caracteristicas]
REx: CREATE DATABASE <nome do banco>
RCREATE TABLE< nome-tabela>
(nome-coluna tipo-de-dados [not null],
[nome-coluna tipo-de-dados [not null] … ],
[CONSTRAINT nome-restrição]
UNIQUE nome-coluna
| PRIMARY KEY(nome-coluna {, nome-coluna})
| FOREIGN KEY (nome-coluna {, nome-coluna})
REFERENCES nome-tabela
[ON DELETE CASCADE | SET NULL | NO ACTION ],
[ON UPDATE CASCADE],
| CHECK (predicado)
)
5. SQL
- Definição de Esquemas em SQL -
Definição
de restrições
Especifica
chaves
candidatas
© Francisco Alves Carneiro Banco de Dados 120
5. SQL
- Definição de Esquemas em SQL -
OCriando tabelas (cont.)
×Exemplo: Considere o seguinte esquema de banco de
dados fornecimento:
pedido(codigo, data, cod_cli)
Restrição: codigo>0
×cliente(cod_cli, nome)
×produto (codigo_prod, nome, quant)
Restrição:quant>=5
×ped_prod (cod_ped, cod_prod, quant)
Restrição: quant>0
© Francisco Alves Carneiro Banco de Dados 121
5. SQL
- Definição de Esquemas em SQL -
ORemovendo tabelas
×Estrutura básica
RDROP TABLE nome-tabela
RRemove todas as tuplas da tabela e a definição da
tabela do catálogo
OAlterando tabelas
×Estrutura básica
RALTER TABLE nome-tabela
[ADD nome-coluna tipo de dados]
[ADD CONSTRAINT nome-restrição]
[DROP CONSTRAINT nome-restrição]
[DROP nome da coluna]
[ repetir ADD ou DROP em qualquer ordem]

© Francisco Alves Carneiro Banco de Dados 122
5. SQL
- Conjunto de Operações para Manipulação de Dados -
O INSERINDO DADOS NA TABELA

RINSERT INTO <nome da tabela> VALUES (<valores dos
atributos>)

R ALTERANDO DADOS
RUPDATE <nome da tabela> SET <nome da coluna>
WHERE <condição>

REXCLUINDO DADOS
DELETE FROM < nome da tabela> WHERE <condição
para determinas as linhas a serem excluidas>



© Francisco Alves Carneiro Banco de Dados 123
5. SQL
- Conjunto de Operações para Manipulação de Dados -
O Consultas simples sobre o banco de dados

× Estrutura básica para recuperar dados de uma ou mais tabelas

× SELECT- especifica as colunas a serem recuperadas (*=todas)

× FROM – especifica a(s) tabela(s)

× WHERE – especifica o criterio de seleção

× GROUP BY – agrupa dados por coluna

× HAVING – especifica criterios para consultas agregadas

× ORDER BY - especifica a ordem dos valores retornados

© Francisco Alves Carneiro Banco de Dados 124
5. SQL
- Conjunto de Operações para Manipulação de Dados -
O Consultas simples sobre o banco de dados
× Estrutura básica
RSELECT [ALL | DISTINCT] {* | expr [[AS] c_alias]
{, expr [[AS] c_alias] … }}
FROM nome-tabela [[AS] qualificador]
{, nome-tabela [[AS] qualificador] …}
WHERE predicado

× ALL
RRetorna todas as tuplas, inclusive repetidas (default)
× DISTINCT
RRetorna apenas tuplas não repetidas
× *
RRetorna todos os atributos da(s) tabela(s)
× expr
RRepresenta um atributo ou
RExpressão matemática envolvendo atributos das tabelas
^salario*1.40
© Francisco Alves Carneiro Banco de Dados 125
5. SQL
- Conjunto de Operações para Manipulação de Dados -
O Consultas simples sobre o banco de dados (cont.)
× FROM
RRepresenta o produto cartesiano das tabelas referenciadas
× WHERE
RCorresponde ao predicado de seleção da álgebra relacional
× Exemplos: Considere o seguinte esquema de banco de dados
Departamento(cod-depart, nome, ender)
Empregado(matr, nome, ender,
cpf,salário,lotação)
RListar os funcionários com salario maior que 3000
RListar funcionários com salários maior que 1000 e menor
que 2000
RListar nome dos funcionários com o nome de seu
departamento de lotação
RListar nome dos funcionários com o nome de seu
departamento de lotação e uma simulação de seu salário
com um aumento de 15%
© Francisco Alves Carneiro Banco de Dados 126
Visões
OTabelas virtuais
ODerivadas de tabelas base através de comandos SQL
OLimitações de atualização
OInteressantes para consultas freqüentes
© Francisco Alves Carneiro Banco de Dados 127
Especificação de Visões
CREATE VIEW INFO_DEP (DNome, NEmp, SalTotal)
AS SELECT DNome, COUNT(*), SUM(Salario)
FROM Departamentos, Empregados
WHERE Departamentos.Codigo = Empregados.DCod
GROUP BY DNome
SELECT DNome
FROM Info_Dep
WHERE NEmp < 10
Recupere o nome dos departamentos
que têm menos de 10 empregados
© Francisco Alves Carneiro Banco de Dados 128
CHECK
CREATE TABLE Empregados
( ....
salario DECIMAL(6,2),
....
sexo CHAR,
....
CHECK (salario <= 11000.00),
CHECK (sexo IN ( „M‟, „F‟ ) )
)
O salário de um empregado não pode
ser maior do que R$11000,00 e ele só
pode ser homem ou mulher
© Francisco Alves Carneiro Banco de Dados 129
Definição de Novos Domínios
OSQL-92 permite a definição de novos domínios para
os atributos. Ex.s:
×create domain salario-hora numeric(5,2) constraint
test-val-pag check(value >= 4.00)
×create domain numero-conta char(10)
constraint test-null-num-conta check(value not null)
×create domain sexo-pessoa char(1)
constraint test-sex-pessoa check(value in(“M”, “F”))
© Francisco Alves Carneiro Banco de Dados 130
Definição de Novos Domínios-1
CREATE TABLE Empregado
( Mat: CHAR(5) NOT NULL,
Nome: VARCHAR(40) NOT NULL,
Sal-hor: salario-hora NOT NULL,
CDep: CHAR(3),
CONSTRAINT pk PRIMARY KEY (Mat),
CONSTRAINT depart_fk
FOREIGN KEY (CDep) REFERENCES
Departamento (Codigo)
)
© Francisco Alves Carneiro Banco de Dados 131
Definição de Novos Domínios-2
CREATE TABLE Cliente
( CPF: CHAR(11) NOT NULL,
Nome_Cli: VARCHAR(40) NOT NULL,
Num_Conta: numero-conta NOT NULL,
Sexo: sexo-pessoa,
CONSTRAINT pk PRIMARY KEY (CPF),
)
© Francisco Alves Carneiro Banco de Dados 132
Asserções
CREATE ASSERTION SalEmp
CHECK ( NOT EXISTS (SELECT *
FROM Departamentos D,
Empregados E,
Empregados G
WHERE E.Salário > G.Salario AND
E.CDep = D.Codigo AND
D.Gerente = G.CPF) )
O salário de um empregado não pode
ser maior do que o salário do gerente
do departamento em que ele trabalha
© Francisco Alves Carneiro Banco de Dados 133
Stored Procedures
O Coleção denominada de comandos
SQL
O Mecanismo semelhante ao RPC
O Código sob o controle do SGBD
O Passagem de parâmetros
O 1 chamada ¬ n procedures
O Diminui tráfego de rede

Aplicação
Stored
Procedures
exec
procedure
retorna
resultado
© Francisco Alves Carneiro Banco de Dados 134
Stored Procedures
OFunções
×Regras de negócio e integridade dos dados no SGBD
×Administração do sistema
×Lado “servidor” da lógica da aplicação
OCaracterísticas
×Comandos SQL compartilhados por aplicações
×Melhor desempenho em ambientes C/S
×Melhora autonomia de sítio
© Francisco Alves Carneiro Banco de Dados 135
Stored Procedures
OMenor flexibilidade
OPode piorar desempenho se o plano de execução não
for periodicamente refeito
OCada procedure é por default uma transação separada
OFalta de padronização!!!
© Francisco Alves Carneiro Banco de Dados 136
CREATE PROCEDURE mathtutor
@m1 smallint,
@m2 smallint,
@result smallint OUTPUT
AS
SELECT @result = @m1 * @m2
GO
OStored Procedures
> EXEC livro_res 7498, „sistema%‟
Microsoft SQL Server
© Francisco Alves Carneiro Banco de Dados 137
OStored Procedures
DECLARE @guess smaliint
SELECT @guess = 50
EXECUTE mathtutor 5, 6, @guess OUTPUT
SELECT „O resultado é „, @guess
GO
Microsoft SQL Server
© Francisco Alves Carneiro Banco de Dados 138
Triggers
insert
update
delete
Eventos
Comando
SQL
Stored
Procedure
Reação automática a
eventos monitorados
© Francisco Alves Carneiro Banco de Dados 139
Triggers
Usar 650 parafusos
“estoque de parafusos: 850”
parafusos 1500
850
Se quantidade de parafusos em
estoque é menor que 1000, então
“acordar” comprador
= > comprar 1000
SGBD Ativo
© Francisco Alves Carneiro Banco de Dados 140
Trigger - Exemplo
DEFINE TRIGGER Departamentos D,
Empregados E,
Empregados G:
WHERE E.Salario > G.Salario AND
E.CDep = D.Codigo AND
D.Gerente = G.CPF
ACTION_PROCEDURE(NOTIF_GERENTE(D.Gerente);
Notificar o gerente se qualquer empregado do seu
departamento tem o salário maior do que o seu
© Francisco Alves Carneiro Banco de Dados 141
OTriggers (Gatilhos)
¤ Um trigger é um tipo especial de stored procedure que
é invocado (disparado) quando ocorre uma tentativa
de modificação nos dados da tabela (relação) à qual
ele está associado (vinculado). Isto ocorre quando
modificações são feitas na tabela usando-se as
cláusulas (operações) INSET, UPDATE ou DELETE.
Microsoft SQL Server
© Francisco Alves Carneiro Banco de Dados 142
OTriggers (Gatilhos)
¤ Os triggers são usados para garantir regras de negócio
e integridade dos dados, ou para ações complexas, tais
como automaticamente atualizar um resumo dos dados.
¤ Caso a execução de um trigger possa violar alguma
restrição então ele não será executado.
¤ São automaticamente disparados pelo SQL Server
¤ Não podem ser executados diretamente por um usuário
Microsoft SQL Server
© Francisco Alves Carneiro Banco de Dados 143
OTriggers (Gatilhos)
CREATE TRIGGER update_usuario
ON usuario
FOR UPDATE
AS
IF UPDATE (num_usuario)
BEGIN
RAISERROR(„Tabela não pode ser atualizada‟)
ROLLBACK TRANSACTION
END
Microsoft SQL Server
© Francisco Alves Carneiro Banco de Dados 144
OTriggers (Gatilhos)
CREATE TRIGGER insert_reserva
ON reserva
FOR INSERT
AS
IF (SELECT COUNT(*)
FROM usuario, inserted
WHERE usuario.num_usuario = inserted. num_usuario) =0
BEGIN
PRINT „A atualização não pode ser executada‟
PRINT „Nenhuma entidade USUÁRIO para esta RESERVA‟
ROLLBACK TRANSACTION
END
Microsoft SQL Server
© Francisco Alves Carneiro Banco de Dados 145
OTriggers (Gatilhos)
CREATE TRIGGER delete_usuario
ON usuario FOR DELETE
AS
IF (SELECT COUNT(*)
FROM emprestimo, deleted
WHERE emprestimo.num_usuario = deleted. num_usuario) > 0
BEGIN
PRINT „A transação não pode ser executada.‟
PRINT „Este usuário possui livro não devolvido‟
ROLLBACK TRANSACTION
END

Microsoft SQL Server
© Francisco Alves Carneiro Banco de Dados 146
OTriggers (Gatilhos)
ELSE
DELETE reserva
FROM reserva, deleted
WHERE reserva.num_usuario = deleted.num_usuario
Microsoft SQL Server
© Francisco Alves Carneiro Banco de Dados 147
Dependências Funcionais
OÉ uma generalização da noção de Chave;
ONotação: (α ⊆ R e β ⊆ R)
×α → β acontece em R, se para todo par de tuplas t
1
e t
2

em R tal que t
1
[α] = t
2
[α], então t
1
[β] = t
2
[β]
OUsando a notação de dependência funcional
×K é uma superchave de R se K → R
OF é o conjunto das dependências funcionais

Sumário

F

 Introdução aos Sistemas de Banco de Dados  Modelo de Entidades e Relacionamentos  Bancos de Dados Relacionais
 O Modelo Relacional  Modelagem de Dados  Linguagem de Manipulação e Consulta

 Projeto de Bancos de Dados Relacionais

 Francisco Alves Carneiro

Banco de Dados

2

Introdução aos Sistemas de Bancos de Dados
- Histórico  Processamento de arquivo (anos 60 e 70)
 Paradigma de processamento de dados
 Cada aplicação
 Definir e manter seus próprios dados
Programa 1 Programa 2 Programa 3

Descrição de dados

Descrição de dados

Descrição de dados

Arquivo A
Arquivo B Arquivo C
 Francisco Alves Carneiro Banco de Dados 3

Histórico  Dados em Arquivos  Redundância e inconsistência  Dificuldade de acesso aos dados  Isolamento dos dados  Problemas de integridade  Anomalias de acesso concorrente  Problemas de segurança  Francisco Alves Carneiro Banco de Dados 4 .Introdução aos Sistemas de Bancos de Dados .

Introdução aos Sistemas de Bancos de Dados  Tecnologia de banco de dados  Definição e gerenciamento centralizado de dados  Independência de dados  Alteração na organização lógica ou física dos dados não implicar na alteração de programas  Eliminar redundância de dados  Eliminar inconsistência de dados  Facilitar acesso a dados através de uma linguagem de consulta  Evitar inconsistências produzidas pelo acesso concorrente  Recuperar estado consistente dos dados após situação de falha  Francisco Alves Carneiro Banco de Dados 5 .

Introdução aos Sistemas de Bancos de Dados  Tecnologia de banco de dados Programa 1 Programa 2 Programa 3 Descrição de Dados Sistema de Banco de Dados •Conjunto de dados inter-relacionados (banco de dados) •Componente de software (SGBD) Tornar transparente como os dados são •Acesso e modificação dos dados armazenados e gerenciados • Garantir uma visão abstrata dos dados  Francisco Alves Carneiro Banco de Dados 6 Banco de Dados .

Abstração de Dados - Sistemas de Bancos de Dados Usuário tem uma visão abstrata dos dados  Nível físico: descreve como os dados são armazenados  Nível lógico: descreve quais dados são armazenados e os relacionamentos entre eles  Nível de visualização: descreve partes de interesse do usuário/aplicação  Francisco Alves Carneiro Banco de Dados 7 .Introdução aos Sistemas de Bancos de Dados .

Arquitetura em Três Camadas - Esquema Externo 1 Camada Externa Esquema Externo 2 Esquema Externo n Esquema Conceitual Camada Conceitual DBMS Camada Interna (Física)  Francisco Alves Carneiro Esquema Interno (Banco de Dados armazenado) Banco de Dados 8 .Introdução aos Sistemas de Bancos de Dados .

Camada Externa  Descreve parte do banco de dados  Simplificar a visão do usuário  “Ver” só o que interessa  Segurança  Descreve quais dados estão armazenados no banco de dados  Descreve os relacionamentos entre os dados armazenados  Francisco Alves Carneiro Banco de Dados 9 .Arquitetura em Três Camadas  Esquema Interno .Camada Interna  Descreve como os dados estão fisicamente armazenados  Exemplo  Organização de arquivo  Alocação em disco  Tipo de registro  Fixo.Introdução aos Sistemas de Bancos de Dados . variável  seqüencial-indexado.Camada Conceitual  Esquema Externo . lista encadeada utilizando índice  Esquema Conceitual . lista encadeada. seqüencial. heap  Contígua. hashing.

Ocorrências e Esquemas  Ocorrências (instâncias)  Coleção de informações armazenadas na base  Altamente mutáveis  Esquemas  Projeto ou estrutura da base .definição  Um esquema para cada nível de abstração  Esquema físico .nível conceitual  Sub-esquemas ou esquemas de visualização .nível interno  Esquema lógico .Introdução aos Sistemas de Bancos de Dados .nível externo  Francisco Alves Carneiro Banco de Dados 10 .

Definição Sistema de Bancos de Dados (SBD ou DBS)  Banco de Dados (BD ou DB)  Conjunto de dados relacionados  Sistema Gerenciador de Bancos de Dados (SGBD ou DBMS)  Componente de software  Armazenamento  Acesso  Controle de Concorrência  Recuperação  Francisco Alves Carneiro Banco de Dados 11 .Introdução aos Sistemas de Bancos de Dados .

primary key(matr)) Banco de Dados 12  Exemplo (SQL)  Francisco Alves Carneiro . salário real.Data Description Language  Utilizada para especificar o esquema de um BD  Expressões da DDL  Interpretadas (compilados) gerando a especificação de um conjunto de tabelas  A especificação das tabelas é armazenada no catálogo do banco de dados  create table Empregado (matr integer not null.Linguagem de Banco de Dados  Finalidade  garantir a especificação do esquema de um banco de dados  permitir consultas e atualizações sobre o banco de dados  Componentes  DDL . nome varchar(35).Introdução aos Sistemas de Bancos de Dados .

15  where salário<1500.)  DML .Linguagem de Banco de Dados  Componentes (cont.Introdução aos Sistemas de Bancos de Dados .requer a especificação de quais dados devem ser acessados e como devem ser  select nome acessados  from Empregado Nonprocedural  where salario > 7000 .Data Manipulation Language  Utilizada para permitir DML  Consultas sobre um BD Procedural  Inserções em uma tabela  Exemplo (SQL) .00  Francisco Alves Carneiro Banco de Dados 13 . 5000. “Bárbara”.00)  Exemplo (SQL)  delete from Empregado  where matr=14 dados devem ser acessados  Atualizar valores de atributos de uma tabela  Exemplo (SQL)  update Empregado set salário=salário*1.requer somente a especificação de quais  Remoções em uma tabela  Exemplo (SQL)  insert into Empregado values(123.

Introdução aos Sistemas de Bancos de Dados . SQL)  Traduz estes comandos para uma das formas de representação interna de consultas (ex.Definição SGBD  Processador de Consultas + Sistema de Armazenamento  Processador de Consultas  Compilador DML  Analisa sintaticamente e semanticamente comandos DML expressos em uma linguagem de consulta (ex. álgebra relacional)  Pré-Compilador DML  Traduz comandos DML em chamadas a procedimentos (rotinas) na linguagem hospedeira  Interpretador DDL  Interpreta comandos DDL e os armazena no catálogo  Tabelas contendo meta-dados  Descrição do banco de dados (Esquema)  Responsável pela otimização e geração de planos de execução de consultas  Mecanismo de Consultas  Francisco Alves Carneiro Banco de Dados 14 .

LRU. etc Página (buffer do SGBD)  Definição da política de alocação do buffer Gerenciador de Arquivo (File System)  Responsável pelo armazenamento físico em disco  Gerencia a alocação de espaço em disco  Francisco Alves Carneiro Banco de Dados 15 . FIFO.Definição SGBD  Sistema de Armazenamento  Gerenciador de Transações  Controle de concorrência  Recuperação do banco de dados após falhas  Gerenciador de Buffer  Responsável para recuperar objetos em disco e carregá-los na memória principal em forma de páginas  SGBD possui uma área de buffer em memória principal  Mapeamento: Bloco  (disco)  MRU.Introdução aos Sistemas de Bancos de Dados .

etc…  Armazena informações estatísticas  Exemplo  Cardinalidade de uma tabela  Utilizadas na otimização de consultas  Francisco Alves Carneiro Banco de Dados 16 .Definição BD  Arquivos de dados + Índices + Catálogo  Arquivos de dados  Armazena os dados  Índices  Estruturas de índices para os arquivos de dados  Catálogo  Armazena esquema do banco de dados (meta-dados)  Nomes das tabelas  Atributos de cada tabela  Definição de índice para uma tabela.Introdução aos Sistemas de Bancos de Dados .

Introdução aos Sistemas de Bancos de Dados .Arquitetura de SGBD’sUsuário experiente Consulta Compilador DML Mecanismo de Consultas Gerenciador de Buffer Programadores Programa Aplicativo Pre-compilador DML DBA Esquema Interpretador DDL Processador de Consultas Gerenciador de Transações Sistema de Armazenamento Gerenciador de Arquivo DBMS DB DBS 17 Código Objeto aplicativos índices Arquivos de dados Catálogo  Francisco Alves Carneiro Banco de Dados .

Introdução aos Sistemas de Bancos de Dados .O Administrador de Bancos de Dados (DBA) -  Definição do esquema conceitual  Definição dos métodos de acesso e estruturas de armazenamento  Manutenção do esquema e da organização física dos dados  Definição da política de acesso aos dados  Especificação de restrições de integridade  Francisco Alves Carneiro Banco de Dados 18 .

Usuários de Bancos de Dados -  Programadores de aplicação  Usuários sofisticados  Usuários especializados em aplicações não- convencionais  Usuários de programas de aplicação  Francisco Alves Carneiro Banco de Dados 19 .Introdução aos Sistemas de Bancos de Dados .

Introdução aos Sistemas de Bancos de Dados .Modelo de Dados Um modelo de dados é definido por três componentes  Uma coleção de tipos de estrutura de dados  blocos de construção do banco de dados  Uma coleção de operadores  Podem ser aplicados a qualquer instância dos tipos de dados definidos em 1  Uma coleção de regras de integridade  Definem o conjunto de estados consistentes do banco de dados  Definem o conjunto de transições consistentes de estado do banco de dados  Capturar a semântica e incorporá-la em um banco de dados  Exemplo  Através do modelo relacional representar os dados de uma universidade  Francisco Alves Carneiro Banco de Dados 20  Representar dados do mundo real .

Introdução aos Sistemas de Bancos de Dados .Classificação de Sistemas de Bancos de Dados  Classificação de SBDs .Conjunto de tuplas (linhas)  Conjunto de Operadores  Álgebra Relacional  Cálculo Relacional  Restrições de integridade  Integridade de chave primária  Integridade referencial  Francisco Alves Carneiro Banco de Dados 21 .Modelo de Dados  Sistema de Banco de Dados Relacional  Modelo Relacional  Tipo primitivo de dados  Relação (tabela)  .

integer. real  Restrições de integridade Unicidade de Objeto e identidade de objeto Hierarquia de classes Herança . conjunto.Uma classe herda as propriedades da superclasse Comportamento de objetos de uma classe .Introdução aos Sistemas de Bancos de Dados .Método  Sistema de Banco de Dados Objeto-Relacional  Modelo relacional + Modelo OO  Francisco Alves Carneiro Banco de Dados 22 . string.Modelo de Dados  Sistema de Banco de Dados Orientado a Objeto  Modelo orientado a objeto  Tipos primitivos        Objeto.Classificação de Sistemas de Bancos de Dados  Classificação de SBDs . lista.

Sumário F  Introdução aos Sistemas de Banco de Dados  Modelo de Entidades e Relacionamentos  Bancos de Dados Relacionais     O Modelo Relacional Modelagem de Dados Álgebra Relacional Linguagem de Manipulação e Consulta  Projeto de Bancos de Dados Relacionais  Projeto Lógico de Bancos de Dados  Francisco Alves Carneiro Banco de Dados 23 .

Conceitos Básicos  Modelo de dados MER  Não é implementado por nenhum SBD  Utilizado como modelo conceitual para projeto de BDs  Ferramenta para a modelagem de BDs  Proposto por P. Modelo Entidade-Relacionamento .2. Chen em 1976  Princípio básico  Representar dados através  Entidades  Relacionamentos entre as entidades  Atributos  Propriedades de entidades ou relacionamentos  Francisco Alves Carneiro Banco de Dados 24 .

uma conta bancária. uma disciplina  Conjunto de entidades (tipo de entidade)  Entidades que apresentam características semelhantes  Exemplo  Estudantes. Modelo Entidade-Relacionamento .Conceitos Básicos  Entidade  Representação abstrata de um objeto do mundo real  Exemplos de entidades do mundo real  Objeto concreto  Um empregado.2. Empregados. Professores  Francisco Alves Carneiro Banco de Dados 25 . um carro. um estudante  Objeto abstrato  Uma empresa.

salário. data-admissão  Atributos de estudantes  matrícula. cpf. lotação. nome. Modelo Entidade-Relacionamento .Conceitos Básicos  Atributos de uma entidade  Propriedades que caracterizam uma entidade  Exemplos  Atributos de empregados  matrícula. data-nasc. nome. cpf. data-ingresso  Conjunto de entidades  Grupo de entidades que apresentam mesmo conjunto de atributos  A cada atributo de uma entidade deve estar associado um valor  Francisco Alves Carneiro Banco de Dados 26 . rg. curso. rg. endereço.2.

2. Modelo Entidade-Relacionamento
- Conceitos Básicos  Atributos de uma entidade (cont.)
 Um atributo pode ser ainda definido como  Uma função que associa um elemento do conjunto de entidades a um elemento de um conjunto de valores do atributo (domínio do atributo)
matrícula
l l l l l 13 l

Conjunto de matrículas

Empregados
l l l l l l l l

nome

Bárbara
l l l l l l l l

Conjunto de nomes

endereço
 Francisco Alves Carneiro

l

Conjunto de endereços

R. X, 9
27

Banco de Dados

2. Modelo Entidade-Relacionamento
- Conceitos Básicos  Atributos de uma entidade (cont.)
 Atributos chave de uma entidade  Conjunto de atributos que identificam univocamente um elemento ou objeto da entidade  Seja f um atributo chave para um conjunto de entidades D, xD e f(x)=v, então
 "dD e dx, f(d)v

 Exemplo
 Matrícula é atributo chave para Estudante

 Tipos de atributos  Atributo atômico
 Atributo que não pode ser subdividido:cargo

endereço

 Atributo composto
 Atributo formado por vários atributos Endereço, local
 Francisco Alves Carneiro Banco de Dados

local rua

cep cidade

número
28

2. Modelo Entidade-Relacionamento
- Conceitos Básicos  Atributos de uma entidade (cont.)
 Tipos de atributos  Atributo mono-valorado  Atributo multi-valorado
 Nome

 Atributo para o qual está associado um único valor  Exemplo  Atributo para qual podem estar associados vários valores  Função que associa um elemento do conjunto de entidades a um subconjunto de um conjunto de valores  Exemplo
 Para o atributo telefone podem estar associados vários valores, como telefone residencial, comercial e celular

 Atributo derivado

 Atributo cujo valor é derivado com base no valor de um outro atributo (atributo base)  Exemplo
 Atributo idade pode ser derivado do atributo data_nasc
Banco de Dados 29

 Francisco Alves Carneiro

 Francisco Alves Carneiro Banco de Dados 30 .. . Modelo Entidade-Relacionamento .. En.2. E2.Conceitos Básicos  Relacionamento  Abstração que representa associações entre diferentes conjuntos de entidades  Exemplo  Pode-se definir um relacionamento que associa o empregado Bárbara com o departamento “Ciência da Computação”  Conjunto de relacionamentos (tipo de relacionamento)  Grupo de relacionamentos que representam o mesmo tipo de associação  Exemplo  Conjunto de relacionamentos lotação  +Contém todos os relacionamentos entre empregado e .departamento  Seja R um conjunto de relacionamentos representando associações entre os conjuntos de entidade E1.

e2E2. então R  E1 x E2 x En  Exemplo  Seja rR.. E2. en). Ciência da Computação) lotação  Papel (role)  Função que uma entidade desempenha no relacionamento  Exemplo  Papel de empregado  É lotado (Bábara é lotada em Ciência da Computação)  Lota (Ciência da Computação lota Bárbara) Banco de Dados 31  Papel de departamento  Francisco Alves Carneiro . então r=(e1. e2. En.. onde e1E1.2. . representando associações entre os conjuntos de entidades E1. Modelo Entidade-Relacionamento .  Considere o conjunto de relacionamentos lotação  lotação  Departamento x Empregado  (Bárbara.)  Conjunto de relacionamentos (cont)  Seja R um conjunto de relacionamentos. enEn. ….Conceitos Básicos  Relacionamento (cont. ….

Modelo Entidade-Relacionamento .)  Grau de Relacionamento  Número de entidades participantes no relacionamento  Relacionamento binário  Relacionamento de grau 2  Exemplo: Relacionamento aluno-disciplina  Relacionamento ternário  Relacionamento de grau 3  Exemplo l l l l l l l  Relacionamento Agência-Conta-Cliente Conta Cliente l l l l l l l l Agência_Conta-Cliente  Francisco Alves Carneiro l l l l ll l l Agência Banco de Dados 32 .2.Conceitos Básicos  Relacionamento (cont.

é-supervisor-de (2) l l l l l Empregado  Francisco Alves Carneiro Banco de Dados Supervisiona 33 .2.é-supervisionado-por (1) .)  Auto-relacionamento (relacionamento recursivo)  Relacionamento envolvendo um único conjunto de entidades  O conjunto de entidades apresenta diferentes papéis  Considere o seguinte cenário:  Cada departamento possui vários supervisores  responsáveis por um subconjunto de empregados do departamento  Um supervisor também é uma entidade do tipo Empregado  Relacionamento supervisiona l  Modelagem do relacionamento entre empregado e supervisor 1 1 1 1 2 2 Empregado desempenha dois papéis . Modelo Entidade-Relacionamento .Conceitos Básicos  Relacionamento (cont.

2. Modelo Entidade-Relacionamento
- Conceitos Básicos  Relacionamento (cont.)
 Atributos de relacionamento  Propriedades que descrevem um relacionamento  Exemplo
 Considere o atributo data-lotação
 Representa a data em que um empregado foi lotado em um determinado departamento  data-lotação é um atributo do relacionamento lotação

 Considere o atributo nota na modelagem de dados da FIC
 Descreve a nota de um aluno em uma disciplina  nota é um atributo do relacionamento cursa  Cursa representa o relacionamento entre os conjuntos de entidades Estudante e Disciplina

 Francisco Alves Carneiro

Banco de Dados

34

2. Modelo Entidade-Relacionamento
- Conceitos Básicos Restrições estruturais de relacionamentos
 Cardinalidade de relacionamento  Indica o número de entidades que podem participar de um determinado relacionamento
 Seja R um relacionamento binário entre os conjuntos de entidades A e B  A Cardinalidade de R deve ser uma das seguintes:
 Um para um (1:1) Uma entidade de A só pode estar associada a uma ..…entidade de B Uma entidade de B só pode estar associada a uma ..…entidade de A  Um para muitos (1:N) Uma entidade de A pode estar associada a qualquer ..…quantidade de entidades de B Uma entidade de B só pode estar associada a uma ..…entidade de A  Muitos para um (N:1) Uma entidade de A só pode estar associada a uma ..…entidade de B Uma entidade de B pode estar associada a qualquer ..…quantidade de entidades de A
Banco de Dados 35

 Francisco Alves Carneiro

2. Modelo Entidade-Relacionamento
- Conceitos Básicos  Restrições estruturais de relacionamentos (cont.)
 Cardinalidade de relacionamento (cont.)
 Muitos para muitos (N:N) Uma entidade de A pode estar associada a qualquer ..…quantidade de entidades de B Uma entidade de B só pode estar associada a qualquer ..…quantidade de entidades de A

 Exemplos

 Cardinalidade do relacionamento lotação entre 1:N Departamento e Empregado  Cardinalidade do relacionamento cursa entre Estudante N:N e Disciplina  Cardinalidade do auto-relacionamento supervisiona 1:N  Cardinalidade do relacionamento que modela o fato de que cada departamento da empresa possui um gerente 1:1
 Francisco Alves Carneiro Banco de Dados 36

Conceitos Básicos  Restrições estruturais de relacionamentos (cont.)  Restrição de participação  Especifica a obrigatoriedade ou não de uma entidade e participar de um relacionamento com outra entidade  Participação total  A participação de um conjunto de entidades A é total em um relacionamento R. para o qual todo empregado deve estar lotado em algum departamento  A participação de Empregado em lotação é total  Participação parcial  A participação de um conjunto de entidades A é parcial em um relacionamento R. se apenas um subconjunto de entidades de A participa em R  Exemplo  Relacionamento cursa entre Estudante e Disciplina  Francisco Alves Carneiro Banco de Dados 37 .2. se toda entidade de A participa de pelo menos um relacionamento em R  Dependência existencial  Exemplo  Considere o relacionamento lotação. Modelo Entidade-Relacionamento .

Conceitos Básicos  Entidade fraca  Entidade cuja existência depende de estar associada. Modelo Entidade-Relacionamento . com uma outra entidade (entidade forte)  Exemplo  Considere o relacionamento dependência entre os conjuntos de entidades Empregado e Dependente  A existência de um dependente Bárbara  Dependente contém os dependentes dos empregados da empresa  Depende da existência de um empregado André e que  Bárbara esteja relacionada a André através do relacionamento dependência  Pelo atributo chave da entidade forte  Chave parcial Banco de Dados  Uma entidade fraca é identificada  Por estar relacionada com uma entidade forte  Atributos da própria entidade fraca  Francisco Alves Carneiro 38 . via um relacionamento (relacionamento de identificação).2.

2.Diagrama ER  Ferramenta de projeto  Capaz de capturar e representar graficamente toda estrutura lógica de um banco de dados  Utilizada para modelagem de BDs  Existem ferramentas  Fornecem uma interface gráfica para o desenvolvimento de DERs  A partir do DER especificado. Modelo Entidade-Relacionamento . geram o esquema do BD relacional  ERWin  DBDesigner  Francisco Alves Carneiro Banco de Dados 39 .

Diagrama ER  Notação Símbolo Representação Conjunto de entidades Conjunto de entidades fracas Conjunto de relacionamentos (relacionamento) Relacionamento de identificação Nome atributo  Francisco Alves Carneiro Atributo Banco de Dados 40 . Modelo Entidade-Relacionamento .2.

Modelo Entidade-Relacionamento .Diagrama ER  Notação Símbolo Representação Nome atributo Atributo chave Atributo derivado Atributo multivalorado Nome atributo * Nome atributo Nome atributo Atributo composto Nome atributo Nome atributo Banco de Dados 41  Francisco Alves Carneiro .2.

max) E2 Cardinalidade 1:N R E Restrição estrutural de participação de E em R E1 R E2 Banco de Dados Participação total de E2 em R 42  Francisco Alves Carneiro .Diagrama ER  Notação Símbolo Representação Nome atributo Atributo chave parcial de uma entidade fraca N E1 1 R (min.2. Modelo Entidade-Relacionamento .

É importante identificar o supervisor de cada funcionário  Todo funcionário deve estar lotado em um departamento. existe uma descrição e o valor correspondente  Francisco Alves Carneiro Banco de Dados 43 . data-nasc. Nenhum funcionário pode estar lotado em mais de um departamento  Um departamento possui no mínimo 5 empregados.Diagrama ER  Exercício  Utilize o DER para modelar o BD para o seguinte cenário  A empresa X tem seus dados organizados da seguinte forma:  Os empregados estão lotados em diversos departamentos.  Os dependentes dos funcionários devem possuir como atributos: nome.2. Modelo Entidade-Relacionamento . onde um deles é o gerente do departamento. A idade limite para ser dependente de um empregado é 18 anos  O salário de um empregado é calculado com base nos seus diversos vencimentos.  Para tipo de vencimento. Funcionários são diretamente chefiados por supervisores.

2. no mínimo.1) lotação (1.n) (1.Diagrama ER Quando um departamento for participar de lotação. cinco empregados Cod_venc descrição supervisiona é-supervisionado Vencimento é-supervisor dt_lotação (1. terá. Modelo Entidade-Relacionamento .1) (5.n) (0.n) (0.n) ganha valor (1.n) idade Departamento (0.1) Empregado matr nome dt_nasc dependência (1.1) nome (0.1)  Francisco Alves Carneiro gerência Banco de Dados Dependente 44 dt_nasc .

Diagrama ER Cod_venc descrição supervisiona é-supervisionado Vencimento é-supervisor dt_lotação n ganha valor n lotação 1 n Empregado 1 n 1 matr nome dt_nasc dependência 1 nome dt_nasc  Francisco Alves Carneiro Banco de Dados 45 Departamento 1 n idade gerência Dependente .2. Modelo Entidade-Relacionamento .

Propriedades Avançadas  Especialização  Existem conjuntos de entidades compostos de subgrupos de entidades  Cada subgrupo apresenta propriedades diferentes dos outros subgrupos  Considere o conjuntos de entidades Empregado na modelagem dos dados de um universidade  Podemos identificar os seguintes subconjuntos dentro de Empregado  Professores  Titulação  Universidade de titulação  Regime de trabalho (DE. Modelo Entidade-Relacionamento . secretária.2. etc…)  Especialidade  Engenheiros  Subconjuntos diferenciados por tipo de empregado  Francisco Alves Carneiro Banco de Dados 46 . 20h)  Escriturários  Grau de instrução  Área de atuação (contador. 40h.

)  Definição  Processo de identificação de subgrupos de entidades dentro de um conjunto de entidades  Processo de especialização pode ser recursivo  Um único conjunto de entidades pode ser especializado por mais de uma característica de diferenciação (especialização)  No exemplo de Empregado em uma universidade  Especialização por tipo de empregado  Especialização por tipo de contrato  CLT  Serviços prestados  Um entidade deve pertencer às várias especializações  Os subgrupos identificados em um processo de especialização podem participar de relacionamentos que não se aplicam a todas entidades do conjunto de entidades de origem  Francisco Alves Carneiro Banco de Dados 47 .2. Modelo Entidade-Relacionamento .Propriedades Avançadas  Especialização (cont.

Propriedades Avançadas  Especialização (cont. Modelo Entidade-Relacionamento .2.)  Notação MER Empregado is a (é um) Empregado is a Professor ou Empregado is a Escriturário ou Empregado is a Engenheiro ISA regime_tr Professor titulação uni_tit Escriturário Grau_ins área_atua Engenheiro especialidade 48  Francisco Alves Carneiro Banco de Dados .

)  Herança de propriedades  Os subgrupos de entidades herdam todas as propriedades do conjunto de entidade de mais alto nível Empregado matr nome dt_nasc ISA regime_tr Professor titulação uni_tit Escriturário Grau_ins área_atua Engenheiro especialidade 49  Francisco Alves Carneiro Banco de Dados .Propriedades Avançadas  Especialização (cont.2. Modelo Entidade-Relacionamento .

)  É realizada sobre um único conjunto de entidades  Identificar subgrupos  Ênfase nas diferenças entre entidades de um mesmo subconjunto de entidades  Através dos subgrupos mais especializados  Generalização  Processo de identificação de conjuntos de entidades que possuem características em comum  Mesmos atributos e participam de mesmos relacionamentos  Formação de um único conjunto de entidades de mais alto nível  É realizada sobre vários conjuntos de entidades  Identificar um conjunto de entidades de mais alto nível Banco de Dados 50  Francisco Alves Carneiro .Propriedades Avançadas  Especialização (cont.2. Modelo Entidade-Relacionamento .

Propriedades Avançadas  Generalização (cont. Modelo Entidade-Relacionamento .2.)  Ênfase nas similaridades entre diversos conjuntos de entidades  Redução de redundância de representação  Atributos compartilhados só serão representados no conjunto de entidades de nível mais alto  Não serão repetidos  Na prática  Generalização é o processo inverso da especialização  Duas estratégias que devem ser utilizadas  Especializar onde for necessário  Generalizar onde for possível  Francisco Alves Carneiro Banco de Dados 51 .

Modelo Entidade-Relacionamento . . E2. …... ij : Ei  Ej =   Nenhuma entidade de E pode pertencer a mais de um subgrupo  Francisco Alves Carneiro Banco de Dados 52 .Propriedades Avançadas  Especificação de restrições de generalização e especialização  Sejam E1.2... En  Disjunção  " 0<i.jn. En conjuntos de entidades de nível mais baixo que o conjunto de entidades E E ISA E1 E2 .

2.Propriedades Avançadas  Especificação de restrições de generalização e especialização  Completeza  Especifica se uma entidade de E tem que pertencer obrigatoriamente a um dos conjuntos de entidades de mais baixo nível ou não  Total  E= E i=1 n n i  Parcial  E E i=1 i  Francisco Alves Carneiro Banco de Dados 53 . Modelo Entidade-Relacionamento .

Clientes do BX estão relacionados a agência e conta  Estratégia 1 Agência 1 n Cliente n Conta  Francisco Alves Carneiro Banco de Dados 54 .Propriedades Avançadas  Agregação  Abstração que representa relacionamentos como entidades  Mecanismo utilizado para representar relacionamentos de relacionamentos  Exemplo  Considere a modelagem de dados em um banco BX. Modelo Entidade-Relacionamento .2.

cliente)  Uma conta pode pertencer a vários clientes  Vários acessos redundantes  Francisco Alves Carneiro Banco de Dados 55 .conta. Modelo Entidade-Relacionamento .)  Problemas na Estratégia 1  Não representa a estrutura lógica que deve ser modelada  Relacionamento de cliente com o relacionamento agência-conta  Na prática. para acessar todas as contas de uma agência  Terão que ser acessadas todas triplas (agência.Propriedades Avançadas  Agregação (cont.2.

2. Modelo Entidade-Relacionamento .)  Utilizar o mecanismo de agregação cod_ag nome ender gerente num_conta saldo Agência 1 n n Conta data_abertura cod_cliente CPF  Francisco Alves Carneiro n Cliente ender data-nasc nome Banco de Dados 56 .Propriedades Avançadas  Agregação (cont.

br  Francisco Alves Carneiro Banco de Dados 57 .Bancos de Dados I Parte II Francisco Alves Carneiro .FIC Faculdade Integrada do Ceará Sistemas de Informação alvesfa@fic.

Sumário F  Introdução aos Sistemas de Banco de Dados  Modelo de Entidades e Relacionamentos  Bancos de Dados Relacionais  O Modelo Relacional  Modelagem de Dados  Álgebra Relacional  Linguagem de Manipulação e Consulta  Projeto de Bancos de Dados Relacionais  Projeto Lógico de Bancos de Dados  Francisco Alves Carneiro Banco de Dados 58 .

Sumário  Introdução aos Sistemas de Banco de Dados F  Projeto de Bancos de Dados Relacionais  Bancos de Dados Relacionais  O Modelo Relacional  Modelagem de Dados  Álgebra Relacional  Linguagem de Manipulação e Consulta  Projeto Lógico de Bancos de Dados  Francisco Alves Carneiro Banco de Dados 59 .

Modelo Relacional .Introdução  Proposto em 1970 por Codd  IBM  Consolidou-se como principal modelo de dados para aplicações comerciais  Modelo de dados para Bancos de Dados Relacionais  SBDs relacionais  DB2 (IBM)  Informix  ADABAS  Sybase  Oracle  SQL Server (Microsoft)  Francisco Alves Carneiro Banco de Dados 60 .3.

Estrutura de um Banco de Dados Relacional  Um banco de dados relacional consiste  Um conjunto de tabelas Estudante Relações matr nome cpf  Tabelas 1 1 231  Conjunto de linhas 2 1 451 Tuplas 3 1 472 3 2 549  Linhas 3 3 465  Conjunto de colunas Nome das colunas Atributos 3.. 502 R Z. 1 R V. 50 R Y. 501 dt-nasc 20000102 19991001 19990510 19980601 20000203  Francisco Alves Carneiro Banco de Dados 61 . 501 R A. Modelo Relacional end R X.

Conceitos Básicos  Domínio  Conjunto de valores permitidos para um atributo Valores são atômicos Exemplo: Domínio do atributo matrícula  dom(A) denota o domínio do atributo A  Tipo de dados e formato Utilizados para especificar um domínio Exemplo: telefone Indivisíveis Conjunto de todos os valores válidos de matrícula tipo char com formato (ddd)ddd-dddd dom(telefone) representa o conjunto de valores atômicos válidos para o tipo char e formato especificado  O atributo Ai é um papel de D no esquema de R  Grau de R = número de Ai  Francisco Alves Carneiro Banco de Dados 62 . Modelo Relacional .3.

A2. An). …. Modelo Relacional .3. An uma lista de atributos  Francisco Alves Carneiro Banco de Dados 63 . onde R é nome de uma relação e A1.Conceitos Básicos  Esquema de relação  Utilizado para descrever uma relação  Representado por R(A1. A2. ….

…. vn>. t2. A2. onde cada vj  dom(Aj).3.Conceitos Básicos  Instância de Relação  Seja o esquema de relação R(A1. …. …. 0<jn  r representa a extensão para R r contém os dados R descreve os dados armazenados em r  Relação  Seja r uma relação com esquema R  r(R)  dom(A1) x dom(A2) x dom(A3) x … x dom(An) r(R) é um subconjunto do produto cartesiano dos domínios dos atributos que definem R cada tupla de r(R) relaciona valores dos vários domínios r(R) representa um conjunto de tuplas  Francisco Alves Carneiro Banco de Dados 64 r é uma relação (matemática) . v2. An)  Um instância de relação (ou relação) para este esquema r(R)={t1. tk} Cada ti representa uma n-tupla de n valores <v1. Modelo Relacional .

R2. onde Cada ri é uma instância de relação de Ri e Cada ri satisfaz as restrições de integridade especificadas em IC  Exercício  Considere uma banco de dados relacional DBR com as relações Empregado e Departamento  Construa um esquema S e mostre uma possível instância para DBR  Francisco Alves Carneiro Banco de Dados 65 .3. Rn} e um conjunto de restrições de integridade IC  Instância de um banco de dados relacional  Seja o esquema S  Uma instância DB para o esquema S DB={r1. …. rn} . Modelo Relacional . r2.Conceitos Básicos  Esquema de um banco de dados relacional  Conjunto de esquemas de relação mais um conjunto de restrições de integridade IC S={R1. ….

3.jn. Modelo Relacional . ij : ti[SC]  tj[SC] Super chave (superkey)  Francisco Alves Carneiro Banco de Dados 66 . tj  r 0<i.Conceitos Básicos  Restrições do modelo relacional  Restrição de domínio O valor de cada atributo A Tem que ser um valor atômico de dom(A)  Restrição de Chave Uma relação é definida como um conjunto de tuplas Elementos de um conjunto são distintos entre si Tuplas de uma relação têm que serem distintas entre si Duas tuplas em uma relação não podem ter a mesma combinação de valores para seus atributos Geralmente existe um subconjunto SC de atributos em um esquema de relação R Todas as tuplas de qualquer instância r(R) apresentam uma combinação diferente de valores para os atributos de SC  " ti.

ender.) Super chave pode apresentar atributos redundantes Empregado(matr.Conceitos Básicos  Restrições do modelo relacional (cont.condição necessária e suficiente para garantir a não existência de tuplas repetidas Chave candidata (candidate key) Atributos da super chave que podem funcionar como chave da relação Chave primária (primary key) Chave candidata escolhida como chave da relação Identifica tuplas em uma relação Garante a unicidade de uma tupla na relação  Francisco Alves Carneiro Banco de Dados 67 .)  Restrição de Chave (cont.cpf) Chave (key) Super chave sem atributos redundantes Para Empregado existem duas possíveis chaves matr ou cpf matr e cpf são atributos da super chave Apenas matr ou apenas cpf .nome.3. Modelo Relacional .

Modelo Relacional .Conceitos Básicos  Restrições do modelo relacional (cont.)  Restrição de Integridade de Entidade Especifica que nenhuma chave primária pode ter valor nulo (null) Garante que a chave primária identifique tuplas em uma relação  Restrição de Integridade Referencial Sejam dois esquemas de relação R e S Um conjunto de atributos FK de um esquema de relação R é chave estrangeira (foreign key) em R se Os atributos em FK têm o mesmo domínio que a chave primária PK de um outro esquema de relação S.3. e Um valor de FK em uma tupla t1 de r(R) Ou ocorre em como valor de PK para uma tupla t2 em s(S) t1[FK] = t2[PK] t1 referencia a tupla t2 ou é nulo Banco de Dados 68  Francisco Alves Carneiro .

então lotação é chave estrangeira em Empregado Deve ser garantido que o valor de lotação ou seja nulo ou referencie um valor existente em Departamento Integridade referencial Atualmente é garantida automaticamente pelos SGBD existente no mercado  Francisco Alves Carneiro Banco de Dados 69 .) Exemplo: Considere o seguinte esquema de banco de dados Departamento(cod_depart. nome.3.)  Restrição de Integridade Referencial (cont. Modelo Relacional . lotação) Se lotação referenciar cod_depart. ender) Empregado(matr.Conceitos Básicos  Restrições do modelo relacional (cont. ender. nome. cpf.

nome varchar(30) not null. lotação) Create table Departamento (cod_depart integer not null. ender varchar(30).)  Restrição de Integridade Referencial (cont.Conceitos Básicos  Restrições do modelo relacional (cont. ender. unique key (cpf). nome varchar(30) not null. ender varchar(30). ender) Empregado(matr. cpf integer not null. Modelo Relacional . primary key (cod_depart)) Create table Empregado (matr integer not null. nome. cpf.3. foreign key (lotação) references Departamento on delete cascade)  Francisco Alves Carneiro Banco de Dados 70 . nome. lotação integer not null. primary key (matr).) Exemplo: Considere o seguinte esquema de banco de dados Departamento(cod_depart.

. Modelo Relacional  Tratamento Rejeitar a inclusão Solicitar novas informações  Francisco Alves Carneiro Banco de Dados 71 .Operações de Atualização Inclusão  Insere t em r(R)  Lista de valores  Pode violar: Restrição de domínio Restrição de chave Integridade existencial Integridade referencial 3.

. Modelo Relacional  Tratamento Rejeitar a exclusão Propagação em cascata Mudar fk em R‟ que referencia R  Francisco Alves Carneiro Banco de Dados 72 .Operações de Atualização Exclusão  Exclui t em r(R)  Condição sobre valores de atributos  Pode violar: Integridade referencial 3.

Modelo Relacional  Modifica t[A1.Ak] em r(R)  Condição sobre valores de atributos  Alguns SGBDs: update=delete+insert  Violação + tratamento: Depende do atributo modificado Domínio para qualquer atributo PK = exclusão + inclusão FK = verificar integridade referencial  Francisco Alves Carneiro Banco de Dados 73 ......A2.Operações de Atualização Modificação 3.

4.Fases Mini-mundo (mundo real) Análise de Requisitos Requisitos de dados Independente do SGBD Específico para cada SGBD Análise Funcional Projeto Conceitual Esquema Conceitual (MER) Projeto Lógico (mapeamento de modelo de dados) Esquema Conceitual representado no modelo de dados do SGBD Projeto (Software) Projeto Físico Estruturas de armazenamento e caminhos de acesso (índices) Implementação Implementação  Francisco Alves Carneiro Banco de Dados Expressões DDL e carga do BD 74 . Projeto de Bancos de Dados .

Projeto de Bancos de Dados .Fases  Análise (especificação) de requisitos  Projetista de banco de dados deve realizar entrevista com usuários prospectivos do banco de dados Entender e documentar Requisitos de dados Projeto conceitual  Com base nos requisitos de dados Criar um esquema conceitual para o banco de dados Modelo de dados conceitual MER Construir um DER  Projeto lógico  Com base no DER definido na fase anterior Criar um diagrama relacional Representação gráfica de um esquema relacional  Francisco Alves Carneiro Banco de Dados 75 .4.

Fases  Projeto Físico  Definir estruturas de armazenamento Como e onde devem ser armazenadas as tabelas Uma tabela em um arquivo Várias tabelas em um único arquivo  Definir caminhos de acesso Definir índices Definir tipo de índice Ordenado Hash  Utilizar critérios de performance Específico por SGBD  Implementação  Com base no DR definido na fase 3 e as estruturas de armazenamento e caminhos de acesso definidos na fase anterior Criar o banco de dados Expressões DDL Carregar o BD Primário Secundário  Francisco Alves Carneiro Banco de Dados 76 .4. Projeto de Bancos de Dados .

- Mapeamento do MER para um Banco de Dados Relacional  Ferramentas CASE  Modelagem ER gráfica  Geração automática de esquema (DDL)  Algoritmo de mapeamento  Sete passos

4. Projeto de Bancos de Dados

 Francisco Alves Carneiro

Banco de Dados

77

- Mapeamento do MER para um Banco de Dados Relacional  Diagrama relacional (DR)  Ferramenta gráfica utilizada para representar um esquema de banco de dados relacional  A partir de um DER, pode-se construir um DR como

4. Projeto de Bancos de Dados

descrito a seguir

 Passo 1 Para cada conjunto de entidades E, deve ser criada uma tabela como todos os atributos de E
Escolher uma chave candidata para ser a chave primária da tabela Apenas os componentes atômicos de atributos compostos devem ser incluídos

Notação de tabela no DR
Nome da Tabela

 Francisco Alves Carneiro

Banco de Dados

78

- Mapeamento do MER para um Banco de Dados Relacional  Passo 2 Para cada relacionamento binário 1:1 entre os conjuntos de entidades E1 e E2
Escolher uma das tabelas, por exemplo E2, e incluir como chave estrangeira em E2 a chave primária da outra tabela (E1)
Critério de escolha >> Entidade com participação total no relacionamento

4. Projeto de Bancos de Dados

Atributos de relacionamentos devem ser incluídos na tabela com chave estrangeira

Notação E1
PK
 Francisco Alves Carneiro Banco de Dados 79

PK

E2

. Projeto de Bancos de Dados Notação E1 PK E2  Francisco Alves Carneiro Banco de Dados 80 .Mapeamento do MER para um Banco de Dados Relacional  Passo 3 Para cada relacionamento binário 1:N entre os conjuntos de entidades E1 e E2 Identificar o conjunto de entidades que participa do lado N (suponha que seja E2) Incluir como chave estrangeira na tabela E2 a chave primária da outra tabela (E1) Atributos de relacionamentos devem ser incluídos na tabela com chave estrangeira 4.

Projeto de Bancos de Dados Atributos de relacionamentos devem ser incluídos na tabela tab-aux Notação E1 PK-E1  Francisco Alves Carneiro Banco de Dados PK-E1 Tab-aux PK-E2 E2 PK-E2 81 ..Mapeamento do MER para um Banco de Dados Relacional  Passo 4 Para cada relacionamento binário N:N entre os conjuntos de entidades E1 e E2 Criar uma nova tabela auxiliar tab-aux para representar o relacionamento Incluir como chaves estrangeiras na tabela tab-aux as chaves primárias de E1 e E2 Estes dois atributos comporão a chave primária de tab-aux 4.

. Projeto de Bancos de Dados  Passo 6 Para cada conjunto de entidades fracas F Cria uma tabela TFr com todos os atributos de F Incluir como chave estrangeira de TF a chave primária da tabela correspondentes ao conjunto de entidades fortes R A chave primária de TFr será a chave parcial de F mais a chave primária de R  Francisco Alves Carneiro Banco de Dados 82 .Mapeamento do MER para um Banco de Dados Relacional  Passo 5 Para relacionamento de grau maior que 2 Criar uma nova tabela auxiliar tab-aux para representar o relacionamento Incluir como chaves estrangeiras na tabela tab-aux as chaves primárias das tabelas que participam do relacionamento Estes atributos comporão a chave primária de tab-aux 4.

Projeto de Bancos de Dados  Francisco Alves Carneiro Banco de Dados 83 .Mapeamento do MER para um Banco de Dados Relacional  Passo 7 Para cada atributo multivalorado A de um conjunto de entidades E1 Criar uma tabela T com o atributo A Incluir como chave estrangeira em T a chave primária de E1 A chave primária de T será composta do atributo A mais a chave primária de E1 4..

Mapeamento do MER para um Banco de Dados Relacional  Exercício  Construa o DR para o seguinte DER cod-ag nome ender gerente 4.. Projeto de Bancos de Dados num-conta saldo Agência 1 n n Conta data_abertura cod-cliente CPF nome  Francisco Alves Carneiro n Cliente ender data-nasc Banco de Dados 84 .

.Mapeamento do MER para um Banco de Dados Relacional cod-ag nome ender gerente num-conta saldo 4. num-conta Cliente_Conta cod-cliente cod-cliente CPF nome  Francisco Alves Carneiro Banco de Dados data-abert ender Cliente data-nasc 85 . Projeto de Bancos de Dados Agência cod-ag num-conta cod_ag Conta AG_CC tipo-conta cod-ag.

o tempo previsto para entrega e o tipo de transporte utilizado (aéreo. Para os fornecedores estaduais faz-se necessário indicar o estado de origem. considerando que cada entidade tem no mínimo 4 atributos fundamentais e execute o mapeamento para implementação em um BD relacional. Os fornecedores poderão ser locais ou estaduais. Os produtos são adquiridos em mais de um fornecedor. a taxa de ICMS do estado. Há fornecedores cadastrados que poderão não estar fornecendo produtos. terrestre ou marítimo). Elabore o projeto lógico da aplicação acima descrita.  Francisco Alves Carneiro Banco de Dados 86 . Modelo Relacional .Estudo de caso Controle de Fornecimento – Semântica da aplicação  A cada pedido está associado um ou mais produtos e pertence a     somente um cliente.3.

3.Álgebra Relacional - Coleção de operações usadas para manipular relações  O resultado de uma operação  op(r‟)  r‟‟  Grupos de operações  Operações relacionais Seleção. interseção. Modelo Relacional . junção  Operações de conjunto União. diferença. produto cartesiano  Operações especiais  Francisco Alves Carneiro Banco de Dados 87 . projeção.

Álgebra Relacional  Linguagem de consulta para bancos de dados relacionais Relação Consulta Relação  Coleção de operadores sobre relações  Desenvolvida por Codd  Linguagem procedimental  Operações básicas  Seleção ( s)  Projeção  União  Diferença  Produto cartesiano  Francisco Alves Carneiro (P) () (-) (x) Operações unárias Operações binárias Banco de Dados 88 . Modelo Relacional .3.

 (not)  Francisco Alves Carneiro Banco de Dados 89 .Álgebra Relacional [Operações Básicas]  Operação de seleção  Seleciona um subconjunto de tuplas de uma relação Com base em um predicado  Notação P (r) r é uma relação e P representa um predicado (condição de seleção) Predicados são construídos através de átomos Átomos t[Ai] q t[Ak] . .. <. P1 P2 e P1 também são fórmulas Átomos podem ser conectados por  (and).  3. . t  r e Ai e Ak são atributos de r. >. Modelo Relacional s Regras para construção de fórmulas  Todo átomo é uma fórmula Os atributos devem possuir domínios iguais  Se P1 e P2 são fórmulas  P1  P2. onde k é uma constante O símbolo q denota um operador de comparação =. t[Ai] q k.  (or).

Modelo Relacional Empregado(matr.. cpf. salário. nome. lotação) Listar todos os empregados que ganham salário maior que 5000 Listar todos os empregados do departamento com código igual a 002 e que ganham salários maior que 5000  ssalário>5000 (Empregado) Listar todos os empregados não lotados no departamento com código igual a 002 e que ganham salários entre 5000 e 10000  Francisco Alves Carneiro Banco de Dados 90 . ender.)  Exemplo Considere a relação Empregado 3.Álgebra Relacional [Operações Básicas]  Operação de seleção (cont.

)  Propriedade da seleção 3.Álgebra Relacional [Operações Básicas]  Operação de seleção (cont. Modelo Relacional sq1q2(r)  sq1(sq2(r)) sq1(sq2(r))  sq2(sq1(r)) Comutatividade da operação de seleção  Francisco Alves Carneiro Banco de Dados 91 ..

An) {Ai1. …. Ai . Ain}  {A1. Ain Pnome. A2.. …. Ai (r) r é uma relação com esquema R(A1. An} Projeção de R sobre os atributos Ai1. Modelo Relacional  Exemplo Listar o nome e salário de todos os funcionários Listar nome e salário de todos os empregado que ganham salário maior que 9000 Projeção Filtro de atributos Seleção  Filtro de tuplas  Francisco Alves Carneiro Banco de Dados 92 . salário (Empregado) 1 2 n 3. Ai2. Ai2. …. A2.…. ….Álgebra Relacional [Operações Básicas]  Operação de Projeção  Seleciona um subconjunto de atributos de uma relação  Notação PAi .

ender. dt-nasc (Empregado)  Pnome-dep. Bn) são compatíveis Apresentam o mesmo número de atributos dom(Ai)= dom(Bi). …. matr-resp) Pnome. …. An) e S(B1. cpf. B2. data-nasc. 0<in  Notação r  s  Exemplo Considere as seguintes relações 3. salário. A2. Modelo Relacional Liste o nome e data de nascimento de todos os funcionários e dependentes existentes na empresa Empregado(matr. nome. lotação) Dependente(nome-dep.. dt-nasc.Álgebra Relacional [Operações Básicas]  Operação de União  Executa a união de duas relações compatíveis  Duas relações com esquemas R(A1. data-nasc (Dependente)  Francisco Alves Carneiro Banco de Dados 93 .

. Listar nomes de empregados.Álgebra Relacional [Operações Básicas]  Operação de Diferença  O resultado da operação r .s é uma relação que contém todas as tuplas de r que não pertencem a s r e s são relações compatíveis  Exemplo Considerando que na empresa só existam as relações Empregado e Dependente que referem-se a pessoas. desde que não existam dependentes com mesmo nome Pnome (Empregado) . execute a seguinte consulta.Pnome-dep (Dependente) 3. Modelo Relacional  Francisco Alves Carneiro Banco de Dados 94 .

0<in. …. B2. A2.A1. tal que t[Ai]=v[Ai]. …. An) e S(B1.Bm) com n+m atributos cada tupla de T é uma combinação entre uma tupla de r e uma tupla de s tT  $v  r e $u  s. r. s.A2. Modelo Relacional  Francisco Alves Carneiro Banco de Dados 95 . s. s. …..B1. 0<jm Se a cardinalidade de r é nr tuplas e a cardinalidade s é ns tuplas A cardinalidade de T é nr* ns 3. Bm).An.B2. e t[Bj]=u[Bj].Álgebra Relacional [Operações Básicas]  Operação de Produto Cartesiano  Sejam r e s relações com esquemas R(A1. …. r. respectivamente  Resultado da operação r x s é uma relação T(r.

.Álgebra Relacional [Operações Básicas]  Operação de Produto Cartesiano (cont.A s.C c1 c3 c4 c1 c3 c4 c1 c3 c4 96  Francisco Alves Carneiro Banco de Dados .B 3.A r. Modelo Relacional A a1 a1 a2 B b1 b2 b1 A a1 a2 a2 B b1 b3 b1 C c1 c3 c4 a1 a1 a1 a1 a1 a1 a2 a2 a2 b1 b1 b1 b2 b2 b2 b1 b1 b1 a1 a2 a2 a1 a2 a2 a1 a2 a2 b1 b3 b1 b1 b3 b1 b1 b3 b1 s.)  Exemplo Sejam r e s mostradas abaixo.B s. Calcule r x s rxs r s r.

A1. r. sempre que a combinação satisfaça condição de junção  Francisco Alves Carneiro Banco de Dados 97 . <. respectivamente  O resultado da operação junção theta entre r e s é uma relação T(r.A2. Bm).Bj. Modelo Relacional r s = scondição (r x s) condição de junção é da forma r.Álgebra Relacional [Operações Derivadas]  Operação de junção theta (theta-join)  Sejam r e s relações com esquemas R(A1.Ag q s. } condição cada tupla de T é uma combinação entre uma tupla de r e uma tupla de s.Ah q s. r.Bk .BL  Para cada r. …. >. …. …. s. s.An.B1.B2.Ai q s. s.Bi  r. . A2. r.. dom(r.Am q s. …..BJ) e q{=. B2.Bm) definida por 3.Ai) = dom(s.. . An) e S(B1.

B s.B s 3.C a2 b3 c3 a1 b1 c1 a2 b3 c3 a2 b1 c4 a2 b3 c3  Francisco Alves Carneiro Banco de Dados 98 .B  s. Modelo Relacional r s T A a1 a1 a2 B b1 b2 b1 A a1 a2 a2 B b1 b3 b1 C c1 c3 c4 r.A s.)  Exemplo Sejam r e s mostradas abaixo.Álgebra Relacional [Operações Derivadas]  Operação de junção theta (cont.B b1 b2 b2 b2 b1 s. Calcule T= r r..A a1 a1 a1 a1 a2 r.

r. respectivamente  O resultado da operação junção de igualdade entre r e s é uma relação T(r. A2.Bk  …  r. ….Bi  r. Modelo Relacional r s = scondição (r x s) condição de junção é da forma r.Ag = s.An.B2.Álgebra Relacional [Operações Derivadas]  Operação de Junção de Igualdade (Equijoin)  Operação de junção theta.A2.Bm) definida por 3.A1. …. Bm).Ai=s.Am = s. s. s. dom(r.Ai) = dom(s.BL  Para cada r.B1. An) e S(B1.BJ) condição Banco de Dados  Francisco Alves Carneiro 99 . …. cujo operador de comparação é a igualdade (=)  Sejam r e s relações com esquemas R(A1. s.Ah = s. …..BJ. r. B2.

Modelo Relacional Departamento cod-dep 1 2 3 nome Informática R. 2 gerente 21 11 40 Empregado Matr 11 21 33 35 37 40 57 Nome Bárbara André Sofia Lucas Rebeca Caio Yasmin cpf 231 451 472 549 465 555 800 salário lotação 8000 2 9000 1 3000 2 500 2 400 3 800 1 400 1  Francisco Alves Carneiro Banco de Dados 100 .lotaçãoEmpregado 3. Humanos Financeiro ender R.)  Exemplo  Considere as relações Departamento (d) e Empregado (e) mostradas abaixo.5 R.Álgebra Relacional [Operações Derivadas]  Operação de Junção de Igualdade (cont.cod-dep=e. Y.10 R.. Z. Calcule a seguinte junção de igualdade Departamento d. X.

gerente e.10 21 2 R.cod-dep d. Humanos R.lotação 21 André 451 9000 1 1 Informática R. listar seu nome e o nome do departamento onde está lotado. Y.  Francisco Alves Carneiro Banco de Dados 101 .)  Exemplo Departamento d.lotação Empregado d.cod-dep=e.nome d.salário e.lotação Empregado) Para cada empregado.nome e. Y.10 21 57 Yasmin 800 400 1 1 Informática R. X. X. Y..Álgebra Relacional [Operações Derivadas]  Operação de Junção de Igualdade (cont.cpf e.5 11 11 Bárbara 231 8000 2 2 R. Humanos R. X.matr e.nome.nome (Departamento d. Z. Humanos R.5 11 35 Lucas 549 500 2 3 Financeiro R.d.cod-dep=e.5 11 33 Sofia 472 3000 2 2 R.10 21 40 Caio 555 800 1 1 Informática R. Modelo Relacional Pe. ender d. 2 40 37 Rebeca 465 400 3 3.

….Bi 102  Francisco Alves Carneiro .An. respectivamente  O resultado da operação junção natural entre r e s é uma relação T(r. …. Bi. ….C1. C1. r. ….A2..B1  r.C2. B1. B2.B1 = s. An.B2 = s.Bi = s. Bi.B1. s. Bi) e S(B1. r. A2. C2.s. Modelo Relacional Aparecem só uma vez na relação resultado  Sejam r e s relações com esquemas R(A1. …. ….Álgebra Relacional [Operações Derivadas]  Operação de Junção Natural (Natural Join)  Operação de junção de igualdade Todos os com o mesmo nome nas duas relações Participam obrigatoriamente da condição de junção 3.A1.B2  … condição Banco de Dados  r. Cm). B2. B2.s.Cm) definida por Envolvidos no operador de comparação (=) r  Notação r s s = scondição (r x s) condição de junção é da forma r. ….

Humanos Financeiro ender R. Z. X.. Calcule a seguinte junção de igualdade Departamento Empregado 3.Álgebra Relacional [Operações Derivadas]  Operação de Junção Natural (cont.5 R. Y. 2 gerente 21 11 40 Empregado Matr 11 21 33 35 37 40 57 Nome Bárbara André Sofia Lucas Rebeca Caio Yasmin cpf 231 451 472 549 465 555 800 salário cod-dep 8000 2 9000 1 3000 2 500 2 400 3 800 1 400 1  Francisco Alves Carneiro Banco de Dados 103 .)  Exemplo  Considere as relações Departamento (d) e Empregado (e) mostradas abaixo. Modelo Relacional Departamento cod-dep 1 2 3 nome Informática R.10 R.

Modelo Relacional e. ender d. gerente 1 Informática R.Álgebra Relacional [Operações Derivadas]  Operação de Junção de Igualdade (cont.10 21 2 R.salário 21 André 451 9000 40 Caio 555 800 57 Yasmin 800 400 11 Bárbara 231 8000 33 Sofia 472 3000 35 Lucas 549 500 37 Rebeca 465 400  Francisco Alves Carneiro Banco de Dados 104 ..5 11 3 Financeiro R.cpf e. Y. X. 2 40 3.matr e. Humanos R.)  Exemplo Departamento Empregado d.nome e. Humanos R.10 21 1 Informática R. X. Humanos R.10 21 1 Informática R. Y. Z.5 11 2 R. Y.cod-dep d. X.nome d.5 11 2 R.

Modelo Relacional r qs = PR (r q s) q representa uma condição de junção qualquer  Operação de Interseção  O resultado da operação r  s é uma relação que contém todas as tuplas de r e que pertencem a s r e s são relações compatíveis  O resultado de r  s é definido por r  s= r ..(r-s)  Francisco Alves Carneiro Banco de Dados 105 .Álgebra Relacional [Operações Derivadas]  Operação de Semi-Junção (Semi-join)  Definida por 3.

…. An). A2. todos os valores de v precisam aparecer em R em associação com toda tupla de S  Exemplo 1 r s A B C rs C a1 a1 a1 a1 a2 b1 b3 b3 b3 b2 c1 c1 c2 c3 c3 c1 c2 c3 3. A2. B1. onde. B2. Modelo Relacional A a1 B b3  Francisco Alves Carneiro Banco de Dados 106 . Bm) e S(B1. B2. para uma tupla v pertencer a T. …..Álgebra Relacional [Operações Derivadas]  Operação de divisão  Sejam r e s relações com esquemas R(A1. …. Bm). respectivamente  Resultado da operação r  s É uma relação T(A1. …. An.

Álgebra Relacional [Operações Derivadas]  Operação de divisão (cont.)  Exemplo 2 r s A B C a1 a1 a2 a2 a2 a2 b1 b3 b3 b3 b1 b1 c1 c1 c1 c2 c1 c2 C c1 c2 3. Modelo Relacional rs A a2 a2 B b3 b1  Exemplo 3 s Considere a relação r do exemplo 2 e a relação s abaixo. Calcule r  s rs B b3 C c1 Banco de Dados A a1 a2 107  Francisco Alves Carneiro ..

onde Emp-Desc matr Cod-desc 3.)  Exemplo Considere as tabelas Emp-Desc(matr. Modelo Relacional A tabela Emp-Desc relaciona os empregados com os diversos descontos que é obrigado a pagar 2 3 1 2 3 2 Desconto Cod-desc 11 11 15 15 15 17 Valor 10 8 5 descrição IR INSS seguro 1 2 3 Exercício: Utilizando a definição de divisão..Álgebra Relacional [Operações Derivadas]  Operação de divisão (cont.valor. mostrar passo a passo como é encontrado os empregados que têm descontados de seu salário todos os tipos de descontos possíveis  Francisco Alves Carneiro Banco de Dados 108 .descrição).cod-desc) e Desconto(cod-desc.

Álgebra Relacional [Outras Operações]  Funções Agregadas  Funções aplicadas sobre uma coleção de valores do banco de dados  sum Retorna o somatório dos valores de uma coleção  avg Retorna a média dos valores de uma coleção  max Retorna o maior valor de uma coleção de valores  min Retorna o menor valor de uma coleção  count Retorna o número de elementos de uma coleção  distinct Algumas vezes. torna-se necessário eliminar repetições para o cálculo das funções agregadas Concatena-se a palavra distinct após o nome da função 3. Modelo Relacional  Francisco Alves Carneiro Banco de Dados 109 ..

.)  Exemplos Considere a relação Empregado(matr. nome. cpf. ender. lotação) 3. Modelo Relacional Encontre o número de empregados lotados no departamento 001 count(Pmatr(slotação=001 (Empregado))) Encontre o maior salário da empresa matr é a chave primária de Empregado max(Psalário(Empregado)) Encontre o salário médio da empresa avg-distinct(Psalário(Empregado)) Encontre a quantidade de salários distintos no departamento 001 count-distinct(Psalário(slotação=001 (Empregado))) Encontre o primeiro e segundo maiores salários da empresa  Francisco Alves Carneiro Banco de Dados 110 .Álgebra Relacional [Outras Operações]  Funções Agregadas (cont. salário.

lotação) Vendas(matr-vend.nome.pr-venda) 3.quantidade. salário. nome.cod-item. cpf. pr-venda)  Considere a seguinte consulta Listar o histórico de vendas de cada vendedor Esquema do resultado Res(matr.cod-item.. Modelo Relacional PRes(Vendedor Vendas) Consulta com perda de informação Não aparecerão no resultado Vendedores que não efetuaram vendas Definir uma operação que evite esta perda de informação Outer join Adicionar tuplas extras ao resultado de uma junção natural  Francisco Alves Carneiro Banco de Dados 111 .quantidade. ender.Álgebra Relacional [Outras Operações]  Operação de Junção Externa (outer-join)  Considere as seguintes relações Vendedor(matr.

Álgebra Relacional [Outras Operações]  Operação de outer-join (cont.)  Tipos Junção externa à esquerda (left outer join) Junção externa à direita (right outer join) Junção externa completa (full outer join)  left outer join Notação A B 3. Modelo Relacional Calcula o resultado da junção de A com B Adiciona ao resultado da junção Tuplas da relação à esquerda (A) que não satisfazem a condição de junção Atribui valores nulos aos atributos não definidos para estas tuplas  Francisco Alves Carneiro Banco de Dados 112 ..

Álgebra Relacional [Outras Operações]  Operação de outer-join (cont. nome.50 15.)  left outer join (cont.) Considere as seguintes relações 3.00 15.qtde.. Modelo Relacional Vendedor(matr. salário) Vendas(matr.cod-item.50 8.75 11 11 14 21  Francisco Alves Carneiro Banco de Dados 113 . pr-venda) Listar o histórico de vendas de cada vendedor Vendedor matr 11 14 15 17 19 21 nome Bárbara André Sofia Caio Lucas Camila salário 5000 7000 3000 500 700 900 Vendas matr cod-item 72727 545 545 13 qtde 160 50 87 10 pr-venda 2.

50 Null Null Null 8.Álgebra Relacional [Outras Operações]  Operação de outer-join (cont..50 15.) Listar o histórico de vendas de cada vendedor Vendedor matr 11 11 14 15 17 19 21 nome Bárbara Bárbara André Sofia Caio Lucas Camila 3.75  Francisco Alves Carneiro Banco de Dados 114 .00 15.)  left outer join (cont. Modelo Relacional Vendas salário 5000 5000 7000 3000 500 700 900 cod-item 72727 545 545 Null Null Null 13 qtde 160 50 87 Null Null Null 10 pr-venda 2.

Modelo Relacional  full outer join Notação A B Calcula o resultado da junção de A com B Adiciona ao resultado da junção Tuplas das relações A e B que não satisfazem a condição de junção Atribui valores nulos aos atributos não definidos para estas tuplas Banco de Dados 115  Francisco Alves Carneiro .)  right outer join Notação A B Calcula o resultado da junção de A com B Adiciona ao resultado da junção Tuplas da relação à direita (B) que não satisfazem a condição de junção Atribui valores nulos aos atributos não definidos para estas tuplas 3..Álgebra Relacional [Outras Operações]  Operação de outer-join (cont.

SQL  Desenvolvida pela IBM Structured English Query Language ..Histórico  Structured Query Language . SQL  Especificar consultas de forma interativa ad hoc queries  Padrão  ANSI SQL 86 SQL 89 SQL 92 SQL 99 Propriedade de SBDs objeto-relacional Banco de Dados 116  Francisco Alves Carneiro .Sequel Linguagem de consulta para o sistema R Primeiro protótipo de SBD relacional 5.

. SQL  Expressões DDL do SQL permitem especificar  Esquema de relações(tabelas)  Domínio de valores associados a cada atributo  Restrições de integridade  Conjunto de índices a serem mantidos para cada relação  Estrutura de armazenamento físico de cada relação em disco  Autorização de acesso para cada relação  Francisco Alves Carneiro Banco de Dados 117 .Definição de Esquemas em SQL  Esquema de um banco de dados relacional  Conjunto de esquemas de relação mais um conjunto de restrições de integridade IC 5.

1998‟) 118 real date  Francisco Alves Carneiro Banco de Dados . 1998‟) •Numeric date formats ( „4/15/1998‟. „December 12.d) string de caracteres de tamanho variável (máximo n) numérico com p dígitos Dos p dígitos. SQL varchar(n) Integer (Int) smallint decimal(p. d dígitos representam casas decimais após a vírgula numérico ponto flutuante data de calendário •Alphabetic date formats ( „April 15.Definição de Esquemas em SQL  Criando tabelas (cont. „April 15.. 1998‟) •Unseparated string formats („19981207‟.)  Alguns tipos de dados suportados pelo SQL 92 char(n) string de caracteres de tamanho fixo n 5.

nome-coluna}) | FOREIGN KEY (nome-coluna {. [nome-coluna tipo-de-dados [not null] … ]. de restrições [ON UPDATE CASCADE].Definição de Esquemas em SQL  Criando Objeto  Estrutura básica CREATE <nome do Objeto> [Caracteristicas] Ex: CREATE DATABASE <nome do banco> CREATE TABLE< nome-tabela> (nome-coluna tipo-de-dados [not null]. SQL 119 . | CHECK (predicado) )  Francisco Alves Carneiro Banco de Dados 5. nome-coluna}) REFERENCES nome-tabela Definição [ON DELETE CASCADE | SET NULL | NO ACTION ].. [CONSTRAINT nome-restrição] Especifica UNIQUE nome-coluna chaves candidatas | PRIMARY KEY(nome-coluna {.

nome)  produto (codigo_prod.. SQL  Francisco Alves Carneiro Banco de Dados 120 . quant) Restrição:quant>=5  ped_prod (cod_ped. quant) Restrição: quant>0 5. data.)  Exemplo: Considere o seguinte esquema de banco de dados fornecimento: pedido(codigo. cod_cli) Restrição: codigo>0  cliente(cod_cli.Definição de Esquemas em SQL  Criando tabelas (cont. cod_prod. nome.

SQL  Francisco Alves Carneiro Banco de Dados 121 .Definição de Esquemas em SQL  Removendo tabelas  Estrutura básica DROP TABLE nome-tabela Remove todas as tuplas da tabela e a definição da tabela do catálogo  Alterando tabelas  Estrutura básica ALTER TABLE nome-tabela [ADD nome-coluna tipo de dados] [ADD CONSTRAINT nome-restrição] [DROP CONSTRAINT nome-restrição] [DROP nome da coluna] [ repetir ADD ou DROP em qualquer ordem] 5..

. SQL INSERT INTO <nome da tabela> VALUES (<valores dos atributos>)  ALTERANDO DADOS UPDATE <nome da tabela> SET <nome da coluna> WHERE <condição> EXCLUINDO DADOS DELETE FROM < nome da tabela> WHERE <condição para determinas as linhas a serem excluidas>  Francisco Alves Carneiro Banco de Dados 122 .Conjunto de Operações para Manipulação de Dados  INSERINDO DADOS NA TABELA 5.

.especifica as colunas a serem recuperadas (*=todas)  FROM – especifica a(s) tabela(s)  WHERE – especifica o criterio de seleção  GROUP BY – agrupa dados por coluna  HAVING – especifica criterios para consultas agregadas  ORDER BY . SQL  Estrutura básica para recuperar dados de uma ou mais tabelas  SELECT.Conjunto de Operações para Manipulação de Dados  Consultas simples sobre o banco de dados 5.especifica a ordem dos valores retornados  Francisco Alves Carneiro Banco de Dados 123 .

40 de Dados Banco 124 . nome-tabela [[AS] qualificador] …} 5. expr [[AS] c_alias] … }} FROM nome-tabela [[AS] qualificador] {. SQL WHERE predicado  ALL Retorna todas as tuplas..Conjunto de Operações para Manipulação de Dados  Consultas simples sobre o banco de dados  Estrutura básica SELECT [ALL | DISTINCT] {* | expr [[AS] c_alias] {. inclusive repetidas (default)  DISTINCT Retorna apenas tuplas não repetidas * Retorna todos os atributos da(s) tabela(s)  expr Representa um atributo ou Expressão matemática envolvendo atributos das tabelas  Francisco Alves Carneiro salario*1.

)  FROM Representa o produto cartesiano das tabelas referenciadas  WHERE Corresponde ao predicado de seleção da álgebra relacional  Exemplos: Considere o seguinte esquema de banco de dados 5. SQL Listar os funcionários com salario maior que 3000 Listar funcionários com salários maior que 1000 e menor que 2000 Listar nome dos funcionários com o nome de seu departamento de lotação Listar nome dos funcionários com o nome de seu departamento de lotação e uma simulação de seu salário com um aumento de 15%  Francisco Alves Carneiro Banco de Dados 125 Departamento(cod-depart. ender) Empregado(matr.lotação) . nome.salário. cpf. ender.. nome.Conjunto de Operações para Manipulação de Dados  Consultas simples sobre o banco de dados (cont.

Visões  Tabelas virtuais  Derivadas de tabelas base através de comandos SQL  Limitações de atualização  Interessantes para consultas freqüentes  Francisco Alves Carneiro Banco de Dados 126 .

Especificação de Visões CREATE VIEW INFO_DEP (DNome.Codigo = Empregados. Empregados WHERE Departamentos. SalTotal) AS SELECT DNome. NEmp. COUNT(*). SUM(Salario) FROM Departamentos.DCod GROUP BY DNome Recupere o nome dos departamentos que têm menos de 10 empregados SELECT DNome FROM Info_Dep WHERE NEmp < 10  Francisco Alves Carneiro Banco de Dados 127 .

CHECK (salario <= 11000. sexo CHAR. salario DECIMAL(6. ...00). .CHECK O salário de um empregado não pode ser maior do que R$11000. „F‟ ) ) )  Francisco Alves Carneiro Banco de Dados 128 ..00 e ele só pode ser homem ou mulher CREATE TABLE Empregados ( .2)..... CHECK (sexo IN ( „M‟...

s:  create domain salario-hora numeric(5. Ex.2) constraint test-val-pag check(value >= 4.00)  create domain numero-conta char(10) constraint test-null-num-conta check(value not null)  create domain sexo-pessoa char(1) constraint test-sex-pessoa check(value in(“M”.Definição de Novos Domínios  SQL-92 permite a definição de novos domínios para os atributos. “F”))  Francisco Alves Carneiro Banco de Dados 129 .

CONSTRAINT pk PRIMARY KEY (Mat). Nome: VARCHAR(40) NOT NULL. Sal-hor: salario-hora NOT NULL. CONSTRAINT depart_fk FOREIGN KEY (CDep) REFERENCES Departamento (Codigo) )  Francisco Alves Carneiro Banco de Dados 130 .Definição de Novos Domínios-1 CREATE TABLE Empregado ( Mat: CHAR(5) NOT NULL. CDep: CHAR(3).

)  Francisco Alves Carneiro Banco de Dados 131 . Nome_Cli: VARCHAR(40) NOT NULL.Definição de Novos Domínios-2 CREATE TABLE Cliente ( CPF: CHAR(11) NOT NULL. Num_Conta: numero-conta NOT NULL. Sexo: sexo-pessoa. CONSTRAINT pk PRIMARY KEY (CPF).

Empregados E.Salario AND E.Salário > G.Codigo AND D.CPF) )  Francisco Alves Carneiro Banco de Dados 132 .Gerente = G. Empregados G WHERE E.CDep = D.Asserções O salário de um empregado não pode ser maior do que o salário do gerente do departamento em que ele trabalha CREATE ASSERTION SalEmp CHECK ( NOT EXISTS (SELECT * FROM Departamentos D.

Stored Procedures  Coleção denominada de comandos Aplicação      exec procedure retorna resultado SQL Mecanismo semelhante ao RPC Código sob o controle do SGBD Passagem de parâmetros 1 chamada  n procedures Diminui tráfego de rede Stored Procedures  Francisco Alves Carneiro Banco de Dados 133 .

Stored Procedures  Funções  Regras de negócio e integridade dos dados no SGBD  Administração do sistema  Lado “servidor” da lógica da aplicação  Características  Comandos SQL compartilhados por aplicações  Melhor desempenho em ambientes C/S  Melhora autonomia de sítio  Francisco Alves Carneiro Banco de Dados 134 .

Stored Procedures  Menor flexibilidade  Pode piorar desempenho se o plano de execução não for periodicamente refeito  Cada procedure é por default uma transação separada  Falta de padronização!!!  Francisco Alves Carneiro Banco de Dados 135 .

„sistema%‟ CREATE PROCEDURE mathtutor @m1 smallint. @result smallint OUTPUT AS SELECT @result = @m1 * @m2 GO  Francisco Alves Carneiro Banco de Dados 136 . @m2 smallint.Microsoft SQL Server  Stored Procedures > EXEC livro_res 7498.

@guess GO  Francisco Alves Carneiro Banco de Dados 137 . @guess OUTPUT SELECT „O resultado é „. 6.Microsoft SQL Server  Stored Procedures DECLARE @guess smaliint SELECT @guess = 50 EXECUTE mathtutor 5.

Triggers insert update delete Eventos Reação automática a eventos monitorados Comando SQL Stored Procedure  Francisco Alves Carneiro Banco de Dados 138 .

Triggers Usar 650 parafusos “estoque de parafusos: 850” = > comprar 1000 SGBD Ativo parafusos 1500 850 Se quantidade de parafusos em estoque é menor que 1000. então “acordar” comprador  Francisco Alves Carneiro Banco de Dados 139 .

Exemplo Notificar o gerente se qualquer empregado do seu departamento tem o salário maior do que o seu DEFINE TRIGGER Departamentos D. Empregados G: WHERE E.Salario AND E.Salario > G.Codigo AND D.  Francisco Alves Carneiro Banco de Dados 140 .CPF ACTION_PROCEDURE(NOTIF_GERENTE(D.CDep = D.Gerente = G. Empregados E.Trigger .Gerente).

 Francisco Alves Carneiro Banco de Dados 141 .Microsoft SQL Server  Triggers (Gatilhos) l Um trigger é um tipo especial de stored procedure que é invocado (disparado) quando ocorre uma tentativa de modificação nos dados da tabela (relação) à qual ele está associado (vinculado). Isto ocorre quando modificações são feitas na tabela usando-se as cláusulas (operações) INSET. UPDATE ou DELETE.

tais como automaticamente atualizar um resumo dos dados. l Caso a execução de um trigger possa violar alguma restrição então ele não será executado. ou para ações complexas. l São automaticamente disparados pelo SQL Server l Não podem ser executados diretamente por um usuário  Francisco Alves Carneiro Banco de Dados 142 .Microsoft SQL Server  Triggers (Gatilhos) l Os triggers são usados para garantir regras de negócio e integridade dos dados.

Microsoft SQL Server  Triggers (Gatilhos) CREATE TRIGGER update_usuario ON usuario FOR UPDATE AS IF UPDATE (num_usuario) BEGIN RAISERROR(„Tabela não pode ser atualizada‟) ROLLBACK TRANSACTION END  Francisco Alves Carneiro Banco de Dados 143 .

num_usuario = inserted. inserted WHERE usuario.Microsoft SQL Server  Triggers (Gatilhos) CREATE TRIGGER insert_reserva ON reserva FOR INSERT AS IF (SELECT COUNT(*) FROM usuario. num_usuario) =0 BEGIN PRINT „A atualização não pode ser executada‟ PRINT „Nenhuma entidade USUÁRIO para esta RESERVA‟ ROLLBACK TRANSACTION END  Francisco Alves Carneiro Banco de Dados 144 .

‟ PRINT „Este usuário possui livro não devolvido‟ ROLLBACK TRANSACTION END  Francisco Alves Carneiro Banco de Dados 145 . num_usuario) > 0 BEGIN PRINT „A transação não pode ser executada. deleted WHERE emprestimo.Microsoft SQL Server  Triggers (Gatilhos) CREATE TRIGGER delete_usuario ON usuario FOR DELETE AS IF (SELECT COUNT(*) FROM emprestimo.num_usuario = deleted.

num_usuario = deleted.Microsoft SQL Server  Triggers (Gatilhos) ELSE DELETE reserva FROM reserva.num_usuario  Francisco Alves Carneiro Banco de Dados 146 . deleted WHERE reserva.

 Notação: (α ⊆ R e β ⊆ R)  α → β acontece em R. então t1[β] = t2[β]  Usando a notação de dependência funcional  K é uma superchave de R se K → R  F é o conjunto das dependências funcionais  Francisco Alves Carneiro Banco de Dados 147 .Dependências Funcionais  É uma generalização da noção de Chave. se para todo par de tuplas t1 e t2 em R tal que t1[α] = t2[α].

You're Reading a Free Preview

Descarregar
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->