База данных: когда разделять на отдельные таблицы?

Скажем, у меня есть два разных типа датчиков: один контролирует аналоговое напряжение (например, на датчике температуры), а другой измеряет, включено или выключено что-то (датчик переключения).

Я не могу решить, будет ли одна таблица:

[Sensor]
Id : PK
UpperLimit : FLOAT
UpperLimitAlertDelay : INT
LowerLimit : FLOAT
LowerLimitAlertDelay : INT
IsAnalog : BOOL

[SensorReading]
Id : PK
SensorId : FK
AnalogValue : FLOAT
IsOn : BOOL

ИЛИ разделите все это на отдельные таблицы:

[AnalogSensor]
Id : PK
UpperLimit : FLOAT
UpperLimitAlertDelay : INT
LowerLimit : FLOAT
LowerLimitAlertDelay : INT

[AnalogSensorReadings]
Id : PK
AnalogSensorId : FK
Value : FLOAT

[SwitchSensor]
Id : PK
OnTooLongAlertDelay : INT

[SwitchSensorReadings]
Id : PK
SwitchSensorId : FK
IsOn : BOOL

На данный момент у меня это как одна таблица, и я использую «UpperLimitAlertDelay» как «OnTooLongAlertDelay», когда не использую его в качестве аналогового датчика.

В код Я различаю логическим флагом в таблице Sensor и создаю соответствующий объект (например, AnalogSensor или SwitchSensor), но мне интересно, будет ли аккуратнее / правильнее на уровне базы данных выделить его.

Какое правило Вы бы использовали для такого решения? На одном уровне это разные сущности, но на другом уровне можно сказать, что они оба просто сенсоры.

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

Общие мысли по этой теме или этой конкретной проблеме приветствуются.

Спасибо!

РЕДАКТИРОВАТЬ: Дополнительная информация.

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

Графики и отчеты могут быть созданы на любом датчике, поэтому они используются одинаково; просто данные будут либо включаться / выключаться, либо иметь аналоговое значение в зависимости от типа.

Таким образом, в основном они обрабатываются одинаково.

В таблице показаний это всегда одна строка для ОДНОГО считывания с ОДНОГО датчика.

Пока мнения кажутся довольно субъективными - я думаю, есть только плюсы и минусы в обоих направлениях.

Изменяет ли приведенная выше информация чье-то мнение?

Спасибо! Марк.

6
задан Mark 7 October 2010 в 10:51
поделиться