MODEL RELASI

advertisement
BAB 3
MODEL RELASIONAL
Sampai saat ini, model relasional merupakan model data utama yang
digunakan untuk aplikasi pemrograman data komersial. Hal ini disebabkan
karena kesederhanaan pada struktur data logikanya dibandingkan model
jaringan dan model hirarkis, sehingga memudahkan pekerjaan seorang
programmer.
Pada bab ini, akan dijabarkan konsep dasar dari model relasional,
kemudian bahasa queri formal yang digunakan untuk menspesifikasikan
permintaan informasi dari pemakai; yakni aljabar relasional sebagai bentuk dasar
dari bahasa queri Structured Query Language (SQL), kalkulus relasional tupel
dan kalkulus relasional domain. Bahasa queri komersial, yakni SQL akan
dijelaskan dalam bab berikutnya.
3.1. Sejarah Singkat Model Relasional
Model relasional pertama kali diperkenalkan oleh E.F. Codd pada tahun
1970. Objektifitas dari model relasional ini adalah konsep kemandirian data,
relasi yang normal tanpa adanya kelompok pengulangan serta perluasan dari
bahasa manipulasi data yang berorientasi pada himpunan data.
Prototype sistem manajemen basis data relasional, dengan nama System
R, dibuat oleh IBM’s San Jose Research Laboratory di California pada tahun
1970-an. Kemudian mulai dikembangkan bahasa queri terstruktur yang diberi
nama Structured Query Language (SQL) dan dinyatakan sebagai standar
bahasa relasional. Selama tahun 1980-an bermunculan produk-produk sistem
manajemen basis data relasional yang komersial; contohnya DB2 dan SQL/DS
dari IBM serta ORACLE dari ORACLE Corporation.
Pada waktu bersamaan, dikembangkan prototype INGRES (Interactive
Graphics Retrieval System) dimana fokusnya hampir sama dengan System R di
California University, Berkeley. Produk komersial dari INGRES dikeluarkan oleh
Relational Technology Inc. serta Intelligence Database Machine dari Britton Lee
Inc.
Sekarang telah terdapat bermacam-macam produk komersial dari model
relasional untuk mikrokomputer maupun mainframe. Seperti misalnya, Paradox
dan dBase IV dari Borland, Access dari Microsoft, FoxPro dan R:Base dari
Microrim.
Model Relasional
29
3.2. Konsep Dasar
Model relasional merupakan model yang merepresentasikan data dalam
basis data sebagai kumpulan tabel-tabel dimana setiap tabel dinyatakan dengan
nama yang unik. Setiap baris pada tabel merepresentasikan keterhubungan
diantara sekumpulan nilai-nilai. Itu berarti sebuah tabel merupakan kumpulan
dari keterhubungan-keterhubungan ini. Hal ini menunjukkan hubungan yang
dekat antara konsep tabel dan konsep relasi pada matematika. Untuk itulah
model relasional menggunakan istilah relasi. Pada kenyataannya, sistem
manajemen basis data relasional menyimpan relasi-relasinya secara fisik pada
sebuah file. Keterkaitan antara ketiga istilah ini ditunjukkan pada tabel 3.1.
Tabel 3.1. Terminologi istilah model relasional
Formal
Istilah Alternatif 1
Istilah alternatif 2
Relasi
Tupel
Atribut
Tabel
Baris
Kolom
File
Record
Field
Pada gambar 3.1 diilustrasikan contoh mengenai relasi divisi dan relasi pegawai
yang terdapat pada database relasional mengenai suatu perusahaan X.
3.2.1. Terminologi
Pada bagian ini akan dijelaskan terminologi dari model relasional
menggunakan prinsip-prinsip teori himpunan dan logika predikat, antara lain :
1.
Relation (Relasi) merupakan sebuah tabel dengan kolom-kolom dan barisbaris. Pada model relasional, relasi digunakan untuk menyimpan
informasi mengenai objek-objek yang direpresentasikan dalam sebuah
basis data. Relasi ini digambarkan dalam bentuk tabel dua dimensi.
Contohnya mengenai informasi pegawai-pegawai yang bekerja di
perusahaan X direpresentasikan pada relasi PEGAWAI yang
mengandung informasi nomor induk pegawai, nama, alamat, gaji dan
kode divisi tempat pegawai bekerja.
2.
Relation schema (Skema relasi) adalah nama relasi yang diikuti dengan
kumpulan atribut-atributnya. Misalkan skema relasi R dinyatakan sebagai
R(A1, A2, ..., An), dimana R = relasi dan Ai = atribut ke i. Contoh :
PEGAWAI (NIP#, Nama, Alamat, Gaji, KodeDiv).
Model Relasional
30
Atribut
KODEDIV#
NAMADIV
LOKASI
Div01
Div02
Div03
Div04
Produksi
Pemasaran
Keuangan
Administrasi
Bogor
Jakarta Timur
Jakarta Barat
Jakarta Barat
Kunci utama
tupel
kunci asing
Relasi PEGAWAI
NIP#
NAMA
ALAMAT
GAJI
KODEDIV#
80100
80123
80140
80150
81000
81210
Muhammad Ali
Sasanti
Budiman
Jaharudin
Nurhayati
Amir Rusli
Jl. Depok 1 No.2
Jl. Akses No.4
Jl. Kenanga No.10
Jl. Gambir No.34
Jl. Margonda No.12
Jl. Teratai No.3
1.000.000
1.500.000
2.000.000
2.000.000
1.750.000
1.500.000
Div02
Div04
Div01
Div02
Div03
Div03
Kardinalitas relasi
derajat relasi
Gambar 3.1. Relasi PEGAWAI dan DIVISI
3.
Attribute (Atribut) merupakan kolom dari suatu relasi yang mempunyai
nama. Atribut-atribut pada suatu relasi tidak harus tersusun secara
khusus. Contohnya, pada relasi PEGAWAI mempunyai lima kolom untuk
atribut-atribut NIP#, Nama, Alamat, Gaji dan KodeDiv.
4.
Tuple (Tupel) merupakan suatu baris dari suatu relasi. Pada relasi
PEGAWAI, setiap tupel mempunyai 5 nilai, masing-masing untuk setiap
atribut NIP#, Nama, Alamat, Gaji dan KodeDiv.
5.
Domain (Domain) merupakan kumpulan nilai-nilai data yang mungkin
untuk suatu atribut dan bersifat atomik. Contoh : domain dari atribut
KodeDiv adalah {Div01, Div02, Div03, Div04}
6.
Degree of relation (Derajat dari suatu relasi) adalah banyaknya atribut
pada suatu relasi. Relasi PEGAWAI yang mempunyai 5 atribut berarti
mempunyai derajat lima, dimana setiap tupelnya mempunyai 5 nilai.
Model Relasional
31
Relasi dengan satu atribut disebut derajat unary, dua atribut disebut
binary, tiga atribut disebut ternary, selanjutnya disebut n-ary.
7.
Cardinality of relation (Kardinalitas dari suatu relasi) adalah banyaknya
tuple pada suatu relasi. Kardinalitas dari relasi ini dapat berubah-ubah
sesuai dengan perubahan yang terjadi pada relasi.
8.
Relational database (Database relasional) merupakan sekumpulan relasi
yang sudah dalam bentuk normal.
3.2.2. Karakteristik Relasi
1.
2.
3.
4.
5.
6.
7.
Suatu relasi mempunyai karakteristik-karakteristik sebagai berikut:
Setiap relasi mempunyai nama yang harus berbeda dengan relasi lainnya.
Setiap sel dari relasi mempunyai hanya satu nilai atau atomik.
Setiap atribut mempunyai nama yang berbeda.
Nilai atribut bersifat atomik dan berasal dari domain yang sama.
Atribut-atribut tidak harus tersusun secara khusus.
Setiap tupel berbeda dan tidak ada tupel yang rangkap.
Tupel tidak harus tersusun secara khusus. (secara teroritis)
3.2.3. Kunci Relasi
Setiap tupel pada suatu relasi harus dapat diidentifikasi secara unik
dengan menggunakan nilai-nilai dari atribut-atribut relasi tersebut. Berikut ini
akan dijelaskan terminologi yang digunakan pada kunci relasi :
1.
Super key (Kunci super)
Kunci super merupakan suatu atribut atau sekumpulan atribut yang
secara unik dapat mengidentifikasikan suatu tupel pada suatu relasi.
Contoh : {NIP}, {NIP, Nama}.
2.
Candidate key (Kunci kandidat)
Kunci kandidat merupakan suatu kunci super yang mempunyai sifat
unik, dapat mengidentifikasikan secara unik suatu tupel pada suatu
relasi
tidak terdapat subset nilai (jika gabungan) yang merupakan suatu
kunci super.
Contoh : NIP, Nama
3.
Primary key (Kunci utama)
Kunci utama merupakan sebuah kunci kandidat yang dipilih sebagai
atribut yang paling utama yang dapat mengidentifikasikan suatu
tupel pada suatu relasi. Contoh : NIP.
Model Relasional
32
4.
Alternate key (Kunci alternatif)
Kunci alternatif merupakan kunci kandidat yang tidak terpilih sebagai
kunci utama. Contoh : Nama.
5.
Composite key (Kunci komposit)
Kunci komposit merupakan kunci yang terdiri atas lebih dari satu atribut.
Contoh : NIP+Nama
6.
Foreign key (Kunci asing)
Kunci asing merupakan atribut pada suatu relasi yang merupakan kunci
utama pada relasi yang lain. Contoh : KodeDiv pada relasi
PEGAWAI yang merupakan kunci utama pada relasi DIVISI.
3.3. Aturan Keintegritasan
Untuk menjamin keakuratan
keintegritasan data, yakni :
1.
2.
data,
ditetapkan
beberapa
aturan
Entity integrity
Kunci utama tidak boleh bernilai null. Null artinya kosong, tidak ada nilai
atau nilai tidak sesuai dengan domain atributnya. Contohnya, atribut
NIP# sebagai kunci utama pada relasi tidak boleh kosong, karena akan
menyebabkan masalah keintegritasan data.
Referential integrity
Kunci asing harus mempunyai nilai data yang sesuai atau cocok dengan
nilai pada referensinya. Contohnya, nilai atribut KodeDiv sebagai kunci
asing pada relasi PEGAWAI harus mempunyai nilai dan tidak boleh null
sesuai dengan referansinya yakni atribut KodeDiv pada relasi DIVISI.
3.4. Bahasa Queri
Bahasa queri merupakan bahasa yang digunakan user untuk
mengekspresikan permintaan data pada basis data. Bahasa queri ini dapat
dibedakan atas :
1.
Bahasa queri formal
Bahasa queri formal merupakan dasar bahasa relasional
dengan
menggunakan simbol-simbol matematika. Bahasa queri formal ini dapat
dibedakan atas dua jenis, yakni :
a. terprosedur,
Bahasa queri formal
yang terprosedur artinya pemakai
menjabarkan bagaimana caranya untuk memanipulasi data.
Contoh : Aljabar relasional
Model Relasional
b.
2.
33
tanpa prosedur
Bahasa queri formal yang tanpa prosedur artinya pemakai
hanya menentukan data apa yang dibutuhkan tanpa perlu
menjabarkan bagaimana memperoleh data tersebut
Contoh : Kalkulus relasional tuple dan domain
Bahasa queri komersial
Bahasa queri yang dirancang menjadi program aplikasi agar pemakai
mudah menggunakannya.
Contoh :
a. Structures Query Language (SQL)
Kombinasi aljabar dan kalkulus relasional
Contoh :
Select * from PEGAWAI where KodeDiv=’Div02’;
b.
Query Language (QUEL)
Berdasarkan pada kalkulus relasional tupel
Contoh :
Retrieve (PEGAWAI.*)
Where PEGAWAI.KodeDiv=’Div02’;
c.
Query By Example (QBE)
Berdasarkan pada kalkulus relasional domain.
Contoh :
PEGAWAI
NIP
NAMA
P.
ALAMAT
GAJI
KODEDIV
Div02
3.4.1. Aljabar Relasional
Aljabar relasional merupakan bahasa teoritis yang operasi-operasinya
bekerja pada satu atau lebih dari satu relasi untuk mendefinisikan relasi-relasi
lain tanpa mengubah relasi original. Hasil dari operasi aljabar relasional berupa
relasi juga yang dapat digunakan untuk operasi lain. Operasi-operasi dasar yang
terdapat aljabar relasional antara lain: SELECT, PROJECTION, CARTESIAN
PRODUCT, UNION dan SET DIFFERENCE. Selain ini ada pula operasi
tambahan JOIN, INTERSECTION dan DIVISION.
Model Relasional
34
3.4.1.1. SELECT
Operasi SELECT ditujukan untuk memperoleh tupel-tupel dari suatu relasi
yang memenuhi predikat tertentu. Simbol yang digunakan :  (sigma).
Bentuk :
 predikat (R)
Keterangan :
 R = relasi
 Predikat pada operasi SELECT melibatkan :
 operand : konstanta/bilangan
 operator aritmatika : , , , , , 
 operator logika :  (and), (or), (not)
Contoh queri : dicari informasi mengenai pegawai yang bekerja di divisi Div02.
(Berdasarkan relasi pegawai pada divisi.)
KodeDiv=’Div02’ (PEGAWAI)
Hasil :
80100
80150
Muhammad Ali
Jaharudin
Jl. Depok 1 No.2
Jl. Gambir No.34
1.000.000
2.000.000
Div02
Div02
3.4.1.2. PROJECT
Operasi PROJECT ditujukan untuk memperoleh atribut-atribut atau kolomkolom tertentu dari suatu relasi serta membuang nilai yang sama. Simbol yang
digunakan : (pi).
Bentuk :
 kolom1, kolom2, ..., kolomn (R)
Contoh queri : tampilkan nama dan alamat pegawai
 Nama,Alamat (PEGAWAI)
Hasil :
Model Relasional
Muhammad Ali
Sasanti
Budiman
Jaharudin
Nurhayati
Amir Rusli
35
Jl. Depok 1 No.2
Jl. Akses No.4
Jl. Kenanga No.10
Jl. Gambir No.34
Jl. Margonda No.12
Jl. Teratai No.3
3.4.1.3. CARTESIAN PRODUCT
Membentuk suatu relasi dari dua relasi, misalkan R dan S, yang terdiri
dari kombinasi untuk setiap tupel pada R dengan semua tupel pada S. Simbol
operasi adalah :  (cros)
Bentuk :
RxS
Contoh queri : tampilkan kombinasi pegawai dan divisi tempat pegawai bekerja.
PEGAWAI  DIVISI
3.4.1.4. UNION
Membentuk suatu relasi yang terdiri dari tupel-tupel yang berada pada
salah satu relasi atau pada kedua relasi, dengan syarat :
- misalkan ada relasi R dan S, maka jumlah atribut relasi R dan S harus
sama
- domain dari atribut ke i dari R harus sama dengan domain dari atribut ke i
pada S.
Simbol :  (union)
Contoh queri : misalkan terdapat dua relasi pegawai di cabang A yakni
PEGAWAI-A dan di cabang B yakni PEGAWAI-B, apabila ingin diketahui
gabungannya, maka
PEGAWAI-A  PEGAWAI-B
3.4.1.5. SET DIFFERENCE
Operasi ini untuk membentuk suatu relasi yang terdiri dari tupel-tupel yang
berada pada relasi pertama dan tidak berada pada relasi kedua atau keduaduanya.
Simbol : - (minus)
Model Relasional
36
Contoh :
PEGAWAI-A  PEGAWAI-B
3.4.1.6. NATURAL JOIN
Membentuk suatu relasi dari dua relasi yang terdiri dari kombinasi yang
mungkin dari relasi-relasi tersebut. Simbol : X
Ilustrasi :
R
R X S
S
a
1
1
x
a
1
x
b
2
1
y
a
1
y
3
z
Contoh queri : dicari nama divisi dimana pegawai dengan NIP 80100 bekerja.
 NamaDiv ( NIP=’80100’ ’ (PEGAWAI X DIVISI))
Hasil :
Pemasaran
3.4.1.7. INTERSECTION
Operasi ini ditujukan untuk memperoleh tupel-tupel yang berada pada
kedua relasi R dan S. Simbol = .
Contoh :
R  S
3.4.2. Kalkulus Relasional
Pada kalkulus relasional tidak terdapat pendeskripsian pemrosesan suatu
queri seperti halnya pada aljabar relasional, akan tetapi cukup dengan
mendefinisikan apa yang diinginkan. Ada dua bentuk kalkulus relasional yakni
kalkulus relasional tupel yang pertama kalinya diusulkan oleh E.F. Codd,
Model Relasional
37
sedangkan yang kedua adalah kalkulus relasional domain yang diusulkan
Lacroix dan Pirotte.
3.4.2.1. Kalkulus Relasional Tupel
Kalkulus relasional tupel lebih berorientasi pada tupel dimana operasi ini
ditujukan untuk memperoleh tupel-tupel yang predikatnya ‘benar’.
Ekspresi : { t  P(t) }
t : tupel, P : predikat terhadap t
Bentuk-bentuk dari predikat :
1. S  R
; dimana S : variabel, R : relasi
2. S[x]  U[y] ; dimana S dan U : variabel tupel , x dan y : atribut-atribut
 : operator aritmatika
3. S[x]  C
; C : konstanta
Operator tambahan : operator penghubung yakni  (and), (or)
Contoh queri : diketahui skema relasi DOSEN (Nip, Nama, Alamat, Kota, Jkel).
Dicari informasi mengenai dosen yang berada di kota Bogor.
{ t   DOSEN  t[Kota] = ‘Bogor’ }
3.4.2.2. Kalkulus Relasional Domain
Berbeda dengan kalkulus relasional tupel, kalkulus relasional domain
berorientasi pada domain dengan menggunakan variabel-variabel domain.
Ekspresi : { <x1, x2, xn>  P <x1, x2, xn> }
Dimana xi : variabel domain, sedangkan
P : predikat terhadap x.
Bentuk-bentuk dari predikat:
1. <x1, x2, xn>  R
; R : relasi
2. x  y
3. x  C
Contoh queri : diketahui skema relasi DOSEN (Nip, Nama, Alamat, Kota, Jkel).
Dicari informasi mengenai dosen yang mempunyai NIP 87000650.
{ <n,a,l,k,j>  P <n,a,l,k,j> }  DOSEN  n=’87000650’ }
Model Relasional
38
3.4.3. Query By Example(QBE)
QBE Pertama kali dikembangkan oleh Zloof pada tahun 1975. Untuk
mengekspresikan permintaan dari pemakai dilakukan dengan memasukkan nilai
contoh ke dalam template queri yang menyerupai sebuah tabel. Operator
perintah antara lain : P. (Print), D. (Delete), I. (Insert), U. (Update).
Operator aritmatika : , , , , , 
Contoh : diketahui skema relasi PEGAWAI (NIP,Nama,Alamat,Gaji,Kddiv)
a. Ingin ditampilkan informasi pegawai dengan Nip 102871.
PEGAWAI
NIP
P.
102871
NAMA
ALAMAT
GAJI
KODEDIV
b. Ingin ditampilkan nama dan alamat pegawai yang mempunyai gaji lebih
besar
dari 500.000,PEGAWAI
NIP
NAMA
ALAMAT
P.
P.
GAJI
KODEDIV
>500000
3.4.4. Query Language (QUEL)
QUEL merupakan bahasa pendefinisian dan manipulasi data untuk
INGRES (Ineractive Graphics and Retrieval System), dikembangkan sejak tahun
1970-an.
Perintah-perintah pada Quel :
1. Pendefinisian data antara lain :
CREATE, INDEX, MODIFY, DESTROY
2. Manipulasi data antara lain :
RETRIEVE, APPEND, DELETE, REPLACE
Model Relasional
39
Sintaks RETRIEVE :
- RETRIEVE [ UNIQUE] tabel.kolom
WHERE [fungsi/ANY] kondisi
SORT BY kolom;
- RANGE OF inisial/huruf IS (nama tabel);
Contoh queri :
1. Ingin dibuat inisial dari tabel PEGAWAI dan DIVISI
RANGE OF P IS PEGAWAI, D IS DIVISI;
2.
Ingin ditampilkan nama dan alamat pegawai yang gajinya lebih besar dari
500.000,RETRIEVE (P.Nama, P.Alamat)
WHERE P.Gaji > 500000;
Download