A AT D S SI BA EM ST
Konsep model relasional
SI
–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.
–
ObjectStore, Versant, Ontos Perpaduan yang muncul: object-relational model
AT
–
A
“Legacy systems” (sistem-sistem warisan) dalam model-model yang lebih tua Contoh, IBM’s IMS Kompetitor terkini: object-oriented model
EM
BA
SI
S
D
• Informix Universal Server, UniSQL, O2, Oracle, DB2
ST
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.
SI
–
–
–
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
sid 53666 53688 53650
name login Jones jones@cs Smith smith@eecs Smith smith@math
age 18 18 19
gpa 3.4 3.2 3.8
A
Tuples (Records / Baris)
Attributes (Fields / Kolom)
EM
BA
SI
S
D
AT
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)
ST
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
SI
– –
Sebuah skema relasi R yang dituliskan sebagai R (A1, A2, …., An) terbentuk dari sebuah nama relasi R dan satu urutan daftar attribute terurut A1, A2, …., An Setiap attribute Ai mempunyai satu set domain dom(Ai)
Nilai dari sebuah relasi (relation instance) r untuk sebuah skema relasi R (A1, A2, …., An) yang dinotasikan sebagai r(R) adalah satu set n-tuples r = {t1, t2, …., tm}
A
EM
BA
SI
S
D
–
Setiap n-tuple t merupakan satu daftar (list) terurut dari n buah nilai dari t =
Setiap nilai vi (1 i n) merupakan satu elemen dari dom (Ai), atau berupa satu nilai khusus NULL (not applicable, atau unknown)
AT
–
ST
Pengurutan tuples dalam sebuah relasi: –
SI
–
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
–
AT
A
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.
Selain itu, terjadinya kesalahan entry data juga harus dihindari !
EM
BA
SI
S
–
D
Jika DBMS melakukan pengecekan IC, maka data yang disimpan akan menjadi lebih dapat dipercaya dalam dunia nyata.
SI
ST
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
EM
BA
SI
S
D
AT
A
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)
SI
ST
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:
EM
BA
SI
S
D
AT
A
– Domain foreign key harus kompatibel dengan domain untuk field pada primary key dimana foreign key mengacu – Nilai field(s) foreign key dalam sebuah tuple ti dalam relasi dimana FK berada HARUS mengacu ke nilai field(s) primary key dalam sebuah tuple tj dalam relasi dimana primary key berada
ST
Terdapat 3 operasi update dasar:
SI
– 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:
EM
BA
SI
S
D
AT
A
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
ST
Operasi DELETE
– Menghapus satu atau lebih tuple dari sebuah
SI
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:
EM
BA
SI
S
D
AT
A
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)
ST
Operasi MODIFY
– Merubah nilai satu atau lebih attribute dalam satu atau
SI
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:
EM
BA
SI
S
D
AT
A
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
SI
ST
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: –
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!)
SI
ST
–
EM
BA
SI
S
D
–
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 !)
A
–
AT
•
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
name
ssn
lot
Employees
EM
BA
SI
S
D
R: EMPLOYEES (ssn, name, lot)
A
–
Kemudian, petakan key attribute pada E menjadi PK dari skema relasi R Keterlibatan FK dan relationships JANGAN dipikirkan dulu
AT
–
ST
2. Setiap weak entity W dalam skema ER dengan owner entity E, buat sebuah skema relasi R yang attributnya meliputi semua attribut dari W –
SI
–
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
–
name ssn
lot
Employees
cost
Policy
pname
age
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)
–
name
dname
since
ssn
did
lot
budget
manages
Employees
A
–
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
AT
–
Departments
D
T: EMPLOYEES (ssn, name, lot)
EM
BA
SI
S
S: DEPARTMENT (did, mgrssn, dname, budget, since)
SI
ST
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 name
dname
since
ssn
did
lot Employees
Work_in
budget 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
–
name
pname
hours
ssn
lot
plocation
pnumber Works_for
Employee
Project
A
–
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
AT
–
D
EMPLOYEES (ssn, name, lot)
S
S: WORKS_FOR (essn, pno, hours)
EM
BA
SI
PROJECT (pnumber, pname, plocation)
ST
6. Utk setiap n-ary relationship R, buat sebuah relasi baru S untuk mewakili R. – –
SI
–
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) Qty
Sup#
Pname
Sname
Part#
Price
SUPPLIERS (Sup#, Sname) PARTS (Part#, Pname, Price)
Suppliers
Contract
Parts
DEPARTMENTS (Dep#, Dname) Departments Dep#
Dname
S: CONTRACT (S#, P#, D#, qty)
Tempat Lahir
Tgl Lahir Nama
Nama
NIP
Alamat
NIM
Kode Ruang
Jabatan Fungsional
dosen-wali
MAHASISWA
DOSEN
Judul mengambil Nilai
SKS
KodeKul
mengajar
AT
NamaKul
A
pembimbing-tesis
MATA-KULIAH
D
NoKelas
S SI BA EM ST SI
Jam
KELAS-KULIAH
ditrawarkan
Ruang