我想创建一个表格,代表用户的联系人列表,但每个用户可能有不同的联系人...
我有一个表格用户,其中包含 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 可能会改变。
有关建模此表的任何想法吗? 非常感谢你。
答案 0 :(得分:2)
您需要有两个表才能正确建模。
第一个表应存储有关该组的信息,包括FK给拥有用户。
第二个表应该存储该组的成员资格。基本上是列group_id
和user_id
。
答案 1 :(得分:2)
这样的事情:
所有小组的表格。
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...
答案 2 :(得分:0)
您希望拥有一个名为user_per_group
的中间表,并让它只存储用户ID和组ID,这样您就可以在一个组中拥有无限量的用户而不会更改你的代码。
作为一般的经验法则,如果你的表有很多列,你可能做错了,特别是如果大多数列都是外键。
这是一个SQL小提琴建模: