微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何重用一个模型来关联多个模型

如何解决如何重用一个模型来关联多个模型

我以前参与过大型项目,但我正在努力改进我的最佳实践,而我一直坚持的一件事就是不创建许多模型

这似乎有点令人困惑,让我举个例子:

假设我有一个 Post 模型和一个 Answer 模型,答案与 One-Many 关系中的 Post 相关。

然后,我想向 CommentPost 添加一个 Answer 模型。

我可以在 Foreign Key添加两个 nullable Comment 列,以显示它属于哪个模型。

但我也可以创建 PostCommentAnswerComment 模型,删除可为空的列,但创建更多样板。

哪种做法最好?

解决方法

这取决于。

我假设设计主要是为了支持事务应用程序 (OLTP),而不是报告 (OLAP)。我还假设模型 = 表。

拥有多个表并没有本质上的错误,只要设计有意义(可以很容易地支持),可以相对容易地扩展/修改(维护),不会导致性能不佳的查询(例如,如果有一个数据库架构与调用应用程序想要使用其数据的方式不匹配。

如果数据相同,应该放在同一张表中;例如如果您正在处理鸟类,则没有 tblHawk、tblParrot 等 - 但您拥有所有动物,然后确定您可能想以某种方式将它们分开 - tblBird、tblFish、tblMammal 等 - 因为数据将是差异太大且难以有效建模。

你有答案和帖子 - 我认为这些足够不同,有单独的表格有意义吗?如果是这样,对他们的评论呢?如果评论基本上是相同的,而不管发帖/回答如何,那么正如您所描述的,一张桌子可能是个好主意。

还要考虑应用程序:如果您有单独的帖子/答案评论表,则需要开发和维护更多代码 - 但它是独立的,因此代码更多,但可能更灵活,复杂性更低。使用一张桌子会产生相反的效果。两者都没有错,但根据您的情况,一种方法可能比另一种更好。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。