繁体   English   中英

在一列中存储来自另一个表的多个ID?

[英]storing several ID's from another table in one column?

抱歉,如果这确实很愚蠢,但我对php和mysql没有任何经验,不知道应该怎么做。 我在mysql数据库和组表中有一个客户表:

客户-ID名称电子邮件电话组群组-ID名称描述

因此,如有必要,我需要为客户分配组,每个客户可以有多个组。 因此,例如客户1在组4,5,6中

我应该以什么方式在客户表的组列中分配组。 我应该只添加用逗号分隔的组ID,还是在需要取出单个ID时使用explode?

也许这根本不是正确的方法,请有人启发我。 感谢您知道正确的方法,谢谢。

不要在一个列中存储多个ID。 这是一种非规范化,这将使查询和更改数据变得更加困难,并且会损害性能。

而是,创建一个单独的CustomerGroup表(具有CustomerIDGroupID列),并且每个Customer / Group关系具有一行。

我应该只添加用逗号分隔的组ID,还是在需要取出单个ID时使用explode?

没有! 如果这样做,您将无法快速(例如)查询特定组中的哪些用户。

而是使用一个连接表有两列,每个有foriegn键约束对应的表。

group_id  customer_id
4         1
5         1
6         1

这是一个表格示例,说明如何实现此目的:

表1消费者:

id name email 
1  john john@something.com
2  ray  ray@something.com

表2组:

id group_name   description
1  music        good music group
2  programming  programmers

表3 CONSUMERS_GROUPS

consumer_id  group_id
1              1
1              2
2              1

现在,表3列出了属于哪个组ID的消费者ID。

这种关系称为一对多关系,其中一个消费者可以有许多组。 在一组可以有许多消费者的地方,反向也可能是正确的。 在这种情况下,关系称为多对多

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM