0

我正在构建一个数据库,其中有这两个表:

1) [users] 包含以下列:id、用户名、密码、电子邮件(以及更多)。

2) [user_profile] 包含有关用户的更多信息,例如:性别、身高、县、语言等。

我的问题是关于第二张桌子的。将信息存储在可能有多个答案的列(例如语言或宠物)中的好方法是什么?如果我存储了这样的信息,我的模式仍然是一个好主意吗?到目前为止,我唯一的想法是将多个选项一起存储在一个列中,并用“-”字符之类的东西分隔它们。稍后,当我从数据库中提取信息时,我将从这些列中拆分信息,这些列可以通过“-”包含多个选项。

这是一个好主意吗?有更好的吗?

4

1 回答 1

1

只要您想在从表中获取一行后进行额外的解析,您提出的解决方案似乎就很好。尽管我想到了其他几个选择。两者都需要创建新表。我不是专家架构设计师,所以请随意批评我的选择。

1)这里以语言为例,创建一个语言表,它将枚举所有语言选项。然后再创建一个表来指定从配置文件到语言的映射。所以你的两张新桌子是

Language: Language_Id, Language

User_Profile_Language_Mapping: Profile_Id, Language_Id

这样,只需向 User_Profile_Language_Mapping 表中添加一个条目,就可以将配置文件关联到任意多的语言。

2) 这次以 Pets 为例,是创建另一个将用户配置文件映射到宠物的表。

User_Profile_Pets: Profile_Id, Pet

我不知道您要存储有关宠物的哪些信息,但它可能只是宠物名称、宠物类型,也可能是 Pet 表中的外键,您可以在其中指定有关该宠物的大量信息。

我喜欢选项 1 用于可以枚举所有可能性(如语言)的数据,我喜欢选项 2 用于可能存在无限数量的可能性(如宠物名称)

于 2012-11-25T17:19:07.953 回答