Lógica - ic.ufmt

Propaganda
Universidade Federal de Mato Grosso
Instituto de Computação
Pós Graduação Lato Sensu em Banco de Dados
Fundamentos de Banco de Dados
e
Modelagem de Dados
Prof. Dr. Josiel Maimone de Figueiredo
[email protected]
Abril - 2015
Pós Graduação Lato Sensu em Banco de Dados
Disciplina: Fundamentos de Banco de Dados e
Modelagem de Dados
Aula 4
Modelagem de Dados
com Modelo Relacional
Abril – 2015
Tópicos
➔
Conceitos básicos
➔
O que é Modelagem Lógica
➔
Modelo Relacional
➔
Mapeamento: Conceitual para Lógica
➔
MER → Modelo Relacional
➔
Exemplos
➔
Exercícios
O que é Modelagem
➔
Arquitetura de Banco de Dados
Conceitual
MER ou UML
Aplicação
Conexão
Lógica
SGBD
Física
Modelo Relacional
Visão
O que é Modelagem
Visão
Conceitual
Aplicação
Conexão
Lógica
SGBD
Física

Para implementar os sistemas
temos de
 usar uma linguagem de
programação
 é preciso modelar a
manipulação dos dados pela
linguagem
 Diagrama de Classes
O que é Modelagem
Visão
Conceitual
Aplicação
Conexão
Lógica
SGBD
Física

Para armazenar os dados
temos de
 usar um SGBD
 é preciso modelar conforme
modelo de dados do SGBD
 Modelo Relacional
 Modelo Relacional-Objeto
 Modelo Orientado a
Objetos
O que é Modelagem
Visão
Conceitual
Aplicação
Conexão
Lógica
SGBD
Física

É preciso transformar os
dados da aplicação para
permitir o armazenamento
 Modelo de Persistência
 mapeamento entre
modelos
Artefatos
[Amber2001]
Modelo Relacional
➔
Edgar Codd
➔
Pai do Modelo Relacional
➔
IBM San Jose
➔
➔
Em 1970, Codd publicou:“A Relational Model of Data
for Large Shared Data Banks.”
Um modelo formal, baseado na teoria matemática dos
conjuntos
9
Histórico Modelo Relacional
➔
Primeiras implementações
➔ System R – IBM
Criou linguagem SEQUEL
Ingres – Berkeley
➔
➔
Michael Stonebraker
➔ Eugene Wong
Principais produtos:
➔
➔
10
Conceitos do Modelo Relacional
➔
Trabalha somente com Relações ou Tabelas
➔
O conceito de relação permite representar:
➔
➔
uma entidade
➔
um relacionamento
Esquema Relacional
➔
conjunto de relações semanticamente ligadas por
seus domínios de definição
11
Conceitos do Modelo Relacional
➔
Uma Relação é composta por:
➔
Um nome
➔
➔
Um conjunto de tuplas (ou registros ou linhas)
➔
➔
que deve ser único no mesmo esquema
que ocorrem em qualquer ordem
Um conjunto de atributos (ou campos ou colunas)
➔
cada atributo possui um domínio → dom(ai)
➔
cada atributo possui valor atômico
➔
o número de atributos é o grau da relação
➔
um subconjunto dos atributos deve possuir a
propriedade de identificar a tupla
➔
atributo chave
12
Conceitos do Modelo Relacional
➔
Tipos de atributos chave
➔
Super-chave
➔
➔
Chave candidata ou secundária
➔
➔
conjunto minimal de atributos que mantem a
propriedade de identificação da tupla.
Chave primária (pk)
➔
➔
conjunto de atributos que identifica uma tupla.
chave candidata escolhida para ser utilizada
identificador.
Chave estrangeira (fk)
➔
um campo cujo valor referencia uma chave (primária
ou secundária).
13
Conceitos
do
Modelo
Relacional
Modelo Relacional
Chave
Primária
PILOTO
Tuplas
Atributos
Num-cad
Nome
CPF
Endereço
0101
João
123456
Recife
0035
José
234567
São Paulo
Pedro
567890
.
.
.
0987
Recife
Chave Candidata
14
Modelo Relacional
➔
Restrições de Integridade:
➔
Integridade de Entidade
➔
➔
o valor da chave não pode ser nulo
Integridade de Unicidade da Chave
➔
em uma relação o valor da chave tem de ser
mantido único
k(ai)=k(aj) ↔ i=j
➔
Integridade Referencial
➔
uma chave estrangeira só pode assumir um valor
existente na chave primária que é referenciada
fk(a) = pk(a) ou fk(a) = nulo
15
Conceitos do Modelo Relacional
Modelo Relacional
ESTRUTURAS
OPERADORES
Relação
Atributo
Domínio
Chave Primária
Chave Estrangeira
União
Interseção
Diferença
Seleção
Projeção
Junção
Divisão
RESTRIÇÕES
Integridade de:
Domínio
Entidade
Referencial
16
Mapeamento Conceitual → Lógico

Apesar de certas equivalências entre os Modelos
Conceituais (MER ou UML) com o Modelo Lógico
Relacional
 o processo de mapeamento pode gerar, para
um mesmo Modelo Conceitual, vários Modelos
Lógicos
Mapeamento Conceitual → Lógico

Entidade
 para cada entidade gera-se uma tabela
equivalente
 A chave da entidade é chave da tabela.
 Ex:
nome
Paciente
Paciente = {nome, idade}
idade
Mapeamento Conceitual → Lógico

Entidade
 para cada entidade gera-se uma tabela equivalente.
 a chave da entidade é chave da tabela.
 atributos monovalorados geram campos equivalentes.
 Ex:
nome
Paciente
Paciente = {nome, peso}
peso
Mapeamento Conceitual → Lógico

Entidade
 atributos multivalorados
 1º caso – gera-se um campo para cada ocorrência
 2º caso – gera-se uma tabela para o campo
 Ex:
nome
Paciente
atributo2
telefone
Paciente = {nome, tel1,tel2, tel3}
Paciente = {nome}
Telefone = {nome, tel}
Mapeamento Conceitual → Lógico

Entidade
 atributos compostos
 1º caso – gera-se um campo para cada subatributo
 2º caso – gera-se uma tabela para o campo
 Ex:
rua
nome
Paciente
peso
endereço
bairro
cidade
uf
Paciente = {nome, peso, rua,bairro,cidade, uf}
Paciente = {nome, peso}
Endereço = {nome, rua,bairro,cidade, uf}
Mapeamento Conceitual → Lógico

Entidade
 atributos derivados
 caso o processamento para gerar o valor do
atributo seja complexo,
• então seu valor é armazenado em um campo
equivalente
• senão o valor é obtido em tempo de execução.
 Ex:
Paciente
dataNascimento
idade
Paciente = {nome, dataNascimento}
Mapeamento Conceitual → Lógico

Relacionamento
 O mapeamento depende do tipo da cardinalidade ou
multiplicidade.
Mapeamento Conceitual → Lógico

Relacionamento
 Muitos para Muitos
 Gera-se
uma nova tabela que equivale ao
relacionamento e sua chave é composta pelas chaves
das entidades.
 Ex:
N
Aluno
cod
nome
Aluno = {cod, nome}
Cursou
M
Disciplina
num
nome
Disciplina= {num, nome}
Cursou= {numDisciplina, codAluno}
Mapeamento Conceitual → Lógico

Relacionamento
 Um para Muitos
 gera-se
uma chave estrangeira na tabela que equivale
ao lado 1.
 Ex:
N
Aluno
cod
nome
Aluno = {cod, nome, curso}
Faz
1
Curso
num
nome
Curso= {num, nome}
Mapeamento Conceitual → Lógico

Relacionamento
 Um para Um
 gera-se
 Ex:
uma chave estrangeira em alguma das tabelas
• sugere-se
• a que possui menor cardinalidade
• a que possui participação total
1
Pessoa
cod
nome
Pessoa = {cod, nome}
Possui
1
Carro
placa
modelo
Carro= {placa, modelo,dono}
Mapeamento Conceitual → Lógico

Relacionamento
➔
Quando possui atributos, eles acompanham a chave
estrangeira
 Ex:
nota
N
Aluno
cod
nome
Aluno = {cod, nome}
freq
Cursou
M
Disciplina
num
nome
Disciplina= {num, nome}
Cursou= {numDisciplina, codAluno, nota, freq}
Mapeamento Conceitual → Lógico

Relacionamento grau > 2
 Gera-se uma nova tabela cuja chave é composta pelas
chaves das entidades participantes do relacionamento
 Ex:
Cliente
compra
Funcionário
Produto
Compra= {codCliente, codProduto, codFuncionario}
Mapeamento Conceitual → Lógico
➔
Entidade Fraca
➔
➔
A tabela equivalente à entidade fraca tem a chave
composta pela chave dela mesma mais a chave da
entidade forte.
Ex:
Disciplina
possui
Turma
num
hora
Turma= {num, codDisciplina, hora}
Mapeamento Conceitual → Lógico
➔
Generalização / Especialização
➔
1º caso:
➔
➔
➔
cria-se uma tabela para cada entidade.
a chave das especializações é uma chave
estrangeira da generalização.
Ex:
cod
Pessoa
Pessoa = {cod, nome}
nome
Cliente= {cod, dataNasc}
Cliente
Funcionário
dataNasc
salario
Funcionario= {cod, salario}
Mapeamento Conceitual → Lógico
➔
Generalização / Especialização
➔
2º caso:
➔
➔
➔
cria-se uma tabela para cada especialização.
todos os atributos da generalização são replicados
nas especializações.
Ex:
cod
Pessoa
nome
Cliente= {cod, nome, dataNasc}
Funcionario= {cod, nome, salario}
Cliente
Funcionário
dataNasc
salario
Mapeamento Conceitual → Lógico
➔
Generalização / Especialização
➔
3º caso:
➔
➔
cria-se uma tabela para a generalização com
atributos booleanos representando as instâncias
das especializações.
Ex:
cod
Pessoa
nome
Pessoa = {cod, nome, dataNasc,
salario, cliente, funcionario}
Cliente
Funcionário
dataNasc
salario
Mapeamento Conceitual → Lógico
➔
Generalização / Especialização
➔
4º caso:
➔
➔
cria-se uma tabela para a generalização com um
atributo informando o tipo da instância.
Ex:
cod
Pessoa
nome
Pessoa = {cod, nome, dataNasc,
salario, tipo}
Cliente
Funcionário
dataNasc
salario
Mapeamento Conceitual → Lógico
➔
Abstração de Agregação
1º caso – os atributos do relacionamento podem ser
levados para a agregação
➔
➔
➔
O relacionamento não é mapeado
Cria-se uma nova tabela cuja chave é composta pelas
chaves das entidades
Consulta
data
Paciente
atende
Consulta= {codPaciente, codMedico, data}
Médico
Mapeamento Conceitual → Lógico
➔
Abstração de Agregação
2º caso – os atributos do relacionamento não podem ser
levados para a agregação
➔
➔
➔
O relacionamento é mapeado também
Cria-se uma nova tabela cuja chave é composta pelas
chaves das entidades
livroTexto
Aula
data
Professor
ministra
Disciplina
Aula= {codProfessor, codDisciplina, data}
Ministra = {codProfessor, codDisciplina, livroTexto}
Exercício
1) Para o mapeamento da Generalização para o
Relacional comente:
➔
➔
todos os mapeamentos servem para todos os tipos de
cobertura?
Qual tem melhor desempenho?
2) Para as tabelas a seguir gere um possível MER
Cliente = {códigoCliente, nomeCliente, telefone,numCarro}
Funcionário={código,nome,especialidade,telefone}
Conserto={codFuncionário,codCarro,dataConserto,descrição}
Carro={códigoCarro,modelo,anoFabricação,fabricante}
UsouPeça={codFunc,codCarro,dataConserto, codPeça, qtde}
Peça = {cod, nome, fabricante}
Download