1

我正在设计一个数据库,由于我在这个主题上没有太多经验,所以我遇到了一个我不知道如何解决的问题。

在我的概念模型中,我有一个称为“车辆”的对象,客户订购和库存系统监控。这个超类型有两个子类型“Motorcar”和“Motorcycle”。用户可以订购一个或另一个,甚至两者都订购。

现在我处于逻辑设计阶段,我需要知道如何让系统允许两种不同类型的产品。我遇到的问题是,如果我将每个对象的单独属性放入同一个关系中,那么我将拥有对某些对象无用的列。

例如,如果我只有一个包含“Motorcars”和“Motorcycles”的通用表,我称之为“Vehicles”及其所有属性,那么汽车将不需要某些摩托车属性,而摩托车也不需要所有属性车属性。

有没有办法解决这个问题?

4

1 回答 1

3

该决定需要以共享信息的数量为指导。我将从识别所有属性和关于它们的规则开始。

如果大部分信息是共享的,您可能不会拆分为多个表。另一方面,您始终可以拆分表,然后加入视图以方便使用。

例如,您可能有一个仅包含共享信息的车辆表,然后是一个具有车辆表外键的摩托车表和一个具有车辆表外键的摩托车表。确保您没有摩托车排和摩托车排指的是同一辆车存在一定的困难,因此还有其他可能性可以减轻这种情况 - 但如果大多数信息是常见的,那么所有这些都是不必要的,您只需在单个车辆表中有未使用的列。您甚至可以强制执行约束以确保对于不应填充的类型的列为 NULL。

于 2011-08-14T01:33:39.387 回答