嗨我試圖在數據庫(SQLite)中存儲組,子組和用戶信息。一個組可以有多個子組,用戶可以屬於多個組/子組,如下所示。如何將數字列表存儲到數據庫中
- 組1具有子組a,b,c和用戶A,B。
- 組2具有子組d,e和用戶B,C,D。
- 子組d具有用戶B,D並且屬於組2.
- 用戶B屬於組1,2和子組a,c,d。
它應該能夠按組,小組或用戶搜索。
嗨我試圖在數據庫(SQLite)中存儲組,子組和用戶信息。一個組可以有多個子組,用戶可以屬於多個組/子組,如下所示。如何將數字列表存儲到數據庫中
它應該能夠按組,小組或用戶搜索。
下表結構作以下假設:
用戶必須至少一個子組的成員,以便參與組中
grouptable將 的GroupID(PK) 組名
SubGroupTable SubGroupID(PK) 的GroupID(FK上GroupTable.GroupID ) SubGroupName
用戶表 用戶ID(PK) 用戶名
現在,創建一個許多一對多關係表的一個或多個亞組內建立用戶參與:
User_Sub_Groups
UserID (FK on UserTable.UserID)
SubGroupID (FK on SubGroupTable.SubGroupID)
如果網上也能爲分組,然後由nulvinge提供的例子是一個選項,雖然我會做稍微不同的:
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)
從這裏,你只需使用各表之間的JOIN來執行搜索。例如,屬於誰所有用戶返回到一定的組:
SELECT
tblUser_Group.GroupID, tblUser.*
FROM
tblUser_Group
INNER JOIN
tblUser ON tblUser_Group.UserID = tblUser.UserID
WHERE
tblUserGroup.GroupID = @GroupID
要返回所有組,利用它的特定用戶是一個成員:
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
等。首先想想你通過各種JOIN排列可能是一種挑戰,但這是一個非常靈活和可擴展的安排。
希望有幫助!
這是我會怎麼做:
Group:
id
NULL overgroup_id
Membership:
user_id
group_id
User:
id
已經overgroup_id = NULL組是一組,否則這是一個羣。
要找到一組與ID GID所有users_ids,與亞組:
select user_id
from Membership
where group_id=gid
or group_id in
(select group.id from Group where overgoup_id=gid)