Как мне спроектировать базу данных для хранения изменений во времени? - PullRequest
3 голосов
/ 17 декабря 2008

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

Ответы [ 5 ]

5 голосов
/ 17 декабря 2008

Я думаю, что-то вроде следующего:

table kid
    int pkey(id)
    text name

table weight
    date when
    int kidid fkey(kid.id)
    int weight
    int pkey(id)
2 голосов
/ 17 декабря 2008

Вам нужна связь один ко многим между таблицей 'child' и таблицей 'weight'.

Child Table
-----------
ID (Generated) (PK)
Name 


WeightTable
-----------
ID (Generated) (PK)
Date
Weight
ChildID (FK)

Уже поздно, и я думаю, что делаю это более сложным, чем нужно; и я вполне уверен, что вы могли бы просто сделать один-ко-многим между ребенком и весом. Каждый раз, когда вы взвешиваете ребенка, делайте новую запись.

1 голос
/ 17 декабря 2008

Возможно, вы также захотите настроить несколько представлений (в основном хранимых операций выбора), которые показывают только текущий вес, и / или представлений для других общих запросов, таким образом изолируя реализацию от пользователей.

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

0 голосов
/ 17 декабря 2008

Детский стол

ID (генерируется) (PK)

Текстовое имя

float InitialWeight

WeightTable

ID (генерируется) (PK)

дата Дата

float ChangeInWeight

ChildID (FK Child.ID)


Хранить только при ChangeInWeight <> 0.

Сумма запроса (ChangeInWeight) с диапазоном дат от отношения WeightTable для поиска отклонения и Query IntitalWeight + Variation, как указано выше, до фактического веса.

0 голосов
/ 17 декабря 2008

Две таблицы. Первый, скажем, дети, должен иметь столбец идентификатора и информацию о каждом ребенке, такую ​​как имя, возраст и т. Д. Второй должен называться примерно как дети. Каждый ряд содержит три вещи. Идентификатор ребенка из таблицы детей, вес и время измерения. Затем вы можете использовать sql для запроса таблицы children_weights, чтобы выбрать диапазон весов для ребенка, скажем, начиная с 1 января и заканчивая 8 января, и делать с ними что угодно. Или вы можете даже получить sql-запрос, возвращающий только среднее значение или сумму.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...