Mod02 - Modelo Relacional

52
1 Modelo Lógico de Dados Modelo Relacional

description

Mod02 - Modelo Relacional

Transcript of Mod02 - Modelo Relacional

  • 1Modelo Lgico de Dados

    Modelo Relacional

  • 2Composio de um Banco de Dados Relacional composto de tabelas ou relaes O termo tabela mais comum nos produtos

    comerciais e na prtica O termo relao foi utilizada na literatura original

    sobre a abordagem relacional (da a denominao relacional) e mais comum na rea acadmica

  • 3Tabelas Tabela um conjunto no ordenado de linhas

    (tuplas, na terminologia acadmica) Cada linha composta por uma srie de campos

    (valor de atributo na terminologia acadmica) Cada campo identificado por um nome de campo

    (nome de atributo, na terminologia acadmica)

  • 4Tabelas O conjunto de campos homnimos de todas as

    linhas de uma tabela formam uma coluna

    Emp

    -D1SoaresE1

    C2D1SilvaE2

    C5D2SantosE3

    C5D1SouzaE5

    Categ FuncionalCdigoDeptoNomeCdigoEmp

  • 5Tabelas Observaes:

    Cada linha representa uma tupla As linhas de uma tabela no tm ordenao - a ordem

    de recuperao arbitrria, a menos que uma ordenao seja especificada na instruo de consulta

    No existem linhas duplicadasNo possvel referenciar linhas de uma tabela por

    posioOs valores de campo de uma tabela so atmicos e

    monovalorados As consultas podem ser feitas por qualquer critrio

    envolvendo os campos de uma ou mais linhas

  • 6Chaves Candidatas Coluna ou conjunto de colunas de uma Tabela que

    identifica de forma nica cada linha da tabela e mnimo (no caso de conjunto) nessa condioO fato de todas as linhas de uma tabela serem distintas

    entre si garante a existncia de ao menos uma chave candidata na tabela

    Aluno ( RA, Nome, CPF, Data_Nascimento, RG, Emissor_RG)

    Chaves candidatas:RA

    CFP

    (RG, Emissor_RG) (mnimo, precisa do par de valores)

  • 7Chave Candidata Observaes:

    Exige-se que seja mnima (quando todas as suas colunas forem efetivamente necessrias para garantir o requisito de unicidade de valores da chave)

    Uma tabela sempre tem ao menos uma chave candidata e pode ter mais do que uma

    No existe uma classificao para as chaves candidatas. Todas a mesma relevncia na tabela

  • 8Chave Primria Uma das chaves candidatas da Tabela deve ser

    escolhida com sua Chave Primria No existe regra para decidir qual das chaves

    candidatas deve ser a escolhida Na escolha deve ser considerada a existncia de

    referncias a esta chave primria em outras tabelas (chave estrangeira) Ao definir uma chave primria est se definindo uma

    restrio de integridade e no um caminho de acesso (ndice)

  • 9Chave Estrangeira uma coluna ou uma combinao de colunas,

    cujos valores aparecem necessariamente na chave primria de uma tabela

    Usada para implementar relacionamento em um banco de dados relacional

  • 10

    Chave Estrangeira Exemplo:

    VendasD3

    EngenhariaD2

    ComprasD1

    NomeDeptoCdigoDepto

    543523345D1SoaresE5

    125323422D2SilvaE3

    123124112D2SantosE2

    132123123D1SouzaE1

    CICCdigoDeptoNomeCdigoEmp

    Depto

    Emp

  • 11

    Chave Estrangeira Observaes:

    No exemplo anterior, a coluna CodigoDepto da tabela Emp uma chave estrangeira em relao chave primria da tabela Dept

    Na tabela Emp, os valores do campo CodigoDepto de todas as linhas devem aparecer na coluna CodigoDepto da tabela Dept

    A existncia de uma chave estrangeira impe restries que devem ser garantidas ao executar as diversas operaes e alterao do banco de dados

  • 12

    Mapeamento do Modelo Conceitual para o Modelo Relacional

    Um modelo conceitual construdo utilizando o Modelo Entidade-Relacionamento pode ser mapeado para um modelo lgico Relacional A equivalncia mais direta

    cada Entidade = uma Tabelacada Atributo = uma Colunacada Ocorrncia = uma Linha

  • 13

    Mapeamento de Entidades Para cada Entidade

    deve ser criada uma relao (tabela)

    Para cada atributo simples incluir uma coluna na tabela

    No caso de atributo composto, incluir somente os atributos simples que o compe (Endereo)

    EMPREGADO

    nomecdigo

    Endereo DataNasc

    Empregado(Codigo, Nome, Logradouro, Numero, Bairro, Cidade, Estado,DataNasc)

  • 14

    Mapeamento de Atributos Multivalorados Para cada atributo

    multivalorado deve ser criada uma tabela formada pela chave primria da Tabela/Entidade e pelo atributo multivalorado

    A chave primria da nova tabela ser o par de atributos

    Se o atributo multivalorado for composto. Por ex.: Ingrediente formado por Nome do ingrediente e quantidade, todo o grupo vai para a nova tabela

    RECEITA

    nome

    cdigoModo de Preparo

    Ingrediente (n)

    Receita(Codigo, Nome, Modo_Preparo)Ingrediente_Receita (CodReceita, Ingrediente)

  • 15

    Nome das colunas O nome do atributo(modelo conceitual) pode ser diferente

    do nome do campo da tabela (coluna) Objetivo

    Facilidade de programao como o uso de nomes curtos Evitar nomes iguais. Ex.: Todas entidades com o atributo nome Evitar espaos no nome da coluna, pois so proibidos nos BD

    relacionais Dica

    Defina um padro para converter o nome dos atributos, principalmente dos nomes compostos que necessitam abreviao.

    Ex.: Nome do Responsvel NomeRes

  • 16

    Nome para a chave primria boa prtica compor o nome da chave primria

    com uma identificao da tabela a qual ela pertence

    Como geralmente, elas se tornam chaves estrangeiras de outras tabelas, esta prtica facilita a programao e compreenso dos campos

    EMPREGADO

    nomecdigo

    Endereo Data de Nascimento

    Empregado(CodEmp, Nome, Endereco, DataNasc)

  • 17

    Mapeamento de Relacionamentos Um relacionamento pode ser transformado em:

    Uma tabelaUma coluna de uma das tabelas envolvidas Fuso de duas tabelas

    Esta deciso depende da cardinalidade mnima e mxima dos relacionamentos

    No caso da fuso devemos considerar tambm outros relacionamentos da entidade

  • 18

    Entidades Fracas Criar uma tabela para cada entidade fraca Nessa tabela incluir como chave estrangeira a chave

    primria da tabela que representa a entidade possuidora/identificadora

    As entidades fracas tm chave primria composta de duas partes: A chave primria da tabela (entidade) possuidora A chave parcial da tabela(entidade) fraca

    cdigo

    DEPENDENTES(1,1) (0,n)

    EMPREGADOS

    nome Codigo nome

    Empregados(CodEmp, Nome) Dependentes(CodEmp, CodDep, Nome, DataNasc)

    Data de Nascimento

    Dependencia

  • 19

    Implementao de Relacionamentos 1:1

  • 20

    Relacionamentos Binrios - Um para Um Ambas entidades tm participao opcional

    adio de colunas

  • 21

    Relacionamentos Binrios - Um para Um Ambas entidades tm participao opcional

    tabela prpria

  • 22

    Relacionamentos Binrios - Um para Um Ambas entidades tm participao opcional

    fuso de tabelas

  • 23

    Relacionamentos Binrios - Um para Um

    Ambas entidades tm participao opcional

    Soluo por fuso de tabelas invivelChave primria artificial (j que pode no estar completa)

    Soluo por adio de colunas: melhorMenor nmero de junes

    Menor nmero de chaves

    Soluo por tabela prpria: aceitvel

  • 24

    Implementao de Relacionamentos 1:1

  • 25

    Relacionamentos Binrios - Um para Um Participao opcional/obrigatria

    Fuso de tabelas

  • 26

    Relacionamentos Binrios - Um para Um Participao opcional/obrigatria

    Adio de colunas

  • 27

    Relacionamentos Binrios - Um para Um

    Adio de colunas versus fuso de tabelas Fuso de tabelas melhor em termos de nmero de

    junes e nmero de chaves Adico de colunas melhor em termos de campos

    opcionais Fuso de tabelas considerada a melhor e adio de

    colunas aceitvel

  • 28

    Relacionamentos Binrios - Um para Muitos

  • 29

    Relacionamentos Binrios - Um para Muitos

    J temos duas tabelas, uma para cada conjunto de entidades que participam do relacionamento

    Incluir como chave estrangeira, na tabela do lado muitos (o lado N), a chave primria da tabela do lado um

    Incluir tambm colunas com os atributos do relacionamento

  • 30

    Relacionamentos Binrios - Um para Muitos

  • 31

    Relacionamentos Binrios Muitos para Muitos

  • 32

    Relacionamentos Binrios Muitos para Muitos

    J temos duas tabelas, uma para cada conjunto de entidades que participa do relacionamento

    Criar uma nova tabela contendo, como chaves estrangeiras, as chaves primrias dessas duas tabelas A combinao dessas chaves estrangeiras forma a

    chave primria da nova tabela Incluir tambm colunas com os atributos do

    relacionamento

  • 33

    Relacionamentos Binrios Muitos para Muitos

  • 34

    Modelo Lgico de DadosModelo RelacionalParte 2Restries de IntegridadeGeneralizaes / Especializaes

  • 35

    Tabela: representada por um retngulo

    Relacionamentos somente binrios (entre 2 tabelas) tipo 1:N

    Se for obrigatrio, corte transversal:

    Diagrama para Modelo Lgico Relacional

  • 36

    Exemplos

    Departamento

    Empregado

    Engenheiro

    Participa_Proj

    Projeto

    Departamento (Codigo, Nome)

    Empregado (Matricula, Nome, CodDepto)

  • 37

    Chave Estrangeira - restries impostas Quando da incluso de uma linha na tabela que

    contm a chave estrangeira:deve ser garantido que o valor da chave estrangeira, se informado, exista na coluna da chave primria referenciadaSe o relacionamento no for do tipo obrigatrio, a chave estrangeira pode no ser informada

    Exemplo: um novo empregado deve atuar em um departamento j existente no banco de dados (na tabela Departamento)

  • 38

    Chave Estrangeira - restries impostas Quando da alterao do valor da chave

    estrangeira:deve ser garantido que o novo valor de uma chave estrangeira, se informado, exista na coluna da chave primria referenciada

    Exemplo: se um empregado muda de departamento, deve-se garantir que o novo departamento j exista no banco de dados (na tabela Departamento)

  • 39

    Chave Estrangeira - restries impostas Quando da excluso de uma linha da tabela que

    contm a chave primria referenciada pela chave estrangeira:deve ser garantido que na coluna chave estrangeira no aparea o valor da chave primria que est sendo excluda

    Exemplo: um departamento no pode ser excludo, caso exista algum empregado que o referencie

  • 40

    Chave Estrangeira - restries impostas Quando da alterao do valor da chave primria

    referenciada pela chave estrangeira:deve ser garantido que na coluna chave estrangeira no aparea o antigo valor da chave primria que est sendo alterada

    Exemplo: um departamento somente pode ter o seu cdigo alterado se no for referenciado por nenhum empregado

  • 41

    Chave Estrangeira Pode acontecer de uma chave estrangeira

    referenciar a chave primria da prpria tabela (e no de uma tabela diferente, como no exemplo anterior). Exemplo:

    Emp

    E1D1SoaresE5

    E5D2SilvaE3

    E5D2SantosE2

    -D1SouzaE1

    Cdigo Emp GerenteCdigoDeptoNomeCdigoEmp

    Cdigo Emp Gerente uma chave estrangeira que Referencia a chave da prpria tabela (auto-relacionamento)

  • 42

    Valores Vazios Normalmente, os SGBDs relacionais exigem que

    todas as colunas que compem a chave primria sejam obrigatrias

    A mesma exigncia no feita para as demais chaves

    Ateno: Vazio diferente de zeros ou brancos

  • 43

    Restries de Integridade Banco de dados ntegro: reflete corretamente a

    realidade representada pelo banco de dados e os dados so consistentes entre si

    Um SGBD deve garantir a integridade dos dados atravs do mecanismo de restrio de integridade

  • 44

    Restries de Integridade Restrio de integridade: regra de consistncia

    de dados que garantida pelo prprio SGBD Na abordagem relacional as restries de

    integridade esto classificadas em: Integridade de domnio Integridade de vazio Integridade de chave Integridade referencial

  • 45

    Restries de Integridade Domnio:

    um conjunto de valores (alfanumrico, numrico, ...) que um campo de uma tabela pode assumir

    chamado de domnio da coluna ou domnio do campo

    Integridade de domnio: especifica que o valor de um campo deve obedecer a definio de

    valores admitidos para a coluna (o domnio da coluna) Nos SGBDs relacionais possvel usar domnios pr-definidos

    (nmero inteiro, nmero real, alfanumrico de tamanho definido, data, ...)

    possvel usar um conjunto finito de valores: (Masc , Fem), (Sim , No), (1, 2, , 5, 7, 11, 13)

    possvel usar uma frmula: > 0 e < 1000

  • 46

    Restries de Integridade Valores vazios:

    Deve-se especificar se o contedo de uma coluna pode estar vazio (em ingls null)

    Estar vazio significa que o campo no recebeu nenhum valor de seu domnio

    As colunas que podem conter valores vazios so as colunas opcionais

    As colunas que no podem conter valores vazios so as colunas obrigatrias

    Integridade de vazio: Especifica se os campos de uma coluna podem ou no ser vazios

    (se a coluna obrigatria ou opcional) Campos que compem a chave primria no podem ser vazios

  • 47

    Restries de Integridade Integridade de chave:

    Trata-se da restrio que define que os valores da chave primria devem ser nicos

    Integridade referencial:Define que os valores dos campos que aparecem em

    uma chave estrangeira devem aparecer na chave primria da tabela referenciada

  • 48

    Restries de Integridade Declarativas As restries citadas devem ser garantidas

    automaticamente por um SGBD relacional a partir da sua declarao na definio das tabelas, no sendo necessrio nenhuma programao para garanti-las explicitamente

    So restries de Integridade Declarativa: Chave Primria Unicidade (chaves candidatas) Integridade Referencial (Chave Estrangeira) Integridade de Domnio Integridade de Vazio

  • 49

    Restries Semnticas de Integridade Existem restries de integridade que no podem

    ser definidas de forma declarativa para um SGBD relacional

    So chamadas restries semnticas Necessrio que seja feita programao

    procedural na aplicao ou no SGBD Exemplos:

    um empregado do departamento Finanas no pode ter a categoria funcional Engenheiro

    um empregado no pode ter um salrio maior que seu superior imediato

  • 50

    Generalizao/Especializao (1 Tabela)

    PrestadoresDe Servios

    nomeCPF

    Horistas Mensalistas

    custoHora HorasTrabalho Salario

    Endereco

    ObservaesMinimizando a junesMenor nmero de chavesMuitos atributos opcionais

    Alternativa (1 tabela):PrestadoresServicos(CPF, Nome, Endereco, CustoHora, HorasTrabalhadas, Salario, Tipo)

    RegrasChave primria referente a entidade genricaAdicionar uma coluna TipoUma coluna para cada atributo da entidade genrica e das especializadasPossveis colunas referentes aos relacionamentos envolvendo as entidades

  • 51

    Generalizao/Especializao (2 Tabelas)

    PrestadoresDe Servios

    nomeCPF

    Horistas Mensalistas

    custoHora HorasTrabalho Salario

    Endereco

    Alternativa (2 tabelas): Horistas, Mensalistas

    Horistas(CPF,Nome,Endereco,CustoHora,HorasTrabalho)Mensalistas(CPF, Nome, Endereco Salario)

    Observaes Unicidade da chave primria no pode ser garantida de forma declarativa pelo SGBD, por serem 2 tabelas independentes Necessrio programao procedural

  • 52

    Generalizao/Especializao (3 Tabelas)Abordagem geral (3 tabelas):Prestadores_de_Servicos, Horistas, Mensalistas

    Prestadores_de_Servicos(CPF, Nome, Endereco, Tipo)Horistas(CPF,CustoHora,HorasTrabalhadas)Mensalistas(CPF,Salario)

    Regras Incluir a chave primria da tabela genrica em cada tabela especializada como chave estrangeiraAdicionar o atributo Tipo

    Observaes Reduo de atributos opcionais Ocorrncia de uma das 2 tabelas especializadas conforme o valor do atributo Tipo somente pode ser garantida atravs de programao procedural

    PrestadoresDe Servios

    nomeCPF

    Horistas Mensalistas

    custoHora HorasTrabalho Salario

    Endereco

    Slide 1Slide 2Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10Slide 11Slide 12Slide 13Slide 14Slide 15Slide 16Slide 17Slide 18Slide 19Slide 20Slide 21Slide 22Slide 23Slide 24Slide 25Slide 26Slide 27Slide 28Slide 29Slide 30Slide 31Slide 32Slide 33Slide 34Slide 35Slide 36Slide 37Slide 38Slide 39Slide 40Slide 41Slide 42Slide 43Slide 44Slide 45Slide 46Slide 47Slide 48Slide 49Slide 50Slide 51Slide 52