Capitulo 2 1. MODELO LÓGICO DE BANCO DE DADOS ................................................................. 2 1.1 Definição .......................................................................................................................... 2 1.2 Mapeando o modelo conceitual para o modelo lógico ..................................................... 2 1.2 Dicionário de dados .......................................................................................................... 3 2. MODELO FÍSICO DO BANCO DE DADOS ................................................................... 4 2.1 Definição .......................................................................................................................... 4 2.2 Mapeando o modelo conceitual para o modelo lógico ..................................................... 4 3.BIBLIOGRAFIA ................................................................................................................. 10 ________________________________________________________________________ Prof.º Espc. Fábio Margarito Martins de Barros - Tecnologia de banco de dados 1 1. MODELO LÓGICO DE BANCO DE DADOS 1.1 Definição Projetar um esquema de um banco de dados relacional a partir de um modelo conceitual denomina-se projeto lógico de um banco de dados. A partir de um modelo conceitual aplicamos um algoritmo e temos um modelo lógico do banco. Entende-se por algoritmo uma seqüência de passos para atingir um determinado objetivo. 1.2 Mapeando o modelo conceitual para o modelo lógico Mapeamento de entidades regulares (Comuns) : Para cada entidade do modelo conceitual criar uma entidade no modelo lógico: Mapeamento de atributos de atributos chaves “Mais importantes da entidade” : Para cada atributo chave da entidade do modelo conceitual criar um atributo PK (Primary key) na entidade do modelo lógico. Mapeamento de atributos simples: Para cada atributo simples da entidade do modelo conceitual criar um atributo simples na entidade do modelo lógico. Mapeamento de atributos compostos: Para cada atributo composto criar na entidade do modelo lógico somente os componentes do atributo composto. Mapeamento de atributos multivalorados: Para cada atributo multivalorado criar uma entidade no modelo lógico contendo o atributo chave (FK) da entidade que este atributo pertence mais um atributo chave desta nova entidade (PK). A chave desta entidade será estes dois atributos(PKs). Mapeamento de entidades fracas: Para cada entidade fraca criar uma entidade no modelo relacional incluindo nesta entidade fraca o atributo chave da entidade Pai. A ________________________________________________________________________ Prof.º Espc. Fábio Margarito Martins de Barros - Tecnologia de banco de dados 2 chave primária desta entidade será composta pelo atributo chave da entidade pai mais o atributo chave da entidade fraca. Mapeamento de relacionamentos 1:N: Para cada relacionamento um para muitos exportar o atributo chave da entidade do lado 1 para o lado N. Este atritubuto exportado tem o nome de Foreign Key (FK). Mapeamento de relacionamentos N:N ou N:M: Para cada relacionamento muitos para muitos criar uma nova entidade tendo como chave os atributos das entidades participantes do relacionamento que serão a chaves primárias desta nova entidade além de serem foreing keys e mais os atributos do relacionamento. Mapeamento de relacionamentos 1:1: Neste tipo de relacionamento escolhe-se uma das entidades e exporta seu atributo chave para a outra entidade, sendo a FK desta entidade. 1.2 Dicionário de dados O dicionário de dados descreve a terminologia utilizada para o desenvolvimento do modelo de dados do sistema. Apresenta uma descrição textual da estrutura lógica e física do banco de dados. Neste dicionário você pode simplesmente colocar a descrição por extenso de campos e tabela como também colocar outras características dos compôs como , tipo de dado, se o mesmo é requerido ou não. Abaixo segue um exemplo de um pequeno dicionário de dados. tb_funcionario noIDFuncionario sNome sEmail sUserName Identificador numérico de cada funcionário cadastrado(código). Nome completo do funcionário. Email do funcionário. Login para o funcionario se logar no WebSuporte. ________________________________________________________________________ Prof.º Espc. Fábio Margarito Martins de Barros - Tecnologia de banco de dados 3 sPassword Senha para o funcionário se logar no WebSuporte. tb_empresa noIDEmpresa sRazaoSocial Identificador número de cada empresa cadastrada(código) Nome completo da empresa 2. MODELO FÍSICO DO BANCO DE DADOS 2.1 Definição O modelo físico de um banco de dados está relacionado com a implementação de um modelo lógico em algum sistema de banco de dados de mercado (SQL SERVER, ORACLE, FIREBIRD, MYSQL etc..). No modelo físico mapeamos a entidades em tabelas e atributos em colunas destas tabelas, mas o modelo físico não está limitado a esta implementação, mas também a técnicas de tunning (melhorias de desempenho). Muitas vezes será necessário desnormalizar nosso modelo para termos um ganho de desempenho. Quem propões tais mudanças serão os DBAs, pois é preciso ter um conhecimento muito sólido do SGBD(Sistema gerenciado de banco de dados) no qual o modelo lógico será implementado. No momento veremos como implementar as tabelas e atributos e em um capítulo mais adiante estaremos vendo outras etapas do projeto físico de um banco de dados. 2.2 Mapeando o modelo conceitual para o modelo lógico Mapear um modelo lógico em um modelo físico na primeira fase é simplesmente transformar as entidades em tabelas e atributos em colunas das tabelas. Um conjunto de tabelas forma um banco de dados e para isso devemos também criar um banco de dados no SGBD escolhido. Para a criação destas ________________________________________________________________________ 4 Prof.º Espc. Fábio Margarito Martins de Barros - Tecnologia de banco de dados tabelas, campos e data base utilizamos a linguagem SQL. A linguagem SQL pode ser considerada uma das maiores razões para o sucesso dos bancos de dados relacionais no mundo comercial. Como se tornou padrão para os bancos relacionais, os usuários têm pouca preocupação ao migrar suas aplicações de um banco de dados para outro.Na prática existem muitas diferenças entre um SGBD para outro. Entretanto se o usuário for diligente e usar somente aquelas funcionalidades que fazem parte do padrão, e se ambos os sistemas suportarem plenamente este padrão, então a conversão entre os dois sistemas será muito fácil. O nome SQL é derivado de Structured Query language (Linguagem estruturada de consulta). A SQL é a linguagem padrão para os SGBDs relacionais comerciais. Um esforço conjunto da ANSI (American National Standards institute) e da ISO(Internation Standards Organization) chegou a versão padrão (ANSI,1986), chamada SQL-86 ou SQL1. Uma nova versão revisada e expandida chamada SQL2 (também conhecida como SQL-92) foi desenvolvida em seguida. A próxima versão do padrão foi originalmente chamada de SQL3, mas atualmente é conhecida como SQL-99. A linguagem SQL é bem abrangente, cobre definição de dados , consulta e atualizações, possuindo comandos DDL(Data definition language – Linguagem de definição de dados) e DML (Data Manipulation Languagem - Linguagem de manipulação de dados). Para a criação do modelo físico do banco de dados utilizaremos o grupo chamado DDL. Mapeando entidades Para mapear uma entidade em uma tabela no banco de dados estaremos utilizando a instrução create table do grupo DDL da linguagem SQL. Com o comando create table definimos o nome da tabela seus atributos tipos de dados e restrições. Os tipos de dados podem ser numéricos, cadeia de caracteres (string), booleanos, data e horário. Numéricos: Tipos numéricos englobam os inteiros de vários tamanhos(inteiros ou int) e smallint e os números de ponto flutuante ou seja, com casas decimais temos: decimal(i,j) ou numeric (i,j) onde i é a precisão e j o número de casas decimais. ________________________________________________________________________ Prof.º Espc. Fábio Margarito Martins de Barros - Tecnologia de banco de dados 5 Cadeia de caracteres: Os caracteres podem ter tamanho fixo como char(n) onde n é o tamanho da cadeia de caracteres e caracteres de tamanaho variável como o varchar(n) onde n é o número máximo de caracteres. Booleano: Podem assumir o valor de verdadeiro ou falso. Date e time: O tipo date armazena datas e o tipo time armazena horas minutos e segundos. Timestamp: é um tipo de dados que armazena data e hora. Como restrições podemos considerar se um determinado campo poderá aceitar NULO (Nenhum valor) ou não. Por regra todo campo chave (PK) deverá ser NOT NULL, ou seja não NULO. Abaixo segue a sintaxe da instrução CREATE TABLE e logo a seguir o mapeando de um modelo lógico para o físico. SINOPSE DO CREATE TABLE: CREATE [ [ LOCAL ] { TEMPORARY | TEMP } ] TABLE nome_da_tabela ( { nome_da_coluna tipo_de_dado [ DEFAULT expressão_padrão ] [ restrição_de_coluna [, ... ] ] | restrição_de_tabela } [, ... ] ) [ INHERITS ( tabela_ascendente [, ... ] ) ] [ WITH OIDS | WITHOUT OIDS ] onde restrição_de_coluna é: [ CONSTRAINT nome_da_restrição ] { NOT NULL | NULL | UNIQUE | PRIMARY KEY | CHECK (expressão) | REFERENCES tabela_referenciada [ ( coluna_referenciada ) ] [ MATCH FULL | MATCH PARTIAL ] [ ON DELETE ação ] [ ON UPDATE ação ] } [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] ________________________________________________________________________ Prof.º Espc. Fábio Margarito Martins de Barros - Tecnologia de banco de dados 6 e restrição_de_tabela é: [ CONSTRAINT nome_da_restrição ] { UNIQUE ( nome_da_coluna [, ... ] ) | PRIMARY KEY ( nome_da_coluna [, ... ] ) | CHECK ( expressão ) | FOREIGN KEY ( nome_da_coluna [, ... ] ) REFERENCES tabela_referenciada [ ( coluna_referenciada [, ... ] ) ] [ MATCH FULL | MATCH PARTIAL ] [ ON DELETE ação ] [ ON UPDATE ação ] } [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] EXEMPLOS: MAPEANDO PARA O MODELO FÍSICO O MODELO LÓGICO ABAIXO: CLIENTE CPF NOME LOGRADOURO BAIRRO NOTA FISCAL DE VENDA NUMERO NOTA CPF (FK) DATA DE FATURAMENTO ITEM DA NOTA NUMERO NOTA (FK) CODIGO DO PRODUTO (FK) PRODUTO CODIGO DO PRODUTO DESCRICAO ________________________________________________________________________ Prof.º Espc. Fábio Margarito Martins de Barros - Tecnologia de banco de dados 7 Mapeando a entidade cliente do modelo lógico: CREATE TABLE TB_CLIENTE ( CPF INT NOT NULL, NOME VARCHAR(50) LOGRADOURO VARCHAR(100) , BAIRRO VARCHAR(30) , , PRIMARY KEY (CPF) ); Mapeando a entidade Nota fiscal de venda: CREATE TABLE TB_NF_VENDA ( NUMERONF INT DATAFATUR CPF NOT NULL, DATETIME INT , NOT NULL, PRIMARY KEY (NUMERONF) , FOREIGN KEY (CPF) REFERENCES TB_CLIENTE(CPF) ); Mapeando a entidade produto: CREATE TABLE TB_PRODUTO ( CODPRODUTO DESCRICAO INT NOT NULL, VARCHAR(50) NOT NULL, PRIMARY KEY (CODPRODUTO) ); Mapeando a entidade TB_ITEN_NOTA_VENDA ________________________________________________________________________ Prof.º Espc. Fábio Margarito Martins de Barros - Tecnologia de banco de dados 8 CREATE TABLE TB_ITEM_NOTA_VEDA ( NUMERONF CODPRODUTO INT NOT NULL, INT NOT NULL, PRIMARY KEY (CODPRODUTO,NUMERONF) FOREIGN KEY , (CODPRODUTO) REFERENCES TB_PRODUTO(CODPRODUTO), FOREIGN KEY (NUMERONF) REFERENCES TB_NF_VENDA(NUMERONF) ); ________________________________________________________________________ Prof.º Espc. Fábio Margarito Martins de Barros - Tecnologia de banco de dados 9 3.BIBLIOGRAFIA NAVATHE, ELMASRI. Sistema de banco de dados. 4º Edição. Editora Pearson. Exercícios: 1) Qual o mapeamento de uma entidade comum do modelo conceitual para o modelo lógico? a) b) c) d) e) Também uma entidade no modelo lógico. Duas entidades no modelo lógico. Três entidades no modelo lógico. Depende da quantidade de atributos. NDA. 2) Para mapearmos um relacionamento 1:N no do modelo conceitual para o lógico temos a) Atributo chave do lado N será exportado para o lado 1 b) Atributo chave do lado N será exportado para o lado 1 e o atributo chave do lado 1 será exportado para o lado N. c) Atributo chave do lado 1 será exportado para o lado N. d) Nenhum atributo é exportado. e) NDA. 3) É correto afirmar que: a) Um atributo chave de uma entidade é considerado PK(Primary key) no modelo lógico. b) Otributo chave de uma entidade é considerado PK(Primary key) no modelo Conceitual. b) Um atributo chave de uma entidade é considerado FK(Foreing key) no modelo conceitual. c) Não existe PK(Primary key) no modelo lógico. d) NDA. 4) A partir de um relacionamento N:M ou N:N do modelo conceitual, temos no modelo lógico: a) b) c) d) Duas entidades associativas. Três entidades associativas. Apenas uma entidade associativa. Nenhuma entidade associativa. ________________________________________________________________________ 10 Prof.º Espc. Fábio Margarito Martins de Barros - Tecnologia de banco de dados e) NDA. 5) Qual o principal objetivo do dicionário de dados. a) b) c) d) e) Fornecer uma descrição de todos os objetos do banco de dados. Fornecer o script de geração de tabelas. Fornecer diagramas do banco de dados. Mostrar os limites físicos do banco de dados. NDA. 6) Ao mapear entidades do modelo lógico para o modelo físico temos: a) b) c) d) e) Entidades físicas. Tabelas. Associações. Colunas NDA 7) Para mapear uma entidade do modelo lógico no modelo físico que instrução DDL (Data Definition Language) SQL, utilizamos? a) b) c) d) e) Alter table. Create Table Drop Table Include table. NDA. 8) Podemos dizer que o modelo físico é totalmente independente de qualquer gerenciador de banco de dados comercial, como: SQL Sever, Oracle ? a) Não, já a partir do modelo lógico já temos um forte acoplamento com o SGBD escolhido. b) Sim, a partir do modelo lógico podemos gerar o mesmo scritp SQL DDL para todos os SGBDS, c) Depende do modelo lógico. d) Depende das instruções utilizadas. e) NDA. 9) Cite dois tipos de dados. a) Numérico, Data. b) Num ________________________________________________________________________ 11 Prof.º Espc. Fábio Margarito Martins de Barros - Tecnologia de banco de dados