Melhorar a estrutura da base de dados numa a muitas relações

estou a criar uma base de dados para acompanhar várias estatísticas sobre mim e estou a pensar se há uma maneira melhor de armazenar várias entradas para uma única data.

por exemplo, a partir da minha mesa tenho Alergimedicina que pode acompanhar vários medicamentos tomados na mesma data, existe uma forma melhor de o fazer?

também as mesas de comida e Alergia parecem desnecessárias, existe uma melhor maneira de mesas de grupo?

Todas as sugestões são apreciadas! DB Schema

Author: Jerry, 2018-02-05

2 answers

Acho que ajuda a afirmar o problema de uma forma semi-estruturada, como abaixo.
The system monitors one or more **persons**.
Each person consumes zero or more **items**. Each consumption has an attribute of date and time. 
Items can be **food**, or **medicines**.
Food can be of the types **snack**, **fruit** or **meal**.
A meal has a **type**.
A person may report **symptoms**. Each report will cover a period of time, and be reported at a specific date/time.
Symptoms may be associated with zero or more **allergies**.
Não acredito que" data " seja uma entidade no seu esquema - é um atributo de eventos que ocorrem, por exemplo, consumindo algo, ou notando um sintoma.

Se as afirmações acima são verdadeiras, o esquema pode be:

Pessoas

  • ID
  • Nome
  • ...

FoodItemType

  • ID
  • Nome

FoodItem

  • ID
  • Nome
  • FoodItemTypeID
 1
Author: Neville Kuyt, 2018-02-05 13:52:45

Claro que, se tomar mais do que um medicamento num dia, porque não isolar esse dia (=data) na sua própria tabela?

Assim você terá uma tabela "dias" com apenas datas, que você prefill (como um calendário) ou só preenche com aqueles dias em que você realmente tomou aquele medicamento.

Assim, poupa-se muito espaço centrando a data numa mesa e relacionando tudo o resto com ela. O que é, na verdade, um modelo muito preciso da realidade.

Todo o teu "FoodSnack", "FoodMeal", "AllergyMedicine", etc. com uma data neles tornar-se-ão tabelas de mapeamento N:M simples, então.

Você poderia até abstrair mais, Reduzir tabelas e fazer apenas três tabelas:

  • sintomas
  • causas
  • tratamento

Todos aqueles relacionados com a tabela central "dia" (eu não chamaria de "data", porque isso é uma palavra-chave e facilmente equivocado também), mais relacionados uns com os outros, quando aplicável.

 1
Author: cslotty, 2018-02-06 15:38:08