Modelagem de Bancos de Dados sem Segredos — Parte 04 | by Albert Eije Barreto Mouta | Medium

Modelagem de Bancos de Dados sem Segredos — Parte 04



Image for post
Image for post

Modelo Lógico Relacional

Introdução

Definição

O conceito principal vem das teorias dos conjuntos (álgebra relacional) atrelado à ideia de que não é relevante ao usuário saber onde os dados estão nem como os dados estão. Os usuários manipulam objetos dispostos em linhas e colunas das tabelas.

Vantagens

  • Independência total dos dados;
  • Visão múltipla dos dados;
  • Redução acentuada na atividade de desenvolvimento de aplicações e o tempo gasto em manutenção;
  • Melhoria na segurança dos dados;
  • Mais agilidade na questão gerencial da informação ligada ao processo decisório da organização.

As 12 Regras de Codd

Regra 1 — Todas as informações em um banco de dados relacional são representadas de forma explícita no nível lógico e exatamente em apenas uma forma — por valores em tabelas.

Regra 2 — Cada um e qualquer valor atômico (datum) em um banco de dados relacional possui a garantia de ser logicamente acessado pela combinação do nome da tabela, do valor da chave primária e do nome da coluna.

Regra 3 — Valores nulos devem ser suportados de forma sistemática e independente do tipo de dado para representar informações inexistentes e informações inaplicáveis.

Regra 4 — A descrição do banco de dados é representada no nível lógico da mesma forma que os dados ordinários, permitindo que usuários autorizados utilizem a mesma linguagem relacional aplicada aos dados regulares.

Regra 5 — Um sistema relacional pode suportar várias linguagens e várias formas de recuperação de informações. Entretanto, deve haver pelo menos uma linguagem, com uma sintaxe bem definida e expressa por conjuntos de caracteres, que suporte de forma compreensiva todos os seguintes itens: definição de dados, definição de “views”, manipulação de dados (interativa e embutida em programas), restrições de integridade, autorizações e limites de transações (begin, commit e rollback).

Regra 6 — Todas as “views” que são teoricamente atualizáveis devem também ser atualizáveis pelo sistema.

Regra 7 — A capacidade de manipular um conjunto de dados (relação) através de um simples comando deve-se estender às operações de inclusão, alteração ou exclusão de dados.

Regra 8 — Programas de aplicação permanecem logicamente inalterados quando ocorrem mudanças no método de acesso ou na forma de armazenamento físico.

Regra 9 — Mudanças nas relações e nas views provocam pouco ou nenhum impacto nas aplicações.

Regra 10 — As aplicações não são afetadas quando ocorrem mudanças nas regras de restrições de integridade.

Regra 11 — As aplicações não são logicamente afetadas quando ocorrem mudanças geográficas dos dados.

Regra 12 — Se um sistema possui uma linguagem de baixo nível, essa linguagem não pode ser usada para subverter as regras de integridades e restrições definidas no nível mais alto.

Chaves e Índices

Índice — é um recurso físico visando otimizar a recuperação de uma informação, via um método de acesso. Seu objetivo principal está relacionado com a performance de um sistema.

Uma chave pode ser utilizada como índice, mas um índice não é necessariamente uma chave. A forma de criação do índice depende do ambiente relacional.

O Conceito de Chave no Modelo Relacional

Chave Secundária (secundary key) — Serve para definir uma segunda chave. No ambiente relacional uma tabela é acessível por qualquer campo independente deste ser declarado como chave ou não. Utiliza-se a declaração de chave secundária para agilizar o acesso àquela tabela naquele campo.

Para cada chave secundária declarada, o ambiente relacional cria um índice (estratégia de acesso). Qualquer campo pode ser chave secundária.

Chave Estrangeira (foreign key) — As chaves estrangeiras constituem um conceito de vital importância no modelo relacional. São os elos de ligação entre as tabelas.

Quando dizemos que duas tabelas estão relacionadas através de campos comuns, devemos observar que provavelmente esta coluna em uma das tabelas é uma chave primária. Na outra tabela, este campo caracterizará o que é denominado de chave estrangeira.

Regras de Integridade no Modelo Relacional

1 — Integridade de Identidade

A chave primária não pode conter um valor nulo (NULL). O NULL não é o 0 (zero) nem o caractere em branco, é simplesmente a não-existência de conteúdo neste campo.

2 — Integridade Referencial

Se uma determinada tabela A possui uma chave estrangeira, a qual é chave primária em uma outra tabela B, então ela deve:

  • Ser igual a um valor de chave primária existente em B ou
  • Ser nula (NULL).

Não pode existir na chave estrangeira um valor que não exista na tabela na qual ela é chave primária.

As regras de integridade do modelo relacional representam a garantia de que as tabelas guardam informações compatíveis. São de extrema importância para a confiabilidade das informações contidas no banco de dados.

Derivação do DER para o Modelo Relacional

Existem regras de conversão precisas que não dão margem de erro, sendo que uma vez projetado o DER, as tabelas que o representam podem ser obtidas de forma clara. Vamos às regras.

  • Toda entidade torna-se uma tabela carregando todos os atributos. Cada atributo vira um campo da tabela criada. Cada uma das chaves gera “estruturas de acesso”. A chave primária é projetada para não permitir ocorrências múltiplas e nem valores nulos.
  • Os atributos das entidades e relacionamentos (que possuam atributos) devem ser gerados na ordem que minimize o consumo de espaço de armazenamento e torne mais eficiente a recuperação.
  • Existe apenas uma ocasião em que o relacionamento do modelo conceitual se torna uma tabela no banco de dados. Trata-se do relacionamento de cardinalidade N:M envolvendo entidades distintas. O relacionamento torna-se uma tabela carregando os atributos e os identificadores das tabelas que ele relaciona.

Software para Modelagem

  • DBDesigner: feito em Delphi/Kylix. Tem o código fonte aberto e foi primeiro projetado para criar modelos para o MySQL. Com o tempo surgiu o DBDesigner-Fork que gera o script do banco de dados para outros bancos: Oracle, PostgreSQL, SQL Server, Firebird, etc. Infelizmente o projeto foi abandonado, mas ainda é bastante utilizado por profissionais da área.
  • MySQL Workbench: deriva do DBDesigner. Desenvolvido exclusivamente para se trabalhar com o MySQL, é uma das ferramentas gratuitas mais conhecidas e mais utilizadas para quem trabalha com este banco de dados, tanto para modelagem ER, como para execução de scripts SQL. Iremos utilizá-lo mais a frente em um de nossos exemplos.

Outros exemplos que podemos citar: SAP Power Designer e CA ERwin.

Padronização do Banco de Dados

Introdução

Vamos apresentar neste momento um modelo de padronização de banco de dados que pode ser utilizado por qualquer organização e, logo após isso, modelaremos um grupo de tabelas utilizando o MySQL Workbench seguindo a padronização definida aqui.

Definições Gerais

  • O nome deve ser o mais descritível possível e deve identificar a utilidade e aplicação da entidade. Não se deve utilizar acentos e nem o cedilha;
  • Caso o nome seja composto, deve ser separado por Underline. Exemplo: RAZAO_SOCIAL;
  • Se possível, deve-se evitar abreviações, a não ser que o nome fique muito grande. Deve ter no máximo 30 caracteres por conta de limitações de alguns bancos de dados (Oracle e Firebird).
  • Não utilizar o nome da entidade nos atributos. Por exemplo, para a tabela CLIENTE, não utilizar o nome de atributo NOME_CLIENTE, mas apenas NOME.

PK — Chave Primária

  • A chave primária deve sempre ser o primeiro campo da tabela;
  • A chave deve sempre ser referenciada como “ID”. Deve ser autoincremento.

Índices

  • Os índices que serão criados na própria tabela para otimização de consultas devem seguir o padrão IX_NOME_TABELAn, onde o “n” é um número que vai sendo incrementado de acordo com a quantidade de índices.

Chaves Estrangeiras

Tipos de Dados

Sequence e Generator

Views

Procedures, Functions, Triggers

Procedure — SP_

Function — FUNCTION_

Trigger — TRIGGER_

Comentários

Tipos de Dados

Introdução

O que é um tipo de dado? Quando você está utilizando o seu celular, em alguns momentos aparece um teclado com letras e números e em outras ocasiões aparece apenas o teclado numérico. Se você tentar inserir um novo contato, verá que para informar o nome do contato será disponibilizado o teclado alfanumérico (letras, números e símbolos) e para informar o número do telefone será disponibilizado o teclado numérico (apenas números). O tipo de dado define exatamente isso, o tipo de informação que pode ser armazenada.

Antes de criar uma tabela você precisa entender as diferenças entre os tipos de dados que você pode utilizar em um campo. Os tipos de dados SQL se classificam em 13 tipos de dados primários e de vários sinônimos válidos reconhecidos por tais tipos de dados. Os tipos de dados primários são:

Image for post
Image for post

Dependendo do banco de dados que você escolher para utilizar, os tipos poderão ser encontrados com outros sinônimos. Alguns destes sinônimos são vistos na tabela a seguir.

Image for post
Image for post

Seguem alguns exemplos e quais seriam os tipos de dados mais indicados.

Image for post
Image for post

Cada SGBD tem suas características próprias e pode definir outros tipos de dados em complemento aos que vimos aqui. Consulte a documentação do SGBD que você está utilizando para conhecer os tipos de dados utilizado por ele.

Parte 4 — Considerações Finais

Aprendemos ainda as regras de integridade: integridade de identidade e integridade referencial. Conhecemos algumas ferramentas que ajudam na modelagem do banco de dados.

Nós vimos um modelo de padronização do banco de dados. É comum que as empresas adotem um modelo de padronização. Caso a empresa onde você trabalha não possua um modelo, você pode apresentar o modelo proposto aqui ou até mesmo adaptar o modelo de acordo com as necessidades da empresa. Você viu quais são os principais tipos de dados utilizados quando criamos campos nas tabelas do banco de dados.

Nós também vimos que você pode padronizar o banco de dados criando algumas regras. Aquele documento pode ser expandido criando regras para os campos do banco de dados. Por exemplo, você pode definir que os campos do tipo TELEFONE sempre serão VARCHAR tamanho 10. Dessa forma, quando uma nova tabela for criada, se ela tiver um campo do tipo TELEFONE, não existirão dúvidas sobre o tipo e tamanho do campo.

Analise novamente o estudo de caso Pedido e tente padronizar os campos para as tabelas que foram ali criadas.


Continua na parte 5


T2Ti ERP — Aprenda a Desenvolver um ERP

Image for post
Image for post

Acompanhe o canal da T2Ti no Youtube. A T2Ti está postando todos os vídeos do T2Ti ERP 2.0 no Youtube. São quase 300 módulos!


Os vídeos estão organizados em Playlists. Então se inscreva no canal e ative o sininho para receber atualizações sobre as postagens.


Acesse o artigo no Medium para aplaudir e/ou comentar.