我在 mysql 中有一个 USERS 表,它与一个 CITY 表有 m:n 关系。
用户有 3 种类型,由 TYPE 字段标识:regular、admin、super。
普通用户最多可以链接到 1 个城市。 管理员用户最多只能与 1 个城市相关联。 super 用户链接所有城市。
将所有 3 种类型的用户存储在一个表中是正确的,并且对于大多数用户来说 n:m 只是 1:m 而只有 super 用户是纯 n:m。这是正确的做法吗?
最佳答案
就个人而言,我认为您不需要单独的关系表(即使这对 future 的改进来说是个好主意,如果您决定用户需要连接到 1 个以上的城市)。
我会做的是在用户表中创建 city_id
列,并相应地填充它。我之所以这样说,是因为 super 用户,正如您所说的那样。如果您创建单独的关系表,它将有 ( super 用户数) * (城市数)
条目,并且由于 super 用户可以看到所有城市,您需要添加 (number of cities)
行添加到表中,每次您创建一个新用户。此外,每次创建新城市时,您都需要向关系表添加( super 用户数)
行。
相反,正如我所说,我会在用户表中使用 city_id
,如果用户是 super user
那么他会看到所有城市,如果不是,仅来自 city_id
列的城市。
这只是我个人的喜好。
让我知道你的想法。
关于mysql - n :m relation with many records that are just 1m correctly approach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22169282/