拍卖交易的 ER 图建模
Posted
技术标签:
【中文标题】拍卖交易的 ER 图建模【英文标题】:ER diagram modeling of a auction transaction 【发布时间】:2019-02-20 17:28:36 【问题描述】:我正在研究 ER 图,但我仍然对它的某些方面感到困惑。
我正在做一个练习,我想出了两个我认为可能可行的解决方案,但我不确定哪个是正确的,以及它们之间会产生什么差异。
我试图建模的问题是一个在线拍卖系统,其成员可以是买家和卖家(他们具有共同的属性,如邮件地址、姓名和密码)。卖家也有属性银行账户,买家有属性收货地址。所以我把它画成一个不相交的概括。
卖家可以出售商品,买家可以出价购买商品。
一个项目有一个类别,它可以有一个子类别。
我现在面临的疑问就在这里: 拍卖结束时,出价最高者中标,买卖双方可以进行交易。买卖双方也可以对交易记录反馈(评分+评论)。
我的两种交易方式如下:
解决方案 1
使交易成为买家、卖家和商品之间的三向关系,并将反馈属性添加到关系中
解决方案 2
直接在项目中插入反馈和获胜者 ID。 (一个listing不能卖更多的东西)
提前感谢您的帮助
【问题讨论】:
请use text, not images/links, for text (including code, tables & ERDs)。使用图像仅是为了方便补充文本和/或无法在文本中给出的内容。永远不要给出没有图例/键的图表。 PS 你想知道。但是你的问题到底是什么? 我基本上是在尝试解决this的问题,在最后两点上卡了很长时间,做了很多不同的设计,我发布的两个是我认为更有意义的一个. 请通过集成的帖子编辑而非 cmets 进行澄清。 PS请标准语法。 PS“基本上”不是在它介绍或总结的清晰完整精确细节的背景下基本上什么都没说。 【参考方案1】:您没有确切说明如何填充实体和关系集/表。在您这样做之前,您实际上还没有给出设计。对此和约束做出合理的假设,似乎这两种设计都可以记录您的情况。要使 2 工作,需要(类似于)Winner_ID 的域是买方 ID 的域加上一些不能是买方 ID 的值。 SQL 通常使用 NULL 作为这种标记值。
-- "I ids an item"
Item_1(I)
-- "buyer B makes a transaction with seller S for item I with feedback F"
MakesATransaction_1(B, S, I, F)
-- "item I has either winner B & feedback F or no winner & B is null & F is null"
Item_2(I, B, F)
您可以看到他们可以记录相同的情况,因为对于所有 B、I 和 F,[对于某些 S,“买家 B 与卖家 S 就商品 I 进行交易并反馈 F”] 当且仅当 [ “项目 I 有获胜者 B 和反馈 F 或没有获胜者 & B 为空 & F 为空” & B 为空 & F 为空] 在 2 中。这也意味着一个设计中的每个实体/关系表都可以表示为在另一个查询。这种等价性的关键是基数,比如交易是 1:1 与获胜者的项目。
PS 在 2 中,您可以只存储是否存在获胜者/交易,而不是存储获胜者 ID。你明白为什么吗? (A:您可以查询中奖者。)
(确定您的关系/表的成员资格标准((特征)谓词)。探索您将如何查询和约束每个设计。还探索哪些更改/扩展可能更适合某个设计另一个。)
PS“有”没有任何意义。选择描述参与实体相关的关系名称。最好是一个清晰的语句模板的简写,当给定实体/属性的 is/values 时,该模板会做出一个语句。 “项目 I 是 C 类的成员”。
PS 为什么是箭头?它们是多余的。
【讨论】:
非常感谢所有优秀的 cmets,刚刚开始并对此有很多疑问。我会努力解决所有问题。我最想了解这个概念,因为我总是倾向于在图表中制作额外的实体。 重新寻找关系,找到谓词——由数据库陈述情况的列参数化的语句模板。 (表格中的行陈述事实,缺少的行陈述错误。)找到足够的内容来描述你的情况。当一些可以通过其他组合(部分取决于约束)来表达时,只保留一些。请参阅我对数据库设计和表谓词的回答。最佳 ER 方法是对象角色建模。除了 ER 在实体和关系之间做出不必要的限制性区别。关系模型只是 n 元关系。以上是关于拍卖交易的 ER 图建模的主要内容,如果未能解决你的问题,请参考以下文章