【问题标题】:Best Solution - Ternary or Binary Relationship最佳解决方案 - 三元或二元关系
【发布时间】:2016-05-21 23:53:25
【问题描述】:

我正在尝试为我的一门课程完成一个问题,它围绕着哪种关系是最好的解决方案 - 二元或三元。

关系示例

所以它是一家视频商店,拥有三个实体 - Video、Member 和 Casual。

会员和休闲会员可以借阅视频,并记录借阅日期。

三元关系是不是最合适的解决方案,因为没有会员和随便借视频的区别?

【问题讨论】:

  • 这两种方法的含义是什么?数据库架构是什么样的,存储数据时需要考虑什么?
  • 提示:会不会有视频同时被会员和普通顾客借用? - 如果不是,如何对数据实施该约束?
  • @HannoBinder 问题中没有提供其他信息,因此您假设一个视频会有多个副本可以借用,但会员和临时工不能借用完全相同的副本。
  • 您应该假设任何视频的每个副本都只有一个唯一的videoID,因此每个videoID 只能由单个客户借用给任何给定的loanDate;并且每个客户都可以是会员休闲会员,但不能兼而有之。
  • @HannoBinder 对不起,这就是我的意思,只是你的措辞更清楚。所以三元关系最适合,因为贷款之间没有区别,一次只能借一个实体?

标签: database database-design entity-relationship


【解决方案1】:

您认为“借”钻石代表什么三元(3-实体)关系?它在会员客户、视频、临时客户和贷款日期之间。 “会员在 LOANDATE 向 CASUAL 借了 VIDEO”? “VIDEO 是 CASUAL 冲压 MEMBER 出生于 LOANDATE”? “会员借用的视频在 LOANDATE 到期且 CASUAL 为空,或者 CASUAL 借用的视频在 LOANDATE 到期且会员为空”?左右二元“借”关系的每一个都同上。

(我正在使用 谓词(由列参数化的语句模板)来表达表格的“意义”。当您插入一行时,您会得到一个 命题 (语句)。每个表(基础或查询结果)都包含使其谓词成为真命题的行。选择关系运算符(连接、联合等)来交替表达和计算使用逻辑非终结符的谓词表达式(AND、OR 等)所需的查询谓词。)

图表有一个菱形。它必须代表 MEMBER、VIDEO 和 CASUAL 实体以及 LOANDATE 之间的关系。除了 AND 或其他较小的组合之外,似乎很难为三元 Borrows 想出一个明智的方法,不是吗?如果您想不出一个,那么这不是描述您的情况的图表。我也想不出一个仅限于这三种实体的三元组。而二进制文件很容易理解。

PS 我唯一需要注意的是:我给出的第三个选项确实是数据库表中体现的典型关系。但这不仅仅是模型实体上的关系。它还涉及一个“空”值。如果我们认为关系是识别实体的值之间的关系,那么我们可以使用 null 的关系。

Borrows:
    "MEMBER borrowed VIDEO due on LOANDATE and CASUAL is null
    or CASUAL borrowed VIDEO due on LOANDATE and MEMBER is null"
MEMBER  VIDEO   CASUAL   LOANDATE
=================================
  1       a      null    1/1/2000
  2       b      null    1/2/2000
 null     c    1234567   2/3/2000

我不知道你们老师的意图。但我怀疑他们没想到你会涉及null。

PPS Re“二元关系是否会出现会员和休闲可以同时借用同一个视频的问题?”我不确定你在想什么。但是关系只包含从其语句模板中做出真实语句的行。它描述了这种情况。它不能使情况以某种方式发生。 “业务规则”(和物理学!)限制了出现的情况。但是您确实需要记录足够的信息来开展业务。并且 DBMS 可以被告知不可能的数据库状态,因此它可以拒绝它们。

【讨论】:

  • 感谢您的帮助@philipxy!因此,根据提供的信息以及提供的两个选项中的一个 - 最好的解决方案是二元关系。
猜你喜欢
  • 1970-01-01
  • 2012-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-12
  • 2019-04-27
  • 1970-01-01
相关资源
最近更新 更多