我正在尝试为我的一门课程完成一个问题,它围绕哪种关系是最好的解决方案 - 二元或三元。
关系示例
所以它是一个视频商店,有三个实体 - 视频,会员和休闲。
会员和临时工可以借用视频,并记录借阅日期。
三元关系是否是最合适的解决方案,因为成员和偶然借用视频之间没有区别?
答案 0 :(得分:0)
您认为“借用”钻石代表什么三元(3实体)关系?它位于会员客户,视频,临时客户和贷款日期之间。 “会员在LOANDATE上从CASUAL借了VIDEO”? “VIDEO是出现在LOANDATE的CASUAL冲压会员”? “会员在LOANDATE和CASUAL借入VIDEO是空的,或者在LOANDATE和MEMBER为零时借用了VIDEO”?对于每个左右都是同样的。正确的二元“借”关系。
(我正在使用谓词(由列参数化的语句模板)来表达表的“含义”。当你插入一行时,你得到一个命题 (语句)。每个表(基本或查询结果)保存使其谓词成为真命题的行。选择关系运算符(join,union等)来交替表达和计算使用逻辑非终端的谓词表达式所需查询谓词的(AND,OR等)。)
该图表有一颗钻石。它必须代表MEMBER,VIDEO和CASUAL实体与LOANDATE之间的关系。对于三元组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“如果MEMBER和CASUAL同时可以同时播放同一个视频,那么二元关系是否会出现问题?”我不确定你在想什么。但是该关系只包含从其语句模板中生成真实语句的行。它描述了这种情况。它不能使情况成为某种方式。 “业务规则”(和物理!)限制了出现的情况。但您确实需要记录足够的信息来运营业务。并且DBMS可以被告知不可能的数据库状态,因此它可以拒绝它们。