2013-01-17 85 views
1

我有一個問題,我正在設計一個數據庫,它將存儲不同的產品,每個產品可能有不同的細節。 作爲一個例子,它需要存儲多個作者的書籍,並存儲具有不同類型描述的軟件。 這是我當前的設計:產品錶鏈接不同類型

Product_table 

|ID|TYPE|COMPANY| 

|1|1|1| 

attr_table 

|ID|NAME| 
|1|ISBN10| 
|2|ISBN13| 
|3|Title| 
|4|Author| 

details_table 

|ID|attr_id|value 

|1|3|Book of adventures| 

Connector_table 

|id|pro_id|detail_id| 
|1|1|1| 

因此產品表將只存儲主產品ID,該公司屬於,它是產品的類型。 然後,我將擁有列出產品可能具有的每個屬性的屬性表,這將使添加新類型產品變得更加容易。 細節表將保存所有值,例如不同的作者,標題isbn10s等。 然後連接器表將連接產品表和細節表。

我的主要擔心是細節表會變得非常大,並將存儲大量不同的數據類型。 我想將所有的不同類型拆分爲諸如ISBN表和作者表之類的表。

如果這是我怎麼能這些表連接起來,在attr_table

任何幫助將不勝感激的情況。

+0

只是一個想法,但你有沒有考慮過使用文檔數據庫呢?有時候事情並沒有很好地映射到關係模型。查看MongoDB或Couchbase並閱讀一些關於它們的內容。 – ryan1234

回答

0

不要打擾。你不會說你正在使用什麼數據庫,但是任何合理的數據庫都能夠處理細節表。數據庫旨在有效處理大表。

如果它真的很大,你可能要考慮分區表中的某種主題。

否則,只要確保你有一個在表中的id索引,也可能在attr_id上。結構應該可以正常工作。

+0

謝謝道歉不提及數據庫即時通訊使用與php前端的MySQL,你認爲它可以處理細節表或連接器表,因爲我確信他們會變得相當大? –

+0

如果相當大,你的意思是數百萬行,然後在合理的硬件上,你會沒事的。 –