Web uygulamaları için ilişkisel veritabanı şeması tasarlarken, genellikle bir satır ve yalnızca bir satır içerecek bir tablo oluşturduğum bir durum bulurum. Bunu tasarlamanın yanlış yolu gibi hissettiriyor, ancak önemli ölçüde daha iyi bir şey bulamıyorum veya açıkçası "bunu yapmanın doğru yolu".
Yeni bir örnek, kullanıcıların ana sayfadaki içeriği manuel olarak kontrol etmesine izin veren bir sitedir. Sadece bir ana sayfa var. Açıklayıcı metin içeren bir alan için metin alanı gibi ana sayfayı oluşturmak için gerekli tüm alanlara sahip bir tablo oluşturdum. Büyük bir görüntü dosyasının adını depolamak için kullanılan alan. Ana sayfada yer alacak makalelere işaret eden bazı yabancı anahtarlar vb. Çalışır, ancak sadece bir satır içeren bir tabloya sahip olmak yanlış hisseder.
Geçmişte, ana sayfa tablosunda birden çok satıra izin vermek ve rastgele birini seçmek gibi birçok tasarım denedim. Ben "aktif" adlı bir boole alan ekleme ve rastgele etkin ana sayfalarından birini seçerek denedim. Ben sadece bir satır uygulama mantığında herhangi bir zamanda aktif olmaya zorladım. Hatta bir anasayfa tablo yapma ve özellikli_on_homepage gibi isimleri ile boolean alanları olması için, makaleler gibi diğer tüm öğeleri sahip denemedim.
Çoğu durumda ana sayfayı bir ayarlar dosyasında bir sürü sabit ile oluşturabilirim. Ayarlar dosyasıyla ilgili temel sorun, geliştirici kontrolünde olmasıdır. Ana sayfanın içeriği gibi bir şey kullanıcı tarafından düzenlenecek bir şey olduğundan, veritabanına girmesi gerekir.
Birçok sitede, bu soruna sahip değilim çünkü en yeni beş makaleyi seçmek gibi bir sorgu ile ana sayfa gibi şeyler oluşturabilirim. Ancak, katı gereksinimlerle el ile küratörlenmiş sayfalar olduğunda, veritabanında modellemek zorlaşır. Ama bir fotoğraf tablonuz ve bir makale tablonuz olduğunu düşünün. Gereksinim, ana sayfada tam olarak beş fotoğraf, tam olarak üç makale ve kullanıcı tarafından manuel olarak kontrol edilen iki rastgele metin bloğu görüntülenmesi. Bunu veritabanında doğru şekilde nasıl modellersiniz?
Ayrıca, sadece ana sayfaların yanı sıra birçok durumda bu modelleme problemim var. Bu sadece benim karşılaşabileceğim en kolay ve en genel olarak uygulanabilir örnek.