我正在为建筑物监控系统进行数据库设计。它有点像这样: 有一幢建筑物。建筑物有多个区域,可以包含记录器或实时馈送传感器组。记录仪有一个传感器,它的数据由手机收集,然后再下载到系统中。
例如:
Building:
+ Area1:
Cold room 1 (Logger)
Cold room 2 (Logger)
+ Freezer 1 (Live monitoring):
Live sensor 1
Live sensor 2
记录器具有存储在数据库中的读数,实时监控传感器也是如此,读数可以生成警报。
我的问题是记录器和实时监控传感器非常相似,但由于它们存在于层次结构的不同层次,我发现很难以一种看起来很好的方式进行建模。这是我到目前为止所提出的。这只是一个模仿玩具的想法,很多人缺失:
http://thejunkroom.co.uk/~marks/db1.png
我知道的一点点混乱......
遗憾的是它不可能是这样的:
Building:
+ Area1:
+ Foo
Cold room 1 (Logger)
Cold room 2 (Logger)
+ Freezer 1 (Live monitoring):
Live sensor 1
Live sensor 2
那时它可能更像是这样:
http://thejunkroom.co.uk/~marks/db2.png
但唉,不是这样的。
那么,有更好的设计吗?
我希望这有点意义..
谢谢, 标记
答案 0 :(得分:3)
这样的事情怎么样?
具有子类关系的第二个结构......
Building
BuildingId pk
BuildingName
etc
Area
AreaId pk
AreaName
BuildIngId fk -> Building
etc
Location
LocationId pk
LocationType (LiveMonitor, Logger, Handprobe) pk
LocationName
AreaId fk -> Area
etc
LiveMonitorLocation
LocationId pk, fk -> Location
LocationType ConstantValue = LiveMonitor fk -> Location
LoggerLocation
LocationId pk, fk -> Location
LocationType ConstantValue = Logger fk -> Location
HandprobeLocation
LocationId pk, fk -> Location
LocationType ConstantValue = Handprobe fk -> Location
Logger
LoggerId pk
LocationId fk -> LoggerLocation
SensorId fk -> Sensor
Handprobe
HandProbeId pk
Locationid fk -> HandprobeLocation
Sensor
SensorId pk
LiveMonitorSensors
SensorId pk, fk -> Sensor
LocationId pk, fk -> LiveMonitorLocation
SensorReadings
SensorId pk, fk -> Sensor
ReadingUtc pk
ReadingValue data