2017-10-17 17 views
0

我有很多3個表一對多的關係:如何更改「多對多」關係中的變量?

t1 
ID(PK) NAME  VISIBLE 
1  John  1 
2  Sam  1 
3  Kurt  0 
--------------------------- 
t2 
ID(PK) NAME  VISIBLE 
1  Product1 1 
2  Product2 0 
--------------------------- 
t3 
IDt1(FK) IDt2(FK) VISIBLE 
1   1   1 
2   1   1 
3   2   0 

所以,我需要什麼:

當我在T1變化可見,列visiblet2變化太大,如果它們連接在t3表。

例如:當我在t1設置Kurtvisible = 0),產品2應自動設置Product2visible = 0),因爲它們被連接t3表。

如何在設計數據庫時用FK來做到這一點?

或者它從根本上錯誤?

+0

如果設置'John(visible = 0)','Sam'仍然是'visible = 1','Product1'會發生什麼? –

+0

@PaulSpiegel無論如何它應該改變爲'visible = 0'。 –

+0

因此,如果有任何相關名稱(來自't1')不可見,則產品總是不可見?當你將'John'改回可見時,'Product1'也應該變成可見的? –

回答

1

隨着FK你不能這樣做。使用FK的目的不同,它有助於檢查數據與PK的關係或依賴性。刪除PK和相關的FK數據很有用。

也許你可以使用表上的觸發器來實現這個設計,但是,它不是在數據庫級別上做到這一點的正確方法。它會造成性能問題。相反,你應該以編程方式做到這一點。