MAGISTER TEKNIK INFORMATIKA M O D E L R E L A S I O N A...
Transcript of MAGISTER TEKNIK INFORMATIKA M O D E L R E L A S I O N A...
1
MAGISTER TEKNIK INFORMATIKA
DataBaseManagementSystem
Struktur Model Relasional Aljabar Relasional Perluasan Operasi Aljabar Relasional Tupel Kalkulus Relasional Domain Kalkulus Relasional Modifikasi Database Views
M O D E L R E L A S I O N A L
2
What is Relational Model
Biasa disebut dengan “Relational Data Model” Adalah suatu model data dimana data disimpan dalam bentuk relasi
Merupakan “Record-based Logical Models”
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
O V E R V I E W
User Customer
3
Why Study Relational Model
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
O V E R V I E W
4
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
Relasi (Relation)
Bagian 1 : Struktur Model Relasional
5
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
CustID Phone LastName
100 335-6421 Abermany
101 215-7789 Caldera
104 610-9850 Copley
100 335-6421 Abermany
107 299-9090 Jacksoni
Apakah ini Relasi ?
Ya, memenuhi syarat Relasi
Bukan Relasi, ada sel bernilai ganda
Bukan Relasi, ada 2 baris identik
Bagian 1 : Struktur Model Relasional
6
Terminologi 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
7
idfilm title year length filmType idstudio
F001 Star Wars 1977 124 color STD001
F002 Mighty Ducks 1991 104 color STD003
F003 Wayne’s World 1992 95 color STD001
JudulFilm
Atribut
Relasi
Degree=6 Kard
inaii
tas=
3
Tupel
Sinonim
Terminologi Model Relasional
idstudio studioName
STD001 Fox
STD002 Disney
STD003 Paramount
StudioFilm Primary
Key
Primary Key
Foreign Key
Bagian 1 : Struktur Model Relasional
8
Terminologi Model Relasional
Atribut Nama
Domain
Deskripsi
Domain
Definisi
Domain
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
Contoh : Domain Atribut Relasi JudulFilm
Bagian 1 : Struktur Model Relasional
9
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
Key Field (Field Kunci)
Bagian 1 : Struktur Model Relasional
10
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)
Contoh
Key Field (Field Kunci)
Bagian 1 : Struktur Model Relasional
11
Definisi Matematis Relasi
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
12
Definisi Matematis Relasi
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.
i
n
iDX
1
Bagian 1 : Struktur Model Relasional
13
idfilm title year length filmType idstudio
F001 Star Wars 1977 124 color STD001
F002 Mighty Ducks 1991 104 color STD003
F003 Wayne’s World 1992 95 color STD001
JudulFilm
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.
DiX
DxDxDxDxDxDJudulFilm
i
6
1
654321
Definisi Matematis Relasi
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.
Bagian 1 : Struktur Model Relasional
14
Skema Database 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
15
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 1 : Struktur Model Relasional
16
Overview
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
17
MS Access Examples
Query Languages
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
18
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.
19
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
20
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
21
Select () Operation
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
22
Select () Operation
Contoh :
Students
• name=“Smith”(Students)
sid name login age gpa
53666 Jones jones@cs 18 3.4
53668 Smith smith@eecs 18 3.2
53650 Smith smith@math 19 2.8
Students sid name login age gpa
53668 Smith smith@eecs 18 3.2
53650 Smith smith@math 19 2.8
• age18 gpa>3.0(Students)
Students sid name login age gpa
53666 Jones jones@cs 18 3.4
53668 Smith smith@eecs 18 3.2
Bagian 2 : Aljabar Relasional
Tentukan tupel pada Students, yang namenya = Smith
Tentukan tupel pada Students, yang agenya 18 dan gpa .3.0
23
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
sid name login age gpa
53666 Jones jones@cs 18 3.4
53668 Smith smith@eecs 18 3.2
53650 Smith smith@math 19 2.8
• name(Students) name
Jones
Smith
• name,age(Students) name age
Jones 18
Smith 18
Smith 19
Bagian 2 : Aljabar Relasional
Tampilkan kolom name pada relasi Students
Tampilkan kolom name dan age pada relasi Students
24
Operasi Majemuk
Hasil dari suatu operasi dapat menjadi input dari operasi lain
Students
sid name login age gpa
53666 Jones jones@cs 18 3.4
53668 Smith smith@eecs 18 3.2
53650 Smith smith@math 19 2.8
• age18 gpa>3.0(Students)
Students sid name login age gpa
53666 Jones jones@cs 18 3.4
53668 Smith smith@eecs 18 3.2
• sid, name(age18 gpa>3.0(Students))
Students sid name
53666 Jones
53668 Smith
Bagian 2 : Aljabar Relasional
25
Cartesian Product ()
Operation
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
sid name age gpa
53666 Jones 18 3.4
53668 Smith 18 3.2
53650 Smith 19 2.8
Consultant
cid cname
C001 James
C002 Schole
Students Consultant
sid name age gpa cid cname
53666 Jones 18 3.4 C001 James
53666 Jones 18 3.4 C002 Schole
53668 Smith 18 3.2 C001 James
53668 Smith 18 3.2 C002 Schole
53650 Smith 19 2.8 C001 James
53650 Smith 19 2.8 C002 Schole
Bagian 2 : Aljabar Relasional
26
Students
sid name age gpa
53666 Jones 18 3.4
53668 Smith 18 3.2
Consultant
cid cname stat Stcon
C001 James C1 53666
C002 Schole C1 53668
C003 Brown C2 53666
C005 Murphy C2 53668
Siapakah nama konsultan dari siswa yang bernama “Jones” ?
Ket : C1 = Konsultan Utama C2 = Asisten Konsultan
Cartesian Product ()
Operation
Bagian 2 : Aljabar Relasional
27
Students
sid name gpa
53666 Jones 3.4
53668 Smith 3.2
Consultant
cid cname stat Stcon
C001 James C1 53666
C002 Schole C1 53668
C003 Brown C2 53666
C005 Murphy C2 53668
Students Consultant
sid name gpa cid cname stat stcon
53666 Jones 3.4 C001 James C1 53666
53666 Jones 3.4 C002 Schole C1 53668
53666 Jones 3.4 C003 Brown C2 53666
53666 Jones 3.4 C005 Murphy C2 53668
53668 Smith 3.2 C001 James C1 53666
53668 Smith 3.2 C002 Schole C1 53668
53668 Smith 3.2 C003 Brown C2 53666
53668 Smith 3.2 C005 Murphy C2 53668
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
• Step-1
Cartesian Product ()
Operation
Bagian 2 : Aljabar Relasional
28
• 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 53666
53666 Jones 3.4 C002 Schole C1 53668
53666 Jones 3.4 C003 Brown C2 53666
53666 Jones 3.4 C005 Murphy C2 53668
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 53666
53666 Jones 3.4 C003 Brown C2 53666
Cartesian Product ()
Operation
Bagian 2 : Aljabar Relasional
29
• 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
Cartesian Product ()
Operation
Bagian 2 : Aljabar Relasional
30
Union () Operation
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
Consultant1
cid cname
C001 James
C002 Schole
C004 Muller
Consultant2
cid cname
C001 James
C003 Brown
C004 Muller
C005 Murphy
Consultant1 Consultant2
cid cname
C001 James
C002 Schole
C003 Brown
C004 Muller
C005 Murphy
Bagian 2 : Aljabar Relasional
31
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
BCA Pemuda 204 Agus 700000
Akan menampilkan semua nama nasabah yang mempunyai tabungan, pinjaman atau keduanya
Apakah bisa Pinjam Tabungan ?
32
Set-Difference () Operation
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
cid cname
C001 James
C002 Schole
C004 Muller
Consultant2
cid cname
C001 James
C003 Brown
C004 Muller
C005 Murphy
Consultant2 – Consultant1
cid cname
C003 Brown
C005 Murphy
Siapa asisten konsultan yang tidak merangkap sebagai konsultan utama ?
cname(Consultan2 – Consultan1)
cname
Brown
Murphy
Bagian 2 : Aljabar Relasional
33
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
BCA Pemuda 204 Agus 700000
Akan menampilkan semua nama nasabah yang mempunyai simpanan tetapi tidak mempunyai pinjaman.
34
Set-Intersection () Operation
Set intersection operation : menemukan tupel yang berada pada kedua relasi tersebut
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
cid cname
C001 James
C002 Schole
C004 Muller
Consultant2
cid cname
C001 James
C003 Brown
C004 Muller
C005 Murphy
Consultant1 Consultant2
cid cname
C001 James
C004 Muller
Siapa asisten konsultan yang merangkap sebagai konsultan utama dan asisten konsultan ?
cname(Consultan1 Consultan2)
cname
James
Muller
Bagian 2 : Aljabar Relasional
35
Set-Intersection () 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
BCA Pemuda 204 Agus 700000
Akan menampilkan semua nama nasabah yang mempunyai simpanan dan mempunyai pinjaman.
37
Latihan
Tabel-tabel dibawah ini menggambarkan model relasional pada booking penerbangan
(a) σ class='Business' (Seat)
(b) nationality (Booking)
(c) σ nationality = 'French' (Booking) X σ class = 'Business' (Seat)
(d) name(σ class = 'Business' (Booking X Seat))
(e) Airport ∪ Seat
Soal 2 Tuliskan aljabar relational untuk query-query berikut :
a. Tampilkan seluruh informasi (airportid, name, city) mengenai airport yang ada di London
b. Tampilkan ticketNo, name, nationality, flightNo, seatNo mengenai booking oleh penumpang yang kewarganegaraannya
British dan French
c. Tampilkan flightNo,depAirport,arrAirport dari semua penerbangan British Airways
d. Menampilkan seluruh infomrasi dari name, flightNo, flightCompany
e. Menampilkan flightNo,flightCompany, depAirport,arrAirport untuk seluruh penerbangan pada airport di london
f. Menampilkan ticketNo, name untuk penumpang yang keberangkatannya dari kota London
g. Menampilkan flightNo, flightCompany untuk seluruh penerbangan dari kota London ke Paris
Soal 1 Tuliskan output untuk aljabar relational berikut :