2011-02-16 68 views
1

我有如下表結構:MySQL:很多連接或額外的外鍵?

CREATE TABLE pilot_groups (
id INT PK, 
name VARCHAR(50), 
.... 
); 

CREATE TABLE pilot_group_leaders (
id INT PK, 
pilot_group_id INT FK, 
name VARCHAR(50), 
address TEXT, 
.... 
); 

CREATE TABLE members (
id INT PK, 
pilot_group_leader_id INT FK, 
country_id INT FK, 
type VARCHAR(50), 
name VARCHAR(50), 
.... 
); 

CREATE TABLE farms (
id INT PK, 
member_id INT FK, 
.... 
); 

所以我要產生一個報告並顯示所有農場通過pilot_group分組。要使用目前的結構來做到這一點,我必須做3個連接,在我看來,這並不是非常優化和高效。我正在考慮在農場表中放置額外的外鍵,因此我會重複。網站/應用程序的目的主要是生成報告和輸入數據。哪種方法可能會更好?

回答

3

堅持使用您當前的版本,不要複製外鍵。

你應該能夠擺脫表上的一些索引。

不修復它,如果它不破壞。你確實有性能問題,或者你是否期待他們?

+0

我沒有性能問題。我仍然處於設計階段,只是試圖發現我可能遇到的任何陷阱。 – infinity 2011-02-16 12:16:50

+0

然後,我真的不認爲這將是必需的。只要堅持基礎知識,並在發生性能問題時考慮這些重大更改。這應該是你最後的選擇之一。 – 2011-02-16 12:20:10

4

完全丟棄'id'鍵並使用自然主鍵可能會有很大幫助。但是,然後說,這將花費我的業力:-)