SQL dan Aljabar Relasional
Aljabar relasional adalah bahasa prosedural operator atas relasi yang memberikan semantik formal pada model relasional, sedangkan SQL adalah bahasa deklaratif standar yang dikompilasi oleh sistem basis data menjadi rencana eksekusi mirip aljabar.
Definition
Aljabar relasional adalah sekumpulan operator yang menerima relasi sebagai masukan dan menghasilkan relasi sebagai keluaran; SQL (Structured Query Language) adalah bahasa deklaratif standar ISO untuk mendefinisikan, mengkueri, dan memperbarui basis data relasional, yang semantik kuerinya sangat sesuai dengan aljabar relasional yang diperluas dengan pengelompokan, agregasi, dan semantik bag.
Scope
Topik ini mencakup operator-operator aljabar relasional — seleksi, proyeksi, produk Kartesius, gabungan (join), union, perbedaan, dan penamaan ulang (renaming) — serta penggunaannya sebagai dasar formal untuk kueri dan optimisasi kueri. Ini mencakup inti SQL: kueri SELECT-FROM-WHERE, gabungan (joins), pengelompokan dan agregasi, subkueri, operasi himpunan, serta pernyataan definisi data dan manipulasi data, bersama dengan semantik multiset SQL dan logika tiga nilai untuk null. Ini tidak mencakup bagaimana kueri dieksekusi dan dioptimalkan secara fisik (dibahas dalam pemrosesan dan optimisasi kueri).
Core questions
- Apa saja operator primitif dan turunan dari aljabar relasional?
- Bagaimana kueri SQL SELECT-FROM-WHERE dipetakan ke operasi aljabar relasional?
- Bagaimana pengelompokan dan agregasi memperluas aljabar dasar?
- Bagaimana null dan logika tiga nilai memengaruhi hasil kueri?
- Mengapa SQL menggunakan semantik multiset (bag) daripada semantik himpunan?
Key concepts
- seleksi, proyeksi, gabungan (join)
- union, perbedaan, produk Kartesius
- SELECT-FROM-WHERE
- pengelompokan dan agregasi
- subkueri dan korelasi
- operasi himpunan dan multiset
- logika tiga nilai dan null
- bahasa definisi dan manipulasi data
Key theories
- Operator aljabar relasional
- Seleksi, proyeksi, union, perbedaan himpunan, produk Kartesius, dan penamaan ulang membentuk himpunan lengkap dari mana gabungan (join), irisan (intersection), dan pembagian (division) diturunkan; identitas aljabar di antara mereka membenarkan optimisasi penulisan ulang kueri.
- Kueri deklaratif dan kelengkapan relasional
- SQL memungkinkan pengguna menyatakan data apa yang mereka inginkan daripada bagaimana cara mengambilnya; karena dapat mengekspresikan setiap kueri aljabar relasional (dan lebih banyak lagi), ia lengkap secara relasional, dan sistem bebas memilih strategi eksekusi yang efisien.
- Logika tiga nilai untuk null
- SQL mengevaluasi kondisi atas benar, salah, dan tidak diketahui untuk menangani nilai null; ini memengaruhi perbandingan, pemfilteran WHERE, dan agregasi, serta merupakan sumber umum kesalahan kueri yang halus.
Clinical relevance
SQL adalah salah satu bahasa yang paling banyak digunakan dalam komputasi: ini adalah antarmuka untuk hampir setiap basis data relasional yang mendukung aplikasi bisnis, analitik, dan layanan web, dan aljabar relasional adalah alat teoretis yang digunakan oleh pengoptimal kueri untuk menulis ulang dan merencanakan kueri SQL tersebut secara efisien.
History
Makalah Codd tahun 1970 memperkenalkan aljabar dan kalkulus relasional. Pada proyek System R IBM, Chamberlin dan Boyce merancang SEQUEL (1974), yang kemudian diganti namanya menjadi SQL, sebagai bahasa deklaratif yang lebih mudah diakses. SQL distandarisasi oleh ANSI dan ISO mulai tahun 1986 dan telah diperluas melalui standar-standar berikutnya sambil tetap berlandaskan pada aljabar relasional.
Key figures
- Edgar F. Codd
- Donald D. Chamberlin
- Raymond F. Boyce
Related topics
Seminal works
- codd1970
- chamberlin1974
- garciamolina2008
Frequently asked questions
- Apakah SQL sama persis dengan aljabar relasional?
- Tidak. SQL didasarkan pada aljabar dan kalkulus relasional tetapi berbeda dalam beberapa hal utama: ia menggunakan semantik multiset (bag) sehingga duplikat dapat muncul, menambahkan pengelompokan dan agregasi, mendukung null dengan logika tiga nilai, dan mencakup fitur prosedural dan definisi data yang tidak dimiliki oleh aljabar murni.
- Mengapa mempelajari aljabar relasional jika SQL yang digunakan dalam praktik?
- Aljabar relasional adalah model formal di balik optimisasi kueri: sistem basis data menerjemahkan SQL ke dalam ekspresi mirip aljabar dan menerapkan aturan ekuivalensi untuk menemukan rencana yang efisien. Memahami aljabar menjelaskan mengapa penulisan ulang kueri tertentu valid dan membantu dalam penalaran tentang ekuivalensi dan biaya kueri.