SQL Stock在字段或创建表中的多个信息

时间:2016-12-29 14:23:54

标签: mysql sql

我在数据库中实现某些东西时遇到了概念上的困难。我有一个问题的解决方案,我想知道哪一个是最好的。

问题:

让我们想象一下两个字段的专业表:speciality_id和speciality_name。 例如:

1 - Mage
2 - Warrior
3 - Priest

现在,我有一个表用户,其中包含user_id,name,firstname等字段... 在此表中,有一个名为special的字段。专业存储一个整数,对应于表专业的speciality_id。

对于只有一个专业的用户来说,这是可以接受的。我想改进模型,以便能够为用户提供多种专业。

以下是我的两个解决方案:

创建表格'解决方案1'将user_id与speciality_id相关联,并删除用户表中的专业字段。因此,对于具有2个专业的用户,将在表格中创建2行' solution1'。

更改用户表中字段专业的类型,以便能够记下专业,用逗号分隔。 例如2; 3

我在第二个解决方案中遇到的问题是在我的表用户和我的表专业之间创建外键,以链接它们。我将来可能会遇到更多困难,同时希望获得用户的特性(我猜需要使用解析器)。

您认为哪种解决方案最好?

感谢。

2 个答案:

答案 0 :(得分:1)

我认为最好的方法是遵循解决方案1,因为解决方案2最终会在很多时候复杂化

答案 1 :(得分:1)

绝对适合您的第一个解决方案。

创建第三个"多对多"允许您将用户与多个专业相关联的表。这是你的唯一方法。

设计表时,您总是希望每列包含一个且只包含一个数据元素。想想查询第二个解决方案会是什么样子。当您想要查看具有特定专长的所有用户时,您会做什么?

您可以尝试这样的事情:

select * from user where specialty like '%2%' 

那么,当你的专业达到12岁时会发生什么?现在" 2"匹配多个实体。你可以进一步调整并试图变得棘手,但是......你真的应该让你的数据设计尽可能正常,以避免所有的混乱,头疼和错误。使用解决方案1.