我試圖找到一個答案,但尚未能夠。我有一個場景,我有4個表格。 (我試圖簡化)SQL - 如何處理多個多對多關係
People
Activities
Risks
Precautions
這些鏈接在多個多對多的關係中。例如,
一個人可以做多種運動,多個人可以做同樣的運動。 一項運動可能有多種風險,多項運動可能會有相同的風險。 風險可以有多種預防措施,多種風險可以有相同的預防措施。
我看到3種方式與結表來做到這一點...
1.
People ---------
|- Junction Table
Activities -----
|- Junction Table
Risks ----------
|- Junction Table
Precautions ----
2.
People ------------------------------------------------
|- Junction Table
Activities ------------------------ |
|- Junction Table --
Risks ---------- |
|- Junction Table --
Precautions ----
3.
People ------------|
Activities --------|-- 1 big junction table
Risks -------------|
Precautions -------|
這是我被卡住了。我不知道該怎麼做,或者如果我甚至沒有正確地考慮它的開始。我覺得選項1是要走的路,但我不確定如何從一端到另一端進行查詢。例如...從一個人,選擇與他們有關的預防措施。
Uff,絕對不會做第二個。鏈接這些連接表引入了維護噩夢(例如,嘗試刪除預防措施)。第三,因爲風險或預防措施與人無關,所以沒有意義,我不認爲將它們合併是有意義的(違反正常形式)。我認爲第一是最容易管理的方法。有關關係數據庫的事情有時候最簡單的結構並不是最簡單的。您將擁有選項1的表格最多,但是您已正確歸一化數據。如果需要,使用視圖來「簡化」數據。 –