Mar*_*ark 6 database database-design
假如我有两种不同类型的传感器:一种监测模拟电压(例如在温度传感器上),一种测量是否有东西开启或关闭(开关传感器).
我无法决定是否有一张桌子:
[Sensor]
Id : PK
UpperLimit : FLOAT
UpperLimitAlertDelay : INT
LowerLimit : FLOAT
LowerLimitAlertDelay : INT
IsAnalog : BOOL
[SensorReading]
Id : PK
SensorId : FK
AnalogValue : FLOAT
IsOn : BOOL
Run Code Online (Sandbox Code Playgroud)
或者将它们分成单独的表格:
[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
Run Code Online (Sandbox Code Playgroud)
目前我把它作为一个表,当不使用它作为模拟传感器时,我使用"UpperLimitAlertDelay"作为"OnTooLongAlertDelay".
在代码中,我通过传感器表上的布尔标志进行区分并创建适当的对象(即AnalogSensor或SwitchSensor),但我想知道在数据库级别它是否更整洁/更合适以将其分离出来.
你会用什么经验来做出这样的决定?它们是一个级别上的不同实体,但在另一个级别上,您可以说它们都只是传感器.
这通常是我无法决定创建数据库时要采取的方向.也许每当我使用bool来区分哪些字段意味着/应该使用时,它应该是一个单独的表?
关于这个主题或这个特殊问题的一般想法赞赏.
谢谢!
编辑:一些进一步的信息.
开关传感器可监控门是否打开,冰箱压缩机是否正在运行,设备是否已打开等情况.
可以在任何传感器上生成图形和报告,以便以相同的方式使用它们; 它只是数据将打开/关闭或模拟值取决于类型.
所以基本上它们通常都是一样的.
在读数表中,从一个传感器读取一个读数总是一行.
到目前为止,这些意见似乎是主观的 - 我想两种方式都有利有弊.
上述信息是否会改变任何人的意见?
谢谢!标记.