【发布时间】:2015-07-08 12:00:33
【问题描述】:
首先,对不起,我找不到更好的标题。
我有一个根据设备数量存储一些设备的数据库:
|-----------|-------------|-------------|
| device_id | device_name | device_type |
|-----------|-------------|-------------|
每个设备有两种类型,3-port和1-port,每个端口都有特定的名称,例如:
- 设备 1122 是 3 端口类型,端口名称是(厨房,
客厅、卧室)。 - 设备 1123 是类型 1 端口,端口名称是 (boiler)。
我的想象设计是:
|-----------|-------------|--------|-----------|--------|
+ device_id | device_name | port_1 | port_2 | port_3 +
|-----------|-------------|--------|-----------|--------|
| 1122 | First floor | kitchen|living_room|bed_room|
|-----------|-------------|--------|-----------|--------|
| 1123 | Second floor| boiler | null | null |
|-----------|-------------|--------|-----------|--------|
但我的设计并不好,因为如果我有 100 个类型为 1-port 的设备,我会将 200 个字段留空。 你能帮我创造更好的设计吗?
【问题讨论】:
-
您可以使用 deviceId、端口号和端口名称将端口拆分为单独的规范化表。对于每个设备和端口组合,您将拥有一条记录,外键引用返回到主设备表。如果需求发生变化,这将减少空字段并允许超过 3 个端口。然而,这是以额外的表和密钥重复为代价的。从空间的角度来看,你最终可能不会好得多。再说一次,存储很便宜,所以我不会花太多钱。
-
@BJSafdie:谢谢,我认为它比我的解决方案更好,因为它减少了一些空间并且更具学术性。
标签: database database-design relational-database database-schema