如果这真的很愚蠢,我很抱歉,但我在php和mysql方面没有任何经验,不知道应该如何做。我在mysql数据库中有一个客户表和一个组表:
客户-ID名称电子邮件电话组groups-ID名称描述
因此,如果需要,我需要为客户分配组,每个客户可以有多个组。因此,例如,客户1属于第4,5,6组
我应该如何在客户表的组列中分配组。我应该只添加用逗号分隔的组ID,然后在需要取出个人ID时使用爆炸吗?
也许这根本不是正确的方法,有人能启发我吗。我很感激知道正确的方法来做这件事,谢谢。
不要在一列中存储多个ID。这是一种非规范化,它将使查询和更改数据变得更加困难,并损害性能。
相反,创建一个单独的CustomerGroup
表(包含CustomerID
和GroupID
列),并且每个客户/组关系有一行。
这里有一个表的例子来展示您应该如何实现它:
表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消费者_组
consumer_id group_id
1 1
1 2
2 1
现在,表3列出了属于哪个组id的消费者id。
这种类型的关系被称为一对多关系,其中,一个消费者可以有多个组。如果一个群体可以有很多消费者,那么反过来也可能是正确的。在这种情况下,关系被称为多对多
我应该只添加用逗号分隔的组ID,然后在需要取出个人ID时使用爆炸吗?
不!如果你这样做,那么你将无法快速查询(例如)特定组中的哪些用户。
相反,使用一个包含两列的联接表,每列对相应的表都有一个foriegn键约束。
group_id customer_id
4 1
5 1
6 1