Hayal ediyorum profiles
, profiles_skills
ve skills
adlı üç tablo var. Bir profilin birçok beceriye sahip olduğu ve bir yeteneğin birçok profile ait olabileceği bir HABTM ilişkisi var.Yabancı anahtar kısıtlaması eklerken, hangi yön en iyi yöntemdir?
Bu tablolar arasında bir yabancı anahtar kısıtlaması ayarlamalıyım. Sorum şu, yabancı anahtar ne yönde olmalı? Gerçekten bir kongre izledi hiç
ALTER TABLE profiles ADD FOREIGN KEY (id) REFERENCES profiles_skills(profile_id);
ALTER TABLE skills ADD FOREIGN KEY (id) REFERENCES profiles_skills(skill_id);
, sadece o bunu yazıp yapmadıysanız şekilde yapın:
ALTER TABLE profiles_skills ADD FOREIGN KEY (skill_id) REFERENCES skills(id);
ALTER TABLE profiles_skills ADD FOREIGN KEY (profile_id) REFERENCES profiles(id);
Veya bunu yapmak yapın: Mesela ben bunu yapmak bir sorun vardı. Ama her zaman aklımın gerisinde, gerçekten önemliyse, merak ettim.
Yabancı anahtarlar sizin durumunuzda "profiles_skills" olan "alt" tablosunda olmalıdır. Ve evet, önemli. FK'ler ile ayrı profiller/beceri tabloları üzerinde, bir profilden bir yetenek kaldırıldığında profil silinir. –
'profiles_skills' tablosunda karşılık gelen bir satır bulunmayan 'profiller' (ve/veya 'beceri ') tablosunda kayıt olması imkansız olduğunda bir kullanım vakası hayal etmek zor. Ama bu tam olarak ikinci tanımınızın önlediği şeydir. Bu nedenle, 'en iyi uygulamalar' meselesi değildir - ilk yol tek yoldur. – raina77ow