Saat bekerja dengan model relasional, kita memiliki 2 kelompok operasi yang dapat kita gunakan.
Yang pertama disebut aljabar relasional , dan ini adalah bahasa prosedural .
Inilah yang menjadi dasar SQL, dan karena itu sangat penting untuk dipelajari - karena SQL adalah standar de-facto untuk bekerja dengan database relasional.
Yang kedua disebut kalkulus relasional dan bukannya prosedural, ini adalah bahasa deklaratif . Ini adalah perbedaan mendasar dalam cara kami berinteraksi dengan database, karena Anda tidak memberi tahu perangkat lunak database apa yang harus dilakukan , Anda tinggal memberi tahu apa yang Anda inginkan , dan biarkan ia menyelesaikan detail cara melakukannya.
Ini adalah perbedaan umum di antara bahasa pemrograman. Di frontend modern, kami mengatakan interaksi dengan DOM di React bersifat deklaratif. Menggunakan vanilla JavaScript untuk memodifikasi DOM adalah prosedural.
Bahasa seperti Datalog, QBE dan QUEL memiliki kalkulus relasional sebagai dasarnya. Saya tidak akan membicarakan hal ini karena menurut saya ini adalah cara yang lebih khusus untuk melakukan sesuatu dibandingkan dengan pendekatan yang lebih praktis yang diikuti oleh SQL, tetapi Anda dapat melihatnya jika Anda mau.
Dengan pengantar ini, mari kita lanjutkan dengan aljabar relasional .
Kami memiliki 2 jenis operasi:
- operasi utama
- bergabung dengan operasi
Operasi utama dalam aljabar relasional
Operasi utama adalah:
- serikat untuk mendapatkan data dari dua tabel, menghasilkan jumlah tupel, selama kedua tabel memiliki kolom dan tipe atribut (domain) yang sama.
- perbedaan untuk mendapatkan data yang terdapat pada tabel pertama tetapi tidak pada tabel kedua, menghasilkan perbedaan tupel, selama kedua tabel memiliki kolom dan tipe atribut (domain) yang sama.
- produk kartesius untuk memasukkan data dari dua tabel ke dalam dan menghasilkan satu tabel tunggal yang menggabungkan datanya, berdasarkan nilai atribut.
- pilih hanya mengekstrak beberapa tupel (baris) yang terdapat dalam tabel berdasarkan kriteria tertentu.
- proyek untuk menghasilkan tabel baru yang hanya berisi satu atau lebih atribut (kolom) dari tabel yang ada
- ganti nama digunakan untuk mengganti nama atribut, digunakan untuk mencegah konflik ketika beberapa tabel memiliki nama yang sama untuk data yang berbeda
Menggabungkan operasi dalam aljabar relasional
Bergabung mungkin adalah operasi paling kuat yang dapat Anda lakukan dengan aljabar relasional. Mereka dibangun di atas operasi utama, dan memungkinkan Anda untuk mengkorelasikan data yang terdapat dalam relasi (tabel) yang berbeda.
Catatan:Saya akan segera berbicara tentang bergabung dalam praktik di DBMS, ini sebagian besar teori.
Kami memiliki 2 versi gabungan utama:gabung alami dan theta bergabung . Semua versi lain diekstraksi dari 2.
Gabung Alami
Gabung alami menghubungkan dua relasi (tabel), dan membuat tabel baru berdasarkan nilai atribut yang sama.
Kita membutuhkan dua relasi dengan nama atribut yang sama (kolom), pertama. Kemudian jika nilai pada atribut dalam relasi A tidak cocok dengan atribut dalam relasi B, baris tersebut bukan bagian dari hasil, maka akan diabaikan.
Contoh:
Relasi A
ID Karyawan | Nama |
---|---|
1 | Tandai |
2 | Tony |
3 | Rik |
Relasi B
Nama Manajer | ID Karyawan |
---|---|
Todd | 1 |
Albert | 2 |
Kita bisa melakukan natural join untuk mendapatkan nama bos untuk setiap karyawan:
ID Karyawan | Nama | Nama Manajer |
---|---|---|
1 | Tandai | Todd |
2 | Tony | Albert |
Karena relasi memiliki nama atribut ID Karyawan yang sama, relasi tersebut hanya muncul sekali dalam hasil, bukan 2 kali.
Karyawan #3 yang ada dalam relasi A, Rick, tidak termasuk dalam tabel ini, karena tidak ada entri yang sesuai dalam relasi B.
Gabung Theta
Theta-join memungkinkan untuk melakukan join berdasarkan kriteria apa pun untuk membandingkan dua kolom dalam dua relasi yang berbeda, bukan hanya kesetaraan seperti yang dilakukan natural join.
Ini melakukan produk kartesius dari dua tabel, dan memfilter hasilnya berdasarkan pilihan yang ingin kita buat.
Equi-gabung
Equi-join adalah theta join, dimana pemilihannya didasarkan pada persamaan antara nilai atribut pada dua tabel yang berbeda.
Bedanya dengan natural join adalah kita bisa memilih nama atribut (kolom) mana yang ingin kita bandingkan.
Kami akan berbicara lebih banyak tentang bergabung nanti saat SQL diperkenalkan, sehingga kami dapat menggunakannya dalam praktik.