我很难将数据库表和外键转换为类和关联的类关系图。
我的问题是:
“在组合关系中,子类应该始终有一个ID字段吗?”。
在我的CD中,有两个排序类:PurchaseItem和,它们组合了购买类。PurchaseFinisher已经从其表中提供了一个ID字段,但是PurchaseItem没有,因为它是由id_purchase和id_payment_method外键过滤的。
提前谢谢。

这是我的DB图

正如您所说,我看不到Purchase或Product之间的冗余。你能根据我的DB图表给我看一下吗?我的桌子造型很好(希望如此)。我的错误在于类的定义。
发布于 2021-09-09 10:26:31
在类关系图中,没有任何类需要id属性:每个类实例(又名对象)都有自己的标识,有或没有显式id属性。
在数据库中,您当然需要一个显式id属性来唯一地标识数据库中的其他对象并找到它。顺便说一下,您可以用尾随的{id}对这些属性进行注释。UML没有为它定义任何语义,但通常它的表达能力足以帮助数据库设计人员。
在组合的情况下,主要的问题是一个组合的对象是否可以通过其他方法容易识别。有几种相关的ORM数据库技术,例如:
。
对于PurchaseItem,您拥有所需的一切,尽管图表没有说明您将使用哪种方法(例如,id是全局唯一的,还是采购中的唯一?)。
但对于PurchaseFinisher,尚不清楚是否可以唯一地识别发生的情况。如果每次购买只能使用一次付款方法,那就很好,因为它可以用来识别对象。如果允许使用相同的支付方法以相同的货币支付相同金额的两倍(总价的一半),您将有无法区分的副本。因此,从数据库的角度来看,需要某种标识符。
https://stackoverflow.com/questions/69114869
复制相似问题