【发布时间】:2014-01-23 07:46:04
【问题描述】:
好的,这是一个非常基本的问题,但我找不到任何明确的答案。我们正在尝试做一个项目,其中每个用户都有一个配置文件,并且配置文件中的 5-6 个属性带有子属性。存储不同配置文件的最佳方式是什么?为每个用户创建表将导致数据库中有 10k 个表
【问题讨论】:
-
使用主键为用户名和属性名的表。
好的,这是一个非常基本的问题,但我找不到任何明确的答案。我们正在尝试做一个项目,其中每个用户都有一个配置文件,并且配置文件中的 5-6 个属性带有子属性。存储不同配置文件的最佳方式是什么?为每个用户创建表将导致数据库中有 10k 个表
【问题讨论】:
类似这样的:
CREATE TABLE profile (
userid INT,
attribute VARCHAR(20),
value VARCHAR(100),
PRIMARY KEY(userid, attribute)
);
【讨论】:
创建 UserProfile 模型是 Django 中的recommended way。这只会在数据库中创建一个表。将为每个用户创建一行。例如
from django.contrib.auth.models import User
class UserProfile(models.Model):
user = models.OneToOneField(User)
favourite_num = models.Integer()
这也应该非常节省空间。
【讨论】: