Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 4 Projeto de Banco de Dados Carlos Alberto Heuser 2 Transformações entre modelosTransformações entre modelos Capítulo 5 ©Carlos A. Heuser 3 Relacionamento grau > dois ©Carlos A. Heuser 3 nomenome DISTRIBUIDORDISTRIBUIDORCIDADECIDADE PRODUTOPRODUTO DISTRIBUIÇÃODISTRIBUIÇÃO (0,1) (0,n) (0,n)código código código nome data de início 4 Relacionamento grau>2 • Não são definidas regras específicas. • O relacionamento é transformado em uma entidade. • São aplicadas as regras de implementação de relacionamentos binários. ©Carlos A. Heuser 4 5 Relacionamento transformado em entidade ©Carlos A. Heuser 5 nomenome DISTRIBUIDORDISTRIBUIDORCIDADECIDADE PRODUTOPRODUTO código código código nome (0,n) DISTRIBUIÇÃO (1,1) (1,1) (1,1) (0,n) (0,n) data de início nomenome DISTRIBUIDORDISTRIBUIDORCIDADECIDADE DISTRIBUIÇÃODISTRIBUIÇÃO (0,1) (0,n) (0,n)código código código nome data de início PRODUTOPRODUTO observar os identificadores da entidade criada - vêm da cardinalidade máxima do relacionamento 6 Modelo lógico correspondente ©Carlos A. Heuser 6 nomenome DISTRIBUIDORDISTRIBUIDORCIDADECIDADE PRODUTOPRODUTO código código código nome (0,n) DISTRIBUIÇÃO (1,1) (1,1) (1,1) (0,n) (0,n) data de início Produto (CodProd,Nome) Cidade (CodCid,Nome) Distribuidor (CodDistr,Nome) Distribuição (CodProd,CodDistr,CodCid, DataInicio) CodProd referencia Produto CodDistr referencia Distribuidor CodCid referencia Cidade Produto (CodProd,Nome) Cidade (CodCid,Nome) Distribuidor (CodDistr,Nome) Distribuição (CodProd,CodDistr,CodCid, DataInicio) CodProd referencia Produto CodDistr referencia Distribuidor CodCid referencia Cidade 7 Implementação de generalização/especialização 1. Duas alternativas básicas: a) uso de uma tabela para cada entidade b) uso de uma única tabela para toda hierarquia 2. Outra alternativa (exótica): a) Subdivisão de entidade genérica ©Carlos A. Heuser 7 8 Generalização/especialização exemplo 8 código nome código nome CREA EMPREGADOEMPREGADO DEPARTAMENTODEPARTAMENTO SECRETÁRIASECRETÁRIA ENGENHEIROENGENHEIRO PROCESSADOR DE TEXTOS PROCESSADOR DE TEXTOS PROJETOPROJETO DOMÍNIODOMÍNIO PARTICIPAÇÃOPARTICIPAÇÃO LOTAÇÃOLOTAÇÃO tipo de empregado nome carteira de habilitação CIC (1,1)(0,n) (1,n) (0,n) (0,n) (0,n) px RAMO DA ENGENHARIA RAMO DA ENGENHARIA (0,n) (1,1) MOTORISTAMOTORISTA código código nome código nome ©Carlos A. Heuser 9 Uma tabela por hierarquia 1. Todas tabelas referentes às especializações são fundidas em uma única tabela. 2. Tabela contém: a) Chave primária correspondente ao identificador da entidade mais genérica b) Caso não exista, uma coluna Tipo c) Uma coluna para cada atributo da entidade genérica d) Colunas referentes aos relacionamentos dos quais participa a entidade genérica e que sejam implementados através da alternativa de adicionar colunas à tabela da entidade genérica e) Uma coluna para cada atributo de cada entidade especializada (opcional) f) Colunas referentes aos relacionamentos dos quais participa cada entidade especializada e que sejam implementados através da alternativa de adicionar colunas à tabela da entidade (campo opcional) ©Carlos A. Heuser 9 10 Implementação das entidades relacionadas 10 código nome código nome CREA EMPREGADOEMPREGADO DEPARTAMENTODEPARTAMENTO SECRETÁRIASECRETÁRIA ENGENHEIROENGENHEIRO PROCESSADOR DE TEXTOS PROCESSADOR DE TEXTOS PROJETOPROJETO DOMÍNIODOMÍNIO PARTICIPAÇÃOPARTICIPAÇÃO LOTAÇÃOLOTAÇÃO tipo de empregado nome carteira de habilitação CIC (1,1)(0,n) (1,n) (0,n) (0,n) (0,n) px RAMO DA ENGENHARIA RAMO DA ENGENHARIA (0,n) (1,1) MOTORISTAMOTORISTA código código nome código nome Depto (CodigoDept, Nome) Projeto (CodigoProj,Nome) Ramo (CodigoRamo,Nome) ProcessTexto (CodigoProc,Nome) Depto (CodigoDept, Nome) Projeto (CodigoProj,Nome) Ramo (CodigoRamo,Nome) ProcessTexto (CodigoProc,Nome) ©Carlos A. Heuser 11 Implementação de relacionamentos n:n 11 código nome código nome CREA EMPREGADOEMPREGADO DEPARTAMENTODEPARTAMENTO SECRETÁRIASECRETÁRIA ENGENHEIROENGENHEIRO PROCESSADOR DE TEXTOS PROCESSADOR DE TEXTOS PROJETOPROJETO DOMÍNIODOMÍNIO PARTICIPAÇÃOPARTICIPAÇÃO LOTAÇÃOLOTAÇÃO tipo de empregado nome carteira de habilitação CIC (1,1)(0,n) (1,n) (0,n) (0,n) (0,n) px RAMO DA ENGENHARIA RAMO DA ENGENHARIA (0,n) (1,1) MOTORISTAMOTORISTA código código nome código nome Domínio (CodigoEmp,CodigoProc) CódigoEmp referencia Emp CódigoProc referencia ProcessTexto Participação (CodigoEmp,CodigoProj) CodigoEmp referencia Emp CodigoProj referencia Projeto Depto (CodigoDept, Nome) Projeto (CodigoProj,Nome) Ramo (CodigoRamo,Nome) ProcessTexto (CodigoProc,Nome) Domínio (CodigoEmp,CodigoProc) CódigoEmp referencia Emp CódigoProc referencia ProcessTexto Participação (CodigoEmp,CodigoProj) CodigoEmp referencia Emp CodigoProj referencia Projeto Depto (CodigoDept, Nome) Projeto (CodigoProj,Nome) Ramo (CodigoRamo,Nome) ProcessTexto (CodigoProc,Nome) ©Carlos A. Heuser 12 Tabela para a hierarquia 12 DEPARTAMENTODEPARTAMENTO código nome código nome CREA EMPREGADOEMPREGADO SECRETÁRIASECRETÁRIA ENGENHEIROENGENHEIRO PROCESSADOR DE TEXTOS PROCESSADOR DE TEXTOS PROJETOPROJETO DOMÍNIODOMÍNIO PARTICIPAÇÃOPARTICIPAÇÃO LOTAÇÃOLOTAÇÃO tipo de empregado nome carteira de habilitação CIC (1,1)(0,n) (1,n) (0,n) (0,n) (0,n) px RAMO DA ENGENHARIA RAMO DA ENGENHARIA (0,n) (1,1) MOTORISTAMOTORISTA código código nome código nome Emp (CodigoEmp,Tipo,Nome,CIC,CodigoD ept, CartHabil,CREA,CodigoRamo) CodigoDept referencia Depto CodigoRamo referencia Ramo Domínio (CodigoEmp,CodigoProc) CódigoEmp referencia Emp CódigoProc referencia ProcessTexto Participação (CodigoEmp,CodigoProj) CodigoEmp referencia Emp CodigoProj referencia Projeto Depto (CodigoDept, Nome) Projeto (CodigoProj,Nome) Ramo (CodigoRamo,Nome) ProcessTexto (CodigoProc,Nome) Emp (CodigoEmp,Tipo,Nome,CIC,CodigoD ept, CartHabil,CREA,CodigoRamo) CodigoDept referencia Depto CodigoRamo referencia Ramo Domínio (CodigoEmp,CodigoProc) CódigoEmp referencia Emp CódigoProc referencia ProcessTexto Participação (CodigoEmp,CodigoProj) CodigoEmp referencia Emp CodigoProj referencia Projeto Depto (CodigoDept, Nome) Projeto (CodigoProj,Nome) Ramo (CodigoRamo,Nome) ProcessTexto (CodigoProc,Nome) ©Carlos A. Heuser 13 Identificador da entidade raiz 13 código nome código nome CREA EMPREGADOEMPREGADO DEPARTAMENTODEPARTAMENTO SECRETÁRIASECRETÁRIA ENGENHEIROENGENHEIRO PROCESSADOR DE TEXTOS PROCESSADOR DE TEXTOS PROJETOPROJETO DOMÍNIODOMÍNIO PARTICIPAÇÃOPARTICIPAÇÃO LOTAÇÃOLOTAÇÃO tipo de empregado nome carteira de habilitação CIC (1,1)(0,n) (1,n) (0,n) (0,n) (0,n) px RAMO DA ENGENHARIA RAMO DA ENGENHARIA (0,n) (1,1) MOTORISTAMOTORISTA código código nome código nome Emp (CodigoEmp,Tipo,Nome,CIC,CodigoDept, CartHabil,CREA,CodigoRamo) CodigoDept referencia Depto CodigoRamo referencia Ramo Domínio (CodigoEmp,CodigoProc) CódigoEmp referencia Emp CódigoProc referencia ProcessTexto Participação (CodigoEmp,CodigoProj) CodigoEmp referencia Emp CodigoProj referencia Projeto Depto (CodigoDept, Nome) Projeto (CodigoProj,Nome) Ramo (CodigoRamo,Nome)ProcessTexto (CodigoProc,Nome) Emp (CodigoEmp,Tipo,Nome,CIC,CodigoDept, CartHabil,CREA,CodigoRamo) CodigoDept referencia Depto CodigoRamo referencia Ramo Domínio (CodigoEmp,CodigoProc) CódigoEmp referencia Emp CódigoProc referencia ProcessTexto Participação (CodigoEmp,CodigoProj) CodigoEmp referencia Emp CodigoProj referencia Projeto Depto (CodigoDept, Nome) Projeto (CodigoProj,Nome) Ramo (CodigoRamo,Nome) ProcessTexto (CodigoProc,Nome) chave primária vem do identificador da entidade raiz ©Carlos A. Heuser 14 Inclusão de coluna de tipo 14 DEPARTAMENTODEPARTAMENTO código nome código nome CREA EMPREGADOEMPREGADO SECRETÁRIASECRETÁRIA ENGENHEIROENGENHEIRO PROCESSADOR DE TEXTOS PROCESSADOR DE TEXTOS PROJETOPROJETO DOMÍNIODOMÍNIO PARTICIPAÇÃOPARTICIPAÇÃO LOTAÇÃOLOTAÇÃO tipo de empregado nome carteira de habilitação CIC (1,1)(0,n) (1,n) (0,n) (0,n) (0,n) px RAMO DA ENGENHARIA RAMO DA ENGENHARIA (0,n) (1,1) MOTORISTAMOTORISTA código código nome código nome Emp (CodigoEmp,Tipo,Nome,CIC,CodigoDept, CartHabil,CREA,CodigoRamo) CodigoDept referencia Depto CodigoRamo referencia Ramo Domínio (CodigoEmp,CodigoProc) CódigoEmp referencia Emp CódigoProc referencia ProcessTexto Participação (CodigoEmp,CodigoProj) CodigoEmp referencia Emp CodigoProj referencia Projeto Depto (CodigoDept, Nome) Projeto (CodigoProj,Nome) Ramo (CodigoRamo,Nome) ProcessTexto (CodigoProc,Nome) Emp (CodigoEmp,Tipo,Nome,CIC,CodigoDept, CartHabil,CREA,CodigoRamo) CodigoDept referencia Depto CodigoRamo referencia Ramo Domínio (CodigoEmp,CodigoProc) CódigoEmp referencia Emp CódigoProc referencia ProcessTexto Participação (CodigoEmp,CodigoProj) CodigoEmp referencia Emp CodigoProj referencia Projeto Depto (CodigoDept, Nome) Projeto (CodigoProj,Nome) Ramo (CodigoRamo,Nome) ProcessTexto (CodigoProc,Nome) tabela dever ter uma coluna de tipo de entidade ©Carlos A. Heuser 15 Atributos da entidade genérica 15 DEPARTAMENTODEPARTAMENTO código nome código nome CREA EMPREGADOEMPREGADO SECRETÁRIASECRETÁRIA ENGENHEIROENGENHEIRO PROCESSADOR DE TEXTOS PROCESSADOR DE TEXTOS PROJETOPROJETO DOMÍNIODOMÍNIO PARTICIPAÇÃOPARTICIPAÇÃO LOTAÇÃOLOTAÇÃO tipo de empregado nome carteira de habilitação CIC (1,1)(0,n) (1,n) (0,n) (0,n) (0,n) px RAMO DA ENGENHARIA RAMO DA ENGENHARIA (0,n) (1,1) MOTORISTAMOTORISTA código código nome código nome Emp (CodigoEmp,Tipo,Nome,CIC,CodigoDept, CartHabil,CREA,CodigoRamo) CodigoDept referencia Depto CodigoRamo referencia Ramo Domínio (CodigoEmp,CodigoProc) CódigoEmp referencia Emp CódigoProc referencia ProcessTexto Participação (CodigoEmp,CodigoProj) CodigoEmp referencia Emp CodigoProj referencia Projeto Depto (CodigoDept, Nome) Projeto (CodigoProj,Nome) Ramo (CodigoRamo,Nome) ProcessTexto (CodigoProc,Nome) Emp (CodigoEmp,Tipo,Nome,CIC,CodigoDept, CartHabil,CREA,CodigoRamo) CodigoDept referencia Depto CodigoRamo referencia Ramo Domínio (CodigoEmp,CodigoProc) CódigoEmp referencia Emp CódigoProc referencia ProcessTexto Participação (CodigoEmp,CodigoProj) CodigoEmp referencia Emp CodigoProj referencia Projeto Depto (CodigoDept, Nome) Projeto (CodigoProj,Nome) Ramo (CodigoRamo,Nome) ProcessTexto (CodigoProc,Nome) colunas para atributos da entidade genérica ©Carlos A. Heuser 16 Relacionamentos 1:n da entidade genérica 16 código nome código nome CREA EMPREGADOEMPREGADO DEPARTAMENTODEPARTAMENTO SECRETÁRIASECRETÁRIA ENGENHEIROENGENHEIRO PROCESSADOR DE TEXTOS PROCESSADOR DE TEXTOS PROJETOPROJETO DOMÍNIODOMÍNIO PARTICIPAÇÃOPARTICIPAÇÃO LOTAÇÃOLOTAÇÃO tipo de empregado nome carteira de habilitação CIC (1,1)(0,n) (1,n) (0,n) (0,n) (0,n) px RAMO DA ENGENHARIA RAMO DA ENGENHARIA (0,n) (1,1) MOTORISTAMOTORISTA código código nome código nome Emp (CodigoEmp,Tipo,Nome,CIC,CodigoDept, CartHabil,CREA,CodigoRamo) CodigoDept referencia Depto CodigoRamo referencia Ramo Domínio (CodigoEmp,CodigoProc) CódigoEmp referencia Emp CódigoProc referencia ProcessTexto Participação (CodigoEmp,CodigoProj) CodigoEmp referencia Emp CodigoProj referencia Projeto Depto (CodigoDept, Nome) Projeto (CodigoProj,Nome) Ramo (CodigoRamo,Nome) ProcessTexto (CodigoProc,Nome) Emp (CodigoEmp,Tipo,Nome,CIC,CodigoDept, CartHabil,CREA,CodigoRamo) CodigoDept referencia Depto CodigoRamo referencia Ramo Domínio (CodigoEmp,CodigoProc) CódigoEmp referencia Emp CódigoProc referencia ProcessTexto Participação (CodigoEmp,CodigoProj) CodigoEmp referencia Emp CodigoProj referencia Projeto Depto (CodigoDept, Nome) Projeto (CodigoProj,Nome) Ramo (CodigoRamo,Nome) ProcessTexto (CodigoProc,Nome) implementação da relacionamentos 1:n da entidade genérica ©Carlos A. Heuser 17 Atributos das especializações 17 código nome código nome CREA EMPREGADOEMPREGADO SECRETÁRIASECRETÁRIA ENGENHEIROENGENHEIRO PROCESSADOR DE TEXTOS PROCESSADOR DE TEXTOS PROJETOPROJETO DOMÍNIODOMÍNIO PARTICIPAÇÃOPARTICIPAÇÃO LOTAÇÃOLOTAÇÃO tipo de empregado nome carteira de habilitação CIC (1,1)(0,n) (1,n) (0,n) (0,n) (0,n) px RAMO DA ENGENHARIA RAMO DA ENGENHARIA (0,n) (1,1) MOTORISTAMOTORISTA código código nome código nome DEPARTAMENTODEPARTAMENTO Emp (CodigoEmp,Tipo,Nome,CIC,CodigoDept, CartHabil,CREA,CodigoRamo) CodigoDept referencia Depto CodigoRamo referencia Ramo Domínio (CodigoEmp,CodigoProc) CódigoEmp referencia Emp CódigoProc referencia ProcessTexto Participação (CodigoEmp,CodigoProj) CodigoEmp referencia Emp CodigoProj referencia Projeto Depto (CodigoDept, Nome) Projeto (CodigoProj,Nome) Ramo (CodigoRamo,Nome) ProcessTexto (CodigoProc,Nome) Emp (CodigoEmp,Tipo,Nome,CIC,CodigoDept, CartHabil,CREA,CodigoRamo) CodigoDept referencia Depto CodigoRamo referencia Ramo Domínio (CodigoEmp,CodigoProc) CódigoEmp referencia Emp CódigoProc referencia ProcessTexto Participação (CodigoEmp,CodigoProj) CodigoEmp referencia Emp CodigoProj referencia Projeto Depto (CodigoDept, Nome) Projeto (CodigoProj,Nome) Ramo (CodigoRamo,Nome) ProcessTexto (CodigoProc,Nome) colunas para atributos das entidades especializadas ©Carlos A. Heuser 18 Atributos das especializações 18 código nome código nome CREA EMPREGADOEMPREGADO DEPARTAMENTODEPARTAMENTO SECRETÁRIASECRETÁRIA ENGENHEIROENGENHEIRO PROCESSADOR DE TEXTOS PROCESSADOR DE TEXTOS PROJETOPROJETO DOMÍNIODOMÍNIO PARTICIPAÇÃOPARTICIPAÇÃO LOTAÇÃOLOTAÇÃO tipo de empregado nome carteira de habilitação CIC (1,1)(0,n) (1,n) (0,n) (0,n) (0,n) px RAMO DA ENGENHARIA RAMO DA ENGENHARIA (0,n) (1,1) MOTORISTAMOTORISTA código código nome código nome Emp (CodigoEmp,Tipo,Nome,CIC,CodigoDept, CartHabil,CREA,CodigoRamo) CodigoDept referencia Depto CodigoRamo referencia Ramo Domínio (CodigoEmp,CodigoProc) CódigoEmp referencia Emp CódigoProc referencia ProcessTexto Participação (CodigoEmp,CodigoProj) CodigoEmp referencia Emp CodigoProj referencia Projeto Depto (CodigoDept, Nome) Projeto (CodigoProj,Nome) Ramo (CodigoRamo,Nome) ProcessTexto (CodigoProc,Nome) Emp (CodigoEmp,Tipo,Nome,CIC,CodigoDept, CartHabil,CREA,CodigoRamo) CodigoDept referencia Depto CodigoRamo referencia Ramo Domínio (CodigoEmp,CodigoProc) CódigoEmp referenciaEmp CódigoProc referencia ProcessTexto Participação (CodigoEmp,CodigoProj) CodigoEmp referencia Emp CodigoProj referencia Projeto Depto (CodigoDept, Nome) Projeto (CodigoProj,Nome) Ramo (CodigoRamo,Nome) ProcessTexto (CodigoProc,Nome) colunas para atributos das entidade especializadas ©Carlos A. Heuser 19 Relacionamentos 1:n das especializações 19 código nome código nome CREA EMPREGADOEMPREGADO DEPARTAMENTODEPARTAMENTO SECRETÁRIASECRETÁRIA ENGENHEIROENGENHEIRO PROCESSADOR DE TEXTOS PROCESSADOR DE TEXTOS PROJETOPROJETO DOMÍNIODOMÍNIO PARTICIPAÇÃOPARTICIPAÇÃO LOTAÇÃOLOTAÇÃO tipo de empregado nome carteira de habilitação CIC (1,1)(0,n) (1,n) (0,n) (0,n) (0,n) px RAMO DA ENGENHARIA RAMO DA ENGENHARIA (0,n) (1,1) MOTORISTAMOTORISTA código código nome código nome Emp (CodigoEmp,Tipo,Nome,CIC,CodigoDept, CartHabil,CREA,CodigoRamo) CodigoDept referencia Depto CodigoRamo referencia Ramo Domínio (CodigoEmp,CodigoProc) CódigoEmp referencia Emp CódigoProc referencia ProcessTexto Participação (CodigoEmp,CodigoProj) CodigoEmp referencia Emp CodigoProj referencia Projeto Depto (CodigoDept, Nome) Projeto (CodigoProj,Nome) Ramo (CodigoRamo,Nome) ProcessTexto (CodigoProc,Nome) Emp (CodigoEmp,Tipo,Nome,CIC,CodigoDept, CartHabil,CREA,CodigoRamo) CodigoDept referencia Depto CodigoRamo referencia Ramo Domínio (CodigoEmp,CodigoProc) CódigoEmp referencia Emp CódigoProc referencia ProcessTexto Participação (CodigoEmp,CodigoProj) CodigoEmp referencia Emp CodigoProj referencia Projeto Depto (CodigoDept, Nome) Projeto (CodigoProj,Nome) Ramo (CodigoRamo,Nome) ProcessTexto (CodigoProc,Nome) implementação de relacionamentos 1:n das especializações ©Carlos A. Heuser 20 Uma tabela por hierarquia - resultado 20 código nome código nome CREA EMPREGADOEMPREGADO DEPARTAMENTODEPARTAMENTO SECRETÁRIASECRETÁRIA ENGENHEIROENGENHEIRO PROCESSADOR DE TEXTOS PROCESSADOR DE TEXTOS PROJETOPROJETO DOMÍNIODOMÍNIO PARTICIPAÇÃOPARTICIPAÇÃO LOTAÇÃOLOTAÇÃO tipo de empregado nome carteira de habilitação CIC (1,1)(0,n) (1,n) (0,n) (0,n) (0,n) px RAMO DA ENGENHARIA RAMO DA ENGENHARIA (0,n) (1,1) MOTORISTAMOTORISTA código código nome código nome Emp (CodigoEmp,Tipo,Nome,CIC,CodigoDept, CartHabil,CREA,CodigoRamo) CodigoDept referencia Depto CodigoRamo referencia Ramo Domínio (CodigoEmp,CodigoProc) CódigoEmp referencia Emp CódigoProc referencia ProcessTexto Participação (CodigoEmp,CodigoProj) CodigoEmp referencia Emp CodigoProj referencia Projeto Depto (CodigoDept, Nome) Projeto (CodigoProj,Nome) Ramo (CodigoRamo,Nome) ProcessTexto (CodigoProc,Nome) Emp (CodigoEmp,Tipo,Nome,CIC,CodigoDept, CartHabil,CREA,CodigoRamo) CodigoDept referencia Depto CodigoRamo referencia Ramo Domínio (CodigoEmp,CodigoProc) CódigoEmp referencia Emp CódigoProc referencia ProcessTexto Participação (CodigoEmp,CodigoProj) CodigoEmp referencia Emp CodigoProj referencia Projeto Depto (CodigoDept, Nome) Projeto (CodigoProj,Nome) Ramo (CodigoRamo,Nome) ProcessTexto (CodigoProc,Nome) ©Carlos A. Heuser 21 Uma tabela por entidade especializada 1. Criar uma tabela para cada entidade que compõe a hierarquia. 2. Incluir a chave primária da tabela correspondente à entidade genérica, em cada tabela correspondente a uma entidade especializada. ©Carlos A. Heuser 21 22 Entidade especializada 22 código nome código nome CREA EMPREGADOEMPREGADO DEPARTAMENTODEPARTAMENTO SECRETÁRIASECRETÁRIA ENGENHEIROENGENHEIRO PROCESSADOR DE TEXTOS PROCESSADOR DE TEXTOS PROJETOPROJETO DOMÍNIODOMÍNIO PARTICIPAÇÃOPARTICIPAÇÃO LOTAÇÃOLOTAÇÃO tipo de empregado nome carteira de habilitação CIC (1,1)(0,n) (1,n) (0,n) (0,n) (0,n) px RAMO DA ENGENHARIA RAMO DA ENGENHARIA (0,n) (1,1) MOTORISTAMOTORISTA código código nome código nome SECRETÁRIA não tem atributos, nem relacionamentos a implementar por adição de chaves não há tabela para esta entidade ©Carlos A. Heuser 23 Uma tabela por entidade especializada resultado 23 código nome código nome CREA EMPREGADOEMPREGADO DEPARTAMENTODEPARTAMENTO SECRETÁRIASECRETÁRIA ENGENHEIROENGENHEIRO PROCESSADOR DE TEXTOS PROCESSADOR DE TEXTOS PROJETOPROJETO DOMÍNIODOMÍNIO PARTICIPAÇÃOPARTICIPAÇÃO LOTAÇÃOLOTAÇÃO tipo de empregado nome carteira de habilitação CIC (1,1)(0,n) (1,n) (0,n) (0,n) (0,n) px RAMO DA ENGENHARIA RAMO DA ENGENHARIA (0,n) (1,1) MOTORISTAMOTORISTA código código nome código nome Emp (CodigoEmp,Tipo,Nome,CIC,CódigoDept) CodigoDept referencia Depto Motorista(CodigoEmp,CartHabil) CodigoEmp referencia Emp Engenheiro(CodigoEmp,CREA,CodigoRamo) CódigoEmp referencia Emp CódigoRamo referencia Ramo Domínio (CodigoEmp,CodigoProc) CódigoEmp referencia Emp CódigoProc referencia ProcessTexto Participação (CodigoEmp,CodigoProj) CodigoEmp referencia Engenheiro CodigoProj referencia Projeto Depto (CodigoDept, Nome) Projeto (CodigoProj,Nome) Ramo (CodigoRamo,Nome) ProcessTexto (CodigoProc,Nome) Emp (CodigoEmp,Tipo,Nome,CIC,CódigoDept) CodigoDept referencia Depto Motorista(CodigoEmp,CartHabil) CodigoEmp referencia Emp Engenheiro(CodigoEmp,CREA,CodigoRamo) CódigoEmp referencia Emp CódigoRamo referencia Ramo Domínio (CodigoEmp,CodigoProc) CódigoEmp referencia Emp CódigoProc referencia ProcessTexto Participação (CodigoEmp,CodigoProj) CodigoEmp referencia Engenheiro CodigoProj referencia Projeto Depto (CodigoDept, Nome) Projeto (CodigoProj,Nome) Ramo (CodigoRamo,Nome) ProcessTexto (CodigoProc,Nome) ©Carlos A. Heuser 24 Vantagens da implementação com tabela única • Dados referentes à entidade genérica + dados referentes às especializações: – em uma única linha. • Minimiza junções. • Menor número de chaves. ©Carlos A. Heuser 24 25 Vantagens da implementação com uma tabela por entidade especializada • Colunas opcionais: – apenas aquelas referentes a atributos opcionais. ©Carlos A. Heuser 25 26 Subdivisão da entidade genérica • Uma tabela para cada entidade especializada que não possua outra especialização (entidade folha da árvore). • Tabela contém: – dados da entidade especializada + – dados da entidade genérica. ©Carlos A. Heuser 26 27 Subdivisão da entidade genérica resultado 27 código nome código nome CREA EMPREGADOEMPREGADO DEPARTAMENTODEPARTAMENTO SECRETÁRIASECRETÁRIA ENGENHEIROENGENHEIRO PROCESSADOR DE TEXTOS PROCESSADOR DE TEXTOS PROJETOPROJETO DOMÍNIODOMÍNIO PARTICIPAÇÃOPARTICIPAÇÃO LOTAÇÃOLOTAÇÃO tipo de empregado nome carteira de habilitação CIC (1,1)(0,n) (1,n) (0,n) (0,n) (0,n) px RAMO DA ENGENHARIA RAMO DA ENGENHARIA (0,n) (1,1) MOTORISTAMOTORISTA código código nome código nome EmpOutros(CodigoEmp,Tipo,Nome,CIC, CodigoDept) CodigoDept referencia Depto Motorista(CodigoEmp,Nome,CIC,CodigoDept, CartHabil) CodigoDept referencia Depto Engenheiro(CodigoEmp,Nome,CIC,CodigoDept, CREA,CodigoRamo) CodigoDept referencia Depto CodigoRamo referencia Ramo Depto(CodigoDept,Nome) Ramo(CodigoRamo,Nome) ProcessTexto(CodigoProc,Nome) Dominio(CodigoEmp,CodigoProc) CodigoEmp referencia EmpOutros Codigo Proc referencia ProcessTexto Projeto(CodigoProj,Nome) Participação(CodigoEmp,CodigoProj) CodigoEmp referencia Engenheiro CodigoProj referencia Projeto EmpOutros(CodigoEmp,Tipo,Nome,CIC,CodigoDept) CodigoDept referencia Depto Motorista(CodigoEmp,Nome,CIC,CodigoDept, CartHabil) CodigoDept referencia Depto Engenheiro(CodigoEmp,Nome,CIC,CodigoDept, CREA,CodigoRamo) CodigoDept referencia Depto CodigoRamo referencia Ramo Depto(CodigoDept,Nome) Ramo(CodigoRamo,Nome) ProcessTexto(CodigoProc,Nome) Dominio(CodigoEmp,CodigoProc) CodigoEmp referencia EmpOutros Codigo Proc referencia ProcessTexto Projeto(CodigoProj,Nome) Participação(CodigoEmp,CodigoProj) CodigoEmp referencia Engenheiro CodigoProj referencia Projeto©Carlos A. Heuser 28 Subdivisão da entidade genérica • Desvantagens: 1. Unicidade do identificador de empregado: • não é garantida pelo SGBD; • deve ser garantida pela aplicação. 2. Não há como especificar ao SGBD restrições de integridade referenciais, que façam referência ao conjunto de empregados como um todo. ©Carlos A. Heuser 28 29 Refinamento do modelo relacional • Projeto (engenharia) em geral é: – compromisso entre o ideal e o realizável dentro das restrições de recursos impostas pelas prática. • Projeto de banco de dados é: – compromisso entre o ideal (regras de implementação) e o alcançável frente a limitações de performance. ©Carlos A. Heuser 29 30 Refinamento do modelo relacional • Algumas vezes: – esquema de BD criado através do uso das regras acima não atende requisitos de desempenho impostos ao sistema. • Necessário buscar alternativa que resulte em melhor desempenho do sistema. • Alternativas somente devem ser tentadas em último caso: – Do ponto de vista da programação são normalmente piores. ©Carlos A. Heuser 30 31 Refinamento do modelo relacional • Exemplos de alternativas de projeto: 1. Relacionamentos mutuamente exclusivos 2. Simulação de atributos multivalorados 3. Informações redundantes ©Carlos A. Heuser 31 32 Relacionamentos mutuamente exclusivos ©Carlos A. Heuser 32 PESSOA FíSICA PESSOA FíSICA VENDAVENDA PESSOA JURíDICA PESSOA JURíDICA (0,n) (0,1) (0,n)(0,1) CIC nome Nº data CGC razão social 33 Relacionamentos mutuamente exclusivos • Implementação pelas regras: • As colunas CIC e CGC em Venda são especificadas como opcionais. ©Carlos A. Heuser 33 PessFis(CIC,Nome) PessJur(CGC,RazSoc) Venda(No,data,CIC,CGC) CIC referencia PessFis CGC referencia PessJur PessFis(CIC,Nome) PessJur(CGC,RazSoc) Venda(No,data,CIC,CGC) CIC referencia PessFis CGC referencia PessJur 34 Relacionamentos mutuamente exclusivos • Implementação alternativa: – Criar uma única coluna na qual aparece o CIC ou o CGC do comprador: – Desvantagem: • Não é possível especificar ao SGBD que o campo CIC/CGC é chave estrangeira: – seria referência a duas tabelas. ©Carlos A. Heuser 34 PessFis(CIC,Nome) PessJur(CGC,RazSoc) Venda(No,data,CIC/CGC,TipoCompr) PessFis(CIC,Nome) PessJur(CGC,RazSoc) Venda(No,data,CIC/CGC,TipoCompr) 35 Tratamento de atributos multivalorados ©Carlos A. Heuser 35 códigonom e CLIENTECLIENTE número de telefone (0,n) código nome CLIENTECLIENTE TELEFONETELEFONE (1,1) (0,n) número 36 Atributos multivalorados implementação padrão ©Carlos A. Heuser 36 Cliente (CodCli,Nome) Telefone (CodCli,Número) CodCli referencia Cliente Cliente (CodCli,Nome) Telefone (CodCli,Número) CodCli referencia Cliente 37 Atributos multivalorados alternativa • Condições de contorno: – Raros clientes possuem mais que dois telefones. – Quando isso ocorrer: • é suficiente armazena apenas dois números. – Não há consultas ao banco de dados usando o número de telefone como critério de seleção. – Números de telefone são apenas exibidos ou impressos juntos às demais informações de cliente. ©Carlos A. Heuser 37 38 Simulação de atributos multivalorados • Implementação “desnormalizada”: • Simular uma coluna multivalorada, através da criação de diversas colunas NumTel sufixadas por um número. ©Carlos A. Heuser 38 Cliente (CodCli,Nome,NumTel1,NumTel2)Cliente (CodCli,Nome,NumTel1,NumTel2) 39 Simulação de atributos multivalorados • Permite que os telefones de um cliente sejam obtidos mais rapidamente. • Implica em menos espaço ocupado: – não é necessária chave primária da tabela Telefone. • Inconveniente: – Consulta usando o número de telefone como critério de busca torna- se mais complicada. ©Carlos A. Heuser 39 40 Informações redundantes • Exemplo: – atributos que resultam de uma operação que envolve diversas entidades do banco de dados; – valor destes atributos: • deve ser obtido com frequência ou • serve frequentemente como critério de busca de informações no banco de dados. • Pode ser mais eficiente (desempenho global do sistema) – armazenar redundantemente o atributo derivado. ©Carlos A. Heuser 40 41 Informações redundantes Exemplo ©Carlos A. Heuser 41 número de reservas passageiro códigoroteiro VOOVOO RESERVA (1,1) (0,n) número a t r i b u t o r e d u n d a n t e 42 Engenharia reversa de modelos relacionais • Engenharia reversa: 1. parte de modelo de implementação; 2. obtém modelo de especificação (modelo conceitual). ©Carlos A. Heuser 42 43 Engenharia reversa ©Carlos A. Heuser 43 Modelo ER (conceitual) Modelo relacional (lógico) c Projeto lógico de BD relacional Engenharia reversa de BD relacional 44 Engenharia reversa de modelo relacional Passos: 1. Identificação da construção ER correspondente a cada tabela; 2. Definição de relacionamentos 1:n e 1:1; 3. Definição de atributos; 4. Definição de identificadores de entidades e relacionamentos. ©Carlos A. Heuser 44 45 Esquema relacional exemplo para engenharia reversa ©Carlos A. Heuser 45 Disciplina (CodDisc,NomeDisc) Curso (CodCr,NomeCr) Curric (CodCr,CodDisc,Obr/Opc) CodCr referencia Curso CodDisc referencia Disciplina Sala (CodPr,CodSl,Capacidade) CodPr referencia Prédio Prédio (CodPr,Endereço) Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala Laboratório (CodPr,CodSl,Equipam) (CodPr,CodSl) referencia Sala Disciplina (CodDisc,NomeDisc) Curso (CodCr,NomeCr) Curric (CodCr,CodDisc,Obr/Opc) CodCr referencia Curso CodDisc referencia Disciplina Sala (CodPr,CodSl,Capacidade) CodPr referencia Prédio Prédio (CodPr,Endereço) Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala Laboratório (CodPr,CodSl,Equipam) (CodPr,CodSl) referencia Sala 46 Identificação da construção ER correspondente a cada tabela • Uma tabela pode corresponder a: 1. uma entidade; 2. um relacionamento n:n; 3. uma entidade especializada. • Fator determinante: – composição da chave primária da tabela. ©Carlos A. Heuser 46 47 Tipos de tabelas para identificação de construção ER ©Carlos A. Heuser 47 Composição da chave primária Construção ER correspondente Múltiplas chaves estrangeiras Relacionamento n:n Toda chave primária é uma chave estrangeira Especialização Demais casos Entidade 48 Passo #1 – identificação de construções ER ©Carlos A. Heuser 48 Disciplina (CodDisc,NomeDisc) Curso (CodCr,NomeCr) Curric (CodCr,CodDisc,Obr/Opc) CodCr referencia Curso CodDisc referencia Disciplina Sala (CodPr,CodSl,Capacidade) CodPr referencia Prédio Prédio (CodPr,Endereço) Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala Laboratório (CodPr,CodSl,Equipam) (CodPr,CodSl)referencia Sala Disciplina (CodDisc,NomeDisc) Curso (CodCr,NomeCr) Curric (CodCr,CodDisc,Obr/Opc) CodCr referencia Curso CodDisc referencia Disciplina Sala (CodPr,CodSl,Capacidade) CodPr referencia Prédio Prédio (CodPr,Endereço) Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala Laboratório (CodPr,CodSl,Equipam) (CodPr,CodSl) referencia Sala chave primária composta por duas (múltiplas) chaves estrangeiras = tabela representa um relacionamento n:n 49 Passo #1 – identificação de construções ER ©Carlos A. Heuser 49 Disciplina (CodDisc,NomeDisc) Curso (CodCr,NomeCr) Curric (CodCr,CodDisc,Obr/Opc) CodCr referencia Curso CodDisc referencia Disciplina Sala (CodPr,CodSl,Capacidade) CodPr referencia Prédio Prédio (CodPr,Endereço) Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala Laboratório (CodPr,CodSl,Equipam) (CodPr,CodSl) referencia Sala Disciplina (CodDisc,NomeDisc) Curso (CodCr,NomeCr) Curric (CodCr,CodDisc,Obr/Opc) CodCr referencia Curso CodDisc referencia Disciplina Sala (CodPr,CodSl,Capacidade) CodPr referencia Prédio Prédio (CodPr,Endereço) Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala Laboratório (CodPr,CodSl,Equipam) (CodPr,CodSl) referencia Sala toda chave primária é uma chave estrangeira = tabela representa uma especialização 50 Passo #1 – identificação de construções ER ©Carlos A. Heuser 50 Disciplina (CodDisc,NomeDisc) Curso (CodCr,NomeCr) Curric (CodCr,CodDisc,Obr/Opc) CodCr referencia Curso CodDisc referencia Disciplina Sala (CodPr,CodSl,Capacidade) CodPr referencia Prédio Prédio (CodPr,Endereço) Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala Laboratório (CodPr,CodSl,Equipam) (CodPr,CodSl) referencia Sala Disciplina (CodDisc,NomeDisc) Curso (CodCr,NomeCr) Curric (CodCr,CodDisc,Obr/Opc) CodCr referencia Curso CodDisc referencia Disciplina Sala (CodPr,CodSl,Capacidade) CodPr referencia Prédio Prédio (CodPr,Endereço) Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala Laboratório (CodPr,CodSl,Equipam) (CodPr,CodSl) referencia Sala demais casos = tabela representa uma entidade 51 Passo #1 – identificação de construções ER ©Carlos A. Heuser 51 Disciplina (CodDisc,NomeDisc) Curso (CodCr,NomeCr) Curric (CodCr,CodDisc,Obr/Opc) CodCr referencia Curso CodDisc referencia Disciplina Sala (CodPr,CodSl,Capacidade) CodPr referencia Prédio Prédio (CodPr,Endereço) Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala Laboratório (CodPr,CodSl,Equipam) (CodPr,CodSl) referencia Sala Disciplina (CodDisc,NomeDisc) Curso (CodCr,NomeCr) Curric (CodCr,CodDisc,Obr/Opc) CodCr referencia Curso CodDisc referencia Disciplina Sala (CodPr,CodSl,Capacidade) CodPr referencia Prédio Prédio (CodPr,Endereço) Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala Laboratório (CodPr,CodSl,Equipam) (CodPr,CodSl) referencia Sala chave primária contém uma única chave estrangeira, mas não é toda ela chave estrangeira = tabela representa uma entidade 52 Construções identificadas ©Carlos A. Heuser 52 PRÉDIOPRÉDIO TURMATURMA DISCIPLINADISCIPLINA SALASALA CURSOCURSO CURRÍCULOCURRÍCULO n n LABORATÓRIOLABORATÓRIO 53 Passo #2 - identificação de relacionamentos 1:n ou 1:1 • As chaves estrangeiras tratadas no passo anterior correspondem a: – relacionamentos n:n, – especializações. • Chave estrangeira que não foi tratada no passo anterior representa: relacionamento 1:n ou relacionamento 1:1 • Nem sempre, esquema não informa se é 1:1 ou 1:n ©Carlos A. Heuser 53 54 Passo #2 - identificação de relacionamentos 1:n ou 1:1 ©Carlos A. Heuser 54 Disciplina (CodDisc,NomeDisc) Curso (CodCr,NomeCr) Curric (CodCr,CodDisc,Obr/Opc) CodCr referencia Curso CodDisc referencia Disciplina Sala (CodPr,CodSl,Capacidade) CodPr referencia Prédio Prédio (CodPr,Endereço) Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala Laboratório (CodPr,CodSl,Equipam) (CodPr,CodSl) referencia Sala Disciplina (CodDisc,NomeDisc) Curso (CodCr,NomeCr) Curric (CodCr,CodDisc,Obr/Opc) CodCr referencia Curso CodDisc referencia Disciplina Sala (CodPr,CodSl,Capacidade) CodPr referencia Prédio Prédio (CodPr,Endereço) Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala Laboratório (CodPr,CodSl,Equipam) (CodPr,CodSl) referencia Sala chave estrangeiras ainda não tratadas 55 Passo #2 - exemplo ©Carlos A. Heuser 55 Disciplina (CodDisc,NomeDisc) Curso (CodCr,NomeCr) Curric (CodCr,CodDisc,Obr/Opc) CodCr referencia Curso CodDisc referencia Disciplina Sala (CodPr,CodSl,Capacidade) CodPr referencia Prédio Prédio (CodPr,Endereço) Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala Laboratório (CodPr,CodSl,Equipam) (CodPr,CodSl) referencia Sala Disciplina (CodDisc,NomeDisc) Curso (CodCr,NomeCr) Curric (CodCr,CodDisc,Obr/Opc) CodCr referencia Curso CodDisc referencia Disciplina Sala (CodPr,CodSl,Capacidade) CodPr referencia Prédio Prédio (CodPr,Endereço) Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala Laboratório (CodPr,CodSl,Equipam) (CodPr,CodSl) referencia Sala campo monovalorado – relaciona a turma com no máximo uma disciplina 56 Passo #2 - exemplo ©Carlos A. Heuser 56 Disciplina (CodDisc,NomeDisc) Curso (CodCr,NomeCr) Curric (CodCr,CodDisc,Obr/Opc) CodCr referencia Curso CodDisc referencia Disciplina Sala (CodPr,CodSl,Capacidade) CodPr referencia Prédio Prédio (CodPr,Endereço) Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala Laboratório (CodPr,CodSl,Equipam) (CodPr,CodSl) referencia Sala Disciplina (CodDisc,NomeDisc) Curso (CodCr,NomeCr) Curric (CodCr,CodDisc,Obr/Opc) CodCr referencia Curso CodDisc referencia Disciplina Sala (CodPr,CodSl,Capacidade) CodPr referencia Prédio Prédio (CodPr,Endereço) Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala Laboratório (CodPr,CodSl,Equipam) (CodPr,CodSl) referencia Sala CodDisc é obrigatório – cada turma está relacionada com ao menos uma disciplina 57 Passo #2 - exemplo ©Carlos A. Heuser 57 Disciplina (CodDisc,NomeDisc) Curso (CodCr,NomeCr) Curric (CodCr,CodDisc,Obr/Opc) CodCr referencia Curso CodDisc referencia Disciplina Sala (CodPr,CodSl,Capacidade) CodPr referencia Prédio Prédio (CodPr,Endereço) Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala Laboratório (CodPr,CodSl,Equipam) (CodPr,CodSl) referencia Sala Disciplina (CodDisc,NomeDisc) Curso (CodCr,NomeCr) Curric (CodCr,CodDisc,Obr/Opc) CodCr referencia Curso CodDisc referencia Disciplina Sala (CodPr,CodSl,Capacidade) CodPr referencia Prédio Prédio (CodPr,Endereço) Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl)CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala Laboratório (CodPr,CodSl,Equipam) (CodPr,CodSl) referencia Sala em turma podem aparecer várias linhas com um valor de CodDisc – relaciona a disciplina com possivelmente várias turma 58 Passo #2 - exemplo ©Carlos A. Heuser 58 Disciplina (CodDisc,NomeDisc) Curso (CodCr,NomeCr) Curric (CodCr,CodDisc,Obr/Opc) CodCr referencia Curso CodDisc referencia Disciplina Sala (CodPr,CodSl,Capacidade) CodPr referencia Prédio Prédio (CodPr,Endereço) Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala Laboratório (CodPr,CodSl,Equipam) (CodPr,CodSl) referencia Sala Disciplina (CodDisc,NomeDisc) Curso (CodCr,NomeCr) Curric (CodCr,CodDisc,Obr/Opc) CodCr referencia Curso CodDisc referencia Disciplina Sala (CodPr,CodSl,Capacidade) CodPr referencia Prédio Prédio (CodPr,Endereço) Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala Laboratório (CodPr,CodSl,Equipam) (CodPr,CodSl) referencia Sala TURMATURMA DISCIPLINADISCIPLINA n (1,1) 59 Passo #2 - exemplo ©Carlos A. Heuser 59 Disciplina (CodDisc,NomeDisc) Curso (CodCr,NomeCr) Curric (CodCr,CodDisc,Obr/Opc) CodCr referencia Curso CodDisc referencia Disciplina Sala (CodPr,CodSl,Capacidade) CodPr referencia Prédio Prédio (CodPr,Endereço) Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala Laboratório (CodPr,CodSl,Equipam) (CodPr,CodSl) referencia Sala Disciplina (CodDisc,NomeDisc) Curso (CodCr,NomeCr) Curric (CodCr,CodDisc,Obr/Opc) CodCr referencia Curso CodDisc referencia Disciplina Sala (CodPr,CodSl,Capacidade) CodPr referencia Prédio Prédio (CodPr,Endereço) Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala Laboratório (CodPr,CodSl,Equipam) (CodPr,CodSl) referencia Sala PRÉDIOPRÉDIO SALASALA n (1,1) 60 Passo #2 - exemplo ©Carlos A. Heuser 60 Disciplina (CodDisc,NomeDisc) Curso (CodCr,NomeCr) Curric (CodCr,CodDisc,Obr/Opc) CodCr referencia Curso CodDisc referencia Disciplina Sala (CodPr,CodSl,Capacidade) CodPr referencia Prédio Prédio (CodPr,Endereço) Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala Laboratório (CodPr,CodSl,Equipam) (CodPr,CodSl) referencia Sala Disciplina (CodDisc,NomeDisc) Curso (CodCr,NomeCr) Curric (CodCr,CodDisc,Obr/Opc) CodCr referencia Curso CodDisc referencia Disciplina Sala (CodPr,CodSl,Capacidade) CodPr referencia Prédio Prédio (CodPr,Endereço) Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala Laboratório (CodPr,CodSl,Equipam) (CodPr,CodSl) referencia Sala TURMATURMA SALASALA 1 ? 61 n (1,1) Passo #2 - Construções identificadas ©Carlos A. Heuser 61 PRÉDIOPRÉDIO TURMATURMA DISCIPLINADISCIPLINA SALASALA CURSOCURSO CURRÍCULOCURRÍCULO n n LABORATÓRIOLABORATÓRIO n 1 ? (1,1) 62 Passo #3 - Definição de atributos • Cada coluna não chave estrangeira é: – um atributo na entidade/relacionamento correspondente à tabela. • As colunas chave estrangeira não correspondem a atributos: – correspondem a relacionamentos; – já foram tratadas nas etapas anteriores. ©Carlos A. Heuser 62 63 Passo #3 – exemplo ©Carlos A. Heuser 63 Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala AnoSem, SiglaTur e Capacidade não são chaves estrangeiras = correspondem a atributos 64 Passo #3 – exemplo ©Carlos A. Heuser 64 Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala ano/sem siglacapacidade TURMATURMA 65©Carlos A. Heuser capacidade obrig/opc nomecódigo nome código ano/sem siglacapacidade código endereçocódigo Passo #3 - Atributos identificados 65 n (1,1) PRÉDIOPRÉDIO TURMATURMA DISCIPLINADISCIPLINA SALASALA CURSOCURSO CURRÍCULOCURRÍCULO n n LABORATÓRIOLABORATÓRIO n 1 ? (1,1) equipamento 66 Passo #4 – Definição de identificadores de entidades Chave primária: 1. Coluna da chave primária que não é chave estrangeira: – corresponde a um atributo identificador da entidade ou relacionamento. 2. Coluna da chave primária que é chave estrangeira: – corresponde a um relacionamento identificador da entidade ©Carlos A. Heuser 66 67 Passo #3 – exemplo ©Carlos A. Heuser 67 Turma (Anosem,CodDisc,SiglaTur,...) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala Turma (Anosem,CodDisc,SiglaTur,...) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala colunas não chave estrangeira = atributo identificador 68 Passo #3 – exemplo ©Carlos A. Heuser 68 Turma (Anosem,CodDisc,SiglaTur,...) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala Turma (Anosem,CodDisc,SiglaTur,...) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala ano/sem siglacapacidade TURMATURMA colunas não chave estrangeira = atributo identificador 69 Passo #3 – exemplo ©Carlos A. Heuser 69 Turma (Anosem,CodDisc,SiglaTur,...) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala Turma (Anosem,CodDisc,SiglaTur,...) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala coluna chave estrangeira = relacionamento identificador 70 Passo #3 – exemplo ©Carlos A. Heuser 70 Turma (Anosem,CodDisc,SiglaTur,...) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala Turma (Anosem,CodDisc,SiglaTur,...) CodDisc referencia Disciplina (CodPr,CodSl) referencia Sala coluna chave estrangeira = relacionamento identificador nome código ano/sem siglacapacidade n (1,1) DISCIPLINA DISCIPLINATURMATURMA 71 Passo #3 – Definição de identificadores de entidades ©Carlos A. Heuser 71 capacidade obrig/opc nomecódigo nome código ano/sem siglacapacidade código endereçocódigo n (1,1) PRÉDIOPRÉDIO DISCIPLINADISCIPLINA CURSOCURSO CURRÍCULOCURRÍCULO n n LABORATÓRIOLABORATÓRIO n 1 ? (1,1) equipamento TURMATURMA SALASALA
Compartilhar