我有以下问题:
我正在计划一个有火车的数据库。每列火车都有车厢,车厢分为车厢和非车厢。这两种类型都有三个类别:1、2、3,并且它们都有不同数量的隔间或排成一排的位置。
我可以创建下表:
| type | class | seats in a row | rows | seats in a compartment | compartments |
| non-c| 1 | 3 | 18 | NULL | NULL |
| non-c| 2 | 4 | 22 | NULL | NULL |
| non-c| 3 | 5 | 25 | NULL | NULL |
| comp | 1 | NULL | NULL | 6 | 9 |
| comp | 2 | NULL | NULL | 8 | 10 |
| comp | 3 | NULL | NULL | 10 | 11 |
也就是说,当属性与特定类型(例如,非车厢汽车的车厢中的位置数)不相关时,我会将其设置为NULL,但在我看来,这不是一个好看的解决方案。你还有其他的想法吗?可能有两个表:非分隔属性和分隔属性?然而,我认为存在更好的解决方案。
发布于 2014-03-22 14:06:10
就像你说的,将你的设计分解成与逻辑实体(标准化)相对应的表,这样你就有更多的空间来适应变化,减少冗余信息。
建议的设计
表格
仅Tbl_train(Id, other_train_info)
-Stores事务信息
Tbl_Carriage(Id, trainid, carriagetypeid, other_carriage_info)
-存储与列车相关的车厢信息
Tbl_carriagetype_master(Id, type_desc, class, .. Etc)
-存储所有静态划分信息
https://stackoverflow.com/questions/22578143
复制相似问题