Mysql n:m与许多只接近1m的记录的关系

Mysql n:m与许多只接近1m的记录的关系,mysql,sql,relational-database,Mysql,Sql,Relational Database,我在mysql中有一个用户表,它与m:n和CITY表有关 用户是由字段类型标识的3种类型:常规、管理、超级 普通用户最多可链接1个城市。 管理员用户最多只能链接1个城市。 超级用户链接到所有城市 正确的做法是将所有3种类型的用户存储在一个表中,并且具有n:m,这对于大多数用户来说只是1:m,而超级用户是纯n:m。这是正确的方法吗?就个人而言,我认为您不需要单独的关系表(即使这对于未来的改进是个好主意,如果您决定用户需要连接到多个城市) 相反,我要做的是在用户表中创建city\u id列,并相应地

我在mysql中有一个用户表,它与m:n和CITY表有关

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

普通用户最多可链接1个城市。 管理员用户最多只能链接1个城市。 超级用户链接到所有城市


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

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

相反,我要做的是在用户表中创建
city\u id
列,并相应地填充它。我这样说是因为超级用户,正如你所说的。如果您创建单独的关系表,它将有
(超级用户数)*(城市数)
项,并且由于超级用户可以查看所有城市,因此每次创建新用户时,您都需要向表中添加
(城市数)
行。此外,每次创建新城市时,都需要将
(超级用户数)
行添加到关系表中

相反,正如我所说,我只会在用户表中使用
city\u id
,如果用户if
super user
,那么他会看到所有城市,如果不是,则只会看到
city\u id
列中的城市

这只是我个人的喜好


让我知道你的想法。

用户表是用户列表,而
type
只是该表中的一列?是的@D.Kasipovic这是正确的如果我错了请纠正我:-超级用户只是一个,所以将-->1*(numb.of cyties)-如果我在用户表中放置城市id,我将在1:m的情况下,因此,很难对超级用户技能进行建模,以了解每个城市或我的错误?如果您有一个超级用户,那么行数是正确的,但基本上,您在关系表中得到的只是城市表中所有城市id的副本。再次强调,关系表是一种很好的实践,但是对于第二个问题(实现的难度),它实际上取决于您以后打算如何处理这些数据,您是如何对软件建模的,等等。我只是给您一个观点,这当然可能是错误的,或者完全不适合你的需要。你的评论和观点很好,欢迎来到我这里!我只是要求提高我的知识和期待不同的方法风格!我认为有限制地选择m:m,把一个用户id放在城市表上对我来说是不对的,让所有城市都与一个用户链接是不可能的,因为用户1:m cities或我错了?是的,你是对的,在加入表时是不可能的(至少不是以一种漂亮的方式,比如说),这就是为什么我说这在很大程度上取决于连接到数据库的软件,以及之后如何解析数据。