具有20个属性的用户配置文件的数据库表结构

时间:2012-04-19 21:37:00

标签: database-design database-table

让我们以一个拥有100.000个用户的约会网站为例。每个用户都有大约30个属性,如头发颜色,吸烟,年龄,城市,性别......一些属性是bool,一些是int,一些是var或text。

这些属性中约有20个是可搜索的,有一半用户没有填充数据。所有值都显示在用户个人资料页面上。

我在考虑以下选项:

  1. 将数据拆分为4个表。表1用于主要搜索的数据,表2用于大多数未填充的属性,表3用于大数据,例如关于我,以及表4的其余部分。
  2. 大多数属性的单独表,因此每个属性都有自己的表。
  3. 使用EAV模型。
  4. 我认为第一种选择是最好的选择。或者还有其他更好的方法吗?

1 个答案:

答案 0 :(得分:0)

假设您不需要添加新属性,那么您可能只需将所有内容放在一个大表中即可。 DBMS通常在存储NULL方面非常有效。索引NULL也应该是合理的,有些DBMS甚至不在索引(Oracle)中包含NULL。

也不要害怕BLOB - 他们倾向于“拉伸”行(如果BLOB的一部分在行中排成行,通常可以用DBMS特定的方式控制),降低你的“数据聚类“,但这不应该对你的目的太重要。

在决定最自然的解决方案不够高的情况下,衡量代表性的数据量。