Seperti beberapa komentar sudah mengatakannya, salah satu solusinya adalah menggunakan kunci utama baru
Misalnya (mengikuti contoh @onedaywhen), katakanlah ada tabel Buku yang menyimpan daftar buku dan kami "menggunakan" untuk menentukan ISBN sebagai kunci utama. Namun, beberapa penulis melakukan kesalahan dengan mengetikkan ISBN yang salah sehingga, mereka meminta untuk mengubah ISBN, itu melibatkan tugas-tugas berikutnya:
- buat registri baru di tabel Buku
- arahkan semua referensi dari ISBN lama ke ISBN baru. (*)
- Dan akhirnya, hapus registry lama dari tabel Books.
(*) ini mungkin sepele untuk menemukan semua referensi untuk model database yang menggunakan Kunci Asing tetapi beberapa model tidak memilikinya.
Table Books
ISBN is the primary key
NAME is a simple field.
etc.
Kami mengubahnya sebagai
Table Books
InternalBookId as the primary key
ISBN as a simple field or an indexed field.
NAME is a simple field.
etc.
Di mana InternalBookId baru bahkan bisa menjadi nilai autonumerik.
Kontra tentang hal itu:
itu menambah bidang baru yang menggunakan lebih banyak ruang / sumber daya.
bisa mengharuskan untuk menulis ulang seluruh model.
model baru bisa kurang menjelaskan diri.
Sang profesional
- Memungkinkan untuk mengubah "kunci utama".
- Memungkinkan untuk bahkan menjatuhkan atau refactoring "kunci utama", misalnya, untuk mengubah Buku ke ISBN-13 sangat sederhana untuk menjatuhkan kolom yang lebih lama dan untuk membuat yang baru
Meja baru:
Table Books
InternalBookId as the primary key
ISBN13 is a new field.
NAME is a simple field.
etc.