我剛開始自學資料庫,想請教一下下面這種情況該怎么設計,非常感謝!!
假設有一個應用,有這樣一個case:這個應用里有“用戶”和“組”,兩個概念,其中“組”就是三五成群的用戶,有好比興趣小組那樣子。要求能夠:
1,給出用戶名,查詢他屬于哪些個組;
2,給出組名,查詢該組有哪些用戶。
我目前是這樣想:
1,肯定要有個“用戶”表,但要不要給“用戶”表添加一個屬性,記錄每一個人都參加了哪些組?
2,好像也得有一個“組”表,除了組名稱和其他屬性外,肯定要記錄每個“組”包含了哪些用戶。
然后我就產生了一些疑惑:
1,如果“用戶”表中,每個用戶有一個組串列;而“組”表中,每一個組也有一個用戶串列;那么我感覺有些冗余,而且將來必定要維護一致性問題。比如,向一個組里添加了一個用戶,就必須保證也向該用戶添加一個組。萬一這中間有什么錯誤,或者將來軟體變大了,維護之中產生什么紕漏呢?
2,單看“組”表:假如我只創建一個表記錄所有“組”,那么每一個“組”是不是應該僅用一個屬性(一個欄位)來記錄它包含哪些“用戶”??如果是這樣,那我就還得給這個欄位定義一個格式,比如“user1;user2;user3;...”,這相當于我自己承擔了一部分資料管理的作業,感覺不太對頭啊?
3,假設“用戶”表不包含用戶的“組”資訊,以便消除一致性困擾,那么當要以用戶名查詢他所屬的組時,豈不是得遍歷整個“組”表?當資料量大了感覺挺慢的。
4,與“3”類似,假如“組”表不記錄用戶資訊,那么當要查詢一個組包含哪些用戶時,也是有同樣的困擾。
請問這種情況該怎么設計?但愿我表述清楚了我的問題。謝謝。
uj5u.com熱心網友回復:
一般來說組表 :組id,組名,組屬性
用戶表:用戶id,用戶名,用戶屬性,所屬組的id
--組表不記錄用戶資訊,當你需要查詢組下的用戶時,可以用組id 關聯用戶表進行查詢
--用戶量大的話,可以在用戶表建立索引,提高查詢速度
uj5u.com熱心網友回復:
表設計的話需要看兩個表之間的關系,就你這個例子來說,應該有兩種情況,第一種如果你的需求是一個用戶只能加入一個組的話,那么兩個表的關系就是多對一的關系,可以在用戶表加入所屬組的id,具體如設計二樓所說,
第二種情況如果你的需求是一個用戶同時能加入多個組的話,應該設計三個表,
用戶表:用戶id,用戶名,用戶屬性,
組表:組id,組名,組屬性
參組表:id,用戶id,組id
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/82781.html
標籤:非技術區
上一篇:創客集結號:模擬值讀取實驗
下一篇:mongodb insert問題
