Django 多连接数据库模型的实现方法

Django 多连接数据库模型的实现方法,django,database,database-design,Django,Database,Database Design,我使用python Django框架并尝试构建一个网站。我希望在下面描述的案例中获得良好的性能,并搜索良好的数据库/模型设计。因为在我看来这是一个与数据库相关的问题,所以我写了关于列和表的文章。在Django中,我将用相应的模型和字段替换它们 我有一个带有用户和配置文件表的模型用户包含用户名和电子邮件等主要用户数据个人资料包含所有其他个人资料详细信息,如姓名、生日、喜爱的颜色等profile还有一些相关表,例如,custom_fields,用户可以在这些表中将自定义字段添加到他们的配置文件中 一

我使用python Django框架并尝试构建一个网站。我希望在下面描述的案例中获得良好的性能,并搜索良好的数据库/模型设计。因为在我看来这是一个与数据库相关的问题,所以我写了关于列和表的文章。在Django中,我将用相应的模型和字段替换它们

我有一个带有
用户
配置文件
表的模型<代码>用户包含用户名和电子邮件等主要用户数据<代码>个人资料包含所有其他个人资料详细信息,如姓名、生日、喜爱的颜色等
profile
还有一些相关表,例如,
custom_fields
,用户可以在这些表中将自定义字段添加到他们的配置文件中

一个用户恰好拥有一个配置文件。每个联系人都可以看到用户配置文件。我需要将配置文件所有者与配置文件一起存储

如果一个用户(a)查看另一个用户(B)的配置文件并遗漏了一些信息,a可以将这些信息添加到B的配置文件中。除了创建者a之外,任何人都看不到这些更改。这意味着我需要将编辑器(a)和目标(B)与配置文件一起存储

我思考了如何设计它,并找到了三种方法:

  • 将表
    profile
    (仅包含用户自己的配置文件)复制到
    edited_profile
    (包含所有编辑)中,为编辑和管理这两个表的用户添加一列
    编辑器
    。这意味着我还必须复制所有依赖于
    profile
    的表,或者在
    profile
    和依赖表之间需要一层连接表。此外,如果我想改进或扩展模型,我必须始终注意保持两个表的一致性。在我看来,这似乎不是最好的解决办法
  • 将列
    user
    editor
    添加到
    profile
    中。用户自己的配置文件由
    编辑器标识为NULL
    。如果我需要其他内容(例如组)的配置文件,我需要在
    profile
    表中添加相应的列以引用它。这可能包括SQL查询中的许多更改,因为我可能还需要筛选新列
  • 将列
    profile\u id
    添加到
    profile
    中,并创建一些连接表:

    • user\u profile(fk\u user\u id->user\u id,fk\u profile\u id->profile\u id)
    • 已编辑的档案(fk\U用户id->用户id,fk\U编辑id->用户id,fk\U档案id->档案id)
    如果我需要其他内容(例如组)的配置文件,我需要添加相应的连接表

  • 我想有一个良好的数据库设计与性能查找。通常我需要用户自己的个人资料,或者与其他用户应用的编辑一起使用。关于查找/更新性能和维护,哪种方法是最好的?还有没有我错过的更好的设计

    谢谢你的帮助