我目前正在處理具有以下要求的數據庫:有不同類型的帳戶。他們可以根據類型有不同的付款計劃。整個事情就像一個有兩層的層次結構。例如,如果賬戶類型是A和B,那麼支付計劃可以是A1,A2,B1和B2,其中Ax只對賬戶類型A有效等等。多餘的外鍵?
到目前爲止,我有以下設置: 一個表account_types與ID和名。 A表payment_plans with account_type_id and id,它們都是PK的一部分。並且表帳戶與type_id和plan_id。我想這很明顯是什麼引用了什麼。
我的問題是這樣的:accounts.type_id是一個FK和accounts.type_id + accounts.plan_id是複合FK。我不知道這是否是一個最佳解決方案。 type_id有點多餘,因爲它隱含地由plan_id定義,但僅限於表payment_plans表中的約束。那麼這裏最好的做法是什麼?我可以完全清除type_id,但這時就需要再次加入payment_plans表,以確定帳戶的類型。
感謝您的提前輸入。涉及完全不同結構的建議也受到歡迎。;-)
感謝您的回答。但是,您誤解了我的看法,即一個帳戶只能分配一個付款計劃。根據賬戶類型只有多種選擇。我想我沒有說清楚。無論如何,最讓我感興趣的是通過付款計劃隱式定義賬戶類型是否明智,因此我將此標記爲公認的答案。 – user1047771 2012-03-28 15:31:48