Muhtemelen dar görüşlüyüm, ancak bir yabancı anahtar kısıtlaması yaratırsam ve bir satır güncellenir veya silinirse, alt tablonun sütunu NULL olarak ayarlanırsa bu bağlantıyı kaybederim.
Bu yetim satırları kasıtlı olarak tutmanın amacı nedir?
Muhtemelen dar görüşlüyüm, ancak bir yabancı anahtar kısıtlaması yaratırsam ve bir satır güncellenir veya silinirse, alt tablonun sütunu NULL olarak ayarlanırsa bu bağlantıyı kaybederim.
Bu yetim satırları kasıtlı olarak tutmanın amacı nedir?
Yanıtlar:
set null
Yararlı olsun veya olmasın null
, belirli bağlamda ne demek istediğinize bağlıdır - null
IMO çevresindeki tüm karışıklık ve görüşler ile mantıklı yaklaşım DBA'nın
Bu kurallarla, aşağıdaki kullanım durumunu göz önünde bulundurun:
null
Bağımsız bir dükkanı (yani zincirin bir parçası olmayan) temsil etmeyi tanımladınızBu durumda, on delete set null
mantıklı. Bu iş kurallarını modellemenin başka yolları da vardır, ancak bu en basit olanıdır ve gerçek dünyada önemsediğiniz gerçeklere tam olarak uyuyorsa, mükemmel bir şekilde tamamlanmasını öneririm
Düşünebileceğim kullanım vakalarının çoğu genellikle "Farklı bir şey yapabiliriz ama bunun yerine bunu yapmak gibi hissettik" şeklindedir.
owner
Bir şirketteki sorun izleme sistemindeki bir hata için bir alan düşünün . John istifa ederse, elbette tüm sorunları hesabı kaldırıldığında silinmemelidir. O zaman bile, bazı veritabanları SET DEFAULT
bir eyleme izin verir (veya aynı görevi gerçekleştiren bir tetikleyiciye sahip olmak) ve bir Nobody
çalışanın sorunların varsayılan sahibi olması bir seçenek olabilir. Veya disabled
kayıtlarını silmek yerine John için bir alanımız olabilir .
RESTRICT
, başka bir nedenden ötürü suçu eski bir çalışana yönlendirmek için delme ( ) ' ye izin vermemeyi tartışırım !