2012-09-11 43 views
0

我正在創建一個記錄收集數據庫。我有一個包含標題,藝術家,格式,國家,日期,標籤等的主要版本表 - 它們中的每一個都是一個單獨的表格,其中一個外鍵連接到版本。我的問題是,它們的單獨表中的所有外鍵都連接到Release中的一個主鍵(id),還是它們每個都連接到Release中對應的索引整數鍵?談到索引 - 是否有必要爲所有上述內容創建一個單獨的索引來搜索?mySQL我需要多個索引來將多個表與外鍵連接到一個主表嗎?

感謝

+0

您在發佈表中沒有ID列 – sarsnake

回答

1

考慮您所提供的信息,您將有以下表結構

發佈

ID,標題,ArtistID,FormatID,CountryID,日期,LabelID

藝術家 ID(藝術家ID在發佈表中的外鍵),名稱等

格式 ID(外鍵FormatID在唱片集表),名稱等

ECT等

是它然後必要對所有上述 的創建一個單獨的索引哪些將被搜索?

取決於你如何計劃表

EDITED搜索:

OK所以每次在每個表的外鍵連接到其自己的ID在 釋放臺 - 不是主要的ID,對嗎?

沒錯。 ArtistID將連接到其中ID是主鍵的Artists表,但在Releases表中它是外鍵。除日期外,其餘字段的想法相同。

至於搜索這將是例如,搜索藝術家(表將有 姓,名或組名)應連接到 藝術家的版本

然後創建一個索引在ArtistFirstName和ArtistLastName字段上 - 這些是Artists表中的字段,這是您的搜索要搜索的內容。如果您希望顯示藝術家的發行版,那麼您必須加入ArtistID上的藝術家和發佈表(您將在搜索後獲得)。

這將有助於您閱讀關於關係數據庫設計和規範化的更多信息。

+0

好了,因此每個表中的每個外鍵都連接到其在​​發佈表中的自己的ID - 不是主ID,正確嗎?至於搜索,例如,應該連接到該藝術家的版本的搜索藝術家(表格將具有名字,姓氏或組名稱)。我不認爲名字藝術家搜索是必要的,所以索引應該在藝術家表中,並且說,標籤表而不是發佈表? – user1356553

+0

我編輯了我的答案。 – sarsnake

+0

好的謝謝。我想我正確地做到了這一點。這只是我在這裏發佈的一個非常大的計劃的開始:http://fanoss.ca/records-db.jpg 還缺少的是一個用於多對多關係的「查找表」但通過它我只能看到其中的一些 - (vinylInnerSleeve,VinylInserts,CDInsert,TapeInserts,相關性,樂器,聲樂,合作者和角色)。我只想確保沒有任何事情在我開始把它們放在一起之前不起作用。 – user1356553

相關問題