Aljabar Relasional
Sistem basis data relasional diharapkan dilengkapi dengan bahasa kueri yang dapat membantu penggunanya untuk menanyakan contoh basis data. Ada dua jenis bahasa kueri - aljabar relasional dan kalkulus relasional.
Aljabar Relasional
Aljabar relasional adalah bahasa kueri prosedural, yang mengambil instance relasi sebagai input dan menghasilkan instance relasi sebagai output. Ini menggunakan operator untuk melakukan kueri. Operator bisa menjadi salah satunyaunary atau binary. Mereka menerima hubungan sebagai input dan hubungan hasil sebagai output mereka. Aljabar relasional dilakukan secara rekursif pada suatu relasi dan hasil antara juga dianggap sebagai relasi.
Operasi dasar aljabar relasional adalah sebagai berikut -
- Select
- Project
- Union
- Atur berbeda
- Produk Cartesian
- Rename
Kami akan membahas semua operasi ini di bagian berikut.
Pilih Operasi (σ)
Ini memilih tupel yang memenuhi predikat yang diberikan dari suatu relasi.
Notation- σ p (r)
Dimana σ singkatan dari predikat seleksi dan rsingkatan dari hubungan. p adalah rumus logika preposisi yang dapat menggunakan konektor sepertiand, or, dan not. Istilah-istilah ini dapat menggunakan operator relasional seperti - =, ≠, ≥, <,>, ≤.
For example -
σsubject = "database"(Books)
Output - Memilih tupel dari buku yang subjeknya adalah 'database'.
σsubject = "database" and price = "450"(Books)
Output - Memilih tupel dari buku yang subjeknya adalah 'database' dan 'harga' adalah 450.
σsubject = "database" and price = "450" or year > "2010"(Books)
Output - Memilih tupel dari buku yang subjeknya adalah 'database' dan 'harga' adalah 450 atau buku yang diterbitkan setelah 2010.
Operasi Proyek (∏)
Ini memproyeksikan kolom yang memenuhi predikat yang diberikan.
Notasi - ∏ A 1 , A 2 , A n (r)
Dimana A 1 , A 2 , A n adalah nama atribut relasir.
Baris duplikat secara otomatis dihilangkan, karena relasi adalah satu set.
For example -
∏subject, author (Books)
Memilih dan memproyeksikan kolom yang dinamai sebagai subjek dan penulis dari relasi Buku.
Operasi Serikat (∪)
Ini melakukan penyatuan biner antara dua hubungan yang diberikan dan didefinisikan sebagai -
r ∪ s = { t | t ∈ r or t ∈ s}
Notation - r U s
Dimana r dan s bisa berupa relasi database atau kumpulan hasil relasi (relasi sementara).
Agar operasi serikat menjadi valid, kondisi berikut harus berlaku -
- r, dan s harus memiliki jumlah atribut yang sama.
- Domain atribut harus kompatibel.
- Tupel duplikat secara otomatis dihilangkan.
∏ author (Books) ∪ ∏ author (Articles)
Output - Memproyeksikan nama penulis yang telah menulis buku atau artikel atau keduanya.
Set Selisih (-)
Hasil dari operasi perbedaan himpunan adalah tupel, yang ada pada satu relasi tetapi tidak pada relasi kedua.
Notation - r - s
Menemukan semua tupel yang ada di r tapi tidak di s.
∏ author (Books) − ∏ author (Articles)
Output - Memberikan nama penulis yang telah menulis buku tetapi belum menulis artikel.
Produk Cartesian (Χ)
Menggabungkan informasi dari dua relasi berbeda menjadi satu.
Notation - r Χ s
Dimana r dan s adalah hubungan dan keluarannya akan didefinisikan sebagai -
r Χ s = {qt | q ∈ r dan t ∈ s}
σauthor = 'tutorialspoint'(Books Χ Articles)
Output - Menghasilkan relasi, yang menampilkan semua buku dan artikel yang ditulis oleh tutorialspoint.
Ubah Nama Operasi (ρ)
Hasil aljabar relasional juga berupa relasi tetapi tanpa nama. Operasi rename memungkinkan kita untuk mengganti nama relasi keluaran. Operasi 'ganti nama' dilambangkan dengan huruf Yunani kecilrho ρ .
Notation- ρ x (E)
Dimana hasil ekspresi E disimpan dengan nama x.
Operasi tambahan adalah -
- Atur persimpangan
- Assignment
- Gabungan alami
Kalkulus Relasional
Berbeda dengan Aljabar Relasional, Kalkulus Relasional adalah bahasa kueri non-prosedural, yaitu, ia memberi tahu apa yang harus dilakukan tetapi tidak pernah menjelaskan bagaimana melakukannya.
Kalkulus relasional ada dalam dua bentuk -
Kalkulus Relasional Tupel (TRC)
Memfilter rentang variabel di atas tupel
Notation- {T | Kondisi}
Mengembalikan semua tupel T yang memenuhi suatu kondisi.
For example -
{ T.name | Author(T) AND T.article = 'database' }
Output - Mengembalikan tupel dengan 'nama' dari Penulis yang telah menulis artikel di 'database'.
TRC dapat diukur. Kita bisa menggunakan Existential (∃) dan Universal Quantifier (∀).
For example -
{ R| ∃T ∈ Authors(T.article='database' AND R.name=T.name)}
Output - Kueri di atas akan memberikan hasil yang sama dengan kueri sebelumnya.
Kalkulus Relasional Domain (DRC)
Di DRC, variabel pemfilteran menggunakan domain atribut, bukan seluruh nilai tupel (seperti yang dilakukan di TRC, yang disebutkan di atas).
Notation -
{a 1 , a 2 , a 3 , ..., a n | P (a 1 , a 2 , a 3 , ..., a n )}
Dimana a1, a2 adalah atribut dan P singkatan dari rumus yang dibangun oleh atribut dalam.
For example -
{< article, page, subject > |
∈ TutorialsPoint ∧ subject = 'database'}
Output - Menghasilkan Artikel, Halaman, dan Subjek dari relasi TutorialsPoint, di mana subjek adalah database.
Sama seperti TRC, DRC juga dapat ditulis menggunakan bilangan eksistensial dan universal. DRC juga melibatkan operator relasional.
Kekuatan ekspresi Kalkulus Relasi Tupel dan Kalkulus Relasi Domain setara dengan Aljabar Relasional.