new*_*e14 6 database-design optimization
目前我们有一个包含 35 个字段的表。
现在,我们需要添加 5 个额外的列,但这些列不会总是被填充。
所以,我想只添加一列并将该 id 作为另一个表中的外来 5 行或更少行取决于数据的可用性。
哪个更好
该决定不取决于您已有的列数,而是取决于这 5 列是否属于您要建模的内容。
没有规则说:“如果您有 10 列,则保留在同一张表中;当您达到 36 列时,使用单独的表”。
如果这 5 列就像一个人的街道、城镇、地区、国家,那么没有;他们应该在一个单独的桌子“位置”或类似的地方。如果这 5 列类似于一个人的第一个名字、姓氏、第二个姓氏、ID 号和电子邮件地址,那么它们可能应该在那里。
但是,如果您的表已经有 35 列,那么您可能一开始就没有进行太多的规范化,看起来您只是将所有内容都塞满了该表......
更新
首先,我们有一个名为关联的表,然后基于该表,我们将 gps 数据链接到关联。此外,我们还获得了与关联相关联的警报表。所以关联是这里的主表。每个设备本身也是一个表,但它会在何时何地被使用时链接到一个关联。
…
基本上,这种关联就像从 a 到 b 的旅行。因此,从 a 移动到 b 有许多 gps 数据保存在此主表中[?]。如果在此行程中有警报,则将保存在警报表中。这5 个新列指示链接到主要 gps 设备的rfid 设备的状态。但是在不需要 5 的旅行中,它可以更少甚至没有。
假设:
moving from a to b there is a number of gps data which is kept in this main table,我不确定我是否了解存储了哪些信息,或者为什么将其存储在称为关联/旅程的表中而不是某些关联表中(鉴于似乎有“许多 gps 数据”而不是只是“每次旅行一个 GPS 数据”)鉴于此,我会将您的 5 列添加到RFIDStatus表中,因为This 5 new column are indicating the status of the rfid devices. 下面是对类似于您可能正在建模的内容进行建模的第一次尝试...
[ Journey ]<——————[ Alert ]
| fk_from | | fk_trip |
| fk_to |
| |—(from)—>[ Location ]
| |–—(to)—–>| long/lat/name… |
| |
| |<—————[ RFIDStatus ]—————>[RFIDDevice]—————>[ GPSDevice ]
| | | fk_rfiddevice | | fk_gps | | |
| | | fk_journey | | |
| | | datetime | | |
| | | *status details* | | |
| |<———————————————————————————[ GPSStatus ]———————>| |
| | | fk_journey |
| | | fk_gpsdev |
| | | datetime |
| | | latitude |
| | | longitude |
Run Code Online (Sandbox Code Playgroud)
但是,正如我在评论中提到的,这完全取决于您要建模的内容。请使用更多详细信息更新您的问题,以便其他人可以为您提供更好的答案。此外,您应该阅读有关数据库建模的一些内容,以便您从良好的基础开始,并很好地理解建模数据库时所需的内容;它还将帮助您提出有关数据库设计的更好问题。