Ketika merancang skema basis data relasional untuk aplikasi web, saya sering menemukan kasus di mana saya akhirnya membuat tabel hanya berisi satu baris, dan hanya satu baris. Rasanya itu adalah cara yang salah untuk mendesainnya, tetapi saya tidak dapat menemukan sesuatu yang jauh lebih baik, atau itu jelas "cara yang tepat untuk melakukannya."
Contoh terbaru adalah situs yang memungkinkan pengguna mengontrol konten secara manual di beranda. Yah, hanya ada satu halaman rumah. Saya membuat tabel yang memiliki semua bidang yang diperlukan untuk membangun beranda, seperti bidang teks untuk area yang berisi teks deskriptif. Bidang untuk menyimpan nama file gambar besar. Beberapa kunci asing yang menunjuk ke artikel yang akan ditampilkan di beranda, dll. Berhasil, tetapi rasanya salah memiliki meja hanya dengan satu baris.
Di masa lalu saya sudah mencoba banyak desain lain, seperti memungkinkan beberapa baris di tabel beranda dan memilih satu secara acak. Saya sudah mencoba menambahkan bidang boolean bernama "aktif" dan memilih salah satu homepage aktif secara acak. Saya sudah mencoba memaksa hanya satu baris untuk aktif pada waktu tertentu dalam logika aplikasi. Saya sudah mencoba bahkan tidak membuat tabel beranda dan memiliki semua item lainnya, seperti artikel, memiliki bidang boolean dengan nama-nama seperti Featured_on_homepage.
Dalam kebanyakan kasus, saya dapat membangun beranda dengan sekelompok konstanta dalam file pengaturan. Masalah utama dengan file pengaturan adalah bahwa itu di bawah kendali pengembang. Karena sesuatu seperti isi beranda adalah sesuatu yang harus diedit oleh pengguna, itu harus masuk dalam database.
Di banyak situs, saya tidak memiliki masalah ini karena saya dapat membangun hal-hal seperti beranda dengan kueri seperti memilih lima artikel terbaru. Tetapi ketika saya memiliki halaman yang dikuratori secara manual dengan persyaratan yang ketat, menjadi sulit untuk memodelkannya dalam database. Tapi bayangkan Anda punya meja foto dan meja artikel. Syaratnya adalah bahwa beranda akan menampilkan tepat lima foto, tepat tiga artikel, dan dua blok teks sewenang-wenang yang dikontrol secara manual oleh pengguna. Bagaimana Anda memodelkan itu dalam database dengan cara yang benar?
Juga, saya memiliki masalah pemodelan ini dalam banyak kasus lain selain hanya beranda. Itu hanya contoh termudah dan paling umum berlaku yang bisa saya buat.