2014-12-03 68 views
0

我正在設計一個關係數據庫 - 在下面的MySQL中 - 在DBDesigner 4數據庫模式中的外鍵過多(多餘?)

我有3個表格:module,pagelang。每個模塊屬於一個頁面,每個頁面都有特定的語言:


DBDesigner 4 schema


是否有外鍵page_lang_tag被自動添加到module表特別的原因?我看到的方式應該可以確定任何給定模塊的語言,而不需要module.page_lang_tag

據我所知,它可以用於更優化的查詢,但我正在處理的完整方案具有更復雜的關係,並且外鍵的數量快速增加非常

也就是說,如果我要添加一個名爲widget新表,與其每個行屬於一個模塊,那麼widget.module_idwidget.module_page_id,並widget.module_page_lang_tag都將被自動創建。

回答

0

從表page開始的問題的字段lang_tag是來自表lang的外鍵(FK),但它也是表的主鍵(PK)的一部分。我知道這一點,因爲DBDesigner使用黃色鍵來描述PK,而FK使用紅色鍵(如果它們不是紅色,那麼請原諒我的記憶,自2010年以來我沒有使用DBDesigner,而我手邊沒有副本)。

由於pagemodule之間的關係,表page(即兩列idlang_tag)的PK在何處,再次,將它們不必要地添加到表中的PK表module遷移爲FK。

我不能告訴你是否將lang_tag添加到表page的PK或DBDesigner自動執行此操作,但這是不正確的(你不需要它,你不需要它)。

pagepage_lang_tag的PK中刪除lang_tag將從表module中消失。另外,從表module的PK中刪除page_id

+1

事實證明,我的問題的根源在於關係都是可以識別的,這就是爲什麼外鍵是主鍵的一部分。 – 2014-12-03 17:12:08