Mysql
了解多對多關係中的連結表
我仍在使用 MySQL 開發照片儲存應用程序(為儲存的照片的數據設計數據庫),並被告知一張照片中可能有一個或多個人,一個人可能在許多照片中,這是有道理的。
我的問題是了解照片和人物表之間的連結表的屬性。我已經建立了一個連結表,其中兩個表(照片和人)的 PK 作為連結表的複合 PK。此表中的兩組 PK 都設置為 Not Null(由我),但該項目隨後規定,即使他們不在照片中,人們也可以在數據庫中,我想知道這如何與 NN 設置相符複合PK。當然,如果它必須是 NN,這意味著它不能允許有任何條目,其中我只有照片的 PK,而連結表的人部分則沒有?還是我完全誤解了這些關係是如何運作的?如前所述,我正處於學習數據庫的早期階段。
實際上,對於不在場的人,您不需要特殊的價值
當您選擇一張照片並且您不知道其中是否沒有任何人時,您會
SELECT p.*,pe.* FROM Photo p LEFT JOIN reftable r ON p.id = r.p_id LEFT JOIN peope pe ON r.pe_id = pe.id WHERE p.id = 123
因此,即使關係表中沒有條目,您也會得到一張照片。
如果您有一個人並想查找他們所在的所有照片
SELECT pe.*,p.* FROM peope pe INNER JOIN reftable r ON r.pe_id = pe.id INNER JOIN Photo p ON p.id = r.p_id WHERE pe.id = 123
你需要一個關係表,因為很多人可能在一張照片上,或者一個人可以在很多張照片中