Дизайн базы данных для нескольких вариантов - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть таблица Users , и я создаю приложение, которое отслеживает, сколько фруктов человек ест каждый день.

Когда пользователь входит в приложение, он выбираетфрукты, которые они будут есть каждый день.Таблица будет выглядеть следующим образом:

CurrentlyEating
---------------
ID
FruitID (Foreign Key)
UserID (Foreign Key)

Также должна быть таблица, содержащая все фрукты, которые пользователь может потенциально собрать:

Fruits
------
ID
Name

Это лучший способ?для достижения этой цели?Я читал таблицы поиска и не уверен, что это лучший способ сделать это.Кроме того, если я решу добавить больше фруктов в эту таблицу в будущем, мне нужно, чтобы ее было легко обновить во внешнем интерфейсе.

Наконец, у меня есть последняя таблица под названием Журнал, в которой записывается количествоконкретный фрукт, который пользователь ест каждый день:

Journal
-------
ID
DateTime
FruitID (Foreign Key)
UserID (Foreign Key)
AmountConsumed

Итак, в целом, я просто хочу знать, является ли мой подход оптимальным для этого, и есть ли более эффективные подходы.

Спасибо

Ответы [ 2 ]

0 голосов
/ 25 декабря 2018

Я думаю, что ваш подход хорош. И это оптимальный способ сохранить эту структуру данных.

0 голосов
/ 25 декабря 2018

Ваш общий подход выглядит довольно неплохо: создайте справочную таблицу для хранения всех возможных фруктов, а затем обращайтесь к этому с помощью внешних ключей.Также неплохо создать отдельную таблицу, чтобы сохранить пользовательские параметры.

Вот общий дизайн:

Таблица USER (она у вас уже есть):

id    ...
 1

Таблица ФРУКТЫ: все возможные фрукты (можно добавить больше информации, например: калории на грамм, ...)

id    name      ...
 1    orange
 2    banana

USER_FRUITS: какой пользователь выбрал, какой фрукт (здесь, пользователь 1 выбрал банан)

id    user_id    fruit_id
 1             1              2

JOURNAL: какой пользователь потреблял какой фрукт (пользователь съел 20 грамм банана)

id    datetime     user_id    fruit_id    amount
 1         ...                    1              2          20

Основываясь на этом дизайне, вот запрос, который возвращает журнал данного пользователя:

SELECT j.datetime, f.name, j.amount
FROM journal as j 
INNER JOIN fruits as f ON f.fruit_id = j.id
WHERE j.user_id = ?
ORDER BY  j.datetime
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...