2012-04-03 75 views
0

我正在爲項目使用MySQL數據庫和JSP。在我的項目中,有哲學,技術,藝術,體育等類別。這些類別具有多種價值,如運動有曲棍球,板球,橄欖球等。如果我使用數據庫來存儲此值,則會發生冗餘。
例如運動蟋蟀,運動曲棍球等高效地將多個密鑰存儲在一個類別中

所以我的問題是,有沒有任何有效的方式來存儲這些值,以便當任何人進入板球比較與板球運動類別?

回答

0

這聽起來像你有一個經典many-to-many relationship

一個category可以有很多value記錄和value可以與許多category記錄關聯。

要建模,可以創建三個表格:category,value和聯結表,category_value

類別

  • ID
  • 名稱
  • 等...

價值

  • ID
  • 名稱
  • 等...

Category_Value

  • 類別ID
  • VALUEID
0

您的典型DBMS不明白的 「指針」 的概念, ,所以爲了「關聯」兩個表,來自o的一些值ne表格必須物理複製到另一個表格。此外,無論何時創建索引,索引列中的數據副本都將存儲在該索引中。

爲什麼數據庫中沒有指針有很好的理由。最值得注意的是,DBMS可以在物理存儲器內移動數據,而不用擔心掛指針。僅憑這一點就值得有點增加存儲需求(通過使用指針而不是副本的假設DBMS),所以你只需要忍受它。


話雖這麼說,不規範您的數據。該Michael Fredrickson's answer已經涵蓋了M:N的關係,但如果這實際上是1:N(即一個值不能超過一類),你需要這樣的事:

enter image description here