fundamentos de banco de dados e modelagem de dados 4... · disciplina: fundamentos de banco de...

Post on 07-Jun-2018

229 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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 Figueiredojosiel@ic.ufmt.br

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}

top related