2011-05-19 23 views
0

我正在做產品列表的數據庫,並且我在查看結構時遇到了一些困難。主要清單除以系統,然後按使用情況進行劃分;所有這些與他們相應的圖像。另外,我有一個特定於每個系統的選項卡式菜單,顯示說明,規格,下載和手冊。就像這樣:產品列表(相關描述,圖像和其他數據)的MySQL最佳數據庫結構

系統01 - 菜單01 - 所有圖像

  • 使用01 - >圖像(子集)
  • 使用02 - >圖像(子集)
  • 使用03 - >圖像(子集)

系統02 - 02菜單 - 所有圖像

  • 用法01 - >圖像(子集)
  • 用法02 - >圖像(子集)
  • 用法03 - >圖像(子集)

系統03 - 菜單03 - 所有圖像

  • 用法01 - >圖像(子集)
  • 用法02 - >圖像(子集)
  • 用法03 - >圖像(子集)

我有html模板。這個想法是,通過系統選擇產品,選項卡式菜單,主圖像和縮略圖圖像顯示(我正在使用Ajax)。但是也可以通過使用來選擇產品,並且這可以歸入兩個或更多系統。

我的問題是結構。我有一個大概的想法,但剛開始使用數據庫,所以它可能不是這個項目的最佳選擇。我想到了3個表格:

  • 第一個表格包含所有帶有標籤式菜單和圖像的系統;
  • 第二個表具有用法,以及相應的系統ID和圖像ID;
  • 第三張桌子必須與前面的桌子相關,但我不確定如何,或者如果這是正確的方法。

一個不同但相關的問題是關於存儲圖像時的最佳做法。我相信存儲路徑效率更高,而且我已經閱讀過爲此推薦任何類型'varchar'或'blob'的人,是否有使用其中一種的限制?

我知道這是一個起始者的通用問題,但我希望有人能夠闡明一些看法。謝謝。

回答

0

我會拿出一張紙並開始繪製圓圈來表示您的「實體」和線條來表示您的關係。一般來說,你從一個實體(模型化的東西)開始,並開始列出你想要記住的字段。每個字段都應該與該實體直接相關,而不是單獨存在,如顏色,大小等。

當您開始對相同字段有多個選項時,您可能需要一個單獨的表。如果要存儲這些選項的單個列表,則可能需要兩個表(例如顏色表)和多個表(僅引用這兩個表的主鍵)。通過這種方式,您可以選擇一種顏色紅色並查看所有紅色產品,或者選擇一種產品並查看所有相關顏色。主鍵是訪問記錄的主要方式,應該始終是唯一的,並且通常規定表的記錄如何存儲在磁盤上的排序順序。

外鍵是通常引用其他表的主鍵的表中的字段。

一個好的開端是看看database normalization.

+0

謝謝!我讀了你的建議,確實是一個非常好的開始。我對如何做到這一點有了更好的理解:) – brunn 2011-05-19 15:02:41