道歉,如果这真的很愚蠢,但我没有任何php和mysql的经验,知道应该怎么做。我在mysql数据库和组表中有一个customer表:
客户 - ID名称电子邮件电话组 组 - ID名称描述
因此,如果需要,我需要为客户分配组,这可以是每个客户不止一个组。所以例如客户1在第4,5,6组中
我应该在customer表的group列中分配组的方式。我应该只添加逗号分隔的组ID,然后在需要获取个人ID时使用explode吗?
也许这根本不是正确的方法,请有人开导我。我很高兴知道这样做的正确方法,谢谢。
答案 0 :(得分:4)
不要在一列中存储多个ID。这是一种非规范化,会使查询和更改数据变得更加困难,并且会损害性能。
而是创建一个单独的CustomerGroup
表(包含CustomerID
和GroupID
列),并且每个客户/组关系都有一行。
答案 1 :(得分:1)
我是否应该添加以逗号分隔的组ID,然后在需要获取个人ID时使用explode? p>
没有!如果您这样做,那么您将无法快速(例如)查询特定组中的用户。
而是使用带有两列的join table,每列都有一个对应表的foriegn键约束。
group_id customer_id
4 1
5 1
6 1
答案 2 :(得分: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。
这种类型的关系称为 一对多 关系,其中一个消费者可以拥有多个群组。如果一个群体可以拥有许多消费者,那么反向也可能是正确的。在这种情况下,关系称为 多对多