我正在使用mysql,我有一个用户表,其中包含一些基本信息,如姓名,姓氏,年龄,性别等。我想提供一个名为profile的功能,用户将在其中放置其他信息,如工作地点,替代联系人细节等等。这些新列不固定,以后可以有更多列。据我所知,可以有两种方法:
1)每次需要时添加新列,这会将Null条目放入新添加列的前一行。
2)添加一个新表,其中包含列名的所有列ID,另外还有一个表,其中包含具有该特定新列条目的每个用户的键值结构,如下所示:
表1: userId | firstName |年龄| ....
表2: columnId | columnName |的dataType
表3: userId | columnId |值
哪种方法适合我的情景?
答案 0 :(得分:4)
我很想投票结束这个问题,因为某些过于宽泛和基于意见的组合。然而,这似乎是一个非常有效的问题,只是一个没有正确答案的问题。
您的列表中至少还有两种方法:
为了确定哪种方法最好,您需要更多地了解您的问题。例如:
这个问题没有一个正确的答案。 EAV(实体 - 属性 - 值数据模型)方法(您的第二种方法)通常会使所有列具有相同类型并排除外键约束(围绕这两个问题存在一些麻烦的方法)。另一方面,如果配置文件列的数量超过了数据库的最大值,那么您可能别无选择,只能使用某种形式的EAV。