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

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

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

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

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

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

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

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

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

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

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

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

2 ответа

Решение

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

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

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

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

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

"Мой план - разрешить пользователям менять имя, но сначала предупредить их о последствиях и заявить, что его следует использовать только для исправлений".

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

Другие вопросы по тегам