- Natural key adalah kunci yang digunakan dalam database untuk menjamin keunikan
- Natural key didasarkan pada data dunia nyata seperti nama, kota, tahun, dan sebagainya
- Sebagai contoh, dalam database 50 restoran terbaik dunia,
restaurantName, cityName, dan year dapat digunakan sebagai natural key
- Namun, natural key mungkin tidak dapat menjamin keunikan. Misalnya, bisa ada restoran dengan nama yang sama di beberapa kota
Identitas
- Selain menjamin keunikan, natural key juga harus menjamin identitas
- Sebagai contoh, nomor rangka kendaraan atau nomor identifikasi pribadi (nomor CPR) dapat digunakan sebagai natural key
- Namun, orang yang sama bisa memiliki beberapa nomor identifikasi. Misalnya, di Denmark, orang yang menjalani transisi gender dapat menerima nomor CPR baru
Kesalahan administratif
- Natural key rentan terhadap kesalahan administratif
- Kesalahan input data, salah ketik pengguna, atau kesalahan konversi data dapat terjadi
- Sistem harus dapat memperbaiki kesalahan semacam ini. Karena itu, tidak tepat menggunakan kunci eksternal sebagai kunci database
Kesimpulan
- Menggunakan natural key dalam perancangan database bukanlah ide yang baik
- Kesalahan data dapat terjadi, dan kesalahan tersebut harus bisa diperbaiki
- Karena itu, sebaiknya selalu gunakan surrogate key pada tabel database
Opini GN⁺
- Masalah natural key: Natural key mungkin tidak dapat menjamin keunikan dan identitas, serta rentan terhadap kesalahan input data.
- Keunggulan surrogate key: Surrogate key menjamin keunikan dan identitas, serta memudahkan perbaikan kesalahan data.
- Hal yang perlu dipertimbangkan saat menggunakan ORM: Saat menggunakan library ORM, memakai surrogate key lebih mudah. Karena ORM sampai batas tertentu menentukan struktur database, penggunaan surrogate key menjadi lebih efisien.
- Produk dengan fungsi serupa: Alat perancangan database atau library ORM lain juga merekomendasikan penggunaan surrogate key. Contohnya Hibernate dan Entity Framework.
- Hal yang perlu dipertimbangkan saat mengadopsi teknologi: Saat memperkenalkan desain database baru, pertimbangkan kekurangan natural key dan gunakan surrogate key. Surrogate key membantu menjaga integritas data dan memudahkan perbaikan kesalahan.
2 komentar
Komentar Hacker News
cus_MJA953cFzEuO1zyang digunakan Stripe. Ada juga cara membuatnya dengan JavaScript/TypeScript.Anda akan menyesal menggunakan kunci alami.
Saya juga merekomendasikan penggunaan TSID, yang merupakan kunci buatan dan sudah dipersiapkan untuk mendukung lingkungan terdistribusi seperti global region. Saya menggunakan TSID sebagai PK di MySQL dan DynamoDB.
https://jsonobject.hashnode.dev/using-tsid-as-database-pk