【发布时间】:2020-02-25 13:38:37
【问题描述】:
我第一次自己开始一个完整的项目,我被困在 UML 模型化(类图)和数据库结构之间。
我应该使用我在数据库的类图中建模的完全相同的类吗?
例如,我有两个User,Service_provider 和Client。在类图中,我将它们中的每一个都视为一个独特的类。但是我选择在数据库中使用单表继承,所以我将两个用户存储在同一个表中,并在其中添加角色属性。
我的模型在这种情况下是否仍然有效?或者我只需要User 的一堂课? (但在这种情况下,我无法显示Service_provider 和Client 之间的关系,因为Service_provider 可能有很多Clients)
谁能给我解释一下,好吗?
【问题讨论】:
-
嗨@Ellin,您的单表方法也称为Table-Per-Hierarchy (TPH),但您也可以对多个表使用方法。 This post 对此进行了很好的讨论,我相信它会回答您的问题。我个人的建议是创建多个表,因为我很难想象像 Client 这样的类不会以 User 中不存在的唯一成员结尾,这种情况会导致数据库中的可空列很少。 (如果使用单个表)。
-
您好,@diogoslima,实际上我选择使用单表方法是因为我只有一个字段存在于 service_provider 而不是 client 表中,并且所有其他字段都相同,所以我不想重复两个具有几乎完全相同字段的表。
-
伟大的@Elin,所以如果你做出这个决定,我相信你的问题的简短回答是你的模型是有效的并且很好。通常,最佳实践指导我们,关系数据库和应用程序具有独立的设计,因为它们建立在不同的需求之上。如果您知道您的选择(正如我在之前的评论中分享的那样)并做出了决定,那看起来不错????如果您希望我将此作为您问题的答案,请告诉我。
-
谢谢@diogoslima,是的!你实际上帮助我澄清了事情
-
我很高兴能够提供帮助!我只是在下面的答案中总结了我们的聊天。祝您编码愉快,祝您项目顺利。
标签: database uml class-diagram single-table-inheritance