Проектирование баз данных для содержания информации человека, которая изменяется со временем?

В то время как можно использовать ForEach дополнительный метод, если Вы хотите использовать просто платформу, можно сделать

collection.Select(c => {c.PropertyToSet = value; return c;}).ToList();

Эти ToList, необходим для оценки выбора сразу из-за отложенные вычисления .

8
задан dave 25 August 2009 в 11:29
поделиться

4 ответа

Учитывая, что ваша система уже написана и внедрена, самый простой подход к этой проблеме (и тот, который меньше всего влияет на существующую базу данных / код) - это добавить членство таблица истории, которая содержит столбцы MemberID, статус, тип и дату. Затем добавьте триггер UPDATE и INSERT в основную таблицу-член. Когда эти триггеры срабатывают, вы записываете новые значения для элемента (вместе с датой изменения статуса) в таблицу истории элементов. Затем вы можете просто запросить эту таблицу, чтобы получить историю для каждого члена.

Это довольно просто реализовать и никак не повлияет на существующую систему.

Я напишу это для вас, чтобы получить бесплатное членство. . :)

Самый простой подход к этой проблеме (и тот, который меньше всего влияет на существующую базу данных / код) - это добавить таблицу истории членства, которая содержит столбцы MemberID, status, type и date. Затем добавьте триггер UPDATE и INSERT в основную таблицу-член. Когда эти триггеры срабатывают, вы записываете новые значения для элемента (вместе с датой изменения статуса) в таблицу истории элементов. Затем вы можете просто запросить эту таблицу, чтобы получить историю для каждого члена.

Это довольно просто реализовать и никак не повлияет на существующую систему.

Я напишу это для вас, чтобы получить бесплатное членство. . :)

Самый простой подход к этой проблеме (и тот, который меньше всего влияет на существующую базу данных / код) - это добавить таблицу истории членства, которая содержит столбцы MemberID, status, type и date. Затем добавьте триггер UPDATE и INSERT в основную таблицу-член. Когда эти триггеры срабатывают, вы записываете новые значения для элемента (вместе с датой изменения статуса) в таблицу истории элементов. Затем вы можете просто запросить эту таблицу, чтобы получить историю для каждого члена.

Это довольно просто реализовать и никак не повлияет на существующую систему.

Я напишу это для вас для бесплатного членства. . :)

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

Это довольно просто реализовать и никак не повлияет на существующую систему.

Я напишу это для вас, чтобы получить бесплатное членство. . :)

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

Это довольно просто реализовать и никак не повлияет на существующую систему.

Я напишу это для вас, чтобы получить бесплатное членство. . :)

8
ответ дан 5 December 2019 в 15:25
поделиться

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

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

Затем я бы исключил отчеты из базы данных отчетов. Довольно легко сделать так, чтобы звездная схема выполняла те же действия, что и сводная таблица. Если необходимо, я бы получил какой-нибудь инструмент OLAP, который будет находиться перед базой данных отчетов.

Это большая работа, но со временем она окупится.

1
ответ дан 5 December 2019 в 15:25
поделиться

Я бы поместил информацию о членстве в отдельную таблицу с датами начала и окончания. Хранение клиента в отдельной таблице. Это неприятно, если вам постоянно нужна «текущая» информация о членстве, но есть много способов обойти это с помощью запросов или триггеров.

0
ответ дан 5 December 2019 в 15:25
поделиться

Я не могу порекомендовать вам достаточно, чтобы прочитать книгу Джо Селко «Sql для умных людей - продвинутое программирование на sql». у него есть целая глава о дизайне темпоральной базы данных И о том, как (эффективно и эффективно) запускать временную проекцию, Запросы выбора и временного соединения. И я бы не отдал ему должного, даже если бы попытался объяснить то, что он говорит в своей главе в этом посте.

2
ответ дан 5 December 2019 в 15:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: