首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类图:在作文关系中,孩子班应该总是有一个ID字段吗?

问类图:在作文关系中,孩子班应该总是有一个ID字段吗?
EN

Stack Overflow用户
提问于 2021-09-09 08:37:07
回答 1查看 370关注 0票数 1

我很难将数据库表和外键转换为类和关联的类关系图。

我的问题是:

“在组合关系中,子类应该始终有一个ID字段吗?”。

在我的CD中,有两个排序类:PurchaseItem和,它们组合了购买类。PurchaseFinisher已经从其表中提供了一个ID字段,但是PurchaseItem没有,因为它是由id_purchase和id_payment_method外键过滤的。

提前谢谢。

​

​

这是我的DB图

​

​

正如您所说,我看不到Purchase或Product之间的冗余。你能根据我的DB图表给我看一下吗?我的桌子造型很好(希望如此)。我的错误在于类的定义。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-09 10:26:31

在类关系图中,没有任何类需要id属性:每个类实例(又名对象)都有自己的标识,有或没有显式id属性。

在数据库中,您当然需要一个显式id属性来唯一地标识数据库中的其他对象并找到它。顺便说一下,您可以用尾随的{id}对这些属性进行注释。UML没有为它定义任何语义,但通常它的表达能力足以帮助数据库设计人员。

在组合的情况下,主要的问题是一个组合的对象是否可以通过其他方法容易识别。有几种相关的ORM数据库技术,例如:

  • ,您可以使用拥有对象的id和另一个属性(如果这足以标识元素)。
  • 可以使用唯一的id来标识对象(代理主键),并使用拥有对象的id作为外键。

。

对于PurchaseItem,您拥有所需的一切,尽管图表没有说明您将使用哪种方法(例如,id是全局唯一的,还是采购中的唯一?)。

但对于PurchaseFinisher,尚不清楚是否可以唯一地识别发生的情况。如果每次购买只能使用一次付款方法,那就很好,因为它可以用来识别对象。如果允许使用相同的支付方法以相同的货币支付相同金额的两倍(总价的一半),您将有无法区分的副本。因此,从数据库的角度来看,需要某种标识符。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69114869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档