2013-07-10 23 views
0

我還沒有經驗豐富的MYSQL,所以請儘可能廣泛地給出答案。謝謝。mysql構造類別

爲了學習機制和代碼,我決定嘗試製作一個目錄。數據庫將保留產品ID,標題,(名稱),內容,圖像路徑和縮略圖路徑。產品也應該是一個或多個類別的一部分,因此可以對其進行過濾。拿我有大約7 類別

即使經過閱讀和搜索,並不能真正決定哪個是構建該地段的最佳選擇。

  • 一張桌子上有很多柱子嗎?每個類別都有一列,行中有1或0的值?

  • 一個信息表和一個類別表,也有1或0的值,並與第一個表中的父級鏈接。並將它們結合在一起。

我真的不知道什麼是最好或最簡單的結構,組織和使用。

回答

1

你應該從未去與任何類型的解決方案,具有可變數量(即你的第一個解決方案)的。不能保證產品最多有7個類別,也不能保證產品甚至只有一個類別。您最終不得不頻繁地訪問此表,並且沒有簡單的方法來選擇類別而不指定多個列。

第二個解決方案好得多 - 一個Categories的表格,它在每一行都有一個標識符和類別名稱。然後,您只需要另一張具有(產品標識符,類別標識符)的表格,並且您可以根據需要將產品鏈接到儘可能多或更少的類別。

CREATE TABLE Categories (
    catID int unsigned not null auto_increment primary key, 
    catName varchar(255), 
    unique key (catName) 
); 
CREATE TABLE ProductCategories (
    pcID int unsigned not null auto_increment primary key, 
    proID int unsigned, 
    catID int unsigned, 
    unique key (proID, catID), 
    foreign key (proID) references Products (id), 
    foreign key (catID) references Categories (catID) 
); 
+0

很好的答案。還有一些問題: 1)第一段,colums的數量是多少?何時添加新類別? 2)表類別有ex的行:id:1,catName:example one; id:2,catName:example two;正確? 3)SQL沒有接受你的第三個查詢(錯誤150),所以會自己嘗試,但它會如何工作,我在哪裏添加產品鏈接的多個類別? – Pepe

+1

@PépéArtist1)因爲產品可能有1-inf。類別;你將不得不增長/縮小表列。 2)確實 –

+0

通過按Enter鍵意外地發佈了第一條評論,並用問題3對其進行編輯,但您已經回答了。我仍然不確定問題之一。可能的類別是靜態的和預定義的。人們無法選擇將不存在的類別添加到產品中。在這種情況下你的答案仍然是一樣的嗎? – Pepe