多个用户属性的数据库设计

时间:2015-04-19 21:29:46

标签: mysql database laravel database-design

我正在使用Laravel构建应用程序,我的用户也有个人资料。 我不确定是为用户属性设置数据库的最佳方式,例如

user_ud  |   name  |  gender  |  haircolor
   1         josh       1           3

从这个快速示例中可以看出,这是我的配置文件表当前的样子,因为从选择框填充了值。

我的问题是。然后将这些vales映射到像这样的有意义的值。

 id  |  gender
  1      male
  2      female

 id  | hairColor
  1      blonde
  2      brown
  3      black

等为每种属性类型创建一个新表?或者有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

我将ENUM用于这些:

$table->enum('gender', ['male', 'female']);

答案 1 :(得分:0)

头发颜色作为一个实体很重要吗? 您是否自己插入颜色,如果没有红色,您是否还需要有关数据库中存在的信息?

对于这类数据,通常情况并非如此,并且容易导致数据库过度规范化,从而导致额外的查询而且没有任何好处。

在这种情况下,将颜色存储为字符串值是完全正常的。 Enum也适合性别。 除非你是Facebook并且需要几十个性别"如果你没有包含他们自己特定的性观点,那些认为自己的权利受到侵犯的人可以选择。