2014-02-17 106 views
2

林設計爲存儲多個產品,如電腦,手機,優盤MySql數據庫.... etc.each產品具有不同的功能,如存儲多個數據表

**Computers has** 
Processor 
Ram 
HDD 
Monitor Size 
....etc 

**Mobile phone has** 
Display Size 
Network type 
OS 
Internal Memory 
....etc 

**Pendrive has** 
Capacity 
USB Version 
....etc 

而且我具有存儲,而不是爲每個產品如何創建數據庫結構,以存儲在一個或多個表的這些信息固定數目(數據表+映射表)創建單獨的表的產品數量不受限制,。(我認爲在這種WordPress的存儲數據格式,它會使用少量表格並在這些表格中存儲與帖子/類別相關的任何數字字段)。我們將讚賞解決此問題的任何幫助/想法。

回答

1

考慮這個 創建三個表產品,功能,PRODUCT_FEATURE也許product_photos

產品數據庫將

pid, p_name, p_description, p_price, ... 
insert query 
INSERT INTO (p_name, p_description, p_price, ....) VALUES(?,?,?,...) 

功能表將

fid, f_name, f_description, ... 
insert query 
INSERT INTO (F_name, F_description, ....) VALUES(?,?,?,...) 

現在PRODUCT_FEATURE表將

id, pid, fid 
query for one product 
// say a product Id is 1 
INSERT INTO (pid, fid) VALUES(1, 10) 
INSERT INTO (pid, fid) VALUES(1, 15 
INSERT INTO (pid, fid) VALUES(1, 30) 

其中pid和FID與關係外鍵,phpMyAdmin的可以爲你做 那麼你可以添加一個產品具有多種功能

那麼也許照片表

foto_id, photo_name, photo_path .... 

使用InnoDB所有表

讓我知道如果你需要進一步的幫助

+0

不錯的策略,我繼續這個,謝謝 –

0

你需要的,因爲它涵蓋了所有產品的所有屬性,這樣的方式來設計的表。這將幫助您將任何類型的產品插入到該表中。但是,請記住,如果有4種產品具有10種不同的屬性,則最終會創建40列,並且可能在任何時間點都只使用10個數據插入數據。

0

您可以選擇使用一些ORM如Hibernate一種方法或做ctrine

https://docs.jboss.org/hibernate/orm/3.5/reference/en/html/inheritance.html

http://docs.doctrine-project.org/en/2.0.x/reference/inheritance-mapping.html

您的選擇取決於您的數據,你將如何使用它。

如果你永遠也不會去用不同種類的同時,你應該使用不同的表設備的列表。

如果您計劃所有「設備」應共享「ref」,「name」,「description」,「price」,「weight」等字段,您應該使用一張表,所有類型的設備都很容易且成本低廉,但如果您打算添加更多類型的設備和屬性,則表格可以增長。

如果您打算這個領域會增加表,那麼你應該在不同的表分開每種類型的設備的具體性質,並在設備表,這將讓你做出連接使用鑑別場。

如果設備的屬性會增長很多(或動態),那麼您應該考慮使用帶有字段:屬性和值的表格。在這種情況下,查詢會更重。

所以基本上你可以這樣做:

計算機>

mobile->

pendribe->

或:

設備 - >型號,價格,名稱,處理器,內存,內存,容量,usb版本

或:

設備 - >類型,價格,名稱

計算機>處理器,內存

mobile->內部存儲器

pendribe-> USB版本

或:

devices - > id,price,name

attributes-> id,id_attribute,值