【问题标题】:Should this ER diagram use a ternary relationship instead此 ER 图是否应改为使用三元关系
【发布时间】:2017-10-29 02:53:13
【问题描述】:

我一直在查看 ER 图的示例以更好地理解它们。我遇到了一个我不确定是否正确的 ER 图。

这是问题/规范:

UPS 引以为豪的是,它拥有关于每个产品的处理和当前位置的最新信息 发货的物品。为此,UPS 依赖于公司范围内的信息系统。运送的物品是 UPS 产品跟踪信息系统的核心。发货的物品可以表征 按项目编号(唯一)、重量、尺寸、保险金额、目的地和最终交货 日期。运送的物品在一个零售中心被接收到 UPS 系统中。零售中心是 以它们的类型、uniqueID 和地址为特征。运送的物品会送到他们的 通过一项或多项标准 UPS 运输活动(即航班、卡车交付)到达目的地。 这些交通事件的特点是唯一的 scheduleNumber、一个类型(例如,flight、 卡车)和一个送货路线。

实体:RetailCenterShippedItemsTransportation Event
关系:ReceivedFrom(RetailCenter,ShippedItems)ShippedVia(ShippedItems,TransportationEvent)

这是图表:

我的问题是这三个实体之间不应该存在三元关系吗?我的思考过程是,一个运送的物品需要一个运输事件才能到达特定的零售中心。这张图不是说零售中心收到了已发货的物品,并且已发货的物品发生了运输事件吗?

【问题讨论】:

    标签: mysql sql database relational-database entity-relationship


    【解决方案1】:

    我的思考过程是,运送的物品需要经过运输活动才能到达特定的零售中心。

    您似乎误读了规范。物品被带到 UPS 零售中心,然后被运送到目的地。但是让我们考虑一下三元关系,即一个运输的物品需要一个运输事件才能到达一个特定的目的地

    这是关于这三个实体的许多可以想象的关系之一。

    这个图不是说零售中心收到了发货的物品,并且发货的物品发生了运输事件吗?

    是的,确实如此。但是三元关系可以用这些图表二元关系来表达。 (反之亦然。)

    每个表(基本变量或查询结果)都包含参与某些特定关系的行。我们可以用predicate来表征关系——一个由属性参数化的语句模板。

    一个表包含的行,其属性值从其谓词中得出一个真实的陈述。基础变量的谓词由 DBA 给出。

    -- shipped item ItemNumber is received by retail center UniqueId
    SELECT * FROM ReceivedFrom
    -- shipped item ItemNumber takes transportation event ScheduleNumber
    SELECT * FROM ShippedVia
    

    查询表达式的谓词是由其运算符和参数构建的。例如,两个表的 NATURAL JOIN 的谓词是表的谓词的 AND。

    -- shipped item ItemNumber is received by retail center UniqueId
           and takes transportation event ScheduleNumber
    SELECT * FROM ReceivedFrom NATURAL JOIN ShippedVia
    

    当然,您对三元关系的特定概念可能不是这个确切的查询/表。但是一个实用的 UPS 数据库会包含基本关系表,任何相关关系都可以根据这些表来表达。

    (规范化将“... AND ...”形式的谓词拆分为“...”的单独谓词,如果这是可能且有用的;原始表由组件的 JOIN 返回。 )

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-24
      • 2019-06-29
      • 1970-01-01
      • 2014-01-09
      • 2017-01-08
      • 2016-02-29
      • 1970-01-01
      相关资源
      最近更新 更多