fundamentos de banco de dados e modelagem de dados 4... · disciplina: fundamentos de banco de...
TRANSCRIPT
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}