Dalam salah satu pelajaran terakhir di universitas (saya seorang mahasiswa), dosen meminta kami untuk mengembangkan database (MySQL Server jika itu penting) dan aplikasi klien kecil yang akan menggunakan database sebagai sumber data.
Salah satu syarat adalah kolom identitas (yang merupakan PK di setiap tabel) harus berurutan, karena ini adalah praktik yang baik (sesuai kata-kata dosen). Yaitu, ketika baris tabel dihapus, PK harus digunakan kembali pada sisipan berikutnya. Saya memiliki pengetahuan rata-rata di RDBMS, PK, dan kolom identitas. Dari apa yang saya mengerti, kolom identitas itu hanya cara untuk membiarkan DB menghasilkan PK secara otomatis saat memasukkan baris dan tidak lebih. Dan nilai kolom identitas tidak boleh dikaitkan dengan atribut baris dengan cara apa pun (selama itu bukan kunci alami).
Persyaratan ini (kolom identitas berurutan ketat) mencurigakan bagi saya. Saya mencoba untuk bertanya kepada dosen apa yang salah jika identitas tidak berurutan (dengan kesenjangan yang disebabkan oleh penghapusan), tetapi mendapat jawaban yang sangat abstrak seperti "itu mudah bagi pengguna dan berguna untuk administrator DB yang memelihara database". Tidak ada contoh spesifik. Argumen "nyaman bagi pengguna" terdengar konyol, karena tidak memiliki arti dalam domain bisnis.
Karena itu saya ingin tahu apakah alasan ini nyata? Saya hanya bisa memikirkan satu kasus ketika kolom identitas dibuka kembali diperlukan - ketika ruang identitas habis. Tapi ini masalah desain lebih ketika jenis kolom identitas dipilih secara tidak benar, katakan sederhana int
bukan bigint
atau uniqueidentifier
ketika tabel berisi miliar baris. Misalkan, kolom identitas adalah indeks berkerumun: dapatkah celah dalam kolom identitas memengaruhi kinerja indeks? Mungkin ada alasan dunia nyata lainnya untuk mengunggah ulang kolom identitas otomatis setelah setiap penghapusan yang tidak saya ketahui?
Terima kasih sebelumnya!
sumber