mysql - 此 ER 图是否应改用三元关系

标签 mysql sql database relational-database entity-relationship

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

这里是问题/规范:

UPS prides itself on having up-to-date information on the processing and current location of each shipped item. To do this, UPS relies on a company-wide information system. Shipped items are the heart of the UPS product tracking information system. Shipped items can be characterized by item number (unique), weight, dimensions, insurance amount, destination, and final delivery date. Shipped items are received into the UPS system at a single retail center. Retail centers are characterized by their type, uniqueID, and address. Shipped items make their way to their destination via one or more standard UPS transportation events (i.e., flights, truck deliveries). These transportation events are characterized by a unique scheduleNumber, a type (e.g., flight, truck), and a deliveryRoute.

实体:RetailCenterShippedItems运输事件
关系:ReceivedFrom(RetailCenter,ShippedItems)ShippedVia(ShippedItems,TransportationEvent)

这是图表:er diagram

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

最佳答案

My thought process is that a shipped item takes a transportation event to reach a specific retail center.

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

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

Doesn't this diagram say that a shipped item is received by a retail center and that a shipped item takes a transportation event?

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

每个表(基础变量或查询结果)都包含参与某种特定关系的行。我们可以用 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 返回。 )

关于mysql - 此 ER 图是否应改用三元关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44231605/

相关文章:

mysql - 从事件中选择不同的值

php - Group By/Having 子句上的 MySQL 多个条件

mysql - INSERT ON DUPLICATE KEY 和 UPDATE 后记录数据

mysql - 坚持使用 MySQL 查询

javascript - 将对象的 Id 设置为数据库中的下一个可用行?

java - 使用 Activity 对象和 BLOB

mysql - 在SQL中对每个表设置不同的限制

javascript - 用其复选框包装一些输入并发送到数据库

php - error_log 返回在 PHP 中找不到文件

sql - 编写 SQL 条件的更好方法 [编辑 - 需要精选]