Java + SQL
Bence bu, sorunun amacına daha iyi uyuyor - yani kasıtsız kırılma.
Diyelim ki bu bir doğum kayıt için bir uygulama, bir veritabanında yeni doğan bebekler kaydetmek ve doğum sertifikaları vermek için bir uygulama. Bazı "dahi" tabloyu şöyle tasarladı:
CREATE TABLE birth (
year CHAR(2),
month CHAR(2),
date CHAR(2),
surname VARCHAR(50),
...
)
Ve doğumları kaydetmek için java uygulamasının aşağıdaki satırlarda bazı kodları vardır:
public void recordNewBirth(...) {
...
executeQuery("INSERT INTO birth VALUES(?, ?, ?, ?, ...)", date.getYear(), date.getMonth(), date.getDate(), surname, ...);
}
Ardından INSERT 2000 yılında başarısız olmaya başlayacaktı ve artık kimse doğum belgesi alamadı. Sebep - java.util.Date # getYear (), eksi 1900 yılını döndürür ve 2000'de başlayan 3 rakama sahiptir.