Database
 sql >> Base de Dados >  >> RDS >> Database

Como criar um modelo de banco de dados do zero




Então você quer criar seu primeiro modelo de banco de dados, mas não sabe como começar? Leia!

Suponho que você já conheça um pouco sobre tabelas, colunas e relacionamentos. Se não, assista aos nossos tutoriais em vídeo antes de continuar.

Comece com uma descrição do sistema


Você deve sempre começar a criar um modelo de banco de dados com uma descrição de um sistema. Em uma situação de sala de aula, uma descrição do sistema é fornecida a você por um professor. Na vida real, preparar uma descrição é um processo no seu direito. Vou apenas assumir que você tem a descrição. Não importa se foi dado a você por seu cliente, seu chefe, seu professor ou você mesmo escreveu.

Dê uma olhada na descrição e destaque todos os substantivos . Os substantivos na descrição podem ser divididos em três categorias:tabelas, atributos e exemplos.
  • Tabelas representam entidades primárias no sistema:pessoas, objetos físicos, eventos, transações, etc.
  • Atributos são propriedades associadas a uma entidade primária. Eles descrevem recursos de sua entidade. No modelo de banco de dados, elas serão as colunas em suas tabelas.
  • Exemplos são apenas isso, exemplos. Eles ajudam você a entender os tipos de dados de certos atributos e eles ajudam você a entender o relacionamento entre diferentes entidades.

Começar com uma descrição tem a vantagem de forçar você a usar o mesmo glossário como seus usuários. Se você criar um sistema para uma escola primária, você deve falar sobre os alunos. Se você criar um sistema semelhante para uma universidade, deve falar sobre os alunos.

Tabelas, relacionamentos, colunas

  1. Depois que seus substantivos estiverem destacados, identifique as tabelas . Você não precisa modelar tudo de uma vez. Concentre-se primeiro na funcionalidade principal do sistema.
  2. Quando você tiver as tabelas, descubra os relacionamentos entre as mesas. Essa etapa pode levar à introdução de novas tabelas intermediárias (junção).
  3. Por fim, adicione as colunas para as mesas.

Neste ponto, você deve ler a descrição novamente e ver se alguma coisa está faltando. Garanto-lhe que haverá algo a acrescentar. Adicione as novas tabelas, os novos relacionamentos e as novas colunas. Leia a descrição novamente...

Coisas a ter em mente


A criação de um modelo de banco de dados é uma iterativa processo. Não tente modelar tudo de uma vez. Comece com as entidades principais do seu sistema. Você pode adicionar mais detalhes posteriormente.

Não há problema em fazer perguntas . Não importa quão precisa seja a descrição, você sempre terá algumas dúvidas. Algo sempre será subespecificado. Faça perguntas sobre as coisas que você não tem certeza. Se você não puder fazer perguntas, faça uma suposição razoável e anote a suposição que você fez.

Há sempre mais de um caminho para modelar cada sistema. Alguns modelos são claramente ruins, mas com a maioria dos outros é difícil julgar se estão certos ou errados. O modelo depende de qual é o propósito do sistema, como os dados chegam ao sistema, até mesmo do gosto pessoal do designer. À medida que você ganha experiência, você ficará mais confiante sobre suas decisões de design.

Exemplo:sistema de aluguel de carros


Como exemplo, criaremos um modelo de banco de dados para um sistema de aluguel de carros. Primeiro, dê uma olhada na descrição do sistema:

Uma empresa de aluguel de carros aluga carros para clientes. A empresa possui vários carros. Cada carro tem uma marca, nome do modelo, ano de produção, quilometragem, cor e assim por diante. Os carros são divididos em diferentes categorias:pequenas, médias, grandes, limusines.

A empresa tem muitos locais onde você pode alugar um carro. Os locais de aluguel estão localizados em diferentes cidades em todo o país. Pode haver mais de um local da empresa em uma cidade.

Qualquer pessoa com mais de 21 anos que tenha uma carteira de motorista válida pode alugar um carro. Clientes com menos de 25 ou mais de 75 anos pagam taxas diferentes (mais altas) do que outros clientes.

Antes de alugar um carro, um cliente geralmente faz uma reserva para um carro. Um cliente especifica as datas em que o carro será alugado, o local de retirada, o local de entrega e a categoria do carro que ele deseja alugar. Um cliente pode especificar que deseja algum equipamento extra no carro, por exemplo, um GPS, uma cadeirinha para uma criança etc.

Quando um cliente aluga um carro, ele declara o local de retirada e entrega e a data de entrega. O cliente pode comprar vários tipos de seguro. Ele também pode decidir que não precisa de seguro porque o seguro é coberto de outra forma, por exemplo, por sua empresa de cartão de crédito. O cliente pode escolher opções adicionais como a possibilidade de entrega antecipada, várias opções de reabastecimento etc.

O cliente paga as cobranças ao devolver o carro.

Começamos destacando todos os substantivos:

A próxima etapa é encontrar tabelas . Procuramos as entidades básicas no sistema. Para começar, você deve ter pelo menos estes:carro, cliente, local, cidade, equipamento, categoria (carro), seguro. Nós os colocamos no diagrama. Eu adicionei o id coluna em cada tabela porque cada tabela deve ter algum tipo de id. Você sempre pode alterar a chave primária mais tarde.




As entidades básicas do sistema estão no modelo, mas você deve notar que está faltando a funcionalidade principal do sistema:aluguel de carros e reservas. Lembre-se do que dissemos no início:as tabelas não são apenas objetos físicos, mas também eventos e transações. Você deve adicionar reservation e rental como tabelas também. Aqui vamos nós:




Agora adicionamos as referências entre as tabelas no modelo. Numerei as referências à medida que as adicionava. A nota ao lado de cada referência informa quando ela foi adicionada:
  1. Cada carro pertence a uma categoria,
  2. Cada reserva é para uma categoria de carros,
  3. Cada local está em uma cidade,
  4. Cada reserva tem um local de embarque e desembarque,
  5. Cada reserva é feita por um cliente,
  6. Cada aluguel é feito por um cliente,
  7. Cada aluguel é para um determinado carro,
  8. Cada locação tem um local de retirada e entrega.
  9. Cada locação está vinculada a algum seguro. Mas existe apenas um seguro para cada locação? Não. Pode haver muitos seguros ligados a um aluguer (seguro contra danos no veículo, contra danos pessoais, contra danos no carro de outra pessoa, ...). Adicionei uma tabela intermediária chamada rental_insurance conectado a rental e insurance tabelas.




Ainda falta a referência entre carro e equipamento. O equipamento está permanentemente ligado a um carro ou pode ser movido de um carro para outro? Não há resposta para essa pergunta na descrição, então vamos fazer uma suposição razoável:sim, pode ser movido. Adicionamos uma nova tabela car_equipment e referências entre car e equipment .

Excluímos a company tabela. A locadora está implicitamente presente no sistema. Afinal, outra empresa terá seu próprio sistema e seu próprio banco de dados.




Por fim, adicionamos as colunas e seus tipos de dados. Também notamos que não há relação entre reservation e equipment . Mas a reserva é feita para um determinado equipamento? Não, é feito para um tipo de equipamento:adicionamos a tabela equipment_category e conecte as tabelas reservation e equipment para isso.




Nós terminamos? Leia a descrição novamente. Nosso modelo de banco de dados ainda omite as cobranças. Nós vamos...

Isso é um exercício para o leitor. (Mas se você não quiser praticar suas habilidades de modelagem de banco de dados, aqui você pode encontrar uma estrutura de banco de dados pronta para uso para uma locadora de carros.)