Lecture Notes: ISYS6508 Database System
Lecture Notes: ISYS6508 Database System
ISYS6508
Database System
Week 2
2. Terminology
3. Integrity Constraints
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.
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
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}
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
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.
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
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
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
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).
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)
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)
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
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.
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.
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:
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))
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
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
Gambar 2.15 Hasil dari operasi pengelompokan untuk menemukan jumlah staf yang bekerja di
setiap cabang dan jumlah gaji mereka
Connolly, T., & Begg, C. (2015). Database System A Practical Approach to Design,
Implemetation, and Management 6th Edition. Pearson