Anda di halaman 1dari 31

LECTURE NOTES

ISYS6508
Database System

Week 2

Relational Model and


Relational Algebra

ISYS6508 – Database System


LEARNING OUTCOMES

LO1: Identify concept of Database System

OUTLINE MATERI (Sub-Topic):

1. The Brief History of The Relational Model

2. Terminology

3. Integrity Constraints

4. The Relational Algebra

ISYS6508 – Database System


ISI MATERI

The Brief History of the Relational Model


Model relasional pertama kali diusulkan oleh E. F. Codd dalam makalah seminarnya
yang berjudul “A Relational Model Of Data For Large Shared Data Banks” (Codd, 1977).
Makalah ini sekarang secara umum diterima sebagai tengara dalam sistem database,
meskipun model set-oriented telah diusulkan sebelumnya (Childs, 1968). Tujuan model
relasional ditentukan sebagai berikut:
1. Untuk memungkinkan independensi data tingkat tinggi.
Program aplikasi tidak boleh dipengaruhi oleh modifikasi pada representasi data
internal, terutama oleh perubahan pada organisasi file, urutan catatan, atau jalur akses.
2. Untuk memberikan alasan substansial untuk menangani semantik data, konsistensi,
dan masalah redundansi.
Secara khusus, makalah Codd memperkenalkan konsep hubungan normal, yaitu
hubungan yang tidak memiliki kelompok yang berulang.
3. Untuk memperluas penggunaan bahasa manipulasi pada orientasi data set
Meskipun ketertarikan pada model relasional berasal dari beberapa arah, penelitian
yang paling signifikan mungkin dikaitkan dengan tiga proyek dengan perspektif yang agak
berbeda. Yang pertama, di Laboratorium Penelitian San José di California, adalah prototipe
relational DBMS System R, yang dikembangkan selama akhir 1970-an (Astrahan et al.,
1976). Proyek ini dirancang untuk membuktikan kepraktisan model relasional dengan
menyediakan implementasi struktur dan operasi datanya. Ini juga terbukti menjadi sumber
informasi yang sangat baik tentang masalah implementasi seperti manajemen transaksi,
kontrol konkurensi, teknik pemulihan, optimasi kueri, keamanan dan integritas data, faktor
manusia, dan antarmuka pengguna, dan mengarah pada publikasi banyak makalah penelitian
dan pengembangan prototipe lainnya. Secara khusus, proyek Sistem R menyebabkan dua
perkembangan besar:
1. Pengembangan bahasa query terstruktur yang disebut SQL, yang sejak saat itu
menjadi Organisasi Internasional formal untuk Standardisasi (ISO) dan bahasa standar
de facto untuk DBMS relasional.

ISYS6508 – Database System


2. Produksi berbagai produk DBMS relasional komersial selama akhir 1970an dan
1980an: misalnya, DB2 dan SQL / DS dari IBM dan Oracle dari Oracle Corporation.

Proyek kedua yang signifikan dalam pengembangan model relasional adalah proyek
INGRES (Interactive Graphics Retrieval System) di University of California di Berkeley,
yang aktif pada waktu yang hampir bersamaan dengan proyek R Sistem. Proyek INGRES
melibatkan pengembangan prototipe RDBMS, dengan penelitian yang berkonsentrasi pada
tujuan keseluruhan yang sama dengan proyek R Sistem. Penelitian ini mengarah pada versi
akademis INGRES, yang berkontribusi pada apresiasi umum konsep relasional, dan
melahirkan produk komersial INGRES dari Relational Technology Inc. (sekarang Actian
Corporation) dan Mesin Database Cerdas dari Britton Lee Inc.
Sistem komersial berdasarkan model relasional mulai muncul pada akhir 1970an dan
awal 1980an. Sekarang ada beberapa ratus RDBMS di lingkungan mainframe dan PC,
meskipun banyak yang tidak secara ketat mengikuti definisi model relasional. Contoh
RDBMS berbasis PC adalah Office Access dan Visual FoxPro dari Microsoft, InterBase dari
Embarcadero Technologies, dan R: Base dari R: Base Technologies.
Karena popularitas model relasional, banyak sistem non-relasional sekarang
menyediakan antarmuka pengguna relasional, terlepas dari model yang mendasari. IDMS,
jaringan utama DBMS, telah menjadi CA-IDMS dari CA Inc. (sebelumnya Computer
Associates), mendukung tampilan data relasional. DBMS mainframe lain yang mendukung
beberapa fitur relasional adalah Model 204 dari Computer Corporation of America (anak
perusahaan dari Rocket Software Inc) dan Software AG’s ADABAS.

Terminology
Model relasional didasarkan pada konsep matematika dari suatu relasi, yang secara
fisik direpresentasikan sebagai sebuah table. Pada bagian ini kami menjelaskan terminologi
dan konsep struktural dari model relasional.

Relational Data Structure


Relasi adalah tabel dengan kolom dan baris. Sebuah RDBMS hanya membutuhkan
bahwa database dianggap oleh pengguna sebagai tabel. Perhatikan, bagaimanapun, bahwa

ISYS6508 – Database System


persepsi ini hanya berlaku untuk struktur logis dari database: yaitu, tingkat eksternal dan
konseptual arsitektur ANSI-SPARC yang dibahas sebelumnya.
Atribut adalah kolom dari sebuah relasi. Dalam model relasional, relasi digunakan
untuk menyimpan informasi tentang objek yang akan diwakili dalam database. Relasi
direpresentasikan sebagai tabel dua dimensi di mana baris-baris tabel sesuai dengan catatan
individu dan kolom tabel sesuai dengan atribut. Atribut dapat muncul dalam urutan apa pun
dan relasinya tetap akan menjadi relasi yang sama, dan karena itu akan menyampaikan makna
yang sama. Misalnya, informasi di kantor cabang diwakili oleh hubungan Cabang, dengan
kolom untuk atribut branchNo (nomor cabang), street, city, dan postcode. Demikian pula,
informasi tentang staf diwakili oleh relasi Staf, dengan kolom untuk staf atribut staffNo
(nomor staf), fName, lName, position, sex, DOB (tanggal lahir), salary, dan cabangTidak ada
(nomor cabang yang anggota staf bekerja). Gambar 2.1 menunjukkan contoh hubungan
Cabang dan Staf. Seperti yang Anda lihat dari contoh ini, kolom berisi nilai-nilai atribut
tunggal; misalnya, kolom branchNo hanya berisi nomor dari kantor cabang yang ada.
Domain adalah himpunan nilai yang diijinkan untuk satu atau beberapa atribut.
Domain adalah fitur yang sangat kuat dari model relasional. Setiap atribut dalam relasi
didefinisikan pada domain. Domain dapat berbeda untuk setiap atribut, atau dua atau lebih
atribut dapat didefinisikan pada domain yang sama. Gambar 2.1 menunjukkan domain untuk
beberapa atribut hubungan Cabang dan Staf. Perhatikan bahwa pada waktu tertentu, biasanya
akan ada nilai dalam domain yang saat ini tidak muncul sebagai nilai dalam atribut yang
sesuai.

ISYS6508 – Database System


Gambar 2.1 Domain untuk beberapa atribut hubungan Cabang dan Staf

Konsep domain penting, karena memungkinkan pengguna untuk menentukan di


tempat pusat makna dan sumber nilai yang dapat dipegang oleh atribut. Akibatnya, lebih
banyak informasi tersedia untuk sistem ketika melakukan eksekusi operasi relasional, dan
operasi yang semantik salah dapat dihindari. Sebagai contoh, tidak masuk akal untuk
membandingkan nama jalan dengan nomor telepon, meskipun definisi domain untuk kedua
atribut ini adalah string karakter. Di sisi lain, sewa bulanan pada properti dan jumlah bulan
properti telah disewa memiliki domain yang berbeda (yang pertama nilai moneter, kedua nilai
integer), tetapi masih merupakan operasi hukum untuk menggandakan dua nilai dari domain
ini. Seperti yang diilustrasikan oleh dua contoh ini, implementasi lengkap dari domain tidak
langsung, dan sebagai hasilnya, banyak RDBMS tidak mendukung sepenuhnya.
Tupel adalah deretan relasi. Unsur-unsur relasi adalah baris atau tupel dalam tabel.
Dalam hubungan Cabang, setiap baris berisi empat nilai, satu untuk setiap atribut. Tuples
dapat muncul dalam urutan apa pun dan relasinya masih akan menjadi relasi yang sama, dan

ISYS6508 – Database System


karena itu menyampaikan makna yang sama. Struktur relasi, bersama dengan spesifikasi
domain dan pembatasan lain pada nilai yang mungkin, kadang-kadang disebut intensi, yang
biasanya tetap, kecuali makna relasi diubah untuk menyertakan atribut tambahan. Tuples
disebut ekstensi (atau keadaan) dari suatu relasi, yang berubah seiring waktu.
Kardinalitas adalah jumlah tupel yang dikandungnya. Sebaliknya, jumlah tupel
disebut kardinalitas relasi dan ini berubah ketika tuples ditambahkan atau dihapus.
Kardinalitas adalah properti perpanjangan hubungan dan ditentukan dari contoh khusus dari
relasi pada suatu momen tertentu.
Relasional Database adalah Kumpulan hubungan normal dengan nama relasi yang
berbeda. Database relasional terdiri dari hubungan yang terstruktur dengan tepat. Kami
menyebut kesesuaian ini sebagai normalisasi.
Terminologi alternatif untuk model relasional bisa sangat membingungkan. Kami
telah memperkenalkan dua set istilah. Bahkan, seperangkat istilah yang ketiga kadang-kadang
digunakan: relasi dapat disebut sebagai file, tupel sebagai catatan, dan atribut sebagai bidang.
Terminologi ini berasal dari fakta bahwa, secara fisik, RDBMS dapat menyimpan setiap
relasi dalam sebuah file. Tabel 2.1 merangkum istilah-istilah yang berbeda untuk model
relasional.

Tabel 2.1 Tabel Terminologi alternatif untuk istilah model relasional


No. Formal terms Alternatif 1 Alternatif 2
1. Relasi Tabel File
2. Tuple Baris Record
3. Atribut Kolom Field

Mathematical Relational
Untuk memahami arti sebenarnya dari istilah relasi, kita harus meninjau beberapa
konsep matematika. Misalkan kita memiliki dua set, D1 dan D2, di mana D1 = {2, 4} dan
D2 = {1, 3, 5}. The Cartesian produk dari dua set ini, ditulis D1 x D2, adalah himpunan
semua pasangan yang dipesan sedemikian rupa sehingga elemen pertama adalah anggota D1
dan elemen kedua adalah anggota D2. Cara alternatif untuk mengekspresikan ini adalah

ISYS6508 – Database System


untuk menemukan semua kombinasi elemen dengan yang pertama dari D1 dan yang kedua
dari D2. Dalam kasus tersebut kami memiliki:
D1 x D2 = {(2, 1), (2, 3), (2, 5), (4, 1), (4, 3), (4, 5)}
Setiap bagian dari produk Cartesian ini adalah sebuah relasi. Misalnya, kita bisa
menghasilkan relasi sebagai berikut
R = {(2, 1), (4, 1)}
Sebagai contoh, jika kita amati bahwa R mencakup semua pasangan yang dipesan di mana
elemen kedua adalah 1, maka kita dapat menulis R sebagai
R = {(x, y) | x ∈ D1, y ∈ D2, and y = 1}

Database Relational
Menerapkan konsep yang sebelumnya dibahas ke database, kita dapat mendefinisikan
skema relasi. Skema relasi yang ditentukan oleh nama atribut dan domain. Dalam contoh kita,
hubungan Cabang ditunjukkan pada Gambar 2.1 memiliki atribut branchNo, street, city, dan
postcode, masing-masing dengan domain yang sesuai. Hubungan Cabang adalah setiap
bagian dari produk Cartesian dari domain, atau kumpulan empat-tupel di mana elemen
pertama berasal dari domain BranchNumbers, yang kedua adalah dari nama domain
StreetNames, dan seterusnya. Salah satu dari empat tupel adalah
{(B005, 22 Deer Rd, London, SW1 4EH)}
atau lebih tepatnya:
{(branchNo: B005, street: 22 Deer Rd, city: London, postcode:
SW1 4EH)}

Kami menyebut ini sebagai relasi instant. Tabel Cabang adalah cara mudah untuk
menulis semua empat tupel yang membentuk relasi pada saat tertentu, yang menjelaskan
mengapa baris tabel dalam model relasional disebut "tuples". Dengan cara yang sama bahwa
suatu relasi memiliki skema, demikian juga basis data relasional.
Skema database relasional adalah Satu set skema relasi, masing-masing dengan nama
yang berbeda. Jika R1, R2, …, Rn adalah seperangkat skema relasi, maka kita dapat menulis
skema database relasional, atau hanya skema relasional, R, sebagai:
R = {R1, R2, . . ., Rn}

ISYS6508 – Database System


Properties of Relation
Properti dari Relasi adalah suatu relasi memiliki properti berikut:
1. Relasi memiliki nama yang berbeda dari semua nama relasi lainnya dalam skema
relasional.
2. setiap sel dari relasi mengandung tepat satu nilai tunggal (atom).
3. setiap atribut memiliki nama yang berbeda.
4. nilai-nilai atribut semuanya dari domain yang sama.
5. setiap tupel berbeda. tidak ada tupel duplikat.
6. urutan atribut tidak memiliki arti
7. urutan tupel tidak memiliki arti, secara teoritis. (Namun, dalam praktiknya, urutan
dapat mempengaruhi efisiensi mengakses tupel).

Sebagian besar properti yang ditentukan dari hasil relasi berasal sifat relasi
matematika:
1. Ketika kami mengambil set produk Cartesian dengan elemen sederhana, bernilai
tunggal seperti bilangan bulat maka setiap elemen di setiap tupel bernilai tunggal.
Demikian pula, setiap sel suatu relasi mengandung tepat satu nilai. Namun, hubungan
matematis tidak perlu dinormalisasi kembali. Codd memilih untuk melarang grup
yang berulang dengan menyederhanakan menggunakan model data relasional.
2. Dalam suatu relasi, nilai yang mungkin untuk suatu posisi ditentukan oleh set, atau
domain, di mana posisi tersebut didefinisikan. Dalam tabel, nilai di setiap kolom
harus berasal dari domain atribut yang sama.
3. Dalam satu set, tidak ada elemen yang diulang. Demikian pula, dalam suatu relasi,
tidak ada tupel duplikat.
4. Karena relasi adalah himpunan, urutan elemen tidak memiliki arti. Oleh karena itu,
dalam suatu relasi, urutan tupel adalah tidak material.

Namun, dalam hubungan matematis, urutan elemen dalam tuple adalah penting.
Sebagai contoh, pasangan yang dipesan (1, 2) sangat berbeda dari pasangan yang diurutkan
(2, 1). Ini bukan kasus untuk hubungan dalam model relasional, yang secara khusus
mensyaratkan bahwa urutan atribut menjadi tidak material. Alasannya adalah bahwa judul

ISYS6508 – Database System


kolom menentukan atribut mana nilai milik. Ini berarti bahwa urutan judul kolom dalam
intensi tidak material, tetapi setelah struktur relasi dipilih, urutan elemen dalam tupel ekstensi
harus sesuai dengan urutan nama atribut.

Relational Keys
Relational Keys Seperti yang dinyatakan sebelumnya, tidak ada tupel duplikat dalam
suatu relasi. Oleh karena itu, kita harus dapat mengidentifikasi satu atau lebih atribut (disebut
kunci relasional) yang secara unik mengidentifikasi setiap tupel dalam suatu relasi.
Superkey adalah Atribut, atau set atribut, yang secara unik mengidentifikasi tuple
dalam suatu relasi. Superkey secara unik mengidentifikasi setiap tupel dalam suatu relasi.
Namun, superkey mungkin berisi atribut tambahan yang tidak diperlukan untuk identifikasi
unik, dan kami tertarik untuk mengidentifikasi superkey yang hanya berisi jumlah minimum
atribut yang diperlukan untuk identifikasi unik.
Candidate key adalah Superkey sedemikian rupa sehingga tidak ada subset yang
tepat adalah superkey di dalam relasinya. Candidate Key K untuk relasi R memiliki dua
property: Keunikan dan Ketidaklancaran. Keunikan dari setiap tupel R, nilai-nilai K secara
unik mengidentifikasi tuple itu. Ketidaklancaran bahwa tidak ada bagian yang tepat dari K
yang memiliki properti unik. Sebuah instance dari relasi tidak dapat digunakan untuk
membuktikan bahwa atribut atau kombinasi atribut adalah Candidate Key. Fakta bahwa tidak
ada duplikat untuk nilai-nilai yang muncul pada saat tertentu dalam waktu tidak menjamin
bahwa duplikat tidak mungkin. Namun, kehadiran duplikat dalam suatu instance dapat
digunakan untuk menunjukkan bahwa beberapa kombinasi atribut bukanlah Candidate Key.
Mengidentifikasi Candidate Key mensyaratkan bahwa kita tahu arti "dunia nyata" dari atribut
yang terlibat sehingga kita dapat memutuskan apakah mungkin itu adalah duplikat. Hanya
dengan menggunakan informasi semantik ini kita bisa yakin bahwa kombinasi atribut adalah
Candidate Key. Sebagai contoh, dari data yang disajikan pada Gambar 2.1, kita mungkin
berpikir bahwa kunci kandidat yang sesuai untuk Staff berhubungan dengan lname, nama
keluarga karyawan. Namun, meskipun hanya ada satu nilai "White" dalam hal ini dari
hubungan Staf, anggota staf baru dengan nama keluarga "white" dapat bergabung dengan
perusahaan, membatalkan pilihan lName sebagai Candidate Key.

ISYS6508 – Database System


Primary Key adalah candidate key yang dipilih untuk mengidentifikasi tuples secara
unik dalam relasi. Karena relasi tidak memiliki tupel duplikat, selalu mungkin untuk
mengidentifikasi setiap baris secara unik. Ini berarti bahwa relasi selalu memiliki Primary
Key. Dalam kasus terburuk, seluruh rangkaian atribut bisa berfungsi sebagai Primary Key,
tetapi biasanya beberapa subset yang lebih kecil cukup untuk membedakan tuple. Candidate
Key yang tidak dipilih untuk menjadi Primary Key disebut tombol alternatif. Untuk relasi
branchNo, jika kita memilih branchNo sebagai primary key, kode pos akan menjadi
alternative key. Untuk Viewingrelation, hanya ada satu kunci kandidat, yang terdiri dari
clientNo dan propertyNo, sehingga atribut ini akan secara otomatis membentuk primary key.
Foreign Key adalah Atribut, atau set atribut, dalam satu relasi yang cocok dengan
kunci kandidat dari beberapa relasi (yang mungkin sama). Ketika atribut muncul di lebih dari
satu relasi, tampilannya biasanya mewakili hubungan antara tuple dari dua relasi. Misalnya,
pencantuman branchNo dalam hubungan branch dan staf cukup disengaja dan
menghubungkan setiap cabang dengan rincian staf yang bekerja di cabang tersebut. Dalam
hubungan branch, branchNo adalah primary key. Namun, dalam relasi staff, atribut branchNo
ada untuk mencocokkan staf dengan kantor cabang tempat mereka bekerja. Dalam relasi
staff, branchNo adalah Foreign Key. Kami mengatakan bahwa atribut branchNo dalam relasi
staff menargetkan atribut primary key branchNo sebagai home relation, Brahch. Atribut
umum ini memainkan peran penting dalam melakukan manipulasi data, seperti yang kita
bahas di bab selanjutnya.

ISYS6508 – Database System


Gambar 2.2 contoh database rental DreamHome

ISYS6508 – Database System


Integrity Constraints
Pada bagian sebelumnya, kami membahas bagian struktural dari model data
relasional. model data memiliki dua bagian lain: bagian manipulatif, mendefinisikan jenis
operasi yang diizinkan pada data, dan satu set batasan integritas, yang memastikan bahwa
data akurat. Di bagian ini, kita membahas kendala integritas relasional, dan di bab berikutnya,
kita membahas operasi manipulasi relasional.
Kami telah melihat contoh integrity constraint dalam terminologi karena setiap atribut
memiliki domain yang terkait, ada kendala (disebut domain constrain) yang membentuk
pembatasan pada himpunan nilai yang diizinkan untuk atribut relasi. Selain itu, ada dua
integrity rule, yang merupakan batasan atau pembatasan yang berlaku untuk semua database.
Dua aturan utama untuk model relasional dikenal sebagai entity integrity dan referencial
integrity. Jenis lain dari batasan integritas adalah multiplicity, Sebelum kita mendefinisikan
entity intregrity dan referencial integrity, perlu untuk memahami konsep nulls.

Nulls
Null adalah Mewakili nilai untuk atribut yang saat ini tidak diketahui atau tidak
berlaku untuk tupel ini. Nilai null dapat dianggap sebagai nilai logika "tidak diketahui". Ini
dapat berarti bahwa nilai tidak berlaku untuk tuple tertentu, atau hanya dapat berarti bahwa
tidak ada nilai yang belum disediakan. Null adalah cara untuk mengatasi data yang tidak
lengkap atau luar biasa. Namun, null tidak sama dengan nilai numerik nol atau string teks
yang diisi dengan spasi; nol dan spasi adalah nilai, tetapi null menunjukkan tidak adanya
nilai. Oleh karena itu, null harus diperlakukan berbeda dari nilai-nilai lain. Beberapa penulis
menggunakan istilah "nilai null"; Namun, karena null bukan nilai tetapi mewakili tidak
adanya nilai, istilah "nilai null" tidak lagi digunakan.
Misalnya, dalam Melihat hubungan yang ditunjukkan pada Gambar 2.2, atribut
komentar mungkin terdefinisi sampai potensi penyewa telah mengunjungi properti dan
kembali nya komentar ke agen. Tanpa nulls, menjadi perlu untuk memperkenalkan data palsu
untuk mewakili negara ini atau untuk menambahkan atribut tambahan yang mungkin tidak
berarti bagi pengguna. Dalam contoh kami, kami mungkin mencoba untuk merepresentasikan
komentar null dengan nilai 21. Alternatifnya, kami dapat menambahkan atribut baru
telahKommentBeenDitambahkan ke relasi Penayangan, yang berisi Y (Ya) jika komentar

ISYS6508 – Database System


telah disediakan, dan N (Tidak) jika tidak. Kedua pendekatan ini dapat membingungkan
pengguna.
Null dapat menyebabkan masalah implementasi, yang timbul dari fakta bahwa model
relasional didasarkan pada kalkulus predikat orde pertama, yang merupakan logika dua-nilai
atau Boolean — satu-satunya nilai yang diizinkan adalah benar atau salah. Membiarkan nulls
berarti bahwa kita harus bekerja dengan logika yang lebih tinggi-dihargai, logika seperti tiga
atau empat nilai (Codd, 1986, 1987, 1990).

Entity Intregrity
Aturan integritas pertama berlaku untuk kunci utama dari relasi dasar. Untuk saat ini,
kami mendefinisikan relasi dasar sebagai relasi yang berhubungan dengan entitas dalam
skema konseptual.
Entity Integrity adalah Dalam relasi dasar, tidak ada atribut kunci primer yang
bernilai null. Menurut definisi, kunci utama adalah pengidentifikasi minimal yang digunakan
untuk mengidentifikasi tuple secara unik. Ini berarti bahwa tidak ada bagian dari kunci utama
adalah cukup untuk memberikan identifikasi unik tupel. Jika kita membiarkan null untuk
setiap bagian dari kunci utama, kami menyiratkan bahwa tidak semua atribut yang diperlukan
untuk membedakan antara tupel, yang bertentangan dengan definisi dari kunci primer.
Sebagai contoh, sebagai branchNo adalah kunci utama dari relasi Branch, kita seharusnya
tidak dapat memasukkan tuple ke dalam relasi Branch dengan null untuk atribut branchNo.
Sebagai contoh kedua, perhatikan kunci primer gabungan dari Viewing relation, terdiri dari
nomor klien (clientNo) dan nomor properti (propertyNo). Kita seharusnya tidak dapat
memasukkan tuple ke dalam Viewing relation dengan null untuk atribut clientNo, atau null
untuk atribut propertyNo, atau nulls untuk kedua atribut.

Referential Intregrity
Aturan kedua adalah foreign key. Jika foreign key ada dalam relasi, baik nilai foreign
key harus sesuai dengan nilai candidate key dari beberapa tupel di relasinya atau nilai foreign
key harus sepenuhnya null. Misalnya, branchNo dalam relasi Staf adalah kunci asing yang
menargetkan atribut branchNo di relasi rumah, Cabang. Seharusnya tidak mungkin untuk
membuat rekor staf dengan jumlah cabang B025, misalnya, kecuali sudah ada record untuk

ISYS6508 – Database System


jumlah cabang B025 dalam hubungan Cabang. Namun, kita harus mampu menciptakan
record staf baru dengan sejumlah cabang nol untuk memungkinkan situasi di mana anggota
staf baru telah bergabung dengan perusahaan tetapi belum ditugaskan untuk kantor cabang
tertentu.

General Constraint
General Constraint adalah aturan tambahan ditentukan oleh pengguna atau
administrator database dari sebuah database yang mendefinisikan atau membatasi beberapa
aspek dari perusahaan. Pengguna juga dimungkinkan untuk menentukan batasan tambahan
yang harus dipenuhi oleh data. Sebagai contoh, jika batas atas 20 telah ditempatkan pada
jumlah staf yang dapat bekerja di kantor cabang, maka pengguna harus dapat menentukan
batasan umum ini dan mengharapkan DBMS untuk menegakkannya. Dalam hal ini, tidak
mungkin untuk menambahkan anggota staf baru di cabang tertentu ke relasi Staf jika jumlah
staf yang saat ini ditugaskan ke cabang tersebut adalah 20. Sayangnya, tingkat dukungan
untuk kendala umum bervariasi dari sistem ke sistem.

Relational Algebra
Aljabar relasional adalah bahasa teoritis dengan operasi yang bekerja pada satu atau
lebih hubungan untuk mendefinisikan relasi lain tanpa mengubah relasi asli (s). Dengan
demikian baik operand dan hasilnya adalah hubungan, sehingga output dari satu operasi dapat
menjadi input untuk operasi lain. Kemampuan ini memungkinkan ekspresi bersarang di
aljabar relasional, sama seperti kita dapat melakukan operasi aritmatika.
Aljabar relasional adalah bahasa relasi-pada-waktu (atau set) di mana semua tupel,
mungkin dari beberapa relasi, dimanipulasi dalam satu pernyataan tanpa perulangan. Ada
beberapa variasi sintaks untuk perintah aljabar relasional dan kami menggunakan notasi
simbolik umum untuk perintah dan menyajikannya secara informal.
Ada banyak variasi operasi yang termasuk dalam aljabar relasional. Codd (1972a)
awalnya mengusulkan delapan operasi, tetapi beberapa lainnya telah dikembangkan. Lima
operasi dasar dalam aljabar relasional — Seleksi, Proyeksi, Cartesian produk, Union, dan Set
perbedaan — melakukan sebagian besar operasi pengambilan data yang kami minati. Selain

ISYS6508 – Database System


itu, ada juga operasi Gabung, Persimpangan, dan Divisi, yang dapat dinyatakan dalam lima
operasi dasar. Fungsi setiap operasi diilustrasikan pada Gambar 2.3.
Operasi seleksi dan Proyeksi adalah operasi unary, karena mereka beroperasi pada
satu relasi. Operasi lainnya bekerja pada pasangan hubungan dan karena itu disebut operasi
biner. Dalam definisi berikut, biarkan r dan S menjadi dua relasi yang didefinisikan melalui
atribut 5 (a1, a2,..., AN) dan B 5 (b1, b2,..., BM), masing-masing.

ISYS6508 – Database System


Gambar 2.3 Ilustrasi yang menunjukkan fungsi dari operasi aljabar relasional.

ISYS6508 – Database System


Unary Operations
Kami memulai diskusi aljabar relasional dengan memeriksa dua operasi unary:
Seleksi dan Proyeksi.

Selection (atau Pembatasan)


σ predikat (R) adalah Operasi Seleksi bekerja pada relasi tunggal r dan
mendefinisikan relasi yang hanya berisi tupel r yang memenuhi kondisi yang ditentukan
(predikat).
Contoh
Buat daftar semua staf dengan gaji lebih besar dari £ 10.000
σsalary > 10000(Staff)

Di sini, relasi input adalah Staf dan predikatnya adalah gaji 10000. Operasi Seleksi
mendefinisikan suatu relasi yang hanya berisi Staf tuple dengan gaji lebih besar dari £
10.000. Hasil operasi ini ditunjukkan pada Gambar 2.4. Predikat yang lebih kompleks
dapat dihasilkan menggunakan operator logika Ù (AND), Ù (OR), dan ~ (NOT).

Gambar 2.4 Memilih gaji > 10.000 dari relasi staff

Projection
Пa1,a2…,an (R) adalah Operasi Proyeksi bekerja pada rel tunggal r dan mendefinisikan
relasi yang berisi subset vertikal r, mengekstraksi nilai atribut tertentu dan menghilangkan
duplikat.
Contoh
Buat daftar gaji untuk semua staf, hanya menunjukkan rincian staffNo, fName, IName, dan
gaji.
П staffNo, fName, IName, salary (staff)

ISYS6508 – Database System


Dalam contoh ini, operasi Proyeksi mendefinisikan suatu relasi yang hanya berisi staf
atribut StaffNo, fName, lName, dan Salary, dalam urutan yang ditentukan. Hasil
operasi ini ditunjukkan pada Gambar 2.5

Gambar 2.5 Memproyeksikan hubungan Staf atas atribut staffNo, fName, lName, dan salary.

Set Operations
Operasi Pemilihan dan Proyeksi mengekstraksi informasi hanya dari satu relasi. Jelas
ada kasus di mana kami ingin menggabungkan informasi dari beberapa relasi. Di sisa bagian
ini, kami memeriksa operasi biner aljabar relasional, dimulai dengan operasi set Union, Set
difference, intersection (irisan), dan produk Cartesian.

Union
R ∪ S Persatuan dua relasi r dan S mendefinisikan relasi yang berisi semua tupel r,
atau S, atau keduanya r dan S, tuple duplikat yang dihilangkan. r dan S harus kompatibel. Jika
r dan S memiliki I dan J tuples, masing-masing, persatuan mereka diperoleh dengan
menggabungkannya ke dalam satu relasi dengan tuple maksimum (I + J). Uni hanya mungkin
jika skema pertandingan dua relasi, yaitu, jika mereka memiliki jumlah atribut yang sama
dengan masing-masing pasangan sesuai atribut memiliki domain yang sama. Dengan kata
lain, hubungan harus kompatibel dengan serikat pekerja. Perhatikan bahwa nama atribut tidak
digunakan dalam mendefinisikan kompatibilitas union. Dalam beberapa kasus, operasi
Proyeksi dapat digunakan untuk membuat dua relasi yang kompatibel.
Contoh: Buat daftar semua kota di mana ada kantor cabang atau properti untuk disewakan.
П city (Branch) ∪ Пcity(PropertyFor Rent)

ISYS6508 – Database System


Untuk menghasilkan hubungan serikat-kompatibel, pertama kita menggunakan operasi
Proyeksi untuk memproyeksikan Cabang dan PropertyForRent hubungan atas tribute city,
menghilangkan duplikasi di mana diperlukan. Kami kemudian menggunakan operasi Union
untuk menggabungkan hubungan baru untuk menghasilkan hasil yang ditunjukkan pada
Gambar 2.6

Gambar 2.6 Union berdasarkan atribut kota dari Cabang dan Properti Untuk disewakan

Set Differences
R - S mendefinisikan relasi yang terdiri dari tupel yang berada dalam relasi r, tetapi
tidak dalam S. r dan S harus kompatibel.
Contoh
Daftarkan semua kota di mana ada kantor cabang tetapi tidak ada properti untuk disewakan.
П city (Branch) - Пcity(PropertyFor Rent)
Seperti pada contoh sebelumnya, kami memproduksi relasi union dengan memproyeksikan
Branch dan PropertyForRent hubungan atas atribut city. Kami kemudian menggunakan
operasi Set differences untuk menggabungkan hubungan baru untuk menghasilkan hasil yang
ditunjukkan pada Gambar 2.7

Gambar 2.7 Set Differences berdasarkan atribut kota dari relasi Branch dan PropertyForRent

ISYS6508 – Database System


Intersection (irisan)
R ∩ S mendefinisikan hubungan yang terdiri dari himpunan semua tupel yang berada
di kedua r dan S. r dan S harus union-kompatible.
Contoh
Buat daftar semua kota di mana ada kantor cabang dan setidaknya satu properti untuk disewa.
П city (Branch) ∩ Пcity(PropertyForRent)
Seperti pada contoh sebelumnya, kami memproduksi hubungan serikat-kompatibel dengan
memproyeksikan Branch dan PropertyForRent hubungan atas atribut city. Kami kemudian
menggunakan operasi irisan untuk menggabungkan hubungan baru ini untuk menghasilkan
hasil yang ditunjukkan pada Gambar 2.8

Gambar 2.8 berdasarkan atribut kota dari relasi Branch dan PropertyForRent

Perhatikan bahwa kita dapat menyatakan operasi irisan dalam hal operasi set
differences. R ∩ S = R – (R-S)

Cartesian Product
R X S mendefinisikan relasi gabungan dari setiap tuple dari relasi r dengan setiap
tuple dari relasi S. Operasi Cartesian produk mengalikan dua relasi untuk mendefinisikan
hubungan lain yang terdiri dari semua pasangan yang mungkin dari tuple dari dua relasi. Oleh
karena itu, jika satu relasi memiliki atribut I Tuples dan N dan yang lainnya memiliki atribut
J tuple dan M, relasi produk Cartesian akan berisi (I * J) tuple dengan atribut (N X M). Ada
kemungkinan bahwa dua relasi mungkin memiliki atribut dengan nama yang sama. Dalam
hal ini, nama atribut diawali dengan nama relasi untuk mempertahankan keunikan nama
atribut dalam suatu relasi.

ISYS6508 – Database System


Gambar 2.9 Cartesian produk dari relasi client dan viewing

Join Operations
Biasanya, kami ingin hanya kombinasi produk Cartesian yang memenuhi kondisi
tertentu dan jadi kami biasanya menggunakan operasi Gabung daripada operasi produk
Cartesian. Operasi Join, yang menggabungkan dua relasi untuk membentuk relasi baru,
adalah salah satu operasi penting dalam aljabar relasional. Operasi Join adalah turunan dari
Cartesian produk, yang setara dengan melakukan operasi seleksi, menggunakan predikat join
sebagai rumus pemilihan, di atas Cartesian produk dari dua hubungan operan. Join adalah
salah satu operasi yang paling sulit untuk diterapkan secara efisien dalam RDBMS dan
merupakan salah satu alasan mengapa sistem relasional memiliki masalah kinerja intrinsik.

ISYS6508 – Database System


Ada berbagai bentuk operasi Gabung, masing-masing dengan perbedaan halus,
beberapa lebih bermanfaat daripada yang lain.
1. Theta Join.
2. Equijoin (tipe tertentu dari Theta Join).
3. Natural join.
4. Outer join.
5. Semijoin

Theta Join (ϴ Join)


Theta Join adalah mendefinisikan relasi yang berisi tuples yang memenuhi predikat F
dari produk Cartesian r dan S. Predikat F adalah dari bentuk R.aiu S.bi, di mana ϴ dapat
menjadi salah satu operator pembanding (>, <, ≥, ≤, =, ≠).
Contoh
Buat daftar nama dan komentar dari semua klien yang telah melihat properti untuk disewa
(ПclientNo, fName, lName(Client)) ϴ Client.clientNo = Viewing.clientNo (ПclientNo, propertyNo, comment(Viewing))

Gambar 2.10 Cartesian Produk yang dibatasi

Natural Join (ϴ Join)


Natural Join adalah Equijoin dari dua hubungan r dan S atas semua atribut x. Satu
kemunculan setiap atribut hasilnya dihilangkan.
Contoh
Buat daftar nama dan komentar dari semua klien yang telah melihat properti untuk disewa
(ПclientNo, fName, lName(Client)) = (ПclientNo, propertyNo, comment(Viewing))

ISYS6508 – Database System


Hasil operasi ini ditunjukkan pada Gambar 2.11

Outer Join
Seringkali dalam menggabungkan dua relasi, sebuah tuple dalam satu relasi tidak
memiliki tuple yang cocok dalam relasi lainnya; dengan kata lain, tidak ada nilai yang cocok
dalam atribut join. Kita mungkin ingin tupel dari salah satu relasi muncul di hasil bahkan
ketika tidak ada nilai yang cocok dalam relasi lainnya. Ini dapat dilakukan dengan
menggunakan Outer join.
Left Outer join adalah gabungan di mana tupel dari r yang tidak memiliki nilai yang
cocok dalam atribut umum S juga termasuk dalam relasi hasil. Nilai-nilai yang hilang dalam
relasi kedua ditetapkan ke null.
Contoh
Menghasilkan laporan status pada tampilan property
(ПpropertyNo, street, city(PropertyForRent)) => Viewing
Hasilnya:

ISYS6508 – Database System


Gambar 2.12 Hasil Left Outer Join dari PropertyForRent and Viewing relations

Relasi yang dihasilkan ditunjukkan pada Gambar 2.12. Perhatikan bahwa properti
PL94, PG21, dan PG16 tidak memiliki tampilan, tetapi tupel ini masih terdapat dalam hasil
dengan nulls untuk atribut dari Viewing relation.
Secara tegas, Contoh 2.12 adalah left (natural) Outer bergabung, karena membuat
setiap tupel di relasi sebelah kiri dalam hasil. Demikian pula, ada Right Outer join yang
menyimpan setiap tupel di relasi kanan dalam hasil. Ada juga Full Outer join yang
menyimpan semua tupel di kedua relasi, padding tuples dengan nulls ketika tidak ditemukan
tupel yang cocok.

Semijoin
mendefinisikan relasi yang berisi tupel r yang berpartisipasi dalam penggabungan r
dengan S memuaskan predikat F. Operasi Semijoin melakukan penggabungan dari dua relasi
dan kemudian proyek di atas atribut operan pertama. Salah satu keuntungan dari Semijoin
adalah mengurangi jumlah tupel yang harus ditangani untuk bergabung. Ini sangat berguna
untuk menggabungkan gabungan dalam sistem terdistribusi. Kita dapat menulis ulang
Semijoin menggunakan operasi Proyeksi dan Join. Ini sebenarnya adalah Semi-Theta join.
Ada varian untuk Semi-Equi join dan Semi-Natural join.
Contoh
Daftar rincian lengkap dari semua staf yang bekerja di cabang Glasgow.
Staff  Staff branchNo = Branch branchNo(σcity = ‘Glasgow’ (Branch))

ISYS6508 – Database System


Hasilnya:

Gambar 2.13 Semijoin dari Relasa Staff and Branch.

Division Operations
Division Operations berguna untuk jenis kueri tertentu yang cukup sering terjadi
dalam aplikasi basis data. Asumsikan bahwa relasi r didefinisikan di atas atribut yang
mengatur dan relasi S didefinisikan di atas atribut yang ditetapkan B sedemikian rupa
sehingga B ⸦ A (B adalah subset dari A). Misalkan C = A - B, yaitu, C adalah himpunan
atribut r yang bukan atribut S.
R : S Division Operations mendefinisikan relasi di atas atribut C yang terdiri dari
kumpulan tupel dari r yang cocok dengan kombinasi setiap tupel dalam S.
Contoh Identifikasi semua klien yang telah melihat semua properti dengan tiga kamar

Gambar 2.14 Hasil dari division operation.

ISYS6508 – Database System


Aggregation (agregasi) and Grouping (Pengelompokan) Operations

Serta hanya mengambil tupel dan atribut tertentu dari satu atau lebih hubungan, kita
sering ingin melakukan beberapa bentuk penjumlahan atau agregasi data, mirip dengan total
di bagian bawah laporan, atau beberapa bentuk pengelompokan data, mirip dengan subtotal
dalam laporan. Operasi ini tidak dapat dilakukan dengan menggunakan operasi aljabar
relasional dasar yang dibahas sebelumnya. Namun, operasi tambahan telah diusulkan, seperti
yang kita diskusikan sekarang.

Agregation Operations
AL(R) adalah Menerapkan daftar fungsi agregat, AL, ke relasi r untuk mendefinisikan
relasi di atas daftar agregat. AL berisi satu atau lebih (<agregat fungsi>, <atribut>)
berpasangan. Fungsi agregat utama adalah:
 COUNT - mengembalikan jumlah nilai dalam atribut yang terkait.
 SUM - mengembalikan jumlah nilai dalam atribut terkait.
 AVG - menghasilkan nilai rata-rata dalam atribut terkait.
 MIN - mengembalikan nilai terkecil dalam atribut terkait.
 MAX - mengembalikan nilai terbesar dalam atribut terkait.
Contoh
a. Berapa banyak properti yang harganya lebih dari £ 350 per bulan untuk disewakan?
ρR(myCount) COUNT propertyNo (σrent > 350 (PropertyForRent))
b. Temukan gaji staf untuk nilai minimum, maksimum, dan rata-rata.
ρR(myMin, myMax, myAverage) MIN salary, MAX salary, AVERAGE salary (Staff
Hasil

Gambar 2.14 Hasil operasi Agregat: (a) menemukan jumlah properti yang sewanya lebih besar dari £
350; (B) menemukan gaji staf minimum, maksimum, dan rata-rata

ISYS6508 – Database System


Agregation Operations
GA AL(R) adalah Mengelompokkan tupel relasi r oleh atribut pengelompokan, GA, dan
kemudian menerapkan daftar fungsi agregat AL untuk menentukan relasi baru. AL berisi satu
atau lebih (<agregat_fungsi>, <atribut>) berpasangan. Relasi yang dihasilkan berisi atribut
pengelompokan, GA, bersama dengan hasil dari masing-masing fungsi agregat.
Contoh Temukan jumlah staf yang bekerja di setiap cabang dan jumlah gaji mereka
ρR(branchNo, myCount, mySum) branchNo COUNT staffNo, SUM salary (Staff)
Hasil:

Gambar 2.15 Hasil dari operasi pengelompokan untuk menemukan jumlah staf yang bekerja di
setiap cabang dan jumlah gaji mereka

ISYS6508 – Database System


Kesimpulan dari relasi algebra pada gambar 2.16

Gambar 2.16 Operasi dalam relasi algebra

ISYS6508 – Database System


SIMPULAN

Kesimpulan dari materi ini adalah:

1. Tujuan model relasional ditentukan sebagai berikut:


 Untuk memungkinkan independensi data tingkat tinggi.
 Untuk memberikan alasan substansial untuk menangani semantik data,
konsistensi, dan masalah redundansi.
 Untuk memperluas penggunaan bahasa manipulasi pada orientasi data set
2. Terminologi didalam database terdiri dari
a. Struktur data relasional
 Relasi
 Atribut
 Domain
 Tuple
 Kardinalitas
 Relasional database
 Alternative terminologi
b. Database Relasional
 Skema relasi
 Skema database relasional
c. Relational Keys
 Superkey
 Candidate Key
 Primary Key
 Foreign Key
3. Integrity Contraint
a. Nulls
b. Entity integrity
c. Referential integrity
d. General integrity
4. Relasi Algebra terdiri dari seleksi proyeksi, union, irisan, set difference, cartesian
product, operasi join, dan division operation.

ISYS6508 – Database System


DAFTAR PUSTAKA

Connolly, T., & Begg, C. (2015). Database System A Practical Approach to Design,
Implemetation, and Management 6th Edition. Pearson

ISYS6508 – Database System

Anda mungkin juga menyukai