Sistema de Gerenciamento de Banco de Dados PROJETANDO UM BANCO DE DADOS LOGICAMENTE PROF.: ANDRÉ LUIZ MONTEVECCHI Tirando vantagem do mecanismo relacional Depois que o modelo conceitual é aprovado e obtém a anuência dos usuários e clientes, podemos criar o modelo lógico. Um projeto lógico é um modelo de banco de dados que evolui a partir do modelo conceitual, pois ele pega os requisitos anteriormente capturados e cria uma visão da solução de software. Tirando vantagem do mecanismo relacional Um diagrama lógico de banco de dados é criado para responder perguntas como estas: Que tipos de dados devem ser utilizados? Como identificar uma entidade? Quais regras devem ser impostas para validar os dados? Tirando vantagem do mecanismo relacional A terminologia da modelagem muda quando ela alcança o modelo lógico. Modelo conceitual Modelo lógico Entidade Tabela Atributo Coluna Relacionamento Chave estrangeira Tirando vantagem do mecanismo relacional Para criar um modelo lógico, siga os passos: Localize o tipo apropriado para cada coluna. Localize a chave primária de cada tabela. Normalize o banco de dados. Acrescente regras adicionais de validação. Tirando vantagem do mecanismo relacional A normalização é o processo em um banco de dados relacional que reduz a redundância e o potencial para anomalias aprimorando, assim, a integridade e a consistência dos dados. Normalização de banco de dados 1° Forma Normal: Verificação de tabelas aninhadas Para uma tabela estar na primeira forma normal, ela não deve conter tabelas aninhadas. Para verificar esta norma devemos fazer a pergunta: Este campo depende de qual? 1° Forma Normal Tabela sem a aplicação da norma: CODVENDA CODCLIENTE ENDERECO CEP CIDADE UF QTDE VL. UNITARIO VL.TOTAL 4343 2 Av. Amazonas 3233 BH MG 1 R$10,00 R$10,00 7878 3 Rua Peixoto 3265 Contagem MG 2 R$25,00 R$50,00 1° Forma Normal Tabelas com a aplicação da norma: CODVENDA CODCLIENTE QTDE VL. UNITARIO VL.TOTAL 4343 2 1 R$10,00 R$10,00 7878 3 2 R$25,00 R$50,00 CODCLIENTE NOME ENDERECO CEP CIDADE UF 2 Luiz Av. Amazonas 3233 BH MG 3 Augusto Rua Peixoto 3265 Contagem MG 2° Forma Normal 2° Forma Normal: Verificação de Dependências Parciais Para uma tabela estar na segunda forma normal, além de estar na primeira forma, ela não deve conter dependências parciais. Para verificar esta norma devemos fazer a pergunta: Este campo depende de toda a chave? Se não, temos uma dependência parcial. 2° Forma Normal Tabelas sem a aplicação da norma: CODVENDA CODCLIENTE CODCIDADE QTDE VL. UNITARIO VL.TOTAL 4343 2 20 1 R$10,00 R$10,00 7878 3 22 2 R$25,00 R$50,00 2° Forma Normal Tabelas com a aplicação da norma: CODVENDA CODCLIENTE QTDE VL. UNITARIO VL.TOTAL 4343 2 1 R$10,00 R$10,00 7878 3 2 R$25,00 R$50,00 CODCLIENTE CODCIDADE NOME CODCIDADE NOME 2 20 Maurício 20 Belo Horizonte 3 22 Márcia 22 Contagem 3° Forma Normal 3° Forma Normal: Verificação de Dependências Transitivas Para uma tabela estar na terceira forma normal, além de estar na segunda forma, ela não deve conter dependências transitivas. Para verificar esta norma devemos fazer a pergunta: Este campo depende de outro que não seja a chave? Se sim, temos uma dependência transitiva. 3° Forma Normal Tabelas sem a aplicação da norma: CODVENDA CODCLIENTE CODCIDADE QTDE VL.TOTAL 4343 2 20 1 R$10,00 7878 3 22 2 R$50,00 CODPRODUTO DESCRIÇÃO VL. UNITARIO 1234 Abajur R$10,00 4321 Espelho R$25,00 3° Forma Normal Tabelas com a aplicação da norma: CODVENDA CODCLIENTE CODPRODUTO QTDE 4343 2 1234 1 7878 3 4321 2 CODPRODUTO DESCRIÇÃO VL. UNITARIO 1234 Abajur R$10,00 4321 Espelho R$25,00 Definindo o tipo das colunas Toda vez que você define uma coluna, é necessário definir um tipo de dados. O tipo de dados é um atributo de cada coluna que especifica o tipo de dados que a coluna armazenará. Definir o tipo de dados apropriado é fundamental para manter a integridade do banco de dados. Por exemplo, se utilizar o tipo de dados char para definir uma coluna Preço, os usuário podem armazenar nomes nessa coluna. Atributos numéricos Inteiros e quantidades: Colunas de inteiro armazenam dados numéricos inteiros sem parte decimal. Inteiros incluem números naturais positivos (1, 2, 3), números naturais negativos (-1,-2,-3) e o 0. São freqüentemente usados para modelar quantidades. TIPO ESPAÇO MÍNIMO E MÁXIMO bit 1/8 de byte 0a1 tinyint 1 byte 0 a 255 smallint 2 bytes -32,768 até 2,147,483,647 int 4 bytes -2,147,483,648 até 2,147,483,647 bigint 8 bytes -9, 223,372,036,854,775,808 até 9, 223,372,036,854,775,807 Atributos numéricos Números precisos: Armazenam dados numéricos com parte decimal. Isso significa que o número pode conter frações. O SQL SERVER 2005 oferece 4 tipos: decimal, money, numeric e smallmoney. TIPO ESPAÇO MÍNIMO E MÁXIMO Decimal 5 bytes -999,999,999 até 999,999,999 Numeric 9 bytes -1019 + 1 até 1019 – 1 Money 8 bytes -922,337,203,685,477.5808 até 922,337,203,685,477.5807 Smallmoney 4 bytes -214,748.3648 até 214,748.3647 Atributos numéricos Dados científicos e de engenharia: Geralmente utilizam números muito grandes e muito pequenos. Por exemplo, aplicativos da astronomia podem armazenar a massa e o tamanho dos planetas, estrelas ou galáxias. A massa do Sol é 1.9181 x 1030 , que é uma unidade chamada massa solar. Para esses propósitos, temos os tipos de dados de número aproximado. Eles não armazenam um número exato, mas em vez disso usam dados de pontos flutuantes aproximados. Atributos numéricos A maioria dos SGBD fornecem 3 tipos de dados aproximados: float, real e double. Os tipos de dados float e real são tipos de dados flutuantes com bits de mantissa predefinidos. TIPO ESPAÇO MÍNIMO E MÁXIMO Float 8 25-43 Real 8 24 Double 8 53 Atributos string Atributos de string armazenam informações como nome e endereço. Esses tipos de dados são compostos de letras, números e símbolos. Tipos de dados fixos (char e nchar) utilizam uma quantidade permanente de espaço independente do valor da coluna ou da variável. Tipos de dados de comprimento variável ajustam seu armazenamento para acomodar o valor da coluna. Atributos string Tipos de dados de texto longo: Se precisar armazenar um tipo de dados string que exceder a capacidade máxima, você poderá usar o tipo de dados varchar(max) ou nvarchar(max). Atributos Data e Hora Nos aplicativos de negócios, a necessidade de armazenar atributos de data e hora é frequente. No SQL SERVER 2005 possui dois tipos de dados que combinam datas e horas em um único atributo. TIPO TAMANHO EXATIDÃO MÍNIMO E MÁXIMO Datetime 8 bytes 3,33 milissegundos 1 de janeiro de 1753 até 31 de dezembro de 9999 Smalldatetim e 4 bytes 1 minuto 1 de janeiro de 1900 até 6 junho de 2079 Dados binários Alguns aplicativos precisam armazenar imagens ou documentos. Alguns SGBD, como o SQL SERVER possuem três tipos de dados para armazenar informações binárias: binary(n), varbinary(n) e varbinary(max). TIPO DESCRIÇÃO LARGURA MÁXIMA Binary(n) Dados binários de largura fixa 8000 bytes Varbinary(n) Dados binários de comprimento variável 8000 bytes Varbinary(max) Dados binários longos 2,147,483,647 bytes