Yabancı Anahtarlar'ı MySQL içinde kullanırken, kaynak değeri 0 ise (ID 0 ile hedef kaydı olmadığından) bir hata alırım. Bu nedenle, kaynak sütunu NULL olarak değiştiriyorum ve sonra çalışır. Ancak, bunun yapılması gereken doğru yol olup olmadığından emin değilim. Doğru yol mu, yoksa kaynak kimliğini NULL yerine 0 olarak ayarlayabilir miyim?Sıfır da olabilen yabancı anahtar
cevap
Yabancı anahtarlar kısıtlamalardır. Bu, yabancı anahtarın bulunduğu sütunun değeri herhangi bir şeye ayarlanmışsa (ve "herhangi bir şey" NULL
'u içermiyorsa), bu değerin başvurulan tabloda var olması gerektiği veya MySQL'in bir hata atacağı anlamına gelir.
0
dahil ne arzu değerini ayarlamak veya başvurulan tablodaki bir
0
ile bir kayıt eklemek
NULL
değer ayarlayabilirsiniz.
NULL
'a ayarlanan bu seçeneklerden en temiz görünüyor.
Evet, bu doğru yol. Bir FK'nin bütün noktası, başvurulan kimliğe sahip bir kaydın gerçekte var olmasını zorunlu kılmaktır. Yani FK sütununu 0 olarak ayarlarsanız, 0 ile bir kayıt olmalıdır.
Bunun etrafındaki tek yol, FK sütununu NULLable yapmaktır.
Herhangi bir hızda, FK sütunu neden 0 olarak ayarlamak istersiniz? SQL'de "varolmayan" için kural değeri NULL'dir.
Doğru yol budur. 0 bir değerdir ve null sütunda hiçbir şey olmadığını belirtir. NULL kullanmak
iki nedenden dolayı sıfırdan iyidir. Birincisi, "özel" bir değer olduğu açıktır (her seferinde otomatik olarak oluşturulmuş ids için doğru olsa da, tablo kimliklerini her zaman sıfır olmayan bir şeydir) ve ikincisi SQL'de yabancı anahtar kısıtlaması ile çalışır.
, yaptığınız şey genel bir uygulamadır - pek çok kişi NULL'u "eksik değer" yazan bir işaretçi olarak kullanır ve SQL'in yabancı anahtar kısıtlaması beklenir.
Eksik değerleri ele almanın başka bir yolu, yalnızca iki sınıf arasında bir bağlantı varsa (çoktan çoğa ilişkide yaptığınız gibi) bir girişe sahip üçüncü bir "bağlantı" tablosu kullanmaktır. Bu bir NULL ihtiyacını ortadan kaldırır ve bazı veritabanı geliştiricileri tarafından tercih edilir, ancak her şeyi daha karmaşık hale getirir. Daha fazla tartışma için bkz. Nullable Foreign Key bad practice?.
- 1. Tastypie yabancı anahtar sıfır olarak ayarlandı
- 2. Yabancı Anahtar
- 3. yabancı anahtar
- 4. Kompozit anahtar için yabancı anahtar
- 5. Django 'ManagementForm verileri eksik ya da' 'yabancı anahtar bağlantı
- 6. Bir null olmayan yabancı anahtar ekleme.
- 7. yabancı anahtar gerekir?
- 8. Raylar 4.2 yabancı anahtar
- 9. Yabancı anahtar firavunfaresi
- 10. Katılma tabloları, yabancı anahtar
- 11. Yabancı anahtar-SQL geliştirici
- 12. Yabancı anahtar uygulanmadı
- 13. Django ve yabancı anahtar
- 14. Django Filtre Sorgu Yabancı Anahtar
- 15. CakePHP'de yabancı anahtar değil birincil anahtar
- 16. Mistik tablo alternatifinde yabancı anahtar?
- 17. laravel göç ekleyemezsiniz yabancı anahtar
- 18. Mysql çapraz veritabanı yabancı anahtar
- 19. JPA: yabancı anahtar ek açıklaması
- 20. 1'den fazla yabancı anahtar
- 21. Varlık Çerçevesinde Birincil/Yabancı Anahtar
- 22. FactoryGirl'de yabancı anahtar nasıl kullanılır
- 23. ORMlite Android yabancı anahtar desteği
- 24. DynamoDB'de nasıl yabancı anahtar atar?
- 25. Yabancı Anahtar (MySQL) nasıl eklenir
- 26. Gerekli bir yabancı anahtar ekleme
- 27. Yabancı Anahtar oluştururken MySQL Sözdizimi
- 28. Django- Yabancı Anahtar Model Al
- 29. Yabancı anahtar öğelerini yükleme Tastypie
- 30. Codeigniter geçişine yabancı anahtar ekleme
"0" veya "NULL" ise sizin için ne fark eder? Mantıksal bir bakış açısından, '0' sadece mantıklı değil. – Jon