資料庫設計中,多對多關係使用使用逗號分割關聯討論

2021-09-08 15:10:40 字數 511 閱讀 9498

進公司乙個月,發現公司很多人喜歡用逗號分割,去儲存其它表的主鍵,做多對多關聯,但存在很多亂用現象。這裡對這種方式做了下總結。

在傳統資料庫設計中,多對多關係儲存通常都是用一張中間表來簡歷兩張表的關係。例如使用者和角色,乙個使用者有多個角色,而乙個角色下又會有多個使用者。這樣,理所當然的我們會想著用張中間表去儲存兩者的關係。這樣角色就能很容易的查出自己對應的多個使用者。使用者也同樣能容易查出自己有哪些角色。這種設計是通用而合理的,兩個物件都可以維護之前的關係。

有種情況:例如物件a與物件b,兩者之間是多對多關係。但a物件是個相對固定,或者說幾乎沒有查詢與操作。我們只需要在b物件上維護a物件的關係。這時我們可以用逗號去分割a物件的id去儲存多個a的關係。

優點: 不用建中間表,操作起來會更方便。

缺點:   當二者關聯關係改變時,不易去維護,而且這種關聯關係時單向的,也就是說只適合與單向關聯。

適用範圍總結:與列舉表關聯,與附件表關聯,及其他只需單向關聯,且關聯數量不會太多的情況。

優點: 不用建中間表,操作起來會更方便。

資料庫設計中,多對多關係使用使用逗號分割關聯討論

進公司乙個月,發現公司很多人喜歡用逗號分割,去儲存其它表的主鍵,做多對多關聯,但存在很多亂用現象。這裡對這種方式做了下總結。在傳統資料庫設計中,多對多關係儲存通常都是用一張中間表來簡歷兩張表的關係。例如使用者和角色,乙個使用者有多個角色,而乙個角色下又會有多個使用者。這樣,理所當然的我們會想著用張中...

ORACLE 資料庫設計 多對多關係

關於資料庫兩張表多對多的關係設計,之前以為多對多關係,只要兩張表存在各自對方表的主鍵就行。殊不知這種理解是錯誤的,今天藉此時間總結一下。資料庫多對多表設計,假設使用主外來鍵關係設計多對多表關係,會造成 1 對一張表進行dml語句時,該錶對應的外來鍵會影響另外一張表的資料,產生級聯刪除問題 2 因為是...

Flask 資料庫高階多對多關係

之前介紹了多對多關係 在之前介紹的多對多關係中,關聯表就是乙個簡單的表,不是模型,sqlalchemy 會自動接管這個表。多對多關係可以分解成原表和關聯表之間的兩個一對多關係。這個表裡面儲存了原表的兩個主鍵作為自己的聯合主鍵。存在的問題 因為在這種關聯表裡操作的時候都是物件導向的,新增,刪除等操作都...