1

我想创建一个代表用户联系人列表的表格,但每个用户可能有多个不同的联系人......

我有一个表用户,其中包含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可能会改变。

关于建模这张桌子的任何想法?非常感谢。

4

3 回答 3

2

像这样的东西:

  • (P) 表示主键
  • (F table.column) 表示 table.column 的外键

所有组的表。

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...
于 2013-08-28T16:34:49.367 回答
2

您需要有两个表才能正确建模。

第一个表应该存储有关组的信息,包括拥有用户的 FK。

第二个表应该存储组的成员资格。基本上到列group_iduser_id.

于 2013-08-28T16:12:33.300 回答
0

您希望有一个将被称为类似的中间表,user_per_group并让它只存储用户 ID 和组 ID,这样您就可以在一个组中拥有无限数量的用户,而无需更改您的代码。

作为一般经验法则,如果您的表有很多列,那么您可能做错了什么,尤其是当大多数列都是外键时。

这是一个 SQL Fiddle 建模:

http://sqlfiddle.com/#!9/5179d/2

于 2013-08-28T16:11:17.707 回答