Universidade Federal de Mato GrossoInstituto de ComputaçãoPós Graduação Lato Sensu em Banco de Dados
Fundamentos de Banco de Dadose
Modelagem de Dados
Prof. Dr. Josiel Maimone de [email protected]
Abril - 2015
Pós Graduação Lato Sensu em Banco de DadosDisciplina: 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
SGBD
Conexão
Aplicação
Visão
Conceitual
Física
Lógica
MER ou UML
Modelo Relacional
O que é Modelagem
SGBD
Conexão
Aplicação
Visão
Conceitual
Física
Lógica
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
SGBD
Conexão
Aplicação
Visão
Conceitual
Física
Lógica
Para armazenar os dados temos de
usar um SGBD é preciso modelar conforme
modelo de dados do SGBDModelo RelacionalModelo Relacional-ObjetoModelo Orientado a
Objetos
O que é Modelagem
SGBD
Conexão
Aplicação
Visão
Conceitual
Física
Lógica
É preciso transformar os dados da aplicação para permitir o armazenamento
Modelo de Persistênciamapeamento entre
modelos
Artefatos
[Amber2001]
9
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
10
Histórico Modelo Relacional
➔ Primeiras implementações➔ System R – IBM
➔ Criou linguagem SEQUEL➔ Ingres – Berkeley
➔ Michael Stonebraker➔ Eugene Wong
➔ Principais produtos:
11
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
12
Conceitos do Modelo Relacional
➔ Uma Relação é composta por:➔ Um nome
➔ que deve ser único no mesmo esquema➔ Um conjunto de tuplas (ou registros ou linhas)
➔ que ocorrem em qualquer ordem➔ Um conjunto de atributos (ou campos ou colunas)
➔ cada atributo possui um domínio dom(a→i)
➔ 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
13
Conceitos do Modelo Relacional
➔ Tipos de atributos chave➔ Super-chave
➔ conjunto de atributos que identifica uma tupla.➔ Chave candidata ou secundária
➔ conjunto minimal de atributos que mantem a propriedade de identificação da tupla.
➔ Chave primária (pk)➔ chave candidata escolhida para ser utilizada
identificador.➔ Chave estrangeira (fk)
➔ um campo cujo valor referencia uma chave (primária ou secundária).
14
Modelo Relacional
PILOTO Num-cad Nome CPF Endereço
João0101 123456 Recife
0035 José 234567 São Paulo
.
.
.
0987 Pedro 567890 Recife
Atributos
Tuplas
ChavePrimária
Chave Candidata
Conceitos do Modelo Relacional
15
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(a
j) 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
16
Modelo Relacional
ESTRUTURAS OPERADORES RESTRIÇÕES
RelaçãoAtributoDomínio
Chave PrimáriaChave Estrangeira
UniãoInterseçãoDiferençaSeleçãoProjeçãoJunçãoDivisão
Integridade de:DomínioEntidade
Referencial
Conceitos do Modelo Relacional
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:
Pacienteidade
nome
Paciente = {nome, 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:
Pacientepeso
nome
Paciente = {nome, peso}
Mapeamento Conceitual Lógico→
Paciente
nome
Paciente = {nome, tel1,tel2, tel3}
atributo2telefone
Entidade atributos multivalorados
1º caso – gera-se um campo para cada ocorrência2º caso – gera-se uma tabela para o campo
Ex:
Paciente = {nome}Telefone = {nome, tel}
Mapeamento Conceitual Lógico→
Paciente = {nome, peso, rua,bairro,cidade, uf}
Entidade atributos compostos
1º caso – gera-se um campo para cada subatributo2º caso – gera-se uma tabela para o campo
Ex:
Paciente = {nome, peso}Endereço = {nome, rua,bairro,cidade, uf}
Paciente
rua
bairroendereço
cidade
uf
peso
nome
Mapeamento Conceitual Lógico→
Paciente = {nome, dataNascimento}
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:
Pacienteidade
dataNascimento
Mapeamento Conceitual Lógico→
Relacionamento O mapeamento depende do tipo da cardinalidade ou
multiplicidade.
Mapeamento Conceitual Lógico→
Disciplina= {num, nome}
Relacionamento Muitos para Muitos
Gera-se uma nova tabela que equivale ao relacionamento e sua chave é composta pelas chaves das entidades.
Ex:
DisciplinaAluno CursouMN
cod numnome nome
Aluno = {cod, nome}
Cursou= {numDisciplina, codAluno}
Mapeamento Conceitual Lógico→
Curso= {num, nome}
Relacionamento Um para Muitos
gera-se uma chave estrangeira na tabela que equivale ao lado 1.
Ex:
CursoAluno Faz1N
cod numnome nome
Aluno = {cod, nome, curso}
Mapeamento Conceitual Lógico→
Carro= {placa, modelo,dono}
Relacionamento Um para Um
gera-se uma chave estrangeira em alguma das tabelas• sugere-se
• a que possui menor cardinalidade• a que possui participação total
Ex:
CarroPessoa Possui11
cod placanome modelo
Pessoa = {cod, nome}
Mapeamento Conceitual Lógico→
Disciplina= {num, nome}
Relacionamento➔ Quando possui atributos, eles acompanham a chave
estrangeira
Ex:
DisciplinaAluno CursouMN
cod numnome nome
Aluno = {cod, nome}
Cursou= {numDisciplina, codAluno, nota, freq}
nota freq
Mapeamento Conceitual Lógico→
Compra= {codCliente, codProduto, codFuncionario}
Relacionamento grau > 2 Gera-se uma nova tabela cuja chave é composta pelas
chaves das entidades participantes do relacionamento
Ex:
FuncionárioCliente compra
Produto
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:
TurmaDisciplina possui Turmapossui
Turma= {num, codDisciplina, hora}
num hora
Mapeamento Conceitual Lógico→
FuncionárioCliente
Pessoa
➔ 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:
dataNasc
cod
salario
nome
Cliente= {cod, dataNasc}
Pessoa = {cod, nome}
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:
FuncionárioCliente
Pessoa
dataNasc
cod
salario
nome
Cliente= {cod, nome, dataNasc}
Funcionario= {cod, nome, 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:
FuncionárioCliente
Pessoa
dataNasc
cod
salario
nome
Pessoa = {cod, nome, dataNasc, salario, cliente, funcionario}
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:
FuncionárioCliente
Pessoa
dataNasc
cod
salario
nome
Pessoa = {cod, nome, dataNasc, salario, tipo}
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
MédicoPaciente atende
Consulta
data
Consulta= {codPaciente, codMedico, data}
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
DisciplinaProfessor ministra
Aula
data
Aula= {codProfessor, codDisciplina, data}Ministra = {codProfessor, codDisciplina, livroTexto}
livroTexto
Exercício1) 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}