Açıklama Yok Sorusu:
Yine de her zaman 1 değerinin olmasını gerektiren 2 null değerin bir kısıtlaması var mı? Örneğin, her ikisi de null olan ancak bir değere sahip olması gereken en az 1 değerine sahip iki tarih sütunu
Sorun Açıklaması:
Diyelim ki Gider denen masam var
ve 2 randevunuz var:
prevision_expense_expiration_date DATE NULLABLE expense_payment_date DATE NULLABLE
bu 2 sütunun mantığı şudur:
Bir şey satın aldım ve bunun için ödeme yapmam gerektiğini biliyorum, bir tarih, telefon faturası gibi. Bunu bir gider_ödeme_tarihi ile gider olarak gireceğim. Bu tarih, ödemem gereken varsayılan tarih, ancak faturanın son kullanma tarihi gibi ödemenin gerçek tarihi değil.
Başka bir durumda, hizmet için bazı sağlayıcıların hediye kartlarını satıyorum. Ben olabilir hizmet müvekkilime transfer benim sağlayıcıya satın alma gideri sadece istemci kartından yararlanmak eğer. Bu nedenle, hediye kartının bir son kullanma tarihi vardır, hediye kartının geçerli olduğu zaman için bir masraf olarak girmeden bu 'masraf' için bir ön şart yapmak istiyorum, hediye kartının süresi dolarsa, bu 'masraf' hesaba girmemelidir sistemi.
Ben prevision_expense ve teyit_expense denilen 2 eşit tablolar olabilir biliyorum ama ben aynı tablo, 2 tarih, nullable var, ama bir şey her zaman gerekli böylece kısıtlamak ya da bir şey var doğru gelmiyor.
Başka bir olası strateji daha var:
payment_date DATE NOT NULL is_prevision_date BOOL NOT NULL
Yani, bu durumda, eğer tarih prevision ise bool değeri 1, aksi takdirde 0 olacaktır. Null değer yok, hepsi iyi. dışında bir prevision tarih ve THEN (iki gün sonra diyelim) bu maliyet için onaylanmış bir tarih var, bu durumda stratejisi 2 ben bu seçeneği olmayacak onaylanmış bir tarih var.
Veritabanı tasarımında her şeyi yanlış mı yapıyorum? : D
CHECK
kısıtlamayla da yapabilirsiniz. Kalıcı sütuna gerek yok.