在实体关系图中对子类(或子类型)约束建模

Ota*_*xar 4 erd database-design database-diagrams subtypes

场景描述

有人可以帮助我了解如何模拟以下情况:

  1. 有一个名为的超类(或超类型PRODUCTS,它具有名为和的子类(或子类型)。FOODSHOES

  2. 存在另一个命名为 的超类CUSTOMERS子类命名为SHOE STOREGROCERY STORE

  3. 我需要代表一些规则来表明:

    • FOOD只能送到GROCERY STORES.
    • SHOES可以专门分发给SHOE STORES.

暂定图

我试过下面显示的两个图表:

图表

图表注意事项

顶图

我真的不喜欢 (a) 相同实体类型的重复,即ORDERS,和 (b) 围绕它的关系。

底图

我很确定这不是正确的符号。我是否应该在超类级别创建关系并注意限制将在编程级别实现?

ype*_*eᵀᴹ 5

我认为您可以创建一个Orders实体,它是Products和之间的关系Customers。该Orders会还具有亚FoodOrdersShoeOrders,分别是类的子类之间的关系Food - GroceryStoresShoes - ShoeStores

                                            ?????????????
                                            ? Employees ?
                                            ?????????????
                                                  ?
                                                  ?
      ????????????               ??????????       ?       ?????????????
      ? Products ???? contain ???? Orders ???? deliver ???? Customers ?
      ????????????               ??????????               ?????????????
           ?                          ?                         ?
           ?                          ?                         ?
          isA                        isA                       isA
          ? ?                        ? ?                       ? ?
     ?????? ??????             ??????? ???????            ?????? ??????
     ?           ?             ?             ?            ?           ?
 ????????    ?????????         ?             ?    ?????????????????   ?
 ? Food ?    ? Shoes ?         ?             ?    ? GroceryStores ?   ?
 ????????    ?????????         ?             ?    ?????????????????   ?
     ?           ?       ??????????????      ?            ?     ??????????????
     ????????????????????? FoodOrders ?????????????????????     ? ShoeStores ?
                 ?       ??????????????      ?                  ??????????????
                 ?                     ??????????????                 ?
                 ??????????????????????? ShoeOrders ???????????????????
                                       ??????????????
Run Code Online (Sandbox Code Playgroud)