n:m与许多正确接近1m的记录的关系

时间:2014-03-04 10:27:30

标签: mysql sql relational-database

我在mysql中有一个USERS表,它与m表示关系,带有CITY表。

用户是由字段TYPE标识的3种类型:常规,管理员,超级。

普通用户最多可以与1个城市相关联。 管理员用户最多只能链接1个城市。 超级用户与所有城市相关联。

将所有3种类型的用户存储在一个表中是正确的,并且n:m对于大多数用户来说只有1:m而且SUPER USER是纯粹的n:m。这是正确的方法吗?

1 个答案:

答案 0 :(得分:1)

就我个人而言,我认为您不需要单独的关系表(即使您对未来的改进主要是好主意,如果您决定用户需要连接到多个城市)。

我要做的是在users表中创建city_id列,并相应地填充它。我之所以这样说是因为超级用户,就像你打电话给他们一样。如果您创建单独的关系表,它将具有(number of super users) * (number of cities)条目,并且由于超级用户可以查看所有城市,因此每次创建新用户时都需要向表中添加(number of cities)行。此外,每次创建新城市时,都需要将(number of super users)行添加到关系表中。

相反,正如我所说,我只会在用户表中使用city_id,如果用户super user,那么他会看到所有城市,如果没有,则只看{{1列。

这只是我个人的偏好。

让我知道你的想法。