290 likes | 533 Views
Model Relasional. Matakuliah Desain Basis Data Oleh Aziz Musthafa , S.Kom. Mengapa perlu mempelajari Model Relasional ?. Model basis data yang paling banyak digunakan : Vendors : IBM, Informix, Microsoft, Oracle, Sybase, dll .
E N D
Model Relasional MatakuliahDesain Basis Data Oleh Aziz Musthafa, S.Kom
Mengapaperlumempelajari Model Relasional ? Model basis data yang paling banyakdigunakan: • Vendors : IBM, Informix, Microsoft, Oracle, Sybase, dll. • Yang menjadisainganberat akhir2 iniadalah model berorientasiobyek • ObjectStore, Versant, Ontos • Informix Unviersal Server, UniSQL, O2, Oracle, DB2
Definisi : Basis Data Relasional • Basis Data Relasional : himpunanrelasi • Relasi : terdiri dari dua bagian : • Instance : table denganbarisdankolom #baris = kardinalitas, #kolom/fields = degree/arity • Skema : menentukannamarelasi, plus namadantipekolom • Misal Students(sid : string, name : string, login : string, age : integer, gpa : real). • Suaturelasiadalahhimpunankolomatautupel (semuabarisnyabersifat distinct/unik).
Definisi : Basis Data Relasional • Contoh : Instance dari Relasi Students • Kardinalitas = 3, degree = 5, semuabarisbersifat distinct • Apakahsemuakolomdalam instance relasijugaharus distinct ?
Bahasa Query Relasional (Relational Query Language) • Kekuatanutamadari model relasionaladalahkesederhanaannya, dankelebihannyaadalah dalam melakukan query atas data. • Query dapatditulissecaraintuitif, dan DBMS bertanggungjawabuntukmengevaluasinyasecaraefisien. • Kunci : semantic yang tepatuntuk relational query. • Mengijinkanpengoptimasiuntukmemperluasataumengaturkembalioperasinya, danmemastikanbahwahasil yang diperolehtidakberubah.
SQL (Structured Query Language) • Dikembangkan oleh IBM (system R) pada tahun 70-an • Perludilakukanstandardisasisejakbanyakdipakaiolehbanyak vendor • Standart SQL : • SQL-86 • SQL-89 • SQL-92 • SQL-99
SQL (Structured Query Language) • Untukmenemukanpelajarberusia 18 tahundari table, dapatditulisbahasa query : • SELECT * FROM Students S WHERE S.age=18 • Untukmenemukan field names dan logins, gantibarispertama query tersebutdengan : SELECT S.name, S.login
MembuatRelasidalam SQL • Tabel Students dibuat model relasionalnyadengantipe domain padatiap field yang terspesifikasi : CREATE TABLE Students (sid : CHAR(20), name : CHAR(20), login : CHAR(10), age : INTEGER, gpa : REAL) • Contoh lain adalah table Enrolled yang berisi tentang informasi mata kuliah yang diambilolehStudents : CREATE TABLE Enrolled (sid : char(20), cid : char(20), grade : char(2))
Melakukan Query padabeberapaTabel yang Berelasi • Bilaterdapat table Enrolled yang berelasidengan table Students sebelumnyadengankey field sid : • Dan diberikan query : SELECT S.name, E.cid FROM Students S, Enrolled E WHERE S.sid=E.sid and E.grade=”A” • Maka table yang dihasilkandari query tersebutadalah : • Yaitumencari data Students (nama Students danmatakuliah yang diikutinya) yang mendapatnilai “A”.
MenghapussuatuRelasi • Perintahberikut : • DROP TABLE Students • MenghapusTabel Students. • Perintah Query berikut : • ALTER TABLE pelajar ADD COLUMN firstYearinteger • Menambahkansatu field baruyaitufirstYear; tiaptupledalam instance diperluasdenganpenambahannilainull pada field yang baru. • Satutupeltunggaldapatdisisipkandengancara : INSERT INTO Students(sid,name,login,age,gpa) VALUES (53688,’Smith’,’smith@ee’,18,3.2) • Semua tupel yang ada dapat di-delete dengan menggunakan beberapa kondisi tertentu (missal : menghapustupeldengan field name=Smith) DELETE FROM Students S WHERE S.name=’Smith’ MenambahdanMenghapusTuple
BatasanIntegritas (Integrity Constraints) • BatasanIntegritasadalahsuatukondisi yang harusbernilaibenaruntuksuatu instance dalam basis data, missal : batasan domain • Dispesifikasisaatskemadidefinisikan • Diperiksapadasaatsuaturelasidimodifikasi • Instance darirelasidisebut legal jikabisamemenuhisemuabatasanintegritas (integrity constraints) yang telahdispesifikasi • DBMS tidakmenginginkansuatu instance yang tidak legal. • Jika DBMS memeriksaIntegrity Constraints , maka data yang disimpanlebihdapatmencerminkandunianyata (real-world meaning). • Juga sangat perlu dihindari kesalahan dari entry data
BatasanKunci Primer (Primary Key Constraints) • Himpunansuatu fields merupakansuatu key darisuaturelasijika : 1.Tidak adaduatuple yang distinct yang mempunyainilai yang samauntuksemua key fields, dan 2. Key tersebuttidakmemiliki subset. • Pernyataan 2 salah ? bagaimanadengansuperkey • Jikaterdapatlebihdarisatu key untuksuaturelasi, makasalahsatudari key tersebutakandipiliholeh DBA untukmenjadi primary key. * Misal : sidadalah key untukrelasi Students. (Bagaimanadengan name), himpunan key (sid,gpa) adalahmerupakansuperkey.
Primary dan Candidate Key dalam SQL • Dari kemungkinanbanyak candidate keys (dispesifikasidenganmenggunakan UNIQUE), salahsatunyadapatdipilihmenjadiprimary key. • SeorangStudents dapatmengambilsuatu course danhanyamenerimasatunilaiuntukgrade dari course yang diikutinya. CREATE TABLE Enrolled ( sid CHAR(20), cid CHAR(20), grade CHAR(2), PRIMARY KEY (sid,cid)) CREATE TABLE Enrolled (sid CHAR(20), cid CHAR(20), grade CHAR(2), PRIMARY KEY (sid) UNIQUE(cid))
Foreign Keys, Referential Integrity • Foreign key adalahhimpunan fields dalamsaturelasi yang digunakanuntukmelakukanreferensiketuplepadarelasi yang lain (Harusberkorespondensidenganprimary key padarelasi yang kedua). Berlakuseperti logical pointer • Misalsidadalah foreign key yang direferdarirelasi Students : • Enrolled(sid : string, cid : string, grade : string)
Foreign Keys dalam SQL • HanyaStudents yang terdaftardalamrelasi Students yang diperbolehkanuntukmengikutisuatuperkuliahan (course). CREATE TABLE Enrolled (sid CHAR(20), cid CHAR(20), grade CHAR(2), PRIMARY KEY(sid,cid), FOREIGN KEY(sid) REFERENCES Students)
Mengusahakansuatu Referential Integrity • MisalpadarelasiStudents dan Enrolled; siddalam Enrolled adalah foreign key yang mereferensirelasiStudents • Apa yang harusdilakukanjikatupelEnrolled dengansuatu data Students yang tidakterdaftardalamrelasiStudents disisipkan ? (Hindarihalini). • Apa yang harusdilakukanjikatupelStudents di- hapus ? • HapusjugasemuatupelEnrolled yang mereferketupel Students yang dihapustersebut • Tidakmengijinkandilakukanpenghapusanjikatupeltersebutmereferketupelpadarelasi yang lain (alternatif lain dari yang pertama) • Ubahsiddalamtupel Enrolled menjadi default sid (alternatif yang lain lagi). • (Dalam SQL, juga dapat dilakukan setting pada tupel Enrolled yang direfer olehtupelStudents yang dihapustersebutdenganmemberikannilaikhususyaitunull, yang artinya ‘tidakdiketahui’ (unknown atau inapplicable) Samahalnyajika primary key daritupel Students dilakukanperubahan (update)..
Referential Integrity dalam SQL/92 • SQL/92 mendukungpilihanberikutuntukperintah delete dan update : • Default-nyaadalahtidakdilakukanapa-apa (pembatalanperintah delete/update). • CASCADE (juga men-delete semuatupel yang mereferketupel yang didelete). • Set nilai NULL/DEFAULT (Set nilai foreign key daritupelyangdireferensi). • Contoh : • CREATE TABLE Enrolled (sid : CHAR(20), cid : CHAR(20), grade : CHAR(2), PRIMARY KEY(sid,cid), FOREIGN KEY(sid) REFERENCES Students ON DELETE CASCADE ON UPDATE SET DEFAULT)
View • View hanyalahsebuahrelasi, yang jugabisamenyimpandefinisidarihimpunantuple. CREATE VIEW YoungActiveStudents(name,grade) AS SELECT S.name, E.grade FROM Students S, Enrolled E WHERE S.sid=E.sid and S.age<21 • View dapatdihapusdenganmenggunakanperintah DROP VIEW Perintah DROP TABLE dapatjugadigunakanjikaterdapat view pada table
DesainLogika Basis Data : Dari ER keRelasional • Himpunanentitassuatu table basis data : CREATE TABLE Employees (ssnCHAR(11), name CHAR(20), lot INTEGER, PRIMARY KEY (ssn))
HimpunanRelasikeTabel • Untukmelakukantranslasidarihimpunanrelasikerelasi, atributrelasiharustermasuk : • Key untuktiaphimpunan entity yang berpartisipasi (sebagai foreign key). • Himpunanbentukatributinimerupakansuperkeybagirelasi • Semuaatributdeskriptif CREATE TABLE Works_In( Ssn CHAR(1), Did INTEGER, Since DATE, PRIMARY KEY(ssn,did), FOREIGN KEY (ssn) REFERENCES Employees, FOREIGN KEY (did) REFERENCES Departements);
Review : Key Constraints • Tiapdepartementkebanyakanmempunyaiseorang manager yang berhubungan • dengan key constraints padaManages ranslasike model relasional ?
Translasi ER Diagram denganKey Constraints • Memetakan relasi ke dalam table : • Memisahkan table Employee dan Departments Jikatiap department memilikiseorang manager tertentu, makakitakombinasikanManages dan Departments.
Review : Participation Constraints • Apakahtiapdepartementmemilikiseorang manager ? • Jikaya, makainidisebutdengan participation constraint : yaitupartisipasidariDepartments dalam Manages yang bisabersifat total (atausebagian). • Apakahnilaidari table Departments harustampakdalamkolompada table Manages (yang memilikinilaissnbukan null)
Participation Constraint dalam SQL • Padasaatparticipation constraint yang ditangkapmelibatkansatuhimpunan entity dalamrelasi binary, tapitanpamelakukanpengurutanulanguntukmenguji constraint yang bersangkutan. CREATE TABLE Dept_Mgr(did INTEGER, dnameCHAR(20), budget REAL, ssnCHAR(11) NOT NULL, since DATE, PRIMARY KEY (did), FOREIGN KEY (ssn) REFERENCES Employees, ON DELETE NO ACTION)
Review : EntitiLemah • Entitilemah (weak entity) dapatdiidentifikasisecaraunikhanyadenganmemperhatikan primary key dari entity yang lain (owner). • Himpunan entity owner danhimpunan entity lemahharusberpartisipasidalamrelasi one-to-many (1 owner, denganbanyak entity lemah) • Himpunan entity lemahharusmempunyaipartisipasi total dalammengidentifikasihimpunanrelasiini.
TranslasiHimpunanEntitiLemah • Himpunan entity lemahdanhimpunanrelasi yang diidentifikasidapatditranslasikankedalam table tunggal. • Padasaat entity owner dihapus, semua entity lemahharusjugadihapus. CREATE TABLE Dep_Policy ( Pname CHAR(20), Age INTEGER, Cost REAL, Ssn CHAR(11) NOT NULL, PRIMARY KEY (pname,ssn), FOREIGN KEY (ssn) REFERENCES Employees, ON DELETE CASCADE)
Review : Hirarki ISA • Sebagaimana dalam C++ maupun bahasa pemrograman yang lain, suatu atribut dapatditurunkan. • Jikakitadeklarasikan A ISA B, setiap entity A jugamerupakan entity B. • Overlap constraints : Bolehkan seorang pegawai berstatus pegawai perjam (Hourly_Emps) danpegawaikontrak (Contract_Emps) ? • Covering constraints : Apakahsetiap entity Employees jugamerupakanentity Hourly_EmpsdanContract_Emps ?
Translasi Hirarki ISA ke Relasi : • Pendekatanumum : • Contoh : terdapattigarelasi yang terlibat : Employees, Hourly_EmpsdanContract_Emps. • Hourly_Emps : Tiap data employee disimpandalamEmployees. Untukpegawaidenganhitungangajiperjam, informasitambahandisimpandalamHourly_Emps (hourly_wages, hours_worked,ssn); TupelHourly_Empsharusdihapusjikatupel Employees yang berelasidengannyadihapus. • Alternatif lain : hanyaHourly_Emps dan Contract_Emps • Hourly_Emps : ssn, name, lot, hourly_wages, hours_worked • Tiap employee harusmenjadianggotasalahsatudari sub class ini
Ringkasan : Model Relasional • Tabel yang merepresentasikan data • Model yang paling banyakdigunakan • Integrity Constraints dapat dispesifikasi oleh DBA, berdasarkan aplikasi semantic. DBMS memeriksakebenarannya. • Duahalpentingpadaintegrity constraint : primary dan foreign key. • Sebagai tambahan, selalu ada domain constraint • Memilikibanyakkelebihandansifatnyaalamidalammenyatakansuatu query • Aturanuntukmentranslasikan ER kedalam model relasional.