13 pontos por GN⁺ 2024-07-25 | Ainda não há comentários. | Compartilhar no WhatsApp

Introdução

Este tutorial de design de banco de dados mostra como projetar tabelas de banco de dados para um projeto real complexo. Vamos projetar um clone do Google Calendar. Esta série explica a abordagem do livro "Database Design using Minimal Modeling". Primeiro, construiremos um modelo lógico completo que descreve os dados do calendário e, em seguida, faremos o design das tabelas com base nesse modelo lógico.

Público-alvo

O objetivo deste livro é ajudar na transição de uma ideia ambígua para uma definição completa de tabelas de banco de dados. Os primeiros 3/4 do texto exigem apenas uma compreensão geral de bancos de dados e explicam o modelo lógico. O último 1/4 explica como passar do modelo lógico para a estrutura física das tabelas.

Sumário

  • Introdução
  • A abordagem deste livro
  • Descrição do problema
  • Parte 1: evento básico de dia inteiro
  • Parte 2: evento baseado em horário
  • Parte 3: evento recorrente de dia inteiro
  • Parte 4: renderização da página do calendário
  • Parte 5: renderização da página do calendário para eventos baseados em horário
  • Parte 6: modelo lógico completo até aqui
  • Parte 7: criação de tabelas SQL
  • Conclusão
  • Próximos passos

A abordagem deste livro

As pessoas frequentemente começam pelo design das tabelas, mas aqui seguimos uma abordagem diferente. Primeiro, elaboramos o modelo lógico e definimos os atributos dos dados e as relações entre as entidades. Depois que o modelo lógico é decidido, projetamos as tabelas físicas.

Descrição do problema

Vamos implementar os principais recursos do Google Calendar. Os dados relacionados ao usuário serão implementados no mínimo necessário. Os eventos têm atributos como título, descrição e local. A parte mais complexa envolve hora e data.

Parte 1: evento básico de dia inteiro

Âncoras

Primeiro, precisamos identificar as âncoras. Âncoras são entidades, como usuário (User) e evento (Event). As âncoras lidam com ID e contagem.

Atributos do usuário

Vamos modelar o mínimo de dados sobre o usuário. Por exemplo, e-mail.

Atributos de evento de dia inteiro

Precisamos armazenar o nome do evento, a data de início e a data de término.

Links

Precisamos decidir onde armazenar a informação de que um determinado usuário criou um determinado evento. Isso será tratado como um link, não como um atributo.

Parte 2: evento baseado em horário

Fuso horário

Fusos horários são usados em vários países e regiões. As definições de fuso horário mudam ocasionalmente. Vamos implementar um modelo mínimo relacionado a fusos horários.

Atributos do fuso horário

Vamos armazenar um nome legível por humanos para o fuso horário.

Atributos de evento baseado em horário

Vamos armazenar o nome do evento, o horário de início e o horário de término. Usamos horário local.

Links

Definimos o link entre fuso horário e evento baseado em horário.

Semelhanças entre eventos de data e eventos com horário

Vamos considerar as semelhanças entre os dois tipos de evento. Com a modelagem lógica, é possível adiar a decisão.

Parte 3: evento recorrente de dia inteiro

Atributo #1, periodicidade

Definimos um atributo sobre a frequência com que o evento se repete.

Atributo #2, atributos interligados

Definimos a periodicidade do evento recorrente.

Atributo #3

No caso de eventos mensais, definimos se eles se repetem no mesmo dia ou no mesmo dia da semana.

Dia da semana: microâncora

Decidimos onde armazenar o dia da semana. Introduzimos uma nova âncora.

Links

Definimos o link entre dia da semana e evento.

Verificação de conclusão

Revisamos os requisitos originais para confirmar se a modelagem foi concluída.

Limite de recorrência: mais atributos interligados

Definimos um atributo sobre até quando o evento se repete.

Parte 4: renderização da página do calendário

Até aqui, discutimos a parte de registro do calendário. Agora, precisamos exibir a visualização semanal do calendário do usuário.


Resumo do GN⁺

Este tutorial explica passo a passo um design de banco de dados complexo, de forma que até iniciantes consigam entendê-lo com facilidade. Ao modelar os principais recursos do Google Calendar, ele fornece um exemplo útil que pode ser aplicado em projetos reais. Também explica como a modelagem lógica ajuda a evitar erros no design do banco de dados e leva naturalmente ao design físico das tabelas. Um projeto com funcionalidade semelhante é o Microsoft Outlook Calendar.

Ainda não há comentários.

Ainda não há comentários.