【问题标题】:Should I normalize the intermediary model in django?我应该规范化 django 中的中介模型吗?
【发布时间】:2010-12-09 11:57:39
【问题描述】:

假设我有四个成对的 M2M 相关模型:A、B、C、D。我创建了一个中间模型 ABCD 来建立它们之间的关系。如果数据库中有很多重复的列对,是 将中间模型规范化为多个模型的正常做法?

我担心的是: 1.分解ABCD会使models.py杂乱无章 2. 多个 2 列表是否比一个 4 列表(带有重复的列对)更好?

【问题讨论】:

    标签: database django models


    【解决方案1】:

    还有一些可能对您的设计有所帮助的问题。

    1. 是与每个相关的所有表 其他?
    2. 都必须同时存在吗 时间?意思是,如果 A 存在做 B,C 和D也存在?
    3. 他们的关系是什么? 意思是一对多,一对多 一个……等等

    我认为您所做的还可以,但我更倾向于使用多个 2 列表(但这完全取决于您对我的三个问题的回答)。我认为 2 列相交表便于查询和数据完整性控制。

    编辑(在您回复后):

    在对此进行进一步审查后,我认为更容易查询等的方法将是单个 4 列表。我通常不喜欢这种方法,但如果您的数据实际上都是相关的并且都存在,那么使用第一种方法查询数据会节省很多时间。

    我必须就此建议向我的 DBA 朋友道歉;)

    【讨论】:

    • 我已经编辑了我的问题。 1:是的。 2:暂时没有。但是随着数据库的不断增长,一切都应该存在。我允许 FK 为空。 3:我现在的设计都是M2M。谢谢。
    • 是的,我确实发现使用单个表可以节省很多工作,尤其是当我想输出像 A: B :C 这样的分层结构时
    • 如果对第一个和第二个问题的回答都是“是”呢? @北极?对第三个问题的回答可能是混合的。
    猜你喜欢
    • 2011-08-26
    • 2016-11-12
    • 2011-07-17
    • 2020-05-08
    • 2010-10-11
    • 1970-01-01
    • 2015-02-08
    • 2020-08-25
    • 2011-02-11
    相关资源
    最近更新 更多