用户,组和标签数据库设计

G G*_* Gr 0 sql database-design

我很难尝试为以下场景设计数据库结构:

我的数据库应包含一般用户信息UserID,FirstName,LastName,JoiningDate.

每个用户都可以成为组的一部分.

每个组都附有"标签",可以有多个标签.用户还应该能够返回可用组列表(按标签过滤).

能够搜索组(通过附加到组的标签),并搜索特定用户(按姓氏或唯一ID).).它还应该能够返回可用组列表(按标签过滤)和特定组的成员(按姓氏过滤并按加入日期过滤).

还应该有一种方法可以发现哪些用户组属于多个组(查询"谁是"Bravo组"和"Delta"组的成员),并跟踪组中发送的消息(像一个论坛).

这只是两张桌子吗?或者它应该是三个表...用户,组和标签?自从我做了任何关系数据库之后差不多一年了,我想知道是否有人能展示这个数据库设计的直观表示?

小智 5

我建议五个表:用户,组,标签和链接表UserGroups和GroupTags.

这是因为用户和组之间以及组和标签之间似乎存在多对多关系 - 关系设计中需要链接实体来加入具有它们之间多对多关系的实体.

 ---------   ------------   --------
 | Users |   |  Groups  |   | Tags |
 ---------   ------------   --------
     |         |      |        |
     |         |      |        |
    /|\       /|\    /|\      /|\
   --------------    -------------
   | UserGroups |    | GroupTags |
   --------------    -------------
Run Code Online (Sandbox Code Playgroud)