0

我正在構建一個迷你網站,允許用戶通過名稱和型號搜索小工具(手機,平板電腦等),但我的問題是如何最好地設置數據庫當你考慮到一些手機的名稱約定。針對具有變體的手機的數據庫設計建議

例如,三星Galaxy S手機有許多變化以及型號是GT-I9000。 例如三星Galaxy S GT-I9000(下面的變形例)

  • 三星的Captivate
  • 三星活力
  • 三星着迷
  • 三星Epic 4G
  • 三星催眠

會有人是能夠爲我設計這些表格的最佳方式提供一些建議 - 本質上這個項目將具有相當的優勢最終數據庫,所以我試圖相應地進行規劃。

我希望能夠設置數據庫,以使用戶能夠搜索'Captivate'或'Vibrant',並向他們展示Galaxy S GT-I9000,因爲這是設備的'主'名稱。

我目前已經有以下數據庫表

brands - id, brand (eg 2, Samsung) 
devices - id, brand_id, device_type_id, name (eg 1, 2, 3, Galaxy S) 
device_types - id, type (eg 3, phone) 

任何意見將不勝感激。讓我知道如果需要更多信息來了解我想要實現的目標,我將使用MySQL作爲數據庫。

+1

雖然實際上很容易想出描述數據的各種模式,但在確定哪一個模式最好時,我們確實需要知道您希望用戶如何與數據交互。一個非常靈活的模式可以很容易地搜索特定的手機 - 但是更難以識別手機的交叉連接。搜索支持GPS的手機。 – symcbean

+0

實際搜索將僅限於名稱和型號。例如,用戶將搜索「Galaxy S」或「i9000」或「充滿活力」。我稍後將爲GPS等屬性做一些額外的映射,但不需要用戶知道諸如GPS的細節,因爲它將純粹用於用戶「查找」他們的手機,而不管它是否使用變體名稱。 – Zabs

+0

我決定添加另一個名爲'device_variants'的表,這將包含Galaxy S的變體,如'Vibrant','Captivate'等等......你會說這是做這件事的最好方法嗎?我會很快做一個模式。 – Zabs

回答

2

訴訟支持系統始終針對人們遇到這個問題。通常的做法是建立別名表。最簡單的結構是隻有兩列的表格。

create table device_aliases (
    device_id integer not null, 
    device_alias varchar(20) not null, 
    primary key (device_id, device_alias), 
    foreign key (device_id) references devices (id) 
); 
+0

這是我最終使用的方法 – Zabs