Mysql 多用户属性数据库设计
我正在用Laravel构建一个应用程序,我的用户也有个人资料。 例如,我不确定为用户属性设置数据库的最佳方法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
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
更有意义。如果您愿意,还可以使用数字键来表示枚举值。