数据库设计困境

时间:2018-01-30 17:15:45

标签: database-design

我正在建立一个车队单元管理软件,用于处理安装在客户端上的GPS设备的数据。车辆。

现在我必须实现数据库设计。我有两个主要的表格。

  • 表1:Fleet_Unit(unit_id,col_2,col_3,col_4),unit_id是PK

  • 表2:Gps_Device(device_id,col_2,col_3,col_4),device_id是PK

在大多数情况下,只有一个GPS设备安装在一辆车上,但有时可能出于各种原因在同一车辆上安装两个或更多GPS设备。因此,我必须决定是否应该有一个额外的表来将车辆映射到gps设备,或者在Gps_Device表中放置一个额外的列,其中将存储Fleet_Unit表的ID。

我决定使用第一种方法,所以我又创建了一个表:

  • Fleet_unit_gps_device_mapping(fleet_unit_id,gps_device_id)

因此,在我征求意见之前,让我向您介绍几个用于描述fleet_unit对象的表。

每个gps设备都有一些模拟和数字I / O.可能有一个或多个燃油表连接到gps设备和车辆发动机,温度传感器,读卡器等。

所以这是一个额外的表格(其他表格相似):

  • fleet_unit_digital_sensors_mapping(fleet_unit_id,gps_device_id,sensor_col_1,sensor_col_2)

正如我所提到的,可能有多个gps设备安装在同一车辆上,所以 digital-sensor-1 第一个gps设备读取< / em>与 digital-sensor-1 不同,后者是从第二个gps设备中读取的。

现在我想问你如何实施数据库。

我应该使用表fleet_unit_id中的gps_device_idfleet_unit_digital_sensors_mapping作为表Fleet_UnitGps_Device

的外键吗?

我应该创建一个新的列master_id,它是一个&#34;组合&#34; fleet_unit_idgps_device_id并将其连接到映射表 - Fleet_unit_gps_device_mapping,我需要引入另一个用于地图的列。

我问的原因是因为在第一种情况下,如果我有10个以上描述车辆的表,我必须将每个表与fleet_unitgps_device表连接起来。在第二种情况下,我只需将所有10个以上的表连接到映射车辆和gps设备的表格。

提前致谢。

0 个答案:

没有答案