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

Database design 具有20个属性的用户配置文件的数据库表结构,database-design,database-table,Database Design,Database Table,让我们以一个拥有10万用户的交友网站为例。每个用户都有大约30个属性,比如头发颜色、吸烟、年龄、城市、性别……一些属性是bool、一些int和一些var或text 其中大约20个属性是可搜索的,一半的用户不填写数据。所有值都显示在用户配置文件页面上 我在考虑以下选择: 将数据拆分为4个表。表1用于搜索最多的数据,表2用于未填充的属性,表3用于像about me这样的大型数据,表4的其余部分 大多数属性都有单独的表,因此每个属性都有自己的表 采用EAV模型 我认为第一种选择是最好的。或者还有其他更

让我们以一个拥有10万用户的交友网站为例。每个用户都有大约30个属性,比如头发颜色、吸烟、年龄、城市、性别……一些属性是bool、一些int和一些var或text

其中大约20个属性是可搜索的,一半的用户不填写数据。所有值都显示在用户配置文件页面上

我在考虑以下选择:

  • 将数据拆分为4个表。表1用于搜索最多的数据,表2用于未填充的属性,表3用于像about me这样的大型数据,表4的其余部分
  • 大多数属性都有单独的表,因此每个属性都有自己的表
  • 采用EAV模型

  • 我认为第一种选择是最好的。或者还有其他更好的方法吗?

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

    也不要害怕BLOB——它们会倾向于“拉伸”行(如果BLOB的一部分在行中成列放置,这通常可以通过DBMS特定的方式进行控制),降低“数据集群”,但这对于您的目的来说并不太重要


    在任何情况下,在确定最自然的解决方案的性能不够之前,对代表性的数据量进行测量。

    如果您不太需要添加新属性,那么最好将所有内容放在一个大表中。DBMS在存储空值方面通常相当有效。索引空值也应该是合理的,有些DBMS甚至不在索引中包含空值(Oracle)

    也不要害怕BLOB——它们会倾向于“拉伸”行(如果BLOB的一部分在行中成列放置,这通常可以通过DBMS特定的方式进行控制),降低“数据集群”,但这对于您的目的来说并不太重要


    在任何情况下,在确定最自然的解决方案性能不够之前,先对代表性的数据量进行测量。在我看来,你似乎想得太多了。100K记录并不多,您的30个属性加起来平均每行几百字节。您将使用什么数据库?Mysql数据库。我知道这并不多,但我想为潜在的增长做出适当的设计。听起来你好像想得太多了。100K记录并不多,您的30个属性加起来平均每行几百字节。您将使用什么数据库?Mysql数据库。我知道这并不多,但我想为潜在的增长做出适当的设计。