Отчетность по историческим данным - когда использовать текущие или исторические данные (предупредить пользователя об изменении значения записи?) - PullRequest
1 голос
/ 06 марта 2012

Это похоже на этот вопрос

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

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

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

В настоящее время я думаю, что это должно быть последним, потому что я склонен полагать, что при том же (первичном) ключе значение , которое он уникально идентифицирует, не должно изменяться, даже если его атрибуты изменяются. Таким образом, любые изменения имени должны быть только для исправления или уточнения, IMO, почти как если бы само имя было первичным ключом (я все для естественных ключей, но, как правило, не использую имя чего-либо из-за длины и возможной необходимости в написании) исправление - в этом случае, хотя у меня есть поле «SensorNo» (не ID), которое является уникальным для устройства, которое оно отслеживает).

В любом случае - это означает, что я действительно могу использовать текущее имя, и если они меняют имя датчика с, возможно, «Воздуха» на «Еда», то оно должно сказать «Еда» во всех данных отчета, даже если оно показывает данные до изменения, идея о том, что это изменение должно означать, что оно всегда означало «Еда», а не «Воздух» - это исправление.

Ни для каких «ключевых» данных, таких как «Верхний предел» и «Нижний предел» (например, диапазон температур), при составлении отчетов следует использовать исторические данные , в данном случае, поскольку они показывают температуру Диапазон датчика на момент чтения.

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

Я планирую разрешить пользователям изменять имя, но сначала предупредить их о последствиях и указать, что оно должно использоваться только для исправлений.

Что думают люди по этому поводу? Как вы справляетесь с этой ситуацией? Мне тоже интересно услышать от Catcall , который ответил на связанный вопрос.

(Обратите внимание, что это не обсуждение того, как хранятся исторические данные, я уже в порядке с этой стороной).

Ответы [ 2 ]

1 голос
/ 06 марта 2012

Я думаю, что вы ответили самостоятельно. Если они меняют имя поля, это исправление (и тогда им не нужно видеть старое имя в новых отчетах). Если они меняют имя датчика из-за изменения его значения, им следует ДОБАВИТЬ новый датчик. Я не думаю, что вы действительно можете спасти своих пользователей от подобных ошибок. В некоторых приложениях я видел, как они УДАЛЯЛИ базу данных при создании нового входного набора (но вы не можете или не хотите этого делать). Это может отличаться, если они хотят использовать имя поставщика / модели в качестве имени тега (имя датчика). В этом случае оно может измениться во времени и, возможно, они захотят увидеть имя true для каждого интервала. В этом случае, если изменения ограничены именем тега, вы можете сохранить себя с небольшой таблицей, чтобы отслеживать эти изменения (id, name, timestamp) и обновить гипотетическую функцию ResolveTagName (id, time) для запроса этой таблицы. У меня больше сомнений относительно исторических данных для пределов, потому что они могут изменяться во времени (например, максимальная температура для детали может уменьшаться со временем, потому что деталь стареет или из-за измеримого физического напряжения, в этом случае вы не можете применить текущий предел по старой мере).

0 голосов
/ 07 марта 2012

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

Всегда может возникнуть путаница. И простые меры не могут предотвратить это. Предположим, что датчик теперь называется «Воздух», но в какой-то момент раньше назывался «Пищевой» (и в тот момент был еще один датчик, названный «Воздух»). Как вы думаете, может быть установлено, что никто никогда не пойдет проверять журналы и придумать: «Эй, вы дали измерения здесь для датчика« Воздух »год назад, но я сам проверил журналы и нашел совершенно разные числа».

Есть две вещи, которые вы можете сделать. (а) постарайтесь сделать как можно более ясным, что если в отчете написано «Датчик воздуха» (2 слова), то в действительности это означает «датчик, который был назван« Воздух »во время создания отчета. , но которые могли быть под разными именами до момента создания отчета, и которые даже не обязательно должны быть тем же самым датчиком, который называется "Воздух" во время просмотра отчета. "(потерянный счет). Если вы попытаетесь объяснить это своим пользователям, лучшее, что вы можете получить - это пустой взгляд, если они прямо не отвернутся от вас и не уйдут. Если вы напишите это в руководстве, вы обнаружите, что пользователи никогда не читают руководства.

И (b) вы можете попытаться включить в отчет указания на прошлые изменения имени. Сделайте это слегка загадочно (скажем, строка предупреждения типа «*»), и вы гарантированно получите вопросы о том, что это значит, в то время, когда вы даже забыли это сами. Возможно, хорошим вариантом будет распечатать отдельный раздел с прошлыми изменениями имени, прямо под разделом заголовка или около того, но если история изменений имени отсутствует, то вообще ничего не печатайте (даже заголовки для этого дополнительного раздела).

«Мой план состоит в том, чтобы разрешить пользователям изменять имя, но сначала предупредить их о последствиях и указать, что оно должно использоваться только для исправлений.»

Вы не должны решать, что «оно должно использоваться только для исправлений». Многие объекты реального мира обычно идентифицируются в человеческом общении с использованием имен, и многие из этих объектов реального мира имеют разные имена в течение своей жизни. Вы не можете изменить тот факт, что имена являются наиболее удобным средством идентификации практически в любой обстановке, которую я могу себе представить. Если жена Билла Гейтса хочет пойти по магазинам, то спросит ли она «Дорогая, могу я взять Porsche» или «Дорогая, могу я взять WOL0x547832187 (это может быть правильный уникальный идентификационный номер шасси Билла Гейтса?»). Порше)? Вы также не можете изменить тот факт, что вещи могут изменить имя.

...