假设您有一个装满小部件的仓库。仓库中的每个小部件都存储在仓库内的特定可识别位置。您可能有一个如下所示的架构:
小部件也可以(可选)位于仓库中的购物车上,这可能会导致这样的模式:
但是,出现了一个问题,因为购物车也只能位于仓库内的一个位置,这将先前的模式变成了这样:
但是,此模式是非规范化的,可能会导致异常,例如数据是:
widgetID storageLocationID 购物车ID ================================ 1 foo 2 巴
尽管两个小部件位于同一个购物车上,但数据库将它们显示在不同的位置,这是不可能的。
如果需要购物车,通过简单地从Widgets表中删除storageLocationID来解决这个标准化问题会相对简单。但是,由于不需要购物车,该解决方案将不起作用。
如何构造这些数据以消除异常情况?