首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将数字列表存储到数据库

如何将数字列表存储到数据库
EN

Stack Overflow用户
提问于 2011-09-10 12:25:47
回答 2查看 270关注 0票数 1

嗨,我试图在数据库(SQLite)中存储组、子组和用户信息。一个组可以有多个子组,用户可以属于多个组/子组,如下所示。

  • 群1有子群a,b,c和用户A。
  • 2群有子群d,e和用户B,C,D,
  • 子群d有用户B,D,属于组2,
  • 用户B属于组1,2和子群A,c,d.

它应该能够按组、子组或用户搜索。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-10 17:02:37

下表结构提出了以下假设:

subgroups).

  • Users子群对于每个组都是独特的和不同的,并且不同于实际的组(一对多的关系,并且组是不可用的,因为
  1. 必须是至少一个子群的成员才能参与到一个组中。)

GroupTable GroupID (PK) GroupName

SubGroupTable SubGroupID (PK) GroupID (FK on GroupTable.GroupID) SubGroupName

UserTable UserID (PK) UserName

现在,创建一个多到多的关系表,在一个或多个子组中建立用户参与:

代码语言:javascript
复制
User_Sub_Groups
    UserID (FK on UserTable.UserID)
    SubGroupID (FK on SubGroupTable.SubGroupID)

如果组也可以是子组,那么able提供的示例是一种选择,尽管我的做法略有不同:

代码语言:javascript
复制
GroupTable
    GroupID (PK)
    GroupName

UserTable
    UserID (PK)
    UserName

SubGroupTable
    ParentGroupID (Composite Key on GroupsTable.GroupID)
    SubGroupID (Composite Key on GroupsTable.GroupID)

UserGroupsTable
    UserID (Composite Key on UserTable.UserID)
    GroupID (Composite Key on GroupsTable.GroupID)

从这里开始,您只需使用各个表之间的联接来执行搜索。例如,要返回属于某个组的所有用户:

代码语言:javascript
复制
SELECT     
    tblUser_Group.GroupID, tblUser.*
FROM         
    tblUser_Group 
INNER JOIN  
    tblUser ON tblUser_Group.UserID = tblUser.UserID
WHERE 
    tblUserGroup.GroupID = @GroupID

若要返回特定用户是其成员的所有SubGroups:

代码语言:javascript
复制
SELECT    
    tblGroup.GroupName AS SubGroupName
FROM         
    tblUser_Group AS UG 
INNER JOIN
    tblUser ON UG.UserID = tblUser.UserID INNER JOIN
    tblGroup_SubGroup AS GSG ON UG.GroupID = GSG.SubGroupID INNER JOIN
    tblGroup ON GSG.SubGroupID = tblGroup.GroupID
WHERE     
    tblUser.UserID = 1

诸若此类。一开始想一想各种连接排列是很有挑战性的,但这是一种非常灵活和可扩展的安排。

希望这能帮上忙!

票数 0
EN

Stack Overflow用户

发布于 2011-09-10 12:46:10

我就是这样做的:

代码语言:javascript
复制
Group:
  id
  NULL overgroup_id

Membership:
  user_id
  group_id    

User:
  id

具有overgroup_id = NULL的组是一个组,否则它是一个子组。

若要在具有id gid的组中查找所有users_ids,请使用子组:

代码语言:javascript
复制
select user_id
from Membership
where group_id=gid
or group_id in
    (select group.id from Group where overgoup_id=gid)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7371657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档