DBMS - Algebra Relasional

Halo, para ahli basis data masa depan! Saya sangat senang menjadi panduan Anda dalam perjalanan yang menarik melalui dunia magis Algebra Relasional. Sebagai seseorang yang telah mengajar ilmu komputer selama tahun-tahun yang saya enggan untuk mengakui ( mari katakan saja saya ingat saat disket masih benar-benar fleksibel), saya dapat menjamin Anda bahwa menguasai topik ini akan seperti mendapatkan kekuatan super di dalam kerajaan basis data. Jadi, mari kita masuk ke dalamnya!

DBMS - Relational Algebra

Algebra Relasional

Imaginasikan Anda sedang mengatur koleksi luas boneka pahlawan super (atau mungkin itu hanya saya). Algebra Relasional adalah seperti memiliki set kekuatan khusus yang memungkinkan Anda untuk memanipulasi dan mengquery koleksi Anda dalam cara yang sangat berguna. Ini adalah dasar bagaimana kita berinteraksi dengan basis data relasional, menyediakan kerangka teoritis untuk operasi pada relasi (tabel).

Konsep Dasar

Sebelum kita mulai melempar simbol yang keren, mari kita tetapkan beberapa aturan dasar:

  1. Relasi adalah himpunan tuple (baris)
  2. Atribut adalah header kolom
  3. Operasi menghasilkan relasi baru sebagai hasilnya

Sekarang, mari kita lihat kekuatan super (operasi) yang ada di tangan kita:

Operasi Simbol Deskripsi
Select σ Memfilter baris berdasarkan kondisi
Project Memilih kolom tertentu
Union Menggabungkan dua relasi yang kompatibel
Set Difference Menghapus tuple dari satu relasi yang muncul di relasi lain
Cartesian Product Χ Menggabungkan setiap baris dari satu relasi dengan setiap baris relasi lain
Rename ρ Mengubah nama atribut atau relasi

Operasi Select (σ)

Operasi select adalah seperti memiliki pandangan sinar X untuk basis data Anda. Itu memungkinkan Anda untuk memfilter baris berdasarkan kondisi tertentu.

Sintaks: σ(relation)

Misalnya, kita memiliki tabel yang disebut Heroes:

| Name   | Power        | Age |
|--------|--------------|-----|
| Bruce  | Intelligence | 35  |
| Clark  | Flight       | 30  |
| Diana  | Strength     | 5000|
| Barry  | Speed        | 28  |

Jika kita ingin menemukan semua pahlawan yang berusia di bawah 100 tahun:

σ Age < 100 (Heroes)

Ini akan memberikan kita:

| Name   | Power        | Age |
|--------|--------------|-----|
| Bruce  | Intelligence | 35  |
| Clark  | Flight       | 30  |
| Barry  | Speed        | 28  |

Lihat? Kita telah menyaringkan Diana, wanita pahlawan tak kenal usia kita!

Operasi Project (∏)

Operasi project adalah seperti memiliki laser pendingin. Itu memungkinkan Anda untuk memilih kolom tertentu, mengurangi lebar relasi Anda.

Sintaks: ∏(relation)

Menggunakan tabel Heroes, jika kita hanya ingin nama dan kekuatan:

∏ Name, Power (Heroes)

Hasil:

| Name   | Power        |
|--------|--------------|
| Bruce  | Intelligence |
| Clark  | Flight       |
| Diana  | Strength     |
| Barry  | Speed        |

Kita telah mengecilkan tabel kita, fokus hanya pada apa yang kita butuhkan!

Operasi Union (∪)

Operasi union adalah seperti fusi di Dragon Ball Z – itu menggabungkan dua relasi yang kompatibel.

Sintaks: Relation1 ∪ Relation2

Misalnya, kita memiliki tabel lain yang disebut Sidekicks:

| Name   | Power   | Age |
|--------|---------|-----|
| Robin  | Acrobat | 22  |
| Jimmy  | None    | 25  |

Kita dapat menggabungkan Heroes dan Sidekicks:

Heroes ∪ Sidekicks

Hasil:

| Name   | Power        | Age |
|--------|--------------|-----|
| Bruce  | Intelligence | 35  |
| Clark  | Flight       | 30  |
| Diana  | Strength     | 5000|
| Barry  | Speed        | 28  |
| Robin  | Acrobat      | 22  |
| Jimmy  | None         | 25  |

Sekarang kita memiliki tim super!

Set Difference (−)

Set difference adalah seperti memiliki laser pendisintegrasi. Itu menghapus tuple dari satu relasi yang muncul di relasi lain.

Sintaks: Relation1 − Relation2

Jika kita ingin menemukan pahlawan yang bukan sidekick:

Heroes − Sidekicks

Ini akan memberikan kita tabel Heroes asli, karena tidak ada yang ada di tabel Sidekicks.

Cartesian Product (Χ)

Produk Cartesian adalah seperti menciptakan universitas alternatif di mana setiap pahlawan bertemu setiap sidekick.

Sintaks: Relation1 Χ Relation2

Heroes Χ Sidekicks

Ini akan menghasilkan tabel dengan setiap kombinasiungkin pahlawan dan sidekick. Ini adalah tabel besar, jadi saya tidak akan menunjukkanannya semua, tapi ini adalah cuplikan:

| HName  | HPower       | HAge | SName | SPower  | SAge |
|--------|--------------|------|-------|---------|------|
| Bruce  | Intelligence | 35   | Robin | Acrobat | 22   |
| Bruce  | Intelligence | 35   | Jimmy | None    | 25   |
| Clark  | Flight       | 30   | Robin | Acrobat | 22   |
| Clark  | Flight       | 30   | Jimmy | None    | 25   |
...

Operasi Rename (ρ)

Operasi rename adalah seperti memiliki kekuatan yang mengubah realitas. Itu memungkinkan Anda untuk mengubah nama atribut atau relasi.

Sintaks: ρ new_name (old_name)

Jika kita ingin mengubah nama atribut Power menjadi Superpower:

ρ Superpower←Power (Heroes)

Hasil:

| Name   | Superpower   | Age |
|--------|--------------|-----|
| Bruce  | Intelligence | 35  |
| Clark  | Flight       | 30  |
| Diana  | Strength     | 5000|
| Barry  | Speed        | 28  |

Calculus Relasional

Sekarang, untuk aksi final kita, mari kita singkat sekali tentang Calculus Relasional. Jika Algebra Relasional tentang "bagaimana" mendapatkan data, Calculus Relasional tentang "apa" data yang hendak didapatkan. Itu adalah cara deklaratif untuk menentukan query basis data.

Ada dua jenis:

  1. Tuple Relational Calculus (TRC)
  2. Domain Relational Calculus (DRC)

Misalnya, dalam TRC, untuk menemukan semua pahlawan dengan "Flight" sebagai kekuatan mereka:

{H | H ∈ Heroes ∧ H.Power = "Flight"}

Ini mengatakan "Berikan saya semua tuple H dari Heroes di mana kekuatan H adalah Flight."

Dan itu saja, para padawan muda! Anda telah naik level dalam keterampilan basis data Anda. Ingat, dengan kekuatan yang besar datang tanggung jawab yang besar – gunakan operasi algebra relasional ini bijaksana, dan Anda akan menjadi pro dalam mengquery basis data dalam waktu singkat. Sekarang, pergilah danatur data Anda dengan presisi seorang pahlawan super!

Credits: Image by storyset