【发布时间】:2014-03-22 13:20:26
【问题描述】:
我有以下问题:
我正在计划一个包含火车的数据库。每列火车都有车厢,车厢分为车厢和非车厢。这两种类型都有三个等级: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,但我认为这不是一个好看的解决方案。你还有其他建议吗?也许有两个表:非隔间属性和隔间属性?但是我认为存在更好的解决方案。
【问题讨论】:
-
如您所说,将您的设计分解为对应于逻辑实体 (normalization) 的表,这样您将有更多的空间来适应变化并减少冗余数据。
标签: sql database-design