Modele o seu banco de dados em 3 passos - Mago da Web
Modele o seu banco de dados em 3 passos
12/07/2016 Postado por Thiago Hofmeister 0
Alguns dias atrás estava na faculdade e percebi que muitos dos meus colegas estavam com dificuldade em modelar o banco de dados através dos textos (estudos de caso). Além de perceber isso, na mesma semana recebi algumas solicitações, inclusive aqui no site, para fazer algo que ajudasse a modelar um banco.
Então vamos lá! Geralmente professores dão estudos de casos para auxiliar na modelagem. Para manter esse padrão peguei um estudo de caso que escrevi para uma cadeira da faculdade:
"Uma ferragem deseja criar um sistema e para isso ela precisa de profissionais para desenvolverem o seu banco de dados. Então, para ajudar no desenvolvimento do sistema ela passou algumas informações.
É preciso guardar dados de cada funcionário, como nome, cpf, sua função, seu endereço e seu gênero; os funcionários podem ter vários dependentes, porém um dependente é apenas de um funcionário, deste é necessário guardar seu rg, cpf e nome; o funcionário também precisa ter filiação, porém a filiação deve atender a possibilidade de o funcionário possuir duas mães e/ou dois pais.
Sobre os clientes é necessário guardar informações específicas para os jurídicos e os físicos; para o primeiro é necessário a razão social, cnpj, e inscrição estadual, já para o físico é necessário o cpf, o nome social, o nome e o gênero, para ambos é preciso salvar o telefone. A ferragem possui um programa de fidelidade, para que os clientes ganhem descontos conforme compram. Para isso, é preciso guardar uma data e o valor de pontos que no final será convertido em descontos nas compras.
Quanto aos produtos é necessário saber o seu nome, sua qualidade que varia de 1 à 5, seu tipo, quantidade, fabricante e lote. Além de ser necessário armazenar seus fornecedores, para estes é preciso guardar informações como, nome, contatos (e-mail, telefone), cnpj e razão social.
No ato da venda, é necessário manter armazenado o funcionário que realizou a venda, o cliente que comprou e os produtos que foram comprados."
Após ler o estudo de caso pelo menos uma vez, vamos abstrair as informações, eu costumo marcar no próprio texto as entidades, após os atributos, as cardinalidades (que estiverem no texto) e algumas regras de negócios. Vamos lá!
1° Passo: Reler o estudo de caso e marcar as informações importantes
Neste primeiro passo, vamos absorver as três principais informações necessárias para a modelagem de um banco de dados, são elas: entidades, atributos e as cardinalidades (relacionamentos). Com essas informações será possível iniciar o processo de modelar (desenhar) o banco, isto é, criar o modelo entidade relacionamento (MER).
As entidades representam nossas futuras tabelas dentro do banco físico, mas como estamos falando apenas de modelo conceitual, elas representam nossos objetos da vida real, ou seja, coisas concretas.
Vamos marcá-las no texto então:
"É preciso guardar dados de cada funcionário, como nome, cpf, sua função, seu endereço e seu gênero; os funcionários podem ter vários dependentes, porém um dependente é apenas de um funcionário, deste é necessário guardar seu rg, cpf e nome; o funcionário também precisa ter filiação, porém a filiação deve atender a possibilidade de o funcionário possuir duas mães e/ou dois pais.
Pronto, agora já sabemos nossas entidades, então podemos continuar o processo.
Os atributos são como as características de um objeto. Por exemplo, uma pessoa possui um nome, uma idade, uma altura, etc, esses são alguns atributos de uma entidade Pessoa.
Por ser um estudo de caso didático, tentei facilitar o processo, citando os atributos logo após cada entidade, vamos ver?
Pronto, tendo as entidade e os seus respectivos atributos, podemos passar a buscar as últimas informações necessárias, as cardinalidades.
CARDINALIDADES:
As cardinalidades representam o tipo de relação que uma entidade terá com outra entidade. Por exemplo, uma pessoa pode se relacionar com uma entidade Veículo, onde cada Pessoa pode possuir muitos Veículos, neste caso, chamamos de cardinalidade 1:N. Junto das cardinalidades, podemos marcar também algumas regras de negócio. Bora lá.
Bom, agora temos todas as informações necessárias para que a modelagem conceitual possa ser feita. Vamos começar a desenhar o nosso modelo conceitual então.
2° Passo: desenhar as entidades com seus atributos
Para começarmos a modelar, precisamos identificar quais são as entidades consideradas fortes. Para isso, vamos ter que descobrir quais das entidades não dependem de outra entidade para existir, em um banco físico seriam as tabelas que não possuem uma chave estrangeira em sua estrutura.
Dentre as entidades marcadas no texto, as que se encaixam nas características de uma entidade forte são: Funcionários, Produtos e Clientes. Então começaremos por essas três:
Todas as demais entidades, são fracas, pois possuem chaves estrangeiras (foreign keys - FK). Podemos então desenhar elas ao redor das entidades fortes. Conforme a imagem:
3° Passo: identificar os relacionamentos e suas cardinalidades
Agora que temos todas as entidades, precisamos apenas relacionar elas umas com as outras e, então, dizer o tipo de relacionamento que elas possuem. Dentre os relacionamentos possíveis temos três, são eles:
- 1:1 (um para um): nesse relacionamento, temos a ligação de um único registro com um outro único registro, sendo cada um com uma entidade diferente, ou até mesmo com ela mesma. Esse caso pode ser muito frequente, mas geralmente, podemos unificar esse relacionamento em uma única tabela, assim diminuindo a necessidade de utilizar JOINS para relaciona-las no futuro.
- 1:N (um para muitos): nesse relacionamento, temos a ligação de um único registro de uma tabela, com um ou mais registros de uma outra tabela. Esse é um dos casos mais frequentes dentro de um banco de dados, dificilmente (para não dizer impossível) você não terá um 1:N no seu banco de dados.
1 - N:N (muitos para muitos): nesse relacionamento, temos a ligação de muitos registros de uma tabela, com muitos registros de outra. Nesse caso, torna-se obrigatória a criação de uma terceira tabela, para que o relacionamento aconteça.
Agora que sabemos os três tipos se cardinalidades, podemos traçar os relacionamentos e suas cardinalidades:
Notem que a entidade Venda, tornou-se uma entidade associativa, onde ela surge no momento da venda, com a relação entre três outras entidades: Clientes, Funcionários e ProdutosItens. Surgiu também a entidade ProdutosItens, pois quando uma venda é realizada, não estamos vendendo um produto e sim um item daquele produto, então temos que ter um controle de estoque para isso.
Enfim, espero que eu tenha ajudado aqueles que possuem dificuldades ao modelar um banco a partir de um estudo de caso.