我正在建立一个数据库,我有这两个表:
1)[users],其中包含以下列:id,username,password,email(以及更多内容)。
2)[user_profile]其中包含有关用户的更多信息,例如:性别,身高,县,语言等。
我的问题是关于第二张表。在可能有多个答案的列中存储信息的好方法是什么,例如语言或宠物? 如果我存储了这样的信息,我的架构仍然是个好主意吗?到目前为止,我唯一的想法是将几个选项存储在一列中,并用“ - ”字符分隔它们。稍后当我从数据库中提取信息时,我会从这些列中拆分信息,这些列可以包含多个选项,而不是“ - ”。
这是个好主意吗?还有更好的吗?
答案 0 :(得分: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表中的外键,您可以在其中指定有关该宠物的大量信息。 / p>
我喜欢选项1的数据,你可以枚举所有的可能性(如语言),我喜欢选项2,因为可能存在无限数量的可能性(如宠物名称)