DataBaseManagementSystem MAGISTER TEKNIK INFORMATIKA M O D E L R E L A S I O N A L Struktur Model Relasional Aljabar Relasional Perluasan Operasi Aljabar Relasional Tupel Kalkulus Relasional Domain Kalkulus Relasional Modifikasi Database Views
What is Relational Model O V E R V I E W Biasa disebut dengan “Relational Data Model” Adalah suatu model data dimana data disimpan dalam bentuk relasi Merupakan “Record-based Logical Models” User Customer UserID FirstName LastName 100 Mary Abermany 101 Jerry Caldera 104 Alea Copley 107 Murugan Jacksoni CustID Phone LastName 100 335-6421, 454-9744 Abermany 101 215-7789 Caldera 107 299-9090 Jacksoni Relational Model Non-Relational Model
Why Study Relational Model O V E R V I E W Most widely used model, DB implementations are based on it Vendors : IBM, Microsoft, Oracle, Sybase, Informix, etc. Legacy systems (Warisan sistem sebelumnya) Extremely simple: only one concept (the relation/table) A good match for how we think about our data Has an elegant mathematical design theory Goals : Mendapatkan struktur data, manipulasi data dan keutuhan data yang baik
Bagian 1 : Struktur Model Relasional Relasi (Relation) Definisi : Relasi adalah tabel data 2 dimensi dengan karakteristik tertentu. Tabel 2 dimensi –layaknya suatu matriks- mempunyai Baris (rows/records), dan Kolom (columns/attribute/field) Karakteristik Relasi : Mempunyai nama yang unik. Setiap nilai harus atomik (not multivalued, not composite) Setiap baris harus unik (can’t have two rows with exactly the same values for all their fields) Atribut pada tabel (columns) harus mempunyai nama yang unik Setiap nilai isian pada kolom harus berdomain sama Order (derajat) kolom atau baris tidak penting NOTE : 1. Istilah Relasi pada model relasional tidak sama dengan relasi E-R model 2. Digunakan hanya untuk struktur lojik DB dan bukan untuk struktur fisik
Ya, memenuhi syarat Relasi Bagian 1 : Struktur Model Relasional Apakah ini Relasi ? Ya, memenuhi syarat Relasi UserID FirstName LastName 100 Mary Abermany 101 Jerry Caldera 104 Alea Copley 107 Murugan Jacksoni CustID Phone LastName 100 335-6421, 454-9744 Abermany 101 215-7789 Caldera 104 610-9850 Copley 107 299-9090 Jacksoni Bukan Relasi, ada sel bernilai ganda CustID Phone LastName 100 335-6421 Abermany 101 215-7789 Caldera 104 610-9850 Copley 107 299-9090 Jacksoni Bukan Relasi, ada 2 baris identik
Bagian 1 : Struktur Model Relasional Terminologi Model Relasional Bagian 1 : Struktur Model Relasional Relasi : Tabel yang memiliki baris dan kolom Atribut : Nama kolom pada relasi Domain : Kumpulan nilai yang mungkin (legal) untuk satu atribut atau lebih Tupel : Baris suatu relasi dan memuat hanya satu nilai per atribut Degree : Jumlah atribut pada relasi (unary, binary, ternary, n-ary) Kardinalitas : Jumlah tupel pada relasi NOTE : Domain Atribut = Atribut + Nama Domain + Deskripsi + Definisi Domain
Bagian 1 : Struktur Model Relasional Terminologi Model Relasional Sinonim StudioFilm Primary Key idstudio studioName STD001 Fox STD002 Disney STD003 Paramount Atribut Foreign Key Relasi JudulFilm Primary Key idfilm title year length filmType idstudio F001 Star Wars 1977 124 color STD001 F002 Mighty Ducks 1991 104 STD003 F003 Wayne’s World 1992 95 Tupel Kardinaiitas=3 Degree=6
Bagian 1 : Struktur Model Relasional Terminologi Model Relasional Contoh : Domain Atribut Relasi JudulFilm Atribut Nama Domain Deskripsi Definisi idfilm IdFilms Identitas film Character, size 4, range : F001 – F999 title Titles Judul film Character, size 40 year Years Tahun pembuatan film Date, format : yyyy length Lengths Panjang film dalam satuan menit Integer, 3 digit filmType FilmTypes Jenis Fim Character, size 20 idstudio IdStudios Kode Studio pembuat film Character, size 6, range : STD001 – STD999
Bagian 1 : Struktur Model Relasional Key Field (Field Kunci) Keys : Field khusus yang digunakan untuk 2 tujuan : Primary keys : are unique identifiers of the relation. This is how we can guarantee that all rows are unique. Foreign keys : identifiers that enable a dependent relation (on the many side of a relationship) to refer to its parent relation (on the one side of the relationship) Keys can be simple (a single field) or composite (more than one field) Keys usually are used as indexes to speed up the response to user queries
Bagian 1 : Struktur Model Relasional Key Field (Field Kunci) Contoh Primary Key Foreign Key (implements 1:N relationship between customer and order) Combined, these are a composite primary key (uniquely identifies the order line)…individually they are foreign keys (implement M:N relationship between order and product)
Bagian 1 : Struktur Model Relasional Definisi Matematis Relasi Bagian 1 : Struktur Model Relasional Produk Kartesius (Cartesian Product) Misal diketahui himpunan D1 dan D2, cartesian product D1 x D2 adalah himpunan semua pasangan (d1, d2) dimana d1 adalah anggota D1 dan d2 adalah anggota D2. D1 x D2 = {(d1, d2)| d1 D1, d2 D2} Contoh : D1 = {1,2} dan D2 = {3,4,5,6} maka D1 x D2 = {(1,3), (1,4), (1,5), (1,6), (2,3), (2,4), (2,5), (2,6)} Relasi Relasi adalah sembarang subset (himpunan bagian) dari D1 x D2. Contoh : R = {(1,2), (2,4)} adalah relasi. Suatu relasi dapat ditulis menggunakan sifat-sifat hubungan tertentu. Misalnya untuk R tersebut, R = {(x, y)| x D1, y D2 dan y = 2x} dan R D1 x D2
Bagian 1 : Struktur Model Relasional Definisi Matematis Relasi Bagian 1 : Struktur Model Relasional Produk Kartesius (Cartesian Product) Misal diketahui himpunan D1, D2, D3, …, Dn maka cartesian product D1 x D2 x D3 x … Dn adalah himpunan semua pasangan (d1, d2, d3, …, dn) dimana d1 anggota D1, d2 adalah anggota D2, d3 anggota D3, …, dn anggota Dn. D1 x D2 x D3 x … Dn = {(d1, d2, d3, …, dn) | d1 D1, d2 D2, d3 D3, …, dn Dn} = Relasi Relasi adalah sembarang himpunan n-tupel yang merupakan subset dari cartesian product dari n himpunan.
Bagian 1 : Struktur Model Relasional Definisi Matematis Relasi Bagian 1 : Struktur Model Relasional Untuk menunjukkan keanggotaan tupel : Jika tupel t berada pada relasi R, ditulis t R, Maka t1[idfilm] diartikan sebagai atribut idfilm pada tupel 1 dan bernilai t1[idfilm]=“F001”. Dengan cara sama, maka : t1[year]=1977, t2[length]=104, t3[idstudio]=“STD001”, t3[filmType]=“color”, Dan seterusnya. JudulFilm idfilm title year length filmType idstudio F001 Star Wars 1977 124 color STD001 F002 Mighty Ducks 1991 104 STD003 F003 Wayne’s World 1992 95 Misal D1 = {domain idfilm}, D2 = {domain title}, D3 = {domain year}, D4 = {domain length} D5 = {domain filmType}, D6 = {domain idstudio} Maka : Setiap baris pada JudulFilm memuat 5-tupel yaitu (d1, d2, d3, d4, d5) Dimana d1 D1, d2 D2, d3 D3, d4 D4, d5 D5 dan d6 D6. Secara umum : JudulFilm memuat subset dari himpunan yang beranggotakan semua baris yang mungkin.
Bagian 1 : Struktur Model Relasional Skema Database Relasional Bagian 1 : Struktur Model Relasional Database Relasional Database yang terdiri dari kumpulan relasi. Dalam praktek, database relasional berisi relasi dengan duplikasi baris. Relasi dapat dinyatakan menjadi 2 bentuk : Instance Dalam bentuk tabel, dengan baris dan kolom beserta item datanya. Schema Dalam bentuk skema lojik berisikan daftar atribut beserta domain yang sesuai. We will discuss relation schema for study relational model
Bagian 1 : Struktur Model Relasional Skema Database Contoh : Relation Instance Contoh : Relation Schema Students Students(sid, name, login, age, gpa) atau Student(sid:string, name:string, login:string, age:integer, gpa:real) Students=(sid, name, login, age, gpa) atau dengan domainnya
Bagian 2 : Aljabar Relasional Overview Bagian 2 : Aljabar Relasional Before …… Model relasional memberikan kemudahan dalam mendefinisikan struktur model data (DDL), khususnya menggunakan skema relasional dengan menyebutkan atribut dan domainnya. 1st goals for relational database Now …… How the relational model defines the means for Data Manipulation Language (DML). Need : Query Languages Most strategy : relational algebra and relational calculus.
Bagian 2 : Aljabar Relasional Query Languages MS Access Examples Query languages adalah bahasa yang digunakan oleh user untuk memperoleh informasi dari database (manipulasi data). Prosedural, user memberikan instruksi ke sistem untuk melakukan operasi pada database. Selain harus tahu data apa yang dibutuhkan, user juga harus tahu bagaimana data tersebut diperolehnya. Contoh : komersial dbase, foxbase, C++, dll model relational algebra relational Non Prosedural, user secara khusus memberikan data apa yang dibutuhkan tanpa harus tahu bagaimana cara mendapatkannya. Contoh : komersial SQL, QBE, QUEL dll model relational tupel calculus relational
Bagian 2 : Aljabar Relasional Query Languages Bagian 2 : Aljabar Relasional Bagian Bahasa Query : Data Definition Language (DDL) Bahasa yg digunakan untuk menggambarkan basis data secara keseluruhan, Operasi yang dapat dijalankan adalah membuat tabel baru, membuat indeks, mengubah tabel, menentukan struktur. Hasil kompilasi dari DDL ini adalah Kamus Data (Data Dictionary) Data Manipulation Language (DML) Bahasa untuk melakukan manipulasi dan pengambilan data pada suatu basis data, seperti : penyisipan, penghapusan dan update.
Bagian 2 : Aljabar Relasional Merupakan Procedural Query language. Terdiri dari himpunan operasi menggunakan operator yang diterapkan pada relasi. Satu atau lebih relasi (sebagai input) dapat dimanipulasi menggunakan operator-operator untuk mendapatkan hasil/informasi yang diinginkan. Agak sulit diterapkan, salah satu alasannya adalah karena prosedural. Dimana kita harus tahu tidak hanya “Data Apa” yang diinginkan, tetapi juga harus tahu “Bagaimana Mendapatkan”. Tidak digunakan pada pemrosesan database komersial dan bahkan tidak ada produk DBMS komersial yang menyediakan fasilitas aljabar relational. Walaupun begitu, aljabar relasional sangat membantu memahami bagaimana manipulasi database relasional. Selain itu, aljabar relasional juga merupakan fundamental dalam mempelajari SQL.
Bagian 2 : Aljabar Relasional Operator Dasar : Select (), Project(), Cartesian (Cross) Product (), Set-Difference (), Union () Operator Tambahan : Intersection (), Join, Division (), Rename, Assignment Sifat Operasi : Unary, hanya melibatkan satu relasi (Select, Project, Rename) Binary, melibatkan 2 relasi (Cross Product, Union, Set Difference) Operasi dapat bersifat Komposit
Bagian 2 : Aljabar Relasional Select () Operation Bagian 2 : Aljabar Relasional Select operation : melakukan seleksi terhadap tuple yang memenuhi predikat (persyaratan / kriteria) yang diinginkan. Notasi : p(R) ; p = selection predicate ; R = relasi Definisi : p(R) = {t | t R dan p(t)} Predikat dapat bersifat logika, operator : V (atau), Λ (dan) atau (not). Juga dapat bersifat pembanding, operator : >, <, , , =,
Bagian 2 : Aljabar Relasional Select () Operation Bagian 2 : Aljabar Relasional Contoh : Students sid name login age gpa 53666 Jones jones@cs 18 3.4 53668 Smith smith@eecs 3.2 53650 smith@math 19 2.8 Tentukan tupel pada Students, yang namenya = Smith Tentukan tupel pada Students, yang agenya 18 dan gpa .3.0 name=“Smith”(Students) age18 gpa>3.0(Students) Students Students sid name login age gpa 53668 Smith smith@eecs 18 3.2 53650 smith@math 19 2.8 sid name login age gpa 53666 Jones jones@cs 18 3.4 53668 Smith smith@eecs 3.2
Bagian 2 : Aljabar Relasional Project () Operation Project operation : memilih kolom/field/atribut tertentu dari relasi Notasi : K(R) ; K = 1 atau lebih kolom yang dipilih ; R = relasi Definisi : K(R) = {t[K] | t R} Jika ada tupel yang nilainya sama, diambil hanya satu tupel Students name(Students) name Jones Smith sid name login age gpa 53666 Jones jones@cs 18 3.4 53668 Smith smith@eecs 3.2 53650 smith@math 19 2.8 Tampilkan kolom name pada relasi Students name,age(Students) name age Jones 18 Smith 19 Tampilkan kolom name dan age pada relasi Students
Bagian 2 : Aljabar Relasional Operasi Majemuk Bagian 2 : Aljabar Relasional Hasil dari suatu operasi dapat menjadi input dari operasi lain Students age18 gpa>3.0(Students) sid name login age gpa 53666 Jones jones@cs 18 3.4 53668 Smith smith@eecs 3.2 53650 smith@math 19 2.8 Students sid name login age gpa 53666 Jones jones@cs 18 3.4 53668 Smith smith@eecs 3.2 sid, name(age18 gpa>3.0(Students)) Students sid name 53666 Jones 53668 Smith
Bagian 2 : Aljabar Relasional Cartesian Product () Operation Bagian 2 : Aljabar Relasional Cartesian Product relasi R1 dan R2, ditulis R1 R2, adalah relasi yang beranggotakan semua tupel (r1, r2) yang mungkin, dimana r1 R1 dan r2 R2 disebut kombinasi dari R1 dan R2 Notasi : R1 R2 = {(r1,r2)| r1 R1, r2 R2} Jika R1 mempunyai n1 tupel dan R2 mempunyai n2 tupel maka R1 R2 mempunyai (n1.n2) tupel Students Consultant Students Consultant sid name age gpa 53666 Jones 18 3.4 53668 Smith 3.2 53650 19 2.8 cid cname C001 James C002 Schole sid name age gpa cid cname 53666 Jones 18 3.4 C001 James C002 Schole 53668 Smith 3.2 53650 19 2.8
Bagian 2 : Aljabar Relasional Cartesian Product () Operation Bagian 2 : Aljabar Relasional Students Consultant sid name age gpa 53666 Jones 18 3.4 53668 Smith 3.2 cid cname stat Stcon C001 James C1 53666 C002 Schole 53668 C003 Brown C2 C005 Murphy Ket : C1 = Konsultan Utama C2 = Asisten Konsultan Siapakah nama konsultan dari siswa yang bernama “Jones” ?
Bagian 2 : Aljabar Relasional Cartesian Product () Operation Bagian 2 : Aljabar Relasional Step-1 Students Consultant sid name gpa cid cname stat stcon 53666 Jones 3.4 C001 James C1 C002 Schole 53668 C003 Brown C2 C005 Murphy Smith 3.2 Students sid name gpa 53666 Jones 3.4 53668 Smith 3.2 Consultant cid cname stat Stcon C001 James C1 53666 C002 Schole 53668 C003 Brown C2 C005 Murphy Untuk memperoleh informasi nama konsultan seorang siswa maka perlu dioperasikan Cartesian Product. Tapi relasi yang diperoleh masih belum menjawab pertanyaan karena belum jelas siapa yang membimbing Jones
Bagian 2 : Aljabar Relasional Cartesian Product () Operation Bagian 2 : Aljabar Relasional Step-2 Dari hasil tsb., untuk mendapatkan konsultan dari siswa bernama “Jones”, digunakan operasi Select. name=“Jones”(Student Consultant), hasilnya adalah : sid name gpa cid cname stat stcon 53666 Jones 3.4 C001 James C1 C002 Schole 53668 C003 Brown C2 C005 Murphy Sampai disini juga masih belum dapat dipastikan siapa konsultan Jones, sebab seorang siswa hanya dibimbing oleh sebanya-banyaknya 2 konsultan, yaitu konsultan utama dan asisten konsultan. Untuk memastikannya, digunakan operator Select dengan kondisi sid = stcon sid=stcon( name=“Jones”(Student Consultant)), hasilnya adalah : sid name gpa cid cname stat stcon 53666 Jones 3.4 C001 James C1 C003 Brown C2
Bagian 2 : Aljabar Relasional Cartesian Product () Operation Bagian 2 : Aljabar Relasional Step-3 Dari hasil tsb., untuk menampilkan hanya nama konsultan dari siswa bernama “Jones” adalah : cname(sid=stcon(name=“Jones”(Student Consultant))) cname James Brown
Bagian 2 : Aljabar Relasional Union () Operation Bagian 2 : Aljabar Relasional Union operation : menyatukan beberapa relasi sebagai satu relasi / menggabungkan hasil dari dua buah query Baris yang bernilai sama hanya diambil satu (tidak ada duplikasi) Notasi : R S Definisi : R S = {t | t R atau t S } Syarat : Jumlah atribut R = Jumlah atribut S Domain atribut ke-i dari R = Domain atribut ke-i dari S Consultant2 Consultant1 Consultant1 Consultant2 cid cname C001 James C002 Schole C004 Muller cid cname C001 James C003 Brown C004 Muller C005 Murphy cid cname C001 James C002 Schole C003 Brown C004 Muller C005 Murphy
Bagian 2 : Aljabar Relasional Union () Operation Bagian 2 : Aljabar Relasional Contoh : Pinjam Bname Loan# Cname Amount BCA Pemuda 170 Jony 1000000 BCA Majapahit 102 Hari 2000000 Tabungan Bname Loan# Cname Balance BCA Pemuda 102 Hari 400000 204 Agus 700000 Akan menampilkan semua nama nasabah yang mempunyai tabungan, pinjaman atau keduanya
Bagian 2 : Aljabar Relasional Set-Difference () Operation Bagian 2 : Aljabar Relasional It’s the last slide …. Set difference operation : menemukan tupel yang berada pada satu relasi tapi tidak berada pada relasi yang lain Notasi : R S Definisi : R S = {t | t R dan t S } Syarat : Jumlah atribut R = Jumlah atribut S Domain atribut ke-i dari R = Domain atribut ke-i dari S Consultant1 Consultant2 Siapa asisten konsultan yang tidak merangkap sebagai konsultan utama ? cid cname C001 James C002 Schole C004 Muller cid cname C001 James C003 Brown C004 Muller C005 Murphy Consultant2 – Consultant1 cid cname C003 Brown C005 Murphy cname Brown Murphy cname(Consultan2 – Consultan1)
Bagian 2 : Aljabar Relasional Set-Difference () Operation Bagian 2 : Aljabar Relasional Contoh : Pinjam Bname Loan# Cname Amount BCA Pemuda 170 Jony 1000000 BCA Majapahit 102 Hari 2000000 Tabungan Bname Loan# Cname Balance BCA Pemuda 102 Hari 400000 204 Agus 700000 Akan menampilkan semua nama nasabah yang mempunyai simpanan tetapi tidak mempunyai pinjaman.
Sampai Disini Dulu end of this session
Evolution of DB Systems Flat files - 1960s - 1980s Hierarchical – 1970s - 1990s Network – 1970s - 1990s Relational – 1980s - present Object-oriented – 1990s - present Object-relational – 1990s - present Data warehousing – 1980s - present Web-enabled – 1990s - present Record-based Logical Models Most widely used model, specially for commercial data processing applications
Network Database Model Example from CODASYL http://coronet.iicm.edu/wbtmaster/allcoursescontent/netlib/library.htm Please visit … Network Database Model Example from CODASYL
OO vs. EER Data Modeling Object Oriented EER Class Entity type Object Object Oriented Model (OO Model) OO vs. EER Data Modeling Object Oriented EER Class Entity type Object Entity instance Association Relationship Inheritance of attributes Inheritance of attributes Inheritance of behavior No representation of behavior Object-oriented modeling is frequently accomplished using the Unified Modeling Language (UML)
Example : Class Diagram and Object Diagram (a) Class diagram Closed diamond indicates composition. The room cannot exist without the building (b) Object diagram
Example : UML class diagram for a university database The following slides illustrate the ODL implementation of this UML diagram
Example : ODL Schema for university database
Example : Object Relational Model (OR Model)
Figure 1-10 An enterprise data warehouse