【问题标题】:SQL multiple properties depending on other attributesSQL 多个属性取决于其他属性
【发布时间】: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


【解决方案1】:

如您所说,将您的设计分解为对应于逻辑实体(规范化)的表,这样您将有更多的空间来适应变化并减少冗余信息。

建议的设计

表格

Tbl_train(Id, other_train_info) - 仅存储传输信息

Tbl_Carriage(Id, trainid, carriagetypeid, other_carriage_info) - 存储与火车相关的车厢信息

Tbl_carriagetype_master(Id, type_desc, class, .. Etc) - 存储所有静态隔间信息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-02
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    • 2016-07-08
    相关资源
    最近更新 更多