2015-04-19 52 views
0

我正在用Laravel构建一个应用程序,并且我有一些用户也有一个配置文件。 我不确定去了解用户设置数据库的最佳方式属性例如针对多个用户属性的数据库设计

user_ud | name | gender | haircolor 
    1   josh  1   3 

你可以从这个简单的例子看这是我的个人资料表目前看起来,作为瓦莱斯从选择框中填入。

我的问题是。是这种方式来映射这些价值像这样一个有意义的价值。

id | gender 
    1  male 
    2  female 

id | hairColor 
    1  blonde 
    2  brown 
    3  black 

等等为每个属性类型创建一个新表?还是有更好的方法来做到这一点?

回答

2

我会使用这些的ENUM

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

只是让我这个权利,使用这个就像是说1 =男,2 =女等等? –

+0

不,你会使用实际值'male' /'female'。没有理由使数字ID与任何有意义的数字ID无关 - “$ user-> gender ='male''在代码中比'$ user-> gender = 1'更有意义。 – ceejayoz

+0

如果您愿意,也可以使用数字键作为枚举值。 –

0

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

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

在这种情况下将颜色存储为字符串值非常合适。 Enum对于性别也可以。 除非你是Facebook,并且如果你不包含自己的特定性观点,那么对于那些觉得自己的权利受到侵犯的人来说,需要许多“性别”选项。

相关问题