我正在爲項目使用MySQL數據庫和JSP。在我的項目中,有哲學,技術,藝術,體育等類別。這些類別具有多種價值,如運動有曲棍球,板球,橄欖球等。如果我使用數據庫來存儲此值,則會發生冗餘。
例如運動蟋蟀,運動曲棍球等高效地將多個密鑰存儲在一個類別中
所以我的問題是,有沒有任何有效的方式來存儲這些值,以便當任何人進入板球比較與板球運動類別?
我正在爲項目使用MySQL數據庫和JSP。在我的項目中,有哲學,技術,藝術,體育等類別。這些類別具有多種價值,如運動有曲棍球,板球,橄欖球等。如果我使用數據庫來存儲此值,則會發生冗餘。
例如運動蟋蟀,運動曲棍球等高效地將多個密鑰存儲在一個類別中
所以我的問題是,有沒有任何有效的方式來存儲這些值,以便當任何人進入板球比較與板球運動類別?
這聽起來像你有一個經典many-to-many relationship。
一個category
可以有很多value
記錄和value
可以與許多category
記錄關聯。
要建模,可以創建三個表格:category
,value
和聯結表,category_value
。
類別
價值
Category_Value
您的典型DBMS不明白的 「指針」 的概念, ,所以爲了「關聯」兩個表,來自o的一些值ne表格必須物理複製到另一個表格。此外,無論何時創建索引,索引列中的數據副本都將存儲在該索引中。
爲什麼數據庫中沒有指針有很好的理由。最值得注意的是,DBMS可以在物理存儲器內移動數據,而不用擔心掛指針。僅憑這一點就值得有點增加存儲需求(通過使用指針而不是副本的假設DBMS),所以你只需要忍受它。
話雖這麼說,不規範您的數據。該Michael Fredrickson's answer已經涵蓋了M:N的關係,但如果這實際上是1:N(即一個值不能超過一類),你需要這樣的事: