7. Aljabar Relasional
- Bahasa prosedural yang terdiri dari sekumpulan operasi yang mengambil satu atau dua relasi sebagai input dan menghasilkan relasi baru sebagai hasilnya.
- Enam operator dasar
* pilih:
* proyek:
* serikat pekerja:
* mengatur perbedaan: --
* Produk Cartesian: x
* ganti nama:
8. Pilih Operasi (Lanjutan)
- Kami mengizinkan perbandingan menggunakan =, , >, . <.
dalam pemilihan predikat.
- Kita dapat menggabungkan beberapa predikat menjadi predikat yang lebih besar dengan menggunakan kata penghubung:
(dan), (atau), (tidak)
- Contoh: Temukan instruktur Fisika dengan gaji lebih besar $90,000,
kami menulis:
dept_name="Fisika" gaji > 90.000 (instruktur)
- Kemudian pilih predikat dapat mencakup perbandingan antara dua atribut.
* Contoh, cari semua departemen yang namanya sama dengan nama gedungnya:
* nama_dept=gedung (departemen)
9. Operasi Proyek
- Operasi unary yang mengembalikan relasi argumennya, dengan atribut tertentu yang ditinggalkan.
- Â Notasi:
A1,A2,A3 ....Ak (r)
dimana A1, A2 adalah nama atribut dan r adalah nama relasi.
- Hasilnya didefinisikan sebagai relasi dari k kolom yang diperoleh
dengan menghapus kolom yang tidak terdaftar
- Duplikat baris dihapus dari hasil, karena relasi adalah set
10. Komposisi Operasi Relasional
- Hasil operasi aljabar relasional adalah relasi sehingga operasi aljabar relasional dapat disusun bersama menjadi ekspresi aljabar relasional.
- Pertimbangkan kueri -- Temukan nama semua instruktur di departemen Fisika.
nama( dept_name ="Fisika" (instruktur))
- Alih-alih memberi nama relasi sebagai argumen dari operasi proyeksi, kami memberikan ekspresi yang mengevaluasi relasi.
11. Cartesian
- Operasi produk Cartesian (dilambangkan dengan X) memungkinkan kita menggabungkan informasi dari dua relasi.
- Contoh: produk Cartesian dari relasi pengajar dan pengajar ditulis sebagai:
instruktur X mengajar
- Kami membuat sebuah tupel dari hasil dari setiap pasangan tupel yang mungkin: satu dari relasi instruktur dan satu dari relasi pengajar (lihat slide berikutnya)
- Karena ID instruktur muncul di kedua relasi, kami membedakan antara atribut ini dengan melampirkan ke atribut nama relasi asal atribut tersebut berasal.
* instruktur.ID * mengajar.ID
12. Gabung Operasi
- Instruktur Cartesian-Product X mengajar
mengaitkan setiap tupel instruktur dengan setiap tupel pengajaran.
* Sebagian besar baris yang dihasilkan berisi informasi tentang instruktur yang TIDAK mengajar mata pelajaran tertentu.
- Untuk mendapatkan hanya tupel "instruktur X mengajarkan" yang berkaitan dengan instruktur dan kursus yang mereka ajarkan, kami menulis:
pengajar.id = pengajar.id (pengajar x pengajar ))
* Kami hanya mendapatkan tuple dari "instruktur X mengajar" yang berhubungan
kepada instruktur dan kursus yang mereka ajarkan.
-Hasil ekspresi ini, ditunjukkan pada slide berikutnya
13. Gabung Operasi (Lanjutan)
- Operasi gabungan memungkinkan kita untuk menggabungkan operasi pilih dan operasi Cartesian-Product ke dalam satu operasi.
- Pertimbangkan hubungan r (R) dan s (S)
- Biarkan "theta" menjadi predikat pada atribut dalam skema R "union"
S. Operasi gabungan r s didefinisikan sebagai berikut:
= ( )
- Demikian
pengajar.id = pengajar.id (pengajar x pengajar ))
- Secara ekuivalen dapat ditulis sebagai
pengajar Instruktur.id = pengajar.id pengajar.
14. Operasi Serikat
- Operasi serikat memungkinkan kita untuk menggabungkan dua hubungan
- Notasi: r s
- Forrtobevalid.
1. r, s harus memiliki arity yang sama (jumlah atribut yang sama)
2. Domain atribut harus kompatibel (contoh: kolom ke-2
atau r berurusan dengan jenis nilai yang sama seperti kolom ke-2 dari s)
- Contoh: untuk menemukan semua mata kuliah yang diajarkan pada semester Musim Gugur 2017, atau pada semester Musim Semi 2018, atau keduanya
id_kursus ( semester="Musim Gugur" tahun=2017 (bagian)) id_kursus ( semester="Musim Semi" tahun=2018 (bagian))
15. Operasi Penugasan
Kadang-kadang lebih nyaman untuk menulis ekspresi aljabar relasional dengan menugaskan bagian-bagiannya ke variabel relasi sementara.
- Operasi penugasan dilambangkan dengan dan bekerja seperti penugasan dalam bahasa pemrograman.
- Contoh: Temukan semua instruktur di departemen "Fisika" dan Musik.
Fisika dept_name="Fisika" (instruktur) Musik dept_name="Musik" (instruktur) Fisika Musik
- Dengan operasi penugasan, kueri dapat ditulis sebagai program berurutan yang terdiri dari serangkaian penugasan diikuti dengan ekspresi yang nilainya ditampilkan sebagai hasil kueri.
16. Operasi Ganti Nama
- Hasil ekspresi relasional-aljabar tidak memiliki nama yang dapat kita gunakan untuk merujuknya. Operator ganti nama,
, disediakan untuk tujuan itu
- Ekspresi:
x (E)
mengembalikan hasil ekspresi E dengan nama x
- Bentuk lain dari operasi rename: x(A1,A2, .. An) (E)
17. Kueri yang Setara
- Ada lebih dari satu cara untuk menulis query dalam aljabar relasional.
- Contoh: Temukan informasi tentang mata kuliah yang diajarkan oleh instruktur di
departemen Fisika dengan gaji lebih besar dari 90.000
- Pertanyaan 1
dept_name="Fisika" gaji > 90.000 (instruktur)
- Pertanyaan 2
dept_name="Fisika" ( gaji > 90.000 (instruktur))
- Dua kueri tidak identik; mereka, bagaimanapun, setara --
mereka memberikan hasil yang sama pada basis data apa pun.