我一直在研究ER图的示例,以便更好地理解它们。我遇到了ER图,我不确定是否正确。
以下是问题/规范:
UPS以拥有每个处理和当前位置的最新信息而自豪 装运物品。为此,UPS依赖于公司范围的信息系统。发货物品是 UPS产品跟踪信息系统的核心。可以表征运送的物品 按项目编号(唯一),重量,尺寸,保险金额,目的地和最终交货 日期。装运物品在单个零售中心接收到UPS系统。零售中心是 以其类型,唯一ID和地址为特征。运送物品进入他们的 通过一个或多个标准UPS运输事件(即航班,卡车运输)的目的地。 这些交通事件的特点是独特的scheduleNumber,一种类型(例如,航班, 卡车),和deliveryRoute。
实体:RetailCenter
,ShippedItems
,Transportation Event
关系:ReceivedFrom(RetailCenter,ShippedItems)
,ShippedVia(ShippedItems,TransportationEvent)
我的问题是三个实体之间不应该存在三元关系吗?我的思维过程是运送的物品需要运输事件才能到达特定的零售中心。这个图表是否表示零售中心收到装运的物品并且装运的物品需要运输事件?
答案 0 :(得分:0)
我的思维过程是运送物品需要运输事件才能到达特定的零售中心。
你似乎误读了规范。物品被带到UPS零售中心,然后运送到目的地。但是,让我们考虑一个运送的商品将运输事件带到特定目的地的三元关系。
这是这三个实体之间众多可以想象的关系之一。
此图表是否表示零售中心收到的已装运物品以及装运的物品是否需要运输事件?
是的,确实如此。但就这些图表二元关系而言,三元关系是可表达的。 (反之亦然。)
每个表 - 基本变量或查询结果 - 保存参与某种特定关系的行。我们可以通过predicate - 由属性参数化的语句模板来表征关系。
一个表保存行,其属性值从其谓词生成一个true语句。基本变量的谓词由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 ..."的谓词拆分为" ..." s的单独谓词,如果可行且有帮助的话;原始表由组件的JOIN返回。)