BAB 2 LANDASAN TEORI

advertisement
BAB 2 LANDASAN TEORI
2.1
Database
2.1.1
Basis Data
Menurut Connolly (2002, p14), basis data adalah kumpulan data yang
terhubung secara logis, yang dapat digunakan secara bersama, dan deskripsi dari
data ini dirancang untuk memenuhi kebutuhan. Sedangkan menurut O’Brien
(2003, p145), basis data adalah sebuah kumpulan terintegrasi dari elemen data
yang terhubung secara logis. Maka dapat disimpulkan bahwa basis data adalah
suatu kumpulan data yang memiliki pola tertentu yang logis.
2.1.2
Model Relasional
Menurut Subekti (1998, p23), dalam model basis data relasional maka
data diorganisir dalam bentuk tabel-tabel dua dimensi (seperti halnya bentuk
konvensional dari file sequential). Organisasi data dalam bentuk tabel atau
disebut juga relation, terdiri atas baris (row/tuple) yang merepresentasikan
record dan kolom (column) yang merepresentasikan field (atribut).
Berbagai keuntungan yang dimiliki oleh basis data relasional adalah:
-
Bentuknya sederhana sehingga mudah dimengerti (representasi tabel)
-
Bentuknya alami (natural) mudah bagi pengguna untuk melakukan
berbagai operasi data (insert, update, delete).
Menurut Kadir (1998, p25) model relasional merupakan model yang
paling sederhana sehingga mudah dipahami oleh pengguna, serta merupakan
yang paling populer saat ini. Model relasional ini menggunakan sekumpulan
-7-
tabel dua dimensi atau berupa baris dan atribut. Relasi dirancang sedemikian
rupa sehingga dapat menghilangkan kemubaziran data dan menggunakan kunci
tamu untuk berhubungan dengan relasi lain.
Kesimpulannya model relasional merupakan data yang ditampilkan
dalam bentuk dua dimensi yang berupa beberapa baris dan kolom. Pada tiap
relasi terdapat kunci yang menghubungkan antara satu relasi dengan relasi yang
lain.
2.1.3
Kunci Relasional
Menurut Connolly (2002, p78-79) kunci relasi sangat dibutuhkan untuk
mengidentifikasi satu atau lebih atribut (disebut kunci relasi) yang memiliki nilai
unik setiap tuple dalam relasi. Macam-macam kunci relasi:
1. Kunci Sederhana (Simple Key)
Kunci sederhana adalah suatu kunci yang dibentuk oleh satu atribut.
2. Kunci Komposit (Composite Key)
Kunci Komposit adalah kunci yang disusun berdasarkan lebih dari satu
atribut.
3. Kunci Kandidat (Candidate Key)
Kunci Kandidat adalah satu atribut atau satu set minimal atribut yang
mengidentifikasikan secara unik suatu kejadian spesifik dari entity.
4. Kunci Primer (Primary Key)
Kunci Primer adalah satu atribut atau satu set minimal atribut yang tidak
hanya mengidentifikasikan secara unik suatu kejadian spesifik, tapi juga
dapat mewakili setiap kejadian dari suatu entity.
8
5. Kunci Alternatif (Alternate Key)
Kunci Alternatif adalah kunci kandidat yang tidak dipakai sebagai kunci
primer.
6. Kunci Tamu (Foreign Key)
Kunci Tamu adalah satu atribut yang melengkapi satu hubungan
(relationship) yang menunjukkan ke induknya.
2.1.4
Struktur Data Relasional
Menurut Connolly (2002, p72-74) struktur data relasional terdiri dari:
•
Relasi
Suatu relasi adalah sebuah tabel dengan kolom-kolom dan baris-baris.
•
Atribut
Suatu atribut adalah sebuah nama kolom dari suatu relasi.
•
Domain
Sebuah domain merupakan sekumpulan nilai-nilai yang diperbolehkan bagi
satu atau lebih atribut.
•
Tuple
Tuple merupakan sebuah baris dari sebuah relasi.
•
Derajat (degree)
Derajat dari suatu relasi adalah sejumlah atribut yang terkandung di
dalamnya.
•
Kardinalitas (cardinality)
Kardinalitas dari sebuah relasi adalah sejumlah tuple yang terkandung di
dalamnya.
9
•
Relasi Basis Data
Suatu koleksi dari sejumlah relasi normalisasi dengan nama-nama relasi
yang jelas.
2.1.5
Tahapan Perancangan Basis Data
Menurut Connolly (2002, p419), proses perancangan dibagi menjadi 3
tahap utama:
1.
Perancangan basis data secara konseptual
Perancangan konseptual merupakan proses konstruksi suatu
informasi yang digunakan dalam sebuah organisasi. Fase perancangan
konseptual bermula dari pembuatan data model konseptual dari
organisasi, yang sepenuhnya bebas dari pengimplementasian rincian–
rincian seperti mengenai sasaran dari manajemen sistem basis data
(DBMS), program–program aplikasi, bahasa pemrograman, platform
perangkat keras, persoalan kinerja atau pertimbangan–pertimbangan fisik
lainnya.
2.
Perancangan Basis Data secara logikal
Perancangan basis data logikal adalah proses konstruksi suatu
informasi yang digunakan dalam sebuah perusahaan berdasarkan pada
sebuah model data yang spesifik, tetapi bebas dari pertimbangan–
pertimbangan fisik lainnya.
Fase perancangan basis data secara logikal memerlukan modal
perancangan konseptual pada sebuah model logikal, yang mana
dipengaruhi oleh model data untuk target basis data (contohnya, model
10
relasional). Model data logikal adalah sumber informasi bagi fase
perancangan fisik, menyediakan perancangan fisik yang sangat penting
untuk sebuah perancangan basis data yang efisien.
3.
Perancangan Basis Data secara fisikal
Perancangan basis data secara fisik merupakan proses pembuatan
deskripsi dari implementasi basis data pada media penyimpanan
sekunder, fase ini mendeskripsikan dasar relasi, berkas organisasi dan
indeks untuk mencapai pengaksesan data yang efisien, dan beberapa
batasan hubungan yang utuh dan tingkat keamanan.
Fase perancangan basis data secara fisik memperbolehkan
perancang membuat keputusan–keputusan berdasarkan bagaimana basis
data diimplementasikan, agar perancangan fisikal ditoleransi sebuah
untuk sebuah manajemen sistem basis data yang spesifik. Ada timbal
balik antara perancangan logical dan perancangan fisikal, karena
keputusan–keputusan
diambil
selama
perancangan
fisikal
mengembangkan kinerja yang bisa mempengaruhi model data logikal.
2.1.6
Entity-Relational Diagram (ERD)
Menurut Date (2000, p427–429), entity relational diagram (ER Diagram)
merupakan sebuah teknik untuk menggambarkan struktur logis dari sebuah basis
data dalam suatu cara bergambar. Tentu saja, popularitas dari sebuah model ER
seperti sebuah pendekatan pada perancangan basis data dapat dilengkapi lebih
untuk keberadaan tehnik diagram ER daripada untuk beberapa kasus lainnya.
11
2.2
Normalisasi
2.2.1 Pengertian Normalisasi
Normalisasi adalah sebuah teknik formal untuk menganalisis relasi
berdasarkan primary key (candidate key) dan ketergantungan fungsional
(Connolly, 2002, p386). Teknik tersebut mencakup serangkaian aturan yang
dapat digunakan untuk menguji relasi individual, sehingga sebuah basis data
dapat dinormalisasi pada derajat tertentu. Ketika syarat tidak terpenuhi, relasi
yang tidak sesuai syarat harus diuraikan ke dalam relasi yang secara individu
memenuhi syarat-syarat normalisasi. Tujuan dari proses normalisasi adalah untuk
menghilangkan redundansi data (misalnya menyimpan data yang sama di
beberapa tabel) dan memastikan ketergantungan data yang ada sudah benar
(hanya menyimpan data yang berhubungan ke dalam sebuah tabel). Normalisasi
mendukung para perancang basis data dengan memberikan serangkaian
percobaan yang dapat digunakan dalam relasi individual sehingga skema relasi
tersebut dapat dinormalisasi ke dalam bentuk yang lebih spesifik untuk
menghindari kejadian yang memungkinkan terjadinya update anomaly
(Connolly, 2002, p377). Normalisasi biasanya dilakukan dalam beberapa tahap.
Masing-masing tahap berkaitan dengan bentuk normal tertentu yang telah
diketahui propertinya. Dalam pemodelan data, sangatlah penting untuk mengenal
normalisasi tingkat pertama (1NF) yang merupakan kondisi kritis untuk
membuat relasi-relasi yang diperlukan, sedangkan bagian bentuk normal yang
lain merupakan pilihan (optional). Namun, untuk menghindari terjadinya update
anomaly, maka dalam proses normalisasi setidaknya harus sampai pada bentuk
12
normal ketiga (Connolly, 2002, p386).
2.2.2 Pengertian Anomali
Menurut Connolly (2002, p376), anomali, adalah suatu masalah yang
timbul seperti: data ganda, data hilang, tempat pemborosan memori, dan data
yang tidak konsisten akibat proses penghapusan data, pembaruan data,
pemasukan data, dan penggantian data.
Staf
NoStaf
NamaStaf
Jabatan
Gaji
NoCabang
SL21
John White
Manager
30000
B005
SG37
Ann Beach
Assistant
12000
B003
SG14
David Ford
Supervisor
18000
B003
SA9
Mary Howe
Assistant
9000
B007
SG5
Susan Brand
Manager
24000
B003
SL41
Julie Lee
Assistant
9000
B005
Cabang
NoCabang
AlamatCabang
B005
22 Deer Rd, London
B007
16 Argyll St, Aberdeen
B003
163 Main St, Glasgow
Tabel 2.1 Relasi Staf dan Cabang
13
StafCabang
noStaf
namaStaf
jabatan
Gaji
noCabang
AlamatCabang
SL21
John White
Manager
30000
B005
22 Deer Rd, London
SG37
Ann Beach
Assistant
12000
B003
163 Main St, Glasgow
SG14
David Ford
Supervisor
18000
B003
163 Main St, Glasgow
SA9
Mary Howe
Assistant
9000
B007
16 Argyll St, Aberdeen
SG5
Susan Brand
Manager
24000
B003
163 Main St, Glasgow
SL41
Julie Lee
Assistant
9000
B005
22 Deer Rd, London
Tabel 2.2 Relasi StafCabang
Menurut Subekti (1998, p22), anomali (kejanggalan) akan muncul
terhadap operasi dasar karena adanya fakta hubungan many to many (baik untuk
operasi insert, delete, maupun update):
•
Anomali insert
Ada dua jenis insertion anomaly yang dapat digambarkan dengan
menggunakan relasi pada contoh tabel 2.2 di atas.
•
Untuk memasukkan anggota baru staf ke dalam relasi StafCabang,
perincian Cabang di mana staf ditempatkan perlu dimasukkan.
Sebagai contohnya, untuk memasukkan perincian staf baru yang akan
ditempatkan pada cabang nomor B007, perincian cabang nomor B007
perlu dimasukkan dengan benar, sehingga perincian cabang konsisten
dengan nilai cabang B007 di tuple lain dalam relasi StafCabang.
Relasi yang ditunjukkan pada tabel 2.1 tidak mengalami data yang
tidak konsisten, karena hanya memasukkan nomor cabang dengan
tepat untuk masing-masing staf dalam relasi Staf. Sedangkan
14
perincian cabang nomor B007 disimpan dalam basis data sebagai
tuple tersendiri dalam relasi Cabang.
•
Untuk memasukkan perincian cabang baru yang tidak mempunyai
nomor anggota staf pada relasi StafCabang, perlu memasukkan nilai
null pada atribut staf, seperti noStaf. noStaf adalah primary key dari
relasi StafCabang, sehingga memasukkan nilai null pada noStaf akan
melanggar konsep integritas data, dan hal semacam ini tidak
diperbolehkan. Oleh karena itu, nilai null tidak bisa dimasukkan pada
noStaf ke dalam cabang baru pada relasi StafCabang. Perancangan
yang ditunjukkan pada tabel 2.1 menghindari masalah ini karena
perincian cabang yang dimasukkan pada relasi Cabang terpisah dari
perincian staf.
•
Anomali delete
Jika ingin menghapus sebuah tuple dari relasi StafCabang yang
merepresentasikan anggota staf yang ditempatkan pada cabang, maka
perincian tentang cabang juga hilang dari basis data. Sebagai contohnya,
jika ingin menghapus tuple NoStaf SA9 (Mary Howe) dari relasi
StafCabang, perincian yang berhubungan dengan cabang nomor B007 akan
hilang dari basis data. Rancangan pada relasi yang ditunjukkan pada tabel
2.1 menghindari masalah ini, karena tuple cabang disimpan secara terpisah
dari tuple staf dan hanya atribut NoCabang yang berhubungan dengan
kedua relasi tersebut. Jika ingin menghapus tuple NoStaf SA9 dari relasi
Staf, perincian cabang nomor B007 tetap tidak terpengaruh dalam relasi
15
Cabang.
•
Anomali update:
Jika ingin mengubah nilai dari salah satu atribut untuk cabang tertentu pada
relasi StafCabang, contohnya AlamatCabang dari cabang nomor B003,
tuple dari semua staf yang ditempatkan pada cabang tersebut perlu
diperbaharui (update). Jika perubahan ini tidak mengubah semua tuple pada
relasi StafCabang dengan tepat, maka basis data menjadi tidak konsisten.
Pada contoh ini, cabang nomor B003 akan mempunyai AlamatCabang yang
berbeda untuk tuple staf yang berbeda.
2.2.3
Dependensi (Ketergantungan)
Menurut Kadir (1999, p680), dependensi merupakan konsep yang
mendasari normalisasi. Dependensi menjelaskan hubungan antara atribut, atau
secara lebih khusus menjelaskan nilai suatu atribut yang menentukan nilai atribut
lainnya. Dependensi ini kelak menjadi acuan bagi pendekomposian data ke
dalam bentuk yang paling efisien.
Untuk
menentukan
cara
yang
sistematik
dalam
mengambil
ketergantungan, perlu diketahui sejumlah inference rule yang dapat digunakan
untuk mengambil ketergantungan baru dari sejumlah ketergantungan yang
diberikan.
Enam
aturan
yang
dikenal
sebagai
inference
rule
ketergantungan fungsional adalah sebagai berikut (Elmasri, 2000, p479).
1. Reflektif
: Jika A ⊇ B, maka A Æ B
2. Augmentasi
: Jika A Æ B, maka A,C Æ B,C
3. Transitif
: Jika A Æ B dan B Æ C, maka A Æ C
16
untuk
4. Dekomposisi
: Jika A Æ B,C, maka A Æ B dan A Æ C
5. Union
: Jika A Æ B dan A Æ C, maka A Æ B,C
6. Pseudotransitif : Jika A Æ B dan DB Æ E, maka AD Æ E
Misalnya skema R = (A, B, C, G, H ,I) dan sejumlah ketergantungan
fungsional F {A Æ B, A Æ C, CG Æ H, CG Æ I, B Æ H}. Dengan
menggunakan inference rule tersebut maka akan didapatkan F+ sebagai berikut :
•
A Æ H didapat dari A Æ B dan B Æ H dengan menggunakan aturan
transitif.
•
CG Æ HI didapat dari CG Æ H dan CG Æ I dengan menggunakan aturan
union.
•
AG Æ I didapat dari A Æ C dan CG Æ I dengan menggunakan aturan
pseudotransitif.
Terdapat cara lain juga untuk mendapatkan AG Æ I. Dengan
menggunakan aturan augmentasi, A Æ C menjadi AG Æ CG, kemudian
menggunakan CG Æ I dengan aturan transitif diperoleh AG Æ I.
Macam-macam dependensi:
•
Dependensi fungsional, adalah jenis dependensi yang banyak diulas pada
literatur basis data. Dependensi fungsional didefinisikan sebagai berikut:
Suatu atribut Y mempunyai dependensi fungsional terhadap atribut X jika
dan hanya jika setiap nilai X berhubungan dengan sebuah nilai Y (XÆY).
•
Dependensi fungsional sepenuhnya, dapat dijelaskan sebagai berikut:
Suatu atribut Y mempunyai dependensi fungsional penuh terhadap atribut
X jika:
17
™ Y mempunyai dependensi fungsional terhadap X.
™ Y tidak memiliki dependensi terhadap bagian dari X.
•
Dependensi total, dapat didefinsikan sebagai berikut:
Suatu atribut Y mempunyai dependensi total terhadap atribut X jika:
™ Y mempunyai dependensi fungsional terhadap X.
™ X mempunyai dependensi fungsional terhadap Y.
Dependensi ini dapat dinyatakan dengan notasi XÅÆY
•
Dependensi multivalued
Suatu kondisi di mana terdapat ketergantungan antara atribut
(contohnya, A, B, and C) di suatu relasi, di mana untuk setiap nilai dari A
terdapat sejumlah nilai dari B dan sejumlah nilai dari C. Tetapi, antara B
dan C tidak saling tergantung atau tidak ada hubungan satu sama lainnya
Terjadinya multivalued dependencies dalam suatu relasi dikarenakan
pada bentuk 1NF tidak diperbolehkan adanya repeating groups (atribut
dalam satu baris mempunyai nilai lebih dari satu). Contohnya, jika dalam
suatu relasi terdapat dua multivalued atribut, kita harus mengulang setiap
nilai dari satu atribut dengan setiap nilai dari atribut lain, untuk menjaga
konsistensinya. Hal ini menyebabkan multivalued dependencies dan
menghasilkan redundansi data.
•
Dependensi transitif, adalah sebagai berikut
Atribut Z mempunyai dependensi transitif terhadap X bila:
™ Y mempunyai dependensi fungsional terhadap X.
™ Z mempunyai dependensi fungsional terhadap Y.
18
2.2.6
Proses Normalisasi
Pertama kali dikembangkan oleh E.F.Codd (1972 b). Proses normalisasi
sering dilakukan sebagai rangkaian test terhadap suatu hubungan untuk
menentukan apakah memenuhi atau melanggar kebutuhan dari bentuk normal
yang ditentukan.
1. Bentuk normal kesatu (1NF)
Mengidentifikasikan dan membuang atribut yang berulang (repeating
groups) dan memiliki nilai yang lebih dari satu (multivalued). Grup yang
berulang (repeating groups) disini maksudnya adalah sebuah atribut atau
sekumpulan atribut dalam tabel yang mengandung banyak nilai untuk satu
kejadian.
Ada dua pendekatan yang umum digunakan untuk menghilangkan
grup yang berulang dalam tabel yang tidak normal (Connolly, 2002, p388) :
a. Menghilangkan grup yang berulang dengan memasukkan data yang
tepat pada kolom kosong dari baris yang mengandung data yang
berulang. Dengan kata lain, kolom yang kosong tersebut diisi dengan
menggandakan data yang tidak berulang (jika diperlukan). Tabel yang
dihasilkan merupakan suatu relasi yang mengandung nilai tunggal pada
irisan untuk tiap baris dan kolom, dan tabel yang dihasilkan sudah
berada dalam bentuk normal pertama.
b. Menghilangkan grup yang berulang dengan menempatkan data yang
berulang bersama dengan salinan atribut key asli. Sebuah primary key
diidentifikasi untuk relasi baru. Kadang-kadang tabel yang tidak normal
19
mengandung lebih dari satu grup yang berulang. Dalam kasus tersebut,
pendekatan ini digunakan berulang-ulang sampai tidak ada grup yang
berulang lagi.
SewaKlien
noKlien
nmKlien
noProperti
CR76
John
PG4
Kay
AlmtPro
awalSewa
akhirSewa
Sewa
noPemilik
nmPemilik
6 Lawrence
1-Jul-00
31–Aug -
350
CO40
Tina
St, Glasgow
PG16
5 Novar Dr,
01
Murphy
1-Sep-01
1-Sep-02
450
CO93
Tony Shaw
1-Jul-00
31 – Aug -
350
CO40
Tina
Glasgow
CR65
Aline
PG4
Stewart
6 Lawrence
St, Glasgow
PG36
2 Manor Rd
01
Murphy
10-Oct-00
1-Dec-01
375
CO93
Tony Shaw
1-Sep-01
1-Sep-02
450
CO93
Tony Shaw
Glasgow
PG16
5 Novar Dr,
Glasgow
Tabel 2.3 Tabel SewaKlien yang belum dinormalisasi
noKlien diidentifikasi sebagai kunci atribut dalam tabel yang tidak
normal (sewaKlien). Struktur dari grup yang berulang adalah {noProperti,
AlmtPro, awalSewa, akhirSewa, Sewa, noPemilik, nmPemilik}.
Akibatnya, terdapat beberapa nilai pada irisan untuk baris dan kolom
tertentu. Sebagai contohnya, untuk klien yang bernama John Kay terdapat
dua nilai noProperti (PG4 dan PG16). Untuk mengubah tabel yang tidak
normal ke dalam bentuk normal pertama, perlu dipastikan bahwa hanya
terdapat nilai yang tunggal pada irisan dari masing-masing baris dan
kolom. Oleh karena itu grup yang berulang harus dihilangkan.
SewaKlien
20
noKlien
nmKlien
noProperti
AlmtPro
awalSewa
akhirSewa
Sewa
noPemilik
nmPemilik
CR76
John
PG4
6 Lawrence
1-Jul-00
31 – Aug -
350
CO40
Tina
Kay
CR76
St, Glasgow
John
PG16
Kay
CR65
Aline
PG4
1-Sep-02
450
CO93
Aline
Aline
6 Lawrence
PG36
2 Manor Rd
1-Jul-00
31 – Aug -
350
CO40
01
10-Oct-00
1-Dec-01
Stewart
5 Novar Dr,
Tina
Murphy
375
CO93
Glasgow
PG16
Tony
Shaw
St, Glasgow
Stewart
CR65
1-Sep-01
Murphy
Glasgow
Stewart
CR65
5 Novar Dr,
01
Tony
Shaw
1-Sep-01
1-Sep-02
450
CO93
Glasgow
Tony
Shaw
Tabel 2.4 Relasi SewaKlien pada bentuk normal pertama
Dengan menggunakan pendekatan pertama, grup yang berulang
dihilangkan dengan memasukkan data klien yang tepat ke tiap baris. Hasil
bentuk normal pertama relasi SewaKlien dapat dilihat pada tabel 2.4.
Candidate key untuk relasi SewaKlien diidentifikasi sebagai key gabungan
(composite
key)
yang
terdiri
dari
(noKlien,
noProperti),
(noKlien,awalSewa) dan (noProperti, awalSewa). Key yang dipilih sebagai
primary key adalah (noKlien, noProperti) dan untuk lebih jelasnya, atribut
yang dipilih sebagai primary key diletakkan di sebelah kiri dalam relasi.
Atribut akhirSewa tidak tepat sebagai komponen dari candidate key karena
mungkin berisi nilai null. Relasi SewaKlien dapat didefinisikan sebagai
berikut : SewaKlien (noKlien, noProperti, nmKlien, AlmtPro, awalSewa,
akhirSewa, sewa, noPemilik, nmPemilik)
Relasi SewaKlien berada dalam bentuk normal pertama jika terdapat
nilai tunggal pada irisan dari tiap baris dan kolom. Relasi tersebut
21
mengandung data yang mendeskripsikan klien, properti yang disewakan,
dan pemilik properti secara berulang-ulang. Sebagai hasilnya, relasi
SewaKlien mengandung redundansi data. Jika relasi dalam bentuk normal
pertama diimplementasikan, maka akan terjadi update anomaly. Untuk
mengatasi hal tersebut maka relasi harus diubah ke dalam bentuk normal
kedua.
Dengan menggunakan pendekatan kedua, grup yang berulang
dihilangkan dengan menempatkan data yang berulang bersama dengan
salinan atribut key asli (noKlien) dalam relasi yang terpisah seperti yang
ditunjukkan pada tabel 2.5. Kemudian primary key dapat diidentifikasi
untuk relasi yang baru, dan hasil relasi dalam bentuk normal pertama
adalah sebagai berikut :
Klien
(noKlien, nmKlien)
PemilikPropertiSewa
(noKlien,
noProperti,
AlmtPro,awalSewa,akhirSewa, Sewa, noPemilik, nmPemilik)
Kedua relasi Klien dan PemilikPropertiSewa berada dalam bentuk
normal pertama di mana terdapat nilai tunggal pada irisan dari tiap baris
dan kolom. Relasi Klien berisi data yang mendeskripsikan klien dan relasi
PemilikPropertiSewa berisi data yang mendeskripsikan properti yang
disewa oleh klien dan pemilik properti. Relasi pada tabel 2.5 juga berisi
redundansi data yang menyebabkan terjadinya update anomaly.
PemilikPropertiSewa
22
noKlien
noProperti
CR76
PG4
AlmtPro
awalSewa
akhirSewa
Sewa
noPemilik
nmPemilik
6 Lawrence St,
1-Jul-00
31 – Aug
350
CO40
Tina
Glasgow
CR76
PG16
5
Novar
– 01
Dr,
Murphy
1-Sep-01
1-Sep-02
450
CO93
Tony Shaw
1-Jul-00
31 – Aug
350
CO40
Tina
Glasgow
CR65
PG4
6 Lawrence St,
Glasgow
CR65
PG36
2
Manor
– 01
Murphy
Rd,
10-Oct-00
1-Dec-01
375
CO93
Tony Shaw
Dr,
1-Sep-01
1-Sep-02
450
CO93
Tony Shaw
Glasgow
CR65
PG16
5
Novar
Glasgow
Klien
noKlien
nmKlien
CR76
John Kay
CR56
Aline Stewart
Tabel 2.5 Relasi Klien dan PemilikPropertiSewa pada 1NF
Suatu hubungan dinyatakan normal pertama apabila :
a. Setiap dari baris dan kolom berisi atribut yang bernilai tunggal.
b. Kunci primer telah ditentukan
c. Attribut yang mempunyai nilai banyak (multivalued) telah dihilangkan.
2. Bentuk normal kedua (2NF)
Ketergantungan Fungsional (Functional Dependency)
Bergantung fungsional dapat didefinisikan sebagai berikut : Jika A dan B
merupakan bagian atribut dari suatu hubungan, B bergantung penuh pada A,
jika dan hanya jika setiap nilai A berhubungan dengan sebuah nilai B.
23
B is Functionally
A
B
Dependent on A
Position on Functionally
staff No
Position
Dependent on staffNo
Position is not Functionally
Position
staffNo
Dependent on Position
Gambar 2.3 contoh Functional Dependency
Bergantung fungsional penuh dapat didefinisikan sebagai berikut : Jika A
dan B adalah atribut dari suatu hubungan ,
B bergantung fungsional
sepenuhnya kepada A jika B bergantung fungsional terhadap A, tetapi tidak
memiliki ketergantungan kepada subset A lainnya.
Suatu hubungan berada dalam bentuk normal kedua jika :
a. Berada pada bentuk normal pertama
b. Atribut bukan kunci primer (non primary key) telah dihilangkan atau
semua atribut bukan kunci primer bergantung fungsional sepenuhnya
kepada kunci primer.
3. Bentuk normal ketiga (3NF)
Ketergantungan Transitif (Transitive Dependency)
Ketergantungan transitif dapat didefinisikan sebagai berikut : Pada
kondisi dimana A , B dan C adalah atribut dari suatu hubungan. Jika AÆB
dan BÆC, maka C merupakan ketergantungan transitif pada A dan B
24
(dimana A tidak bergantung fungsional terhadap B atau C)
Suatu hubungan berada pada bentuk normal ketiga jika :
a. Berada pada bentuk normal pertama dan kedua
b. Setiap atribut bukan kunci tidak memiliki dependensi transitif terhadap
kunci primer.
4. Bentuk normal Boyce – Codd Normal Form (BCNF)
Pertama kali diperkenalkan oleh R.Boyce dan E.F.Codd (Codd, 1974).
Suatu hubungan berada pada bentuk normal BCNF (Boyce Codd Normal
Form) jika hanya jika setiap determinan adalah kunci kandidat. Bentuk
normal BCNF merupakan perbaikan dari bentuk normal yang ketiga. Tetapi
tidak menutup kemungkinan bahwa bentuk normal ketiga memiliki anomali,
sehingga perlu dinormalisasi lagi. Suatu relasi yang memenuhi BCNF selalu
memenuhi 3NF, tetapi belum tentu bentuk normal 3NF memenuhi bentuk
normal BCNF
Contoh (Elmasri, 2000, p495):
Asumsinya adalah setiap INSTRUCTOR hanya mengajar satu COURSE
STUDENT
COURSE
INSTRUCTOR
FD1
FD2
Tabel 2.6 Relasi Teach
Karena determinant pada FD2 bukan kunci kandidat, maka relasi ini
melanggar ketentuan BCNF. Untuk mengubahnya ke dalam bentuk BCNF,
relasi di atas harus di dekomposisi menjadi dua relasi yaitu:
25
INSTRUCTOR
COURSE
FD1
INSTRUCTOR
STUDENT
FD1
Tabel 2.7 Relasi Teach setelah didekomposisi
5. Bentuk normal keempat (4NF)
Ketergantungan nilai banyak (MultiValued Atribut)
Menurut Connolly (2002, p407-408) MultiValued Dependecy adalah
suatu kondisi di mana terdapat ketergantungan antara atribut (contohnya, A,
B, and C) di suatu relasi, di mana untuk setiap nilai dari A terdapat sejumlah
nilai dari B dan sejumlah nilai dari C. Tetapi, antara B dan C tidak saling
tergantung atau tidak ada hubungan satu sama lainnya.
Terjadinya multivalued dependencies dalam suatu relasi dikarenakan
pada bentuk 1NF tidak diperbolehkan adanya repeating groups (atribut
dalam satu baris mempunyai nilai lebih dari satu). Contohnya, jika dalam
suatu relasi terdapat dua multivalued atribut, kita harus mengulang setiap
nilai dari satu atribut dengan setiap nilai dari atribut lain, untuk menjaga
konsistensinya. Hal ini menyebabkan multivalued dependencies dan
menghasilkan redundansi data.
BranchStaffOwner
26
branchNo
sName
oName
B003
Ann Beech
Carol Farrel
B003
David Ford
Carol Farrel
B003
Ann Beech
Tina Murphy
B003
David Ford
Tina Murphy
Tabel 2.8 Relasi BranchStaffOwner
Seperti terlihat, MVD timbul karena ada dua hubungan 1:* yang independent
dalam relasi BranchStaffOwner yaitu:
branchNo
sName
branchNo
oName
Suatu relasi dikatakan sudah berada dalam 4NF jika relasi tersebut sudah
dalam BCNF dan tidak mengandung nontrivial multivalued dependencies.
Sebuah MVD A
B dalam suatu relasi R dikatakan trivial jika B
adalah subset dari A dan A U B = R. Sebuah MVD dikatakan nontrivial jika
kedua kondisi pada trivial tidak dipenuhi .Seperti pada contoh di atas
terdapat nontrivial MVD, maka untuk mengubahnya ke dalam 4NF, relasi di
atas perlu didekomposisi menjadi relasi BranchStaff dan BranchOwner.
branchNo
sName
branchNo
oName
B003
Ann Beech
B003
Carol Farrel
B003
David Ford
B003
Tina Murphy
Tabel 2.9 Relasi BranchStaffOwner setelah didekomposisi
27
Sekarang kedua relasi tersebut sudah dalam 4NF karena relasi
BranchStaff mengandung trivial MVD branchNo
sName, dan relasi
BranchOwner juga mengandung trivial MVD branchNo
oName.
6. Bentuk normal kelima ( 5NF )
Satu hubungan dikatakan berada pada bentuk kelima jika dan hanya jika
suatu hubungan tidak memiliki join dependensi. Bentuk normal keempat dan
kelima diperkenalkan oleh Fagin, hanya dipakai pada kasus–kasus khusus,
terdapat hubungan yang mengandung dependensi nilai banyak.
2.2.7
Overnormalisasi
Tabel–tabel yang memenuhi 5NF terkadang didekomposisi lagi. Prosesnya
dikenal dengan sebutan overnormalisasi. Tujuannya adalah untuk meningkatkan
kinerja, caranya adalah dengan memperlihatkan permintaan terhadap data yang
sering dilakukan. Kolom–kolom data yang sering diperlukan diletakkan pada
tabel tersendiri, terpisah dengan kolom–kolom data yang jarang diperlukan.
Alasan yang lain , tabel yang terlalu banyak memiliki kolom dapat menimbulkan
persoalan yang disebut deadlock (saling mengunci) pada pengaksesan yang
serentak (sejumlah pengguna mengakses baris yang sama).
Namun perlu juga diperlihatkan bahwa tidak selamanya pendekomposisian
terhadap tabel yang telah memenuhi 5NF dapat meningkatkan kinerja. Pada
kenyataannya tabel yang terlalu pendek (sedikit memiliki kolom) juga
menimbulkan persoalan peningkatan waktu CPU dan juga memerlukan banyak
I/O disk ketika terjadi penggabungan data (misalnya untuk penyajian laporan).
28
2.3
Algoritma Normalisasi BCNF dan 4NF
2.3.1 Algoritma Normalisasi BCNF
Algoritma yang dipakai untuk menghasilkan bentuk BCNF menurut
Elmasri (2000, p509) :
Set D := {R};
While there is a relation schema Q in D that is not in BCNF do
{
choose a relation schema Q in D that is not in BCNF;
find a functional dependency X Æ Y in Q that violates BCNF;
replace Q in D by two relation schemas (Q – Y) and (X U Y);
}
Keterangan : untuk melakukan testing bahwa suatu relation schema dalam
bentuk BCNF atau tidak dapat dilakukan dengan 2 cara :
a.
Setiap functional dependency X -> Y di Q, apabila X bukan berisi semua
attribute di Q, maka X -> Y menyalahi BCNF karena X bukan superkey
dari Q
b.
Jika suatu relational schema Q menyalahi BCNF , terdapat sepasang
attribute A dan B di Q berupa {Q – {A,B}} -> A. Dengan melihat
closure {Q – {A,B}}* untuk setiap {A,B} dari Q dan memeriksa setiap
closure terdapat A (atau B) maka kita dapat memperkirakan apakah Q
pada BCNF.
Asumsi : tabel-tabel masukan sudah dalam bentuk 3NF. Adapun algoritma
untuk menghasilkan bentuk 1NF - 3NF ::
29
Set G := F
Replace each functional dependency X -> {A1,A2,…,An} in G by the n functional
dependencies X -> A1, X -> A2, …, X -> An.
For each functional dependency X -> A in G
For each attribute B that is an element of X
If ((G – {X->A}) U {(X – {B}) -> A}) is equivalent to G
Then replace X -> A with (X – {B}) -> A in G
For each remaining functional dependency X -> A in G
If (G – {X – A}) is equivalent to G
Then remove X -> A from G
For each left hand side X of a functional dependency that appears in G create a
relation schema in D with attributes { X U {A1} U {A2} … U {An}}, where X ->
A1 , X -> A2, … , X -> Ak are only dependencies in G with X as left-hand-side (
X is the key of this relation ).
If none of the relation schemas in D contains a key of R, then create one more
relation schema in D that contains attributes that form a key of R.
2.3.2 Algoritma Normalisasi 4NF
Algoritma yang dipakai untuk menghasilkan bentuk 4NF menurut
Elmasri (2000, p519) :
Set D := {R};
While there is a relation schema Q in D that is not in 4NF do
{
choose a relation schema Q in D that is not in 4NF;
30
find a nontrivial MVD X Æ Y in Q that violates 4NF;
replace Q in D by two relation schemas (Q – Y) and (X U Y);
}
Asumsi : tabel-tabel masukan sudah dalam bentuk BCNF.
2.4
Perancangan Piranti Lunak
Menurut Pressman (2001, p6), yang dimaksud dengan piranti lunak
adalah (1) kumpulan instruksi (program komputer) yang jika dieksekusi akan
menyediakan fungsi dan dayaguna yang diinginkan, (2) kumpulan struktur data
yang memungkinkan program untuk memanipulasi informasi dengan memadai,
dan (3) kumpulan dokumen yang menggambarkan operasi dan penggunaan
program. Dalam perancangan piranti lunak terdapat beberapa macam model
seperti linier , spiral , incremental , dll. Penyusun memilih model waterfall (
linier ) karena langkah – langkahnya berurutan dan sistematis.
System/information
engineering
analysis
design
code
test
Gambar 2.2 Model linear sekuensial
Langkah-langkah dalam model waterfall adalah sebagai berikut:
1.
Rekayasa dan penyusunan sistem/informasi
Tahap ini dimulai dengan menyusun kebutuhan (requirement)
31
untuk
seluruh elemen sistem dan kemudian mengalokasikan beberapa
subset dari kebutuhan tersebut pada piranti lunak (software). Proses ini
sangat penting ketika piranti lunak harus berinteraksi dengan elemen
yang lainnya seperti, perangkat keras (hardware), manusia, dan basis data
(database).
2.
Analisis kebutuhan piranti lunak
Proses pengumpulan kebutuhan pada tahap ini lebih diintensifkan
dan difokuskan pada piranti lunak Pengembang piranti lunak harus
memahami tentang fungsi yang dibutuhkan, perilaku, dayaguna dan
tampilan layar dari piranti lunak yang akan dikembangkan.
3.
Perancangan (Design)
Perancangan piranti lunak sesungguhnya merupakan proses
bertahap yang berfokus pada empat atribut dari sebuah program: struktur
data, arsitektur piranti lunak, representasi tampilan layar, dan detail
prosedural (algoritmik). Proses desain menerjemahkan kebutuhan
menjadi suatu representasi dari piranti lunak yang dapat diakses sebelum
pengkodean dimulai.
4.
Pembuatan kode (code generation)
Proses penerjemahan bentuk desain menjadi bentuk yang dapat
dibaca oleh mesin.
5.
Pengujian (testing)
Pengujian program dilakukan setelah kode dihasilkan. Proses
pengujian difokuskan pada bagian internal software secara logis,
memastikan bahwa setiap pernyataan (statement) telah diuji, dan pada
32
bagian eksternal fungsi, di mana dilakukan pengujian untuk menemukan
error dan memastikan bahwa masukan yang ditentukan akan memberikan
hasil yang diharapkan.
6.
Pemeliharaan (Maintenance)
Ketika piranti lunak telah selesai dikembangkan dan dikirimkan
kepada pelanggan, piranti lunak tersebut mungkin akan mengalami
masalah atau error yang tidak diharapkan sebelumnya. Untuk itu, tahapan
pemeliharaan dilakukan dengan tujuan melakukan penyesuaian dan
perbaikan pada piranti lunak tersebut.
2.5
Alat Bantu Perancangan Sistem
2.2.1
Use Case Diagram
Use Case Diagram adalah diagram yang menggambarkan interaksi antara
sistem dengan sistem luar dan user. Dengan kata lain, secara grafik
menggambarkan siapa yang akan menggunakan sistem dan dengan cara
bagaimana user bisa berinteraksi dengan sistem. Diagram ini secara grafik
menggambarkan sistem sebagai kumpulan use case, actor (user) dan hubungan
yang terjadi. (Whitten, 2004, p271)
2.2.1.1 Use Case
Use case adalah alat untuk menggambarkan fungsi-fungsi sistem dari
perspektif pengguna luar dan dalam cara dan istilah yang mereka mengerti
(Whitten, 2004, p272). Use case digambarkan secara grafik oleh sebuah elips
horizontal dengan nama yang muncul di atas, di bawah atau di dalam elips.
Sebuah use case menggambarkan tujuan sistem dan rangkaian kegiatan dan
33
interaksi yang dilakukan user
dalam mencapai tujuan tersebut. Use case
merupakan hasil penguraian batasan-batasan fungsionalitas sistem ke dalam
pernyataan – pernyataan yang lebih pendek.
2.2.1.2 Actor
Actor adalah segala sesuatu yang perlu berinteraksi dengan sistem untuk
pertukaran informasi (Whitten, 2004, p273).
2.2.1.3 Relationship
Relationship digambarkan dengan garis di antara dua simbol di dalam diagram
use case. Arti hubungan yang terjadi bisa bervariasi tergantung bagaimana garis
digambarkan dan tipe simbol apa yang mereka hubungkan (Whitten, 2004,
p273).
Jenis – jenis hubungan yang terjadi ada lima, yaitu
•
Association
Sebuah hubungan antara sebuah actor dengan sebuah use case dimana
interaksi terjadi di antara mereka (Whitten, 2004, p274).
•
Extend
Sebuah use case yang terdiri dari langkah-langkah yang dikutip dari use
case yang lebih kompleks untuk menyederhanakan use case asli dan
memperluas
fungsionalitasnya.
Biasanya
ditandai
dengan
label
“<<extend>>” (Whitten, 2004, p274).
•
Include
Sebuah use case yang mengurangi redundansi di antara dua atau lebih use
case dengan menggabungkan langkah-langkah yang sering ditemukan.
34
Hubungannya digambarkan dengan “<<uses>>” (Whitten, 2004, p274).
•
Depends on
Hubungan yang menggambarkan ketergantungan antar use case. Jenis
hubungan ini digambarkan dengan garis yang berpanah dimulai dari satu
use case menunjuk ke use case tempat ia bergantung. Garis hubungan
ditandai dengan label “<<depends on>>” (Whitten, 2004, p275).
•
Inheritance
Hubungan yang terjadi jika terdapat dua atau lebih actor yang memiliki
sifat yang sama (Whitten, 2004, p275).
2.2.2
Diagram Alir (flowchart)
Menurut O’Brien (2003, pG-8), diagram alir merupakan suatu
representasi grafis di mana simbol-simbol digunakan untuk merepresentasikan
operasi, data, aliran, logika, perlengkapan, dan seterusnya. Suatu diagram alir
program mengilustrasikan struktur dan bagian dari operasi program tersebut,
sementara sebuah diagram alir sistem mengilustrasikan komponen-komponen
dan aliran sistem informasi.
Tiga konsep utama dalam pemrograman terstruktur yaitu sekuensial,
kondisi (condition), dan pengulangan (repetition) (Pressman, 2001, p424-425).
Sekuensial mengimplementasikan langkah-langkah proses yang penting dalam
spesifikasi algoritma-algoritma. Kondisi menyediakan kemudahan untuk
memilih proses berdasarkan logika, dan pengulangan untuk melakukan proses
perulangan.
35
Gambar 2.3 Konsep Diagram Alir
36
Download