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