𝗜 𝘀𝗽𝗼𝘁𝘁𝗲𝗱 𝘁𝗵𝗲 𝘀𝗮𝗺𝗲 𝗱𝗮𝘁𝗮𝗯𝗮𝘀𝗲 𝗽𝗮𝘁𝘁𝗲𝗿𝗻 𝘁𝗵𝗿𝗲𝗲 𝘁𝗶𝗺𝗲𝘀 𝘁𝗼𝗱𝗮𝘆 (Bugün aynı veritabanı desenini üç kez fark ettim)

Bugün kodumda aynı veritabanı yapısını üç kez gördüm.

İlk olarak, ücretler (fees) ile karşılaştım.

  • Fee (ebeveyn: bir sınıfın borçlu olduğu tutar)
  • FeePayment (çocuk: her bir münferit ödeme)

Sonra, değerlendirmeler (assessments) ile gördüm.

  • Assessment (ebeveyn: sınav detayları, tarih ve maksimum puan)
  • AssessmentResult (çocuk: her bir öğrenci puanı)

Bu yapı yaygın hataları önler.

Eğer bir ebeveyn-çocuk (parent-child) deseni kullanmazsanız, şu sorunlarla karşılaşırsınız:

  • Verileri tekrarlarsınız. Her öğrenci satırı için konu ve tarihi kopyalarsınız.
  • Karmaşa yaratırsınız. Hangi satırların tek bir olaya ait olduğunu bilmek zorlaşır.
  • Tabloları şişirirsiniz. Başlık verilerini, ait olmadıkları öğrenci satırlarına eklersiniz.

Desen tanıma yetisi zamanla gelişir.

Yapısal bir sorunu ilk kez çözdüğünüzde, bu tek seferlik bir düzeltmedir. İkinci kez gördüğünüzde, bir desen fark edersiniz. Üçüncü kez ise, sorunla karşılaşmadan önce bu deseni kullanırsınız.

Hala uç durumları (edge cases) inşa ediyor ve test ediyorum. Hala öğreniyorum.

Kaynak: https://dev.to/johnstonkweku/i-spotted-the-same-database-design-pattern-three-times-in-my-own-code-today-4e4d