我想创建一个代表用户联系人列表的表格,但每个用户可能有多个不同的联系人......
我有一个表用户,其中包含id_user 、nome、info 列
每个组需要包含作为组所有者的用户的 id、其他用户的 id 和其他每个用户的其他整数值。
因此,表组类似于
id_dono_do_grupo, id_user_1, id_user_2, .., id_user_N, valor_1, valor_2, .., valor_N
但是这个N可能会改变。
关于建模这张桌子的任何想法?非常感谢。
我想创建一个代表用户联系人列表的表格,但每个用户可能有多个不同的联系人......
我有一个表用户,其中包含id_user 、nome、info 列
每个组需要包含作为组所有者的用户的 id、其他用户的 id 和其他每个用户的其他整数值。
因此,表组类似于
id_dono_do_grupo, id_user_1, id_user_2, .., id_user_N, valor_1, valor_2, .., valor_N
但是这个N可能会改变。
关于建模这张桌子的任何想法?非常感谢。
像这样的东西:
所有组的表。
groups
id unsigned int(P)
owner_id unsigned int(F users.id)
name varchar(50) // Vitor's Group, Dan's Group, etc.
所有用户的表。
users
id unsigned int(P)
name varchar(50)
info varchar(50)
最后是一张将用户与组联系起来的表格。组的所有者在表中指定,groups因此该users_groups表允许您拥有与组关联的任意数量的用户|值对。
users_groups
id unsigned int(P)
user_id unsigned int(F users.id)
group_id unsigned int(F groups.id)
value unsigned int // Or whatever data type the "value" is...
您需要有两个表才能正确建模。
第一个表应该存储有关组的信息,包括拥有用户的 FK。
第二个表应该存储组的成员资格。基本上到列group_id和 user_id.
您希望有一个将被称为类似的中间表,user_per_group并让它只存储用户 ID 和组 ID,这样您就可以在一个组中拥有无限数量的用户,而无需更改您的代码。
作为一般经验法则,如果您的表有很多列,那么您可能做错了什么,尤其是当大多数列都是外键时。
这是一个 SQL Fiddle 建模: