2013-04-02 79 views
0

我開發一個Web應用程序,用戶可以創建以下資源/內容全部資源VS多張表:一個MySQL表爲每個資源

Events | Music | Posts | Classifieds 

他們有很多共同的領域,如:

created_date | title | desc | user_id 

現在我想知道我是否應該爲每個內容創建單獨的表,或者他們都保存在一個表中,有type_id外鍵,它指向一個content_type表。當然,一些不同的領域將在那裏,只有特定的內容類型使用,對於那些不使用這些領域,我可以留空。

對於每種內容類型而言,數據看起來更加有組織,使用單獨的表格,但在所有表格中搜索關鍵字正變成一場噩夢(連接,聯合等)。如果它只是一張表,搜索將非常容易。

我需要用戶能夠使用關鍵字搜索所有內容。他還可以搜索特定內容,因爲我會在type_id字段上執行WHERE子句。

我不知道每種方法的優點/缺點,但是如果人們能夠給我建議,以免我做出錯誤的決定,並且必須從頭開始重做所有事情,我將不勝感激。

+0

所有取決於如何你將要使用這些數據。 – Pitchinnate

+0

@nathanhayfield我只是不能合併來自不同表格的搜索結果。如果我只是做一個簡單的數組與搜索結果合併,那麼最終的結果將不會在他們正確的排名。他們將根據應用程序首次搜索內容的順序進行排序。我需要在所有內容中混合使用最相關的結果。 – WebNovice

+0

在我看來,他們應該在一個表中有一個相關的content_type表,但是如果不知道完整的模式,很難說。 – SomeSillyName

回答

0

除非它們真的具有相同的數據,否則我會使用單獨的表格。有一個表只包含特定內容類型的某些字段,這實際上不是很好的數據庫設計。

如果您真的想要一張帶有基本數據的表格,您可以按照您對content_type和common字段的建議創建一個表格,然後針對其他不同字段中的每個類型創建4個單獨的表格,然後執行內部聯接時,您選擇該類型的字段。但是我個人認爲你最好創建4張桌子。

0

也許想到使用「有」關係。例如,一個事件「有一個」「網絡項目句柄」附加到它,並且一個「網絡項目句柄」是一個描述,創建日期,標題,「所有者」等等的東西...