Я работаю над схемой базы данных, которая в настоящий момент сводит меня с ума, потому что я, кажется, повторяю одни и те же таблицы, чтобы воспроизвести поведение для различных типов.
По сути, система состоит из действующих датчиков, которыеконтролируются по сети и регистраторы, которые собираются через телефонную трубку.Датчики и регистраторы делятся на Места, а Места делятся на Области.Местоположение может иметь до 1 регистратора, но может иметь любое количество активных датчиков.
Я постараюсь нарушить правила:
- В системе может быть от 0 до многихрайоны
- В области может быть от 0 до нескольких мест
- Местоположение может иметь от 0 до 1 регистраторов
- Местоположение может иметь от 0 до многих LiveAnalogSensors
- Местоположение может иметь от 0 до многих LiveSwitchSensors
- Местоположение может иметь от 0 до многих разрешенных действий
- LiveAnalogSensor должен принадлежать 1 LiveSensorRelay
- LiveSwitchSensor должен принадлежать 1 LiveSensorRelay
- Регистратор может иметь от 0 до многих показаний
- LiveAnalogSensor может иметь от 0 до многих показаний
- LiveSwitchSensor может иметь от 0 до многих показаний
- Чтение может иметь будильник
- Система может иметь от 0 до многих действий
- Сигнал тревоги может иметь действие от 0 до 1
- Alarm может иметь от 0 до 1 AlarmResolution
Изображение схемы ЗДЕСЬ.
Таким образом, сценарий заключается в том, что чтение приходит и сохраняется (либо через загрузку Logger, либо через чтение в реальном времени).в сети).Показание выходит за пределы диапазона, поэтому у него есть код тревоги.Тревога генерируется для этого чтения.Действие в конечном итоге применяется к нему пользователем.Если приходит чтение, которое указывает, что состояние тревоги закончилось, запись AlarmResolution (или AlarmEnd, как я ее назвал в схеме) связывается с Alarm, чтобы показать, что оно закончилось, и время, когда оно закончилось.
На аналоговых тревогах, когда новое чтение выше, чем последнее, сохраняется новое «пиковое» чтение, для чего и предназначена таблица AnalogSensorReadingAlertPeak.
Это в основном и есть.Моя проблема заключается в том, насколько повторяющейся является схема для разных датчиков (особенно для логгера и аналогового датчика, которые в основном одинаковы) - и у меня, похоже, много взаимосвязей от 1 до 0..1, хотя меня это меньше беспокоит.
Я действительно после проверки здравомыслия.Я могу придумать способы избавления от повторяемости, но это всегда кажется за счет целостности данных.
Спасибо.
РЕДАКТИРОВАТЬ: я немного изменил название и вопроспосле голосования «за», поскольку оно не было особенно конкретным.Я надеюсь, что теперь лучше ..