Ada beberapa kekurangan presisi dalam definisi indeks primer &sekunder.
Menggunakan dua teks universitas populer sebagai referensi:
Dasar-Dasar Sistem Basis Data, Elmasri &Navathe mendefinisikannya sebagai:
Sistem Basis Data:Buku Lengkap, Garcia-Molina et. al mendefinisikannya sebagai:
Beberapa properti yang berlaku untuk salah satu definisi di atas:
- kunci utama dapat menjadi indeks utama
- maksimal ada 1 indeks utama per tabel
- indeks utama secara unik menentukan di mana catatan disimpan dalam penyimpanan fisik.
- Semua indeks lainnya diklasifikasikan sebagai sekunder.
Namun, jika penempatan catatan dalam file data tidak ditentukan oleh bidang apa pun, maka indeks utama tidak dapat dibuat.
Jadi untuk file yang diurutkan, masuk akal untuk berbicara tentang indeks utama (yang akan menjadi daftar bidang yang menjadi dasar penyortiran). Saya tidak dapat menemukan contoh lain dari struktur file fisik tempat indeks utama dapat dibuat.
Postgresql menggunakan struktur tumpukan untuk penyimpanan fisik untuk catatan. Tumpukan tidak diurutkan (peringatan permainan kata:mereka agak diurutkan). Oleh karena itu, bahkan kunci utama diimplementasikan menggunakan indeks sekunder, dan dengan demikian semua indeks di Postgresql adalah sekunder.
Sistem RDBMS lainnya lakukan menerapkan format penyimpanan yang mendukung indeks utama:
- InnoDB MySQL menyebut ini indeks berkerumun
- MSSQL juga merujuk ke indeks utama sebagai indeks berkerumun
- Oracle menyebutnya tabel yang diatur indeks
Bahasa dalam Dokumentasi Postgres tidak tepat.
Ini benar.
Ini bukan mengapa semua indeks sekunder di Postgresql. Indeks utama juga dapat disimpan secara terpisah dari area data utama tabel.