比方說,我有產品(product
)和類別(category
)的表的表和它們之間存在通過補充表(product_category_xref
)一個多一對多的關係。如何在多對多關係中建立一個鏈接?
有沒有一種方法,使一個,也是唯一一類「主」?
到目前爲止,我有兩個想法:
創建於
product
表,primary_category
一個單獨的列,並將它包含的主要類別的關鍵。 我對此不喜歡的是數據冗餘(在primary_category
和product_category_xref
中定義的同一類別)或類別匹配(驗證與primary_category
和與product_category_xref.category
相比)。創建
is_primary
,在product_category_xref
一個布爾列。 我不喜歡這個,可能有一種方法可以讓幾個類別爲主。
此外,許多一對多的關係,執行與外國的關鍵,但我不知道如何執行只是一個主要類別(或,也許,當一個類是由主,讓所有的完整性其他類別的相同產品非主要)。
這樣做的最好方法是什麼?
UPDATE:數據庫管理系統是在MySQL通過PHP接口mysqli的。
UPDATE2:這裏就是我終於實現了。 我在product_category_xref
表中添加了一個不可爲空的整數列,priority
。然後,主要類別primary
是最大的。作爲一種有用的副作用,我也可以對類別進行排序。 我也用相反的方法添加了同樣的東西,以便在一個類別中對產品進行排序。 當然,這使得更新數據變得困難,但這並不經常發生。
這裏見我的回答:** [在SQL中,爲它確定了兩個表來稱呼對方?](http://stackoverflow.com/questions/10446641/in-sql - 它可以爲兩個表參考到每個其他/ 10458105#10458105)** –
哪個DBMS是這樣的? –