Konsep model relasional Relasi, Attribute, Domain, dan Tuple Integrity Contraints yang harus diberlakukan Operasi-operasi update pada skema relasi dan pengaruhnya Pemetaan dari Skema ER ke Skema Relasi
Model yang paling luas penggunaannya Vendors: IBM, Informix, Microsoft, Oracle, Sybase, dll. Legacy systems (sistem-sistem warisan) dalam model-model yang lebih tua Contoh, IBM s IMS Kompetitor terkini: object-oriented model ObjectStore, Versant, Ontos Perpaduan yang muncul: object-relational model Informix Universal Server, UniSQL, O2, Oracle, DB2 Basis data relasional: satu set relasi (relations) Relasi: dibagi menjadi 2 bagian: Instance : sebuah tabel (table), dengan sejumlah baris (rows) dan kolom (columns). #Baris = kardinalitas (cardinality), #fields = degree / arity. Skema : menspesifikasikan nama tabel/relasi, ditambah nama dan tipe dari setiap kolom/field/attribute, beserta domain /data type dari setiap field. Contoh: Students(sid: string, name: string, login: string, age: integer, gpa:real). Sebuah relasi dapat dipandang sebagai satu set dari sejumlah baris atau tuples (yaitu, setiap baris harus berbeda nilainya dengan baris yang lain).
Nama Field Attributes (Fields / Kolom) Tuples (Records / Baris) sid name login age gpa 53666 Jones jones@cs 18 3.4 53688 Smith smith@eecs 18 3.2 53650 Smith smith@math 19 3.8 Kardinalitas (#Baris) = 3, degree (#Kolom) = 5, semua baris nilainya berbeda Apakah nilai setiap baris pada sebuah kolom dalam sebuah relation instance harus berbeda? Tidak (lihat pembahasan mengenai primary key constraint) Sebuah domain adalah satu set nilai yang bersifat atomic Atomic mempunyai pengertian bahwa setiap nilai dalam domain harus utuh (indivisible) Cara yang umum untuk menjelaskan sebuah domain adalah dengan cara menjelaskan tipe data yang membentuk domain tersebut, disertai nama domain, format data, dan informasi tambahan yang diperlukan Sebuah skema relasi R yang dituliskan sebagai R (A 1, A 2,., A n ) terbentuk dari sebuah nama relasi R dan satu urutan daftar attribute terurut A 1, A 2,., A n Setiap attribute Ai mempunyai satu set domain dom(ai)
Nilai dari sebuah relasi (relation instance) r untuk sebuah skema relasi R (A 1, A 2,., A n ) yang dinotasikan sebagai r(r) adalah satu set n-tuples r = {t 1, t 2,., t m } Setiap n-tuple t merupakan satu daftar (list) terurut dari n buah nilai dari t = <v 1, v 2,, v n > Setiap nilai v i (1 i n) merupakan satu elemen dari dom (A i ), atau berupa satu nilai khusus NULL (not applicable, atau unknown) Pengurutan tuples dalam sebuah relasi: Relasi didefinisikan sebagai satu set dari tuples Dalam prinsip matematika, elemen-elemen dari sebuah set tidak mempunyai urutan Pengurutan nilai dalam sebuah tuple: Sebuah n-tuple adalah sebuah daftar terurut (ordered-list) dari nilainilai attribute yang bersesuaian, sehingga urutan nilai dalam sebuah tuple (seperti halnya urutan posisi attribute dalam sebuah relasi) menjadi penting Nilai-nilai attribute dalam sebuah tuple Setiap nilai attribute dalam sebuah tuple adalah sebuah nilai yang bersifat atomic (tidak dapat dipecah menjadi komponen-komponen nilai yang lebih kecil) dan single-value (hanya boleh mempunyai satu nilai untuk sebuah attribute)
Integrity Constraints: kondisi yang hrs dipenuhi utk sembarang instance dari basis data. Terdapat 4 jenis IC: Domain constraints Key (Primary Key) constraints Entity integrity constraints Referential integrity constraints IC dispesifikasikan pada saat mendefinisikan skema dan harus diperiksa pada saat relasi dimodifikasi Sebuah instance yang legal dari sebuah relasi adalah instance yang memenuhi semua IC yang telah dispesifikasikan. DBMS seharusnya tidak membolehkan instances yang ilegal. Jika DBMS melakukan pengecekan IC, maka data yang disimpan akan menjadi lebih dapat dipercaya dalam dunia nyata. Selain itu, terjadinya kesalahan entry data juga harus dihindari! Domain constraints dalam sebuah skema relasi menjelaskan kondisi penting yang diinginkan agar setiap instance dari relasi memenuhi: Nilai-nilai yang muncul dalam sebuah kolom harus diisi dari domain yang diasosiasikan dengan kolom tersebut Dengan demikian, domain dari sebuah field essensinya adalah tipe (dalam terminologi pemrograman), dan membatasi nilai-nilai yang boleh dimunculkan dalam field Domain constraints merupakan aspek yang sangat fundamental dalam model relasional, sehingga hanya relation instances yang memenuhi domain constraints dalam suatu skema relasi yang perlu diperhatikan
Satu set fields dapat menjadi key dari sebuah relasi jika: 1. Tidak terdapat dua buah tuples yang dapat memiliki nilai yang sama pada satu set fields tersebut, dan 2. Kondisi (1) harus tidak terpenuhi untuk sembarang subset dari key Jika kondisi (2) tidak terpenuhi? disebut superkey. Jika terdapat key > 1 utk sebuah relasi, salah satu key harus dipilih untuk dijadikan sebagai primary key. Contoh, field sid dalam relasi Students adalah key (sekaligus sebagai primary key) - Satu set fields {sid, gpa} adalah sebuah superkey - Bagaimana dengan field name? Entity Integrity Constraint: sebuah primary key TIDAK boleh bernilai NULL (kosong) Foreign key (FK): Satu set fields dlm satu relasi (pertama) yang digunakan untuk mengacu (refer) ke satu set fields dalam relasi lainnya (kedua). Harus mengacu ke Primary Key dari relasi kedua. Menyerupai konsep sebuah `logical pointer. Contoh, sid dalam relasi Enrolled adalah sebuah foreign key yang mengacu ke relasi Students: Students(sid: string, name: string, login: string, age:integer, gpa: real) Enrolled(sid: string, cid: string, grade: string)
Jika semua foreign key constraints dipaksa, maka referential integrity akan diperoleh; yaitu tidak ada referensi yang menggantung (no dangling references). Dalam referential IC berlaku: Domain foreign key harus kompatibel dengan domain untuk field pada primary key dimana foreign key mengacu Nilai field(s) foreign key dalam sebuah tuple t i dalam relasi dimana FK berada HARUS mengacu ke nilai field(s) primary key dalam sebuah tuple t j dalam relasi dimana primary key berada Terdapat 3 operasi update dasar: Insert Delete Modify (atau update) Penggunaan dari operasi-operasi update tersebut harus TIDAK boleh melanggar Integrity Constraints yang telah ditentukan pada skema relasi
Operasi INSERT Menyisipan satu atau lebih tuple baru ke dalam sebuah relasi ICs yang dapat dilanggar oleh operasi ini: a. Domain constraint, jika nilai yang diberikan untuk suatu attribute tidak ada dalam domain attribute tersebut b. Key constraint, jika nilai primary key dari sebuah tuple yang akan disisipkan sudah ada dalam relasi c. Entity IC, jika primary key dari tuple yang akan disisipkan bernilai NULL d. Referential IC, jika nilai field(s) pada Foreign Key tidak mengacu pada nilai field(s) primary key yang ada pada relasi-relasi dimana FK mengacu Operasi DELETE Menghapus satu atau lebih tuple dari sebuah relasi Operasi ini HANYA dapat melanggar Referential IC, jika tuples yang akan dihapus sedang diacu oleh satu atau lebih FK dari tuples yang lain dalam database
Pilihan yang dapat dilakukan jika beberapa IC dilanggar oleh operasi DEETE: a. Menolak (reject) proses penghapusan b. Melakukan cascade/propagate deletion, yaitu menghapus semua tuples (pada beberapa relasi) yang mengcau ke tuple yang dihapus c. Membolehkan untuk melakukan perubahan-perubahan beberapa nilai attribute pada beberapa tuple yang mengacu ke tuple yang dihapus, sehingga tidak terjadi dangling reference (nilai pada FK yang menggantung) Operasi MODIFY Merubah nilai satu atau lebih attribute dalam satu atau lebih tuples dalam beberapa relasi Selama modifikasi dilakukan pada suatu attribute yang BUKAN berupa primary key atau foreign key, biasanya tidak akan menimbulkan persoalan (DBMS hanya perlu mengecek apakah nilai-nilai baru tersebut mempunyai tipe data dan domain yang valid)
Pilihan yang dpt dilakukan jika beberapa IC dilanggar oleh operasi MODIFY: a. Melakukan modifikasi nilai sebuah primary key serupa dengan proses penghapusan sebuah tuple yang diikuti dengan proses penyisipan sebuah tuple baru (karena PK digunakan sebagai pengidentifikasi dari sebuah tuple) b. Akibat keadaan (a) di atas, maka pilihan-pilihan yang dapat dilakukan pada pelanggaran operasi INSERT dan DELETE dapat dipakai agar proses perubahan tidak melanggar IC yang harus dipertahankan! c. Jika yang diubah adalah FK, maka DBMS harus melakukan pengecekan bahwa nilai-nilai baru yang diberikan mengacu pada tuple(s) yang ada dalam relasi-relasi yang dijadikan acuan Perhatikan relasi Students dan Enrolled; field sid dalam Enrolled adalah foreign key yang mengacu ke field sid dalam Students. Students(sid: string, name: string, login: string, age: integer, gpa: real) Enrolled(sid: string, cid: string, grade: string) Apa yang harus dilakukan jika terdapat sebuah tuple yang akan disisipkan (inserted) ke dlm relasi Enrolled dengan sid yang tidak ditemukan dlm relasi Students? Tolak operasi tsb. (Reject it)!
Apa yang hrs dilakukan jika sebuah tuple dalam relasi Students akan dihapus (deleted)? Salah satu tindakan alternatif berikut dpt dilakukan: Semua tuples dlm relasi Enrolled yang mengacu pada relasi Students harus juga dihapus (cascade deletion) Melarang penghapusan tuples dlm relasi Students yang diacu oleh relasi-relasi lainnya Ubah sid utk tuples dlm relasi Enrolled yang mengacu ke tuple dlm relasi Students yang dihapus ke suatu default sid atau sid lainnya (jika dimungkinkan!) Ubah sid utk tuples dlm relasi Enrolled yang mengacu ke tuple dlm relasi Students yang dihapus ke suatu nilai spesial null, yang menyatakan `unknown atau `inapplicable. (Hanya dpt dilakukan jika sid bukan merupakan bagian dari sebuah primary key!) Tindakan kombinasi penyisipan dan penghapusan hrs dilakukan jika primary key dari suatu tuple dalam relasi Students tuple akan diubah (updated).
1. Setiap entity reguler (strong, non-weak) E dalam skema ER, buat sebuah skema relasi R yang attributnya meliputi semua attribut dari entity E Kemudian, petakan key attribute pada E menjadi PK dari skema relasi R Keterlibatan FK dan relationships JANGAN dipikirkan dulu ssn name Employees lot R: EMPLOYEES (ssn, name, lot) 2. Setiap weak entity W dalam skema ER dengan owner entity E, buat sebuah skema relasi R yang attributnya meliputi semua attribut dari W Jadikan PK dari relasi-relasi yang menjadi owner dari W sebagai FK dalam R Catumkan semua attribute dari relationship dalam relasi R PK dari R dibentuk dari kombinasi antara PK dari semua relasi yang menjadi owner entity dari W dan partial key (jika ada) dari W ssn name lot cost pname age Employees Policy Dependents EMPLOYEES (ssn, name, lot) R: DEPENDENT_POLICY (ssn, pname, age, cost)
3. Utk setiap binary relationship R dengan kardinalitas 1:1 dlm skema ER, perhatikan skema-skema relasi S dan T (yang berkorespondensi dengan kedua entity yang berpartisipasi dalam R) Ambil satu relasi yang berpartisipasi total, misalkan S (untuk mereduksi nilainilai NULL dari FK yang diambil dari relasi T) Kemudian cantumkan PK dari T sebagai FK dalam S Cantumkan semua attribute dari relationship R sebagai attribute biasa dalam skema relasi S ssn name Employees lot since manages did dname T: EMPLOYEES (ssn, name, lot) Departments budget S: DEPARTMENT (did, mgrssn, dname, budget, since) 4. Utk setiap binary relationship R dengan kardinalitas 1:M (atau M:1) dlm skema ER, perhatikan skema relasi S yang berkorespondensi dengan entity pada sisi M (many). Cantumkan PK dari relasi pada sisi 1 (one) sebagai FK dalam S (sisi many) Cantumkan semua attribute dari relationship R sebagai attribute biasa dalam skema relasi S ssn name lot since did dname budget Employees Work_in Departments S: EMPLOYEES (ssn, name, lot, dno, since) DEPARTMENT (did, dname, budget)
5. Utk setiap binary relationship R dengan kardinalitas M:N dlm skema ER, buat sebuah skema relasi baru S untuk mewakili relationship R Cantumkan PK dari relasi-relasi yang mewakili entity yang berpartisipasi dalam relationship R sebagai FK dalam S Primary key dari S dibentuk dari kombinasi FK di atas Cantumkan semua attribute dari relationship R sebagai attribute biasa dalam skema relasi S ssn name Employee lot hours Works_for pnumber EMPLOYEES (ssn, name, lot) pname Project S: WORKS_FOR (essn, pno, hours) PROJECT (pnumber, pname, plocation) plocation 6. Utk setiap n-ary relationship R, buat sebuah relasi baru S untuk mewakili R. Cantumkan PK dari relasi-relasi yang mewakili entity yang berpartisipasi dalam relationship R sebagai FK dalam S Cantumkan semua attribute dari relationship R sebagai attribute biasa dalam skema relasi Primary key dari S biasanya berupa kombinasi dari semua FK yang terbentuk di atas. Tetapi jika terdapat satu entity E (atau gabungan k-entities, k < n) yang berpatisipasi tepat 1 (maks. =1), maka PK dari relasi S adalah berupa satu FK attribute dari relasi yang berkorespondensi dengan entity E (atau kombinasi FK dari relasi-relasi yagn berkorespondesni dengan gabungan k-entities) Sup# Sname Suppliers Qty Part# Contract Pname Price Parts SUPPLIERS (Sup#, Sname) PARTS (Part#, Pname, Price) DEPARTMENTS (Dep#, Dname) Departments S: CONTRACT (S#, P#, D#, qty) Dep# Dname
NIM Nama Tempat Lahir Tgl Lahir Alamat dosen-wali NIP Nama Kode Ruang Jabatan Fungsional KodeKul MAHASISWA DOSEN pembimbing-tesis NamaKul MATA-KULIAH SKS mengambil ditrawarkan Judul Nilai mengajar KELAS-KULIAH NoKelas Ruang Jam