我想讓我的數據庫支持一家公司擁有很多用戶,我該如何做?
示例
用戶表(UID,用戶名,密碼)
公司表我該怎麼辦 ?我應該在php中創建一個數組,例如1241,423,4123 * uid,它將插入到公司所有者的用戶列表中?還是有更好的主意?哪種數據庫類型適合數組?
回答
如果您希望每個用戶有一個(永不更多)公司,你應該有:
user
表uid
username
- ...
company_id
company
表company_id
company_name
- ...
然後,user.company_id
將是一個foreign key,引用company.company_id
。
,然後,你存儲:
- 一個在
user
線爲每個用戶- 引用合適的公司的ID爲用戶
- 這是行權的
company_id
在company
表中。
- 而在
company
一行每家公司有存儲在公司表中沒有用戶的相關信息 - 而且每個用戶「點」到一個企業,一個公司可以有多個用戶。
將數據存儲爲像你所建議的數組絕對不是一個好主意 - 只是不是關係數據庫的工作方式。
如果每個用戶都可以擁有幾家公司,每comparny可以有多個用戶,你必須增加第三臺(一join table),這將表明,爲每一個用戶(一個或多個),以哪個公司(IES)它們所連接的:
user
表uid
username
- ...
company
表company_id
company_name
- ...
user_company
表uid
company_id
在這種情況下,沒有在company
表中沒有用戶相關的東西,並沒有在user
表中沒有與公司有關的東西:那些之間的聯繫在user_company
表中。
當然,user_company.uid
將是user.uid
的外鍵; user_company.company_id
將是company.company_id
的外鍵。
帕斯卡你什麼時候睡覺?呵呵,很好的答案。多對多呢? – 2010-07-18 15:27:51
@亞當:好吧,現在是在這裏下午5點30分,所以沒有時間睡覺;-) ;;;對於多對多的部分,你必須使用一個連接表,就像我的答案的第二部分*所描述的那樣(我已經編輯過,所以在發表評論之前你可能沒有看到這個部分)* – 2010-07-18 15:31:59
@馬丁是否是級聯delate和更新(多對多)? – 2010-07-18 15:51:03
有一個更好的主意 - 它被稱爲交叉表連接。你所做的是創建第三個表格,其中包含兩列。在這兩列中,您存儲了連接到彼此的表的主鍵。
這個想法是,你正在創建一個公司和用戶之間的關係。在關係數據庫中,通過使用外鍵在表之間指示關係。
當然,這隻適用於想要將多個用戶連接到多個公司(「M-N」關係)的情況。如果您想將多個用戶連接到單個公司,只需將公司ID的列添加到用戶。
- 1. PostgreSQL:哪種數據類型更適合這種情況?
- 2. 哪種數據類型適合存儲這種情況?
- 3. 哪種數據類型最適合在SQL數據庫中存儲文章?
- 4. 哪種聚類方法適合哪種數據?
- 5. c#中哪種數據類型更適合貨幣計算?
- 6. 哪種方法更適合從數據庫檢索數據
- 7. 適合的數據類型
- 8. 哪種模型最適合半正弦數據?
- 9. 哪種方式更適合更新數據庫記錄?
- 10. 哪種方法更適合更新數據庫?
- 11. 哪種佈局更適合此數據庫表?
- 12. 哪個數據庫實現哪種Java SQL類型?
- 13. 哪個數據庫最適合Magento
- 14. 哪種數據類型最適合在SQL Server中存儲註釋?
- 15. 哪種MySQL數據類型適合存儲自動填充條件?
- 16. 哪種數據類型最適合描述歌曲的持續時間?
- 17. EF 6的哪種方法更適合從數據庫asyn中獲取數據?
- 18. Haskell - 組合數據類型?
- 19. 我比較哪種數據類型?
- 20. 要使用哪種數據類型?
- 21. 這是哪種類型的數據?
- 22. 分辨率的哪種數據類型
- 23. HTML的哪種數據類型?
- 24. 哪種數據類型選擇?
- 25. PHP&MySQL - 哪個變量類型最適合這個數組?
- 26. 哪種MySQL架構最適合這種類型的系統
- 27. 是MySql適合大型數據庫嗎?
- 28. 哪個redis數據類型適合存儲用戶?
- 29. 哪個數據庫適合分類網站?
- 30. C#:支持多種類型的數據庫表與適配器
在數據庫的一個字段中存儲數組是一個糟糕的做法。這使得查詢數據變得更加困難。 – HLGEM 2010-07-19 22:06:38