Tabel pencarian (atau tabel kode , seperti beberapa orang menyebutnya) biasanya merupakan kumpulan nilai yang mungkin diberikan untuk kolom tertentu.
Misalnya, kita memiliki tabel pencarian yang dipanggil party
(dimaksudkan untuk menyimpan informasi tentang partai politik) yang memiliki dua kolom:
party_code_idn
, yang memegang nilai numerik yang dihasilkan sistem, dan (tidak memiliki makna domain bisnis ) berfungsi sebagai pengganti untuk kunci asli.party_code
, adalah kunci nyata atau “alami” dari tabel karena mempertahankan nilai yang memiliki konotasi domain bisnis .
Dan mari kita katakan bahwa tabel tersebut menyimpan data yang berikut:
+----------------+------------+
| party_code_idn | party_code |
+----------------+------------+
| 1 | Republican |
| 2 | Democratic |
+----------------+------------+
The party_code
kolom, yang menjaga nilai-nilai 'Republik' dan 'Demokrat', menjadi kunci nyata dari meja, diatur dengan kendala UNIK, tapi saya opsional menambahkan party_code_idn
dan didefinisikan sebagai PK dari tabel (meskipun, secara logis berbicara , party_code
dapat berfungsi sebagai KUNCI UTAMA [PK]).
Pertanyaan
Apa praktik terbaik untuk menunjuk ke nilai pencarian dari tabel transaksi ? Haruskah saya membuat referensi FOREIGN KEY (FK) baik (a) langsung ke nilai alami dan bermakna atau (b) untuk nilai pengganti?
Opsi (a) , misalnya,
+---------------+------------+---------+
| candidate_idn | party_code | city |
+---------------+------------+---------+
| 1 | Democratic | Alaska |
| 2 | Republican | Memphis |
+---------------+------------+---------+
memiliki sifat-sifat berikut 1 :
- Dapat dibaca untuk pengguna akhir (+)
- Mudah untuk mengekspor-impor lintas sistem (+)
- Sulit untuk mengubah nilai karena perlu modifikasi di semua tabel referensi (-)
- Menambahkan nilai baru tidak mahal (=)
Saya pikir itu hampir seperti " lewat nilai ", untuk menarik analogi dari panggilan fungsi dalam jargon pemrograman aplikasi.
Opsi (b) , misalnya,
+---------------+----------------+---------+
| candidate_idn | party_code_idn | city |
+---------------+----------------+---------+
| 1 | 1 | Alaska |
| 2 | 2 | Memphis |
+---------------+----------------+---------+
memiliki sifat di bawah ini:
- Tidak dapat dibaca untuk pengguna akhir (-)
- Sulit untuk mengimpor-ekspor karena kita perlu melakukan de-referensi (-)
- Mudah untuk mengubah nilai, karena kami hanya menyimpan referensi dalam tabel transaksi (+)
- Menambahkan nilai baru tidak mahal (=)
Ini sangat mirip dengan " pass by reference ", jika membandingkan dengan panggilan fungsi dalam bahasa pemrograman aplikasi.
Impor-Ekspor juga dapat dilakukan dengan cara yang berbeda, yaitu hanya dengan mengisi tabel pencarian lagi dan kemudian menabur kembali kolom pengganti. Saya harap saya mendapatkan ini dengan benar, ini adalah sesuatu yang baru saja saya dengar sebagai suatu kemungkinan.
1. Catat itu +
, -
dan =
tunjukkan manfaat dari properti tersebut.
Pertanyaan
Cukup penting: Apakah ada perbedaan antara tabel pencarian (atau kode ) dan referensi FK jika kita hanya akan menggunakan pendekatan yang terakhir? Saya pikir mereka bekerja sama saja.