mysql - n :m relation with many records that are just 1m correctly approach

标签 mysql sql relational-database

我在 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/

相关文章:

php - 我的 php 脚本至少需要 5 秒来加载

relational-database - 如何从记录模式和功能依赖性确定候选键?

java - 没有 codegen 的 jOOQ H2 区分大小写问题

mysql - 设计正确的表结构

sql - 在 SQL Server 中获取日期之间的日期的正确方法

mysql - 我的 SQL 代码不断出现此错误

mysql amazon ec2 "Can' t 创建测试文件“错误

php - 查找字符串是否为 PHP 中的 MySQL 函数

php - 如何使用PHP/MySQL限制用户在一个月内只能上传三张图片

php - 如何正确绑定(bind) PHP 准备和执行语句?