Saya mengalami kesulitan mencari tahu bagaimana cara menempatkan batas yang baik untuk kapan dan di mana menggunakan tabel pencarian dalam database. Sebagian besar sumber yang pernah saya lihat mengatakan bahwa saya tidak akan pernah memiliki terlalu banyak tetapi, pada titik tertentu, sepertinya basis data akan dipecah menjadi banyak bagian sehingga, walaupun mungkin efisien, ia tidak lagi dapat dikelola. Berikut adalah contoh bersama tentang apa yang saya kerjakan:
Katakanlah saya memiliki meja yang disebut Karyawan:
ID LName FName Gender Position
1 Doe John Male Manager
2 Doe Jane Female Sales
3 Smith John Male Sales
Berpura-puralah sejenak bahwa datanya lebih kompleks dan berisi ratusan baris. Hal yang paling jelas saya lihat yang bisa dipindahkan ke tabel pencarian adalah Posisi. Saya bisa membuat tabel yang disebut Posisi dan menempelkan kunci asing dari tabel Posisi ke dalam tabel Karyawan di kolom Posisi.
ID Position
1 Manager
2 Sales
Tapi seberapa jauh saya bisa terus memecah informasi menjadi tabel pencarian yang lebih kecil sebelum menjadi tidak terkelola? Saya bisa membuat tabel Jenis Kelamin dan memiliki 1 korespondensi untuk Pria dan 2 korespondensi dengan Perempuan dalam tabel pencarian terpisah. Saya bahkan bisa memasukkan LNames dan FNames ke dalam tabel. Semua entri "John" diganti dengan kunci asing 1 yang menunjuk ke tabel FName yang mengatakan ID 1 sesuai dengan John. Jika Anda turun ke lubang kelinci ini terlalu jauh seperti ini, meja Karyawan Anda kemudian dikurangi menjadi berantakan kunci asing:
ID LName FName Gender Position
1 1 1 1 1
2 1 2 2 2
3 2 1 1 2
Walaupun ini mungkin atau mungkin tidak lebih efisien untuk diproses oleh server, ini tentu tidak dapat dibaca oleh orang normal yang mungkin mencoba untuk mempertahankannya dan membuatnya lebih sulit bagi pengembang aplikasi yang mencoba mengaksesnya. Jadi, pertanyaan saya yang sebenarnya adalah seberapa jauh terlalu jauh? Apakah ada "praktik terbaik" untuk hal semacam ini atau seperangkat pedoman yang baik di suatu tempat? Saya tidak dapat menemukan informasi online apa pun yang benar-benar menetapkan serangkaian pedoman yang baik dan dapat digunakan untuk masalah khusus yang saya alami ini. Desain basis data adalah topi lama bagi saya tetapi desain basis data yang bagus sangat baru sehingga jawaban teknis yang terlalu banyak mungkin ada di kepala saya. Bantuan apa pun akan dihargai!