Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 多用户属性数据库设计_Mysql_Database_Laravel_Database Design - Fatal编程技术网

Mysql 多用户属性数据库设计

Mysql 多用户属性数据库设计,mysql,database,laravel,database-design,Mysql,Database,Laravel,Database Design,我正在用Laravel构建一个应用程序,我的用户也有个人资料。 例如,我不确定为用户属性设置数据库的最佳方法 user_ud | name | gender | haircolor 1 josh 1 3 正如您可以从这个快速示例中看到的,这就是我的配置文件表当前的样子,因为这些值是从选择框中填充的 我的问题是。是bes将这些值映射到这样一个有意义的值的方法 id | gender 1 male 2

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

user_ud  |   name  |  gender  |  haircolor
   1         josh       1           3
正如您可以从这个快速示例中看到的,这就是我的配置文件表当前的样子,因为这些值是从选择框中填充的

我的问题是。是bes将这些值映射到这样一个有意义的值的方法

 id  |  gender
  1      male
  2      female

 id  | hairColor
  1      blonde
  2      brown
  3      black

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

我会使用
枚举来实现这些:

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

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

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

在这种情况下,将颜色存储为字符串值是非常好的。 Enum也适用于性别。
除非你是Facebook,如果你不包括他们自己特定的性观点,你需要为那些觉得自己的权利受到侵犯的人提供几十个“性别”选项。

我想说对了,使用这个就像说1=男性,2=女性等等?不,你应该使用实际值
男性
/
女性
。没有理由使用与任何有意义的内容都不对应的数字ID使其复杂化-
$user->gender='male'
在代码中比
$user->gender=1
更有意义。如果您愿意,还可以使用数字键来表示枚举值。