2016-02-19 80 views
1

假設我有1000萬個產品名稱,例如iPhone 6.對於每個產品名稱,可能會有多個評論或評論。用戶搜索產品名稱時,會顯示所有評論。我應該使用兩個表來滿足這個要求嗎?我應該如何設計這個數據庫?

表之一:產品名稱,只有一列,「個prodName」 表二:評論,只有一列,「意見」

什麼是兩者之間的關係?我是數據庫設計的新手,並且將使用MySql來完成此任務,即Java中的Hibernate。首先,我想盡可能簡單。

謝謝。

+2

https://en.wikipedia.org/wiki/Database_normalization –

+1

千萬的產品,你要保持它的簡單?這是一個錯誤。第一次設計正確。爲此,您應該只在每個表格中包含一次信息。除了將表連接在一起的ID之外沒有任何重複。 – durbnpoisn

+0

也許您可以考慮遷移到* big data *架構,例如使用MongoDB等NoSQL數據庫。 – sp00m

回答

3

如果你要保持一個表產品信息和評論該產品,你需要爲每個作出評論複製的產品名稱。當必須存儲1000萬個可能非常危險的產品時。

另一個問題是表的可擴展性。假設您想要添加與產品緊密相關的另一個信息,除名稱外,即庫存。根據對該產品的評論,您不希望表中的信息重複。

爲了避免這些類型的問題,你可以考慮類似於這樣的架構:http://sqlfiddle.com/#!9/b50a8/2,與他們的鑰匙鏈接表和避免信息的重複。

+0

SQLFiddle,太棒了!偉大的建議,以及! –

+2

如何使用一張表來保留1000萬個產品名稱,並使用10萬張表格爲每個產品留言?與雙桌面設計相比,這是否提供更好的性能? – marlon

+0

@馬丁,它實際上提供了一個更糟糕的解決方案。爲什麼你會無緣無故地重複數據庫中的信息? –

相關問題