Salah satu konsep terpenting dalam basis data adalah menciptakan hubungan antara tabel basis data. Hubungan ini menyediakan mekanisme untuk menghubungkan data yang disimpan dalam beberapa tabel dan mengambilnya secara efisien. Untuk membuat tautan antara dua tabel, Anda harus menentukan kunci asing dalam satu tabel yang merujuk ke kolom di tabel lain.
Tabel dan Relasi Database
Anda mungkin sudah tahu bahwa database hanyalah serangkaian tabel , mirip dengan apa yang mungkin sudah Anda gunakan dalam program spreadsheet , seperti Microsoft Excel. Bahkan, Anda bahkan dapat mengonversi spreadsheet Excel ke database. Namun, jika basis data berbeda dari spreadsheet, adalah ketika membangun hubungan yang kuat antar tabel.
Pertimbangkan, misalnya, database yang digunakan oleh perusahaan untuk melacak informasi sumber daya manusia. Database itu mungkin memiliki tabel yang disebut Karyawan yang berisi informasi berikut untuk setiap anggota staf perusahaan:
- identitas pegawai
- Nama depan
- Nama keluarga
- OfficePhone
- Telepon rumah
- PositionID
Dalam contoh ini, ID karyawan adalah bilangan bulat unik yang diberikan kepada setiap karyawan ketika mereka ditambahkan ke database. ID posisi adalah kode pekerjaan yang digunakan untuk referensi posisi karyawan di perusahaan. Dalam skema ini, seorang karyawan hanya boleh memiliki satu posisi, tetapi banyak (atau tidak ada) karyawan dapat mengisi setiap posisi. Misalnya, Anda mungkin memiliki ratusan karyawan dengan posisi "Kasir".
Database mungkin juga berisi tabel yang disebut Posisi dengan informasi tambahan berikut tentang setiap posisi:
- PositionID
- Judul
- Tingkat pekerjaan
- SkillCategory
- Lokasi
Bidang ID Posisi dalam tabel ini mirip dengan bidang ID Karyawan dalam tabel Karyawan - ini adalah bilangan bulat unik yang dibuat ketika posisi ditambahkan ke database.
Ketika kita pergi untuk menarik daftar karyawan dari database, itu wajar untuk meminta nama setiap orang dan judul mereka. Namun, informasi ini disimpan dalam beberapa tabel basis data, sehingga hanya dapat diambil menggunakan kueri JOIN yang membutuhkan hubungan yang ada di antara tabel.
Saat Anda melihat struktur tabel, bidang yang menentukan hubungan mungkin sudah jelas - bidang ID Posisi. Setiap karyawan hanya dapat memiliki satu posisi dan posisi tersebut diidentifikasi dengan memasukkan ID Posisi dari entri yang sesuai tabel Posisi. Selain menjadi kunci utama untuk tabel Posisi, dalam contoh ini, bidang ID Posisi juga merupakan kunci asing dari tabel Karyawan ke tabel Posisi. Database kemudian dapat menggunakan bidang ini untuk menghubungkan informasi dari beberapa tabel dan memastikan bahwa perubahan atau penambahan pada basis data terus menegakkan integritas referensial .
Setelah Anda mengidentifikasi kunci asing, Anda dapat melanjutkan dan menarik informasi yang diinginkan dari database menggunakan kueri berikut:
Membuat Kunci Asing di SQL Server
Secara teknis, Anda tidak perlu mendefinisikan hubungan secara eksplisit untuk dapat melakukan kueri seperti yang di atas. Namun, jika Anda secara eksplisit menentukan hubungan menggunakan batasan kunci asing, database akan dapat melakukan beberapa pekerjaan rumah tangga untuk Anda:
- Saat Anda menambahkan catatan baru ke tabel Karyawan, basis data akan memastikan bahwa ID Posisi yang Anda masukkan adalah kunci primer yang valid di tabel Posisi.
- Jika Anda mengubah ID Posisi di tabel Posisi, database dapat melakukan pembaruan yang diperlukan ke tabel Karyawan untuk menjaga konsistensi.
- Basis data dapat melindungi terhadap dampak penghapusan posisi dari tabel posisi dengan baik menolak untuk menghapus posisi dengan entri karyawan yang sesuai atau melakukan penghapusan cascading dari semua karyawan terkait.
Beginilah cara Anda membuat kunci asing di SQL Server:
ALTER TABLE Employees ADD FOREIGN KEY (PositionID) REFERENSI Posisi (PositionID)Anda juga dapat membuat kunci asing saat Anda membuat tabel dengan menambahkan klausa:
FOREIGN KEYIGN REFERENCES Positions (PositionID)sampai akhir definisi kolom untuk kolom kunci asing.