STUDI KASUS DESAIN DATABASE
Suatu database akan didesain bagi seorang sekretaris sebuah ldub bowling di sebuah kota keeil. Sekretaris tersebut akan menyimpan semua data yang relevan dengan klub tersebut dalam database itu. Dia juga akan akan membuat laporan mingguan tentang klub tersebut dengan menggunakan DBMS. Laporan khusus akan diuraikan pada akhir season. Database yang yang akan digunakan adalah dBASE III dan R:base 5000. Uraian yang lengkap tentang data yang dikehendaki sekretaris untuk laporan dijelaskan dalam paragrnf berikUl
5.1
DISKRIPSI MASALAH
Yang diperlukan oleh sekretaris bowling adalah nama, nomor telepon, alamat dari masing-masing pemain dalam ldub tersebut. Oleh karena ldub tersebut terbatas hanya untuk penduduk setempat, rilaka nama kota dan kode pos tidak diperlukan. Nilai peI:tandinganmingguan yang diperoleh para pemain.sena rata-i'atanya merupakan hal yang akan dieari. Sekretaris memerlukan informasi tentang nama.team dari seorang pemain, sena nama pemimpinnya. Di samping nama, sekretaris juga mereneanakan membuat nomor khusus buat tiap-tiap team. Rata-rata kemampuan masing-masing bowler diperlukan karena akan dipakai untuk menentukan bowler yang mempunyai kemajuan pesat pada akhir season sena untuk menentukan hambatannya pada minggu penama dari season itu. Seri sena permainan yang bermutu tinggi diperlukan untuk ditampilkan-pada ~u.~:-season. 45
Sekretaris merencanakan untuk mencantumkan total permainan dan total lencana tiap-tiap bowler dalam laporan mingguan. Hal ini diperlukan untuk menghitung rata-rata sena hambatan akhir. Hambatan tersebut yang dipakai oleh klub adalah 75% dari perbedaan antara 200 dan rata-rata bowler tanpa hambatan negatif. Jika hambatan tersebut mengakibatkan adanya pecahan maka pecahan tersebut akan dipotong. Hambatan itu akan dihitung tiap minggu. Penempatan jalur, yang menunjukkan jalur tiap-tiap klub untuk tiap-tiap minggu diperlukan. Team yang mempunyai kembalian bola umum akan menjadi
lawan,sehinggainformasiini tidakperludisimpandalamdatabase.
.
Akhimyadatabase harus meliputi semuakebutuhan informasi untuk perhitungan kedudukan team. Suatu team dianggap menang dalam tiap-tiap permainan bila team itu memperoleh lencana lebih banyak dibandingkan lawannya. Demikian juga suatu team akan mengalami satu kekalahan untuk tiap-tiap permainan di mana team tersebut memperoleh lebih sedikit lencana daripada lawannya. Suatu teamjuga akan memperoleh satu kemenangan (kekalahan) yang disebabkan oleh adanya lencana yang lebih (kurang) dibandingkan lawannya dalam tiga permainan dalam tiap-tiap minggu. Jadi, empat nilai suatu team (baik menang maupun kalah) disimpan tiap minggu dari season tersebut. Tiap-tiap team diberikan setengah kemenangan dan setengah kekalahan dalam kasus seperti itu. Jika suatu team mempunyai lebih dari dua anggota yang absen pada suatu sore, team tersebut dengan sendirinya mendapatkan empat nilai kekalahan, sedangkan lawannya memperoleh empat nilai kemenangan. Team yang gagal tidak dapat memberikan lencana, bahkan jika bowler yang akhir memperoleh kemenangan maka kemenangan tersebut hanya akan masuk dalam record individu.
5.2
MENENTUKAN ATRIBUT RELASI YANG UNIVERSAL
Setelah diadakan beberapa pembicaraan dengan sekretaris, atribut berikut, sena batasannya, dianggap sebagai atribut utama untuk relasi universaL Masingmasing atribut ditunjukkan dengan nama deskriptif yang sesuai dengan pemakaian dalam database, sena dengan bentuk dua karakter yang dapat dipakai dalam diagram FD. Dua versi karakter yang digunakan untuk membuat diagram FD tidak begitu praktis, jika masih memakai bentuk mnemonic (yang membantu ingatan) di mana atribut diambil. Atribut Nb: Tnumb Tn: Tname
46
Keterangan Nomor team. Team diberi nomor secara berurutan mulai dari angka 1. Nama team. Masing-masing teamdalam sebuah klub atau perkumpulan mempunyai nama, misalnya "PinBusters." Nama team unik sifatnya.
Bn: BnaII1e Av: Bavg Hk: Hndk Bg: Bgame Wn: Wins Ls: Loss Tp: Tpins Ln: Lane
Cp: Captn Ph: Phone' St: Street
Bp: Bpins Sa: Stavg Hg: Higam Hs: Hiser Wk: Week G 1: Game 1 G2: Game 2 G3: Game 3
Nama bowler. Oleh karena perkumpulan ini kecil maka dianggap tidak ada dua nama bowler yang sarna persis. Rata-rata seorang bowler. Ini adalah rat.a-ratalencana/permainan untuk semua permainan yang dijadwalkan. Rata-rata tersebut akan dikurangi dengan angka keseluruhan. 'Hambatan permainan 'seorangbowler. Ini merupakan nilai integer yang dihitung tiap-tiap minggu. Angka to~alpermainan yang telah dipermainkan seorang bowler. Seorang bowler biflsanyamain tiga kali dalam satu malam. Total angka kemenangan team dalam suatu season. Total angka kekalahan team dalam suatu season. Total angka lencana (pin) team dalam suatu season. Angka lane (jalur) suatu team dalam seminggu. Angka ini juga menunjukkan lawan dalam minggu tersebut. Team yang berada pada lane 1 dan 2lawannya adalah team dalam lane 3 dan 4, dst. Nama kapten suatu team. Hanya terdapat seorang kapten dalam sebuah team. Nomor telepon dari seorang bowler. Lebih dari 'seorang bowler boleh hanya menggunakan satu nomor telepon. Alamat jalan seorang bowler. Semua alamat berada dalam satu kota. Satu orang atau lebih mungkin tinggal dalam alamat yang sarna. Total dari semua lencana yang diperoleh seorang bowler dalam satu season. Rata-rata yang diperoleh seorang bowler dalam permulaan suatu season. Ini merupakan nilai integer. Nilai dari sebuah permainan terbaik yang dilakukan oleh seorang bowler dalam satu season. Nilai dari tiga seri permainan yang terbaik yang dilakukan seorang bowler dalam suatu season. lumlah minggu dalam satu season. Nilai ini mulai dari 1 dan bertambah I untuk tiap-tiap minggu dari suatu'season. Nilai permainan pertama dalam satu minggu oleh seorang pemain. Nilai permainan kedua dalam satu minggu oleh seorang pemain. Nilai permainan ke tiga dalam satu minggu oleh seorang pemain.
Setelah dipertimbangkan maka diputuskan bahwa beberapa'atribut tidak akan disimpan dalam database; Atribut yang dihilangkan adalah Bavg, Bgame, Wins, Loss, Tpins, Bpins, Hndk, Higam, dan Hiser. Meskipun atribut ini akan dipakai dalam laporan mingguan maupun tahunan, nilai suatu atribut dapat dihitung dari atribut lain yang disimpan dalam database. 47
Jika item yang kita hilangkan tersebut disimpan dalam database, maka akan terdapat informasi yang berulang-ulang. Sebagai contoh, misalnya semua bagian yang dihilangkantersebutbenar-benardisimpandalam database,makaakan ditemukan dalam memasukkan nilai seorang bowler. Suatu perubahan nilai seorang pemain akan mengakibatkan perubahan tertentu dalam Bpins dan Tpins, dengan kemungkinan perubahan dalam item lain yang dihilangkan. Jika perubahan sekunder ini tidak dibuat, maka database akan menjadi tidak konsisten. Oleh karena itu bagian yang akan dihilangkan tersebut tidak disimpan dalam databse, namun akan dihitung dari data dalam database jika suatu laporan diperlukan. Perhitungan ini akan dibuat dengan menggunakan program aplikasi software yang akan ditulis dengan menggunakan bahasa makro DBMS. Bahasa makro ini akan dibahas dalam bab 9 dan 10. Langkah 1dari algoritma desain yang telah direvisi terdapat dalam bagian 4.5. Algoritma ini merupakan penentuan dari relasi universal database yang sedang didesain. Jika daftar akhir atributdipakai dalam database sekretaris bowling dikelompOkkanmenjadi satu relasi, maka relasi universal dapat ditentukan sebagai berikut:
R(Nb~Tn, En, Ln, Cp,Ph, St, Sa, Wk, Gl, G2, G3)
5. 3
.
DIAGRAM KETERGANTUNGAN FUNGSIONAL
Tahap kedua dari algoritma ini adalah penentuan semua FD yang berhubungan dengan atribut dalam relasi universal. Gambar 5.1 menunjukkan diagram ketergantungan fungsional untuk relasi universal yang diambil dari masalah bowling di atas. Tahap ke tiga dalam algoritma ini menuntut adanya penghilangan semua FD yang berulang-ulang dari set FD bagi relasi universal, untuk memperoleh cover minimal. Secara diagramatis FD ini dijelaskan dalam Gambar 5.1. FD ini berisikan beberapa ketergantungan t;ransitif. (Ketergantungan transitif lainnya dapat secara mudah diuraikan dalam set asli FD. Ketergantungan transitif yang khusus yang mungkinmuncul dicantumkan dalam Gambar 5.1. Ketergantungan ini tidak meliputi diagram FD yang khusus untuk kemudahan tampilan. Ketergantungan yang berulang-ulang ini dapat dihilangkan.)
48
Original Set of Design Fd's Tn H Nb Tn H Cp Cp H Nb Bn ~ Nb, Bn, Wk, ~ Ln, Wk ~ Wk, Nb ~
St, Ph, Sa GI, G2, G3, Ln Nb Ln'
Transitive Dependencies Already Eliminated Bn Bn Ln, Wk Ln, Wk
~ ~ ~ ~
Tn Cp Cp Tn
Gambar 5. 1 Diagram FD penama untuk database sekretaris bowling
49
Situa~i ketergantungan redanden transitif mencakup "set lingkaran yang saling mempunyai ketergantungan" antara ke tiga atribut yaitu Cp,Nb, dan Tn:.
Nb1(
Cp.
Tn 1(
. Cp
. Tn . Nb
Jika salah satu dari ketiga unsur di 3t11S dihilangkan, maka dua unsur lainnya tidak akan redanden. Dalam kasus seperti ini maka tidak ada masalah unsur mana yang akan dihilangkan. Hal ini disebabkan ketiga atribut Cp,Nb, dan Tn masih tetap dapat berakhir dengan relasi yang sarna meskipun tanpa mempertimbangkan unsur mana yang akan dihilangkan. Ketergantungan yang dihilangkan adalah Cp 1( . Tn.
R(Nb, Bn, Ln, Cp, Ph, St, Sa, Wk, GI, G2, G3) FD's :
Nb.
Nb.
Wk,Ln, Bn, Wk Bn
~Tn ~ Cp ~ Nb ~ GI, G2, G3. ~ Nb, St, Ph, Sa
Gambar 5. 2 Diagram FD Cover Minimal untuk basisdata sekretaris bowling FD redanden kedua yang terdapat dalam Gambar 5.1 disebabkan oleh transitivitas y~ng palsu. Karena Bn ->Nb dan Nb,Wk ->Ln, maka akan mengikuti transitivitas palsu yaitu Bn,Wk ->Ln. Ini ber;u-tibahwaFD terakhir adalah redanden sehingga dapat dihilangkan. Oalam Gambar 5.1. tidak terdapat redanden FD. Diagram FD untuk cover minimal terdapat dalam Gambar 5.2. 50
5.4
PENGURANGAN PADA SET RELASI BCNF
Tahap keempat dari proses desain mencakup pengurangan relasi universal ke dalam satu set relasi BCNF. Jika atribut yang bakal dipakai (candidate keys) dan detenninan pada R dibandingkan, maka ditemukan bahwa determinan dan kunci tersebut tidak identik. Detenninants in R Candidate keys in R
R1 harus dikurangi. Pada tahap ini proses dan ketelitian pengurangan harus diambil sesuai dengan atribut Nb. Nb merupakan atribut dependen dalam R 1 yang mempunyai dua detenninan yang berbeda. Seperti yang dibicarakan dalam sub bab 3.7,jika proyeksi salah maka kita dapat menghilangkan FD. Kenyataannya, kita tidak dapat membuat proyeksi tanpa menghilangkan FD, yang berani bahwa selain dekomposisi metoda desain harus dipenimbangkan.
(a) RI(Bn, Wk, Ln, Nb, St, Ph, Sa, Gl, G2, G3)
FD's Nb H Tn Nb H Cp (b) R2(Nb, Tn, Cp)
Gambar 5.3. Hasil Proyeksi R2 dari R. 51
Carnyang benaruntuk mengurangi R1adalah dengan memproyeksikan FD Nb, Wk ~ Ln ke dalam R3 dan R4 seperti pada Gambar 5.4. Dengan demikian maka FD dengan Nb sebagai bagian dependen dalam database: Bn ~ Nb dalam R3, dan Ln,Wk ~ Nb dalam R4. R4 terdapat pada BCNF, tetapi R3 tidak. Candidate Keys dalam R3 Determinan dalam R3 R3 dapat diuraikan dengan memproyeksikan semua FD dengan Bn sebagai determinan. Set FD ini adalah Bn ~ Nb,St,Pn,Sa. Proyeksi ini memberikan hubungan R5 dan R6 seperti pada Gambar 5.5 (p.56). Baik R5 maupun R6 dapat ditunjukkan dalam BCNF. Jadi relasi desain akhir adalah R2, R4, R5 dan R6.
Nb
G (a) R3(!!n, Wk, Nb, St, Ph, Sa, G1, G2, G3)
FD's Wk,Ln ~ Nb Wk,Nb ~ Ln
(b) R4iliQ, Wk, Ln)
Gambar 5. 4 HasHdari Proyeksi R4 dari Rl. 52
5.5
EVALUASI RELASI DESAIN BCNF
Set relasi BCNF tersebut diuraikan dengan algoritma desain dekomposisi yang telah direvisi, dimulai dengan relasi R dalam Oambar 5.1 adalah R2(Nb, R4(Nb, R5(Bn, R6(Bn,
Cp,Tn) WK,Ln) Wk, 01, 02, 03) Nb, St, Ph, Sa)
FD's: Bk, Wk ~ GI, G2, G3
(a) R5(fu!, Wk, GI, G2, G3)
FD's: Bk ~ Nb, St, Ph, Sa.
Nb
(b) R6(fu!, Nb, St, Ph, Sa)
Oambar 5.5 HasiI dari Proyeksi R6 dari R3. di mana kunci utama dari tiap relasi diberi garis bawah. (R2dan R4 mempunyai lebih dari satu kunci kandidat) Set ini akan dicek untuk masalah-masalah yang mungkin. Jika FD ditemukan dalam diagram FD untuk tiap-tiap relasi individu maka daftar yang diperoleh sebagai berikut: 53
Relasi
Gambar No
FD
R2
5.3
Tn H
Nb
Cp H
Nb
R4
5.4
Wk, Ln Wk, Nb
R5 R6
5.5 5.5
Bn, Wk G I ,G2,G3 Bn Nb, St, Ph, Sa
Nb Ln
Dua hal yang perlu diperhatikan: 1) tidak ada FD yang muncullebih dari satu kali; dan 2) set FD sarna dengan set FD yang dijumpai dalam cover minimal pada Gambar 5.2 Jika empat relasi dianalisis, maka tidak ada relasi yang dapat ditemukan di mana semua atributnya muncul sebagai cut set dari atribut dalam relasi lainnya. Perlu diperhatikan bahwa tidak terdapat cara lain untuk menggabungkan ketiga relasi desain yang dapat menguraikan semua atribut dalam relasi keempat. Jadi dalam relasi keempat tersebut tidak ada yang redanden. Jika nama-nama atribut yang lebih panjang digunakan dalam tempat model karakter dua yang lebih pendek maka relasinya adalah sebagai berikut : R2(Tnumb, Captn, Tname) R4(Tnumb, Week, Lane) R5(Bname, Week, Gamel, Game2, Game3) R6(Bname, Tnumb, Phone, Stret,S tavg) Dengan melihat atribut yang terdapat pada masing-masing relasi, dapat kita ketahui bahwa masing-masing relasi menyajikan sebuah set data yang padu, yaitu: R2 :. Informasi tentang team R4 : ladwal season R5 : Informasi penilaian bowler individu R6 : Informasi personal bowler Dilihat dari sudut kepraktisan, maka relasi tersebut sangat masuk akal. Meskipun masalah di atas tidak nampak dalam contoh ini, namun dalam proses desain, kita sering mengelompokkan atribut-atribut ke dalam relasi-relasi yang agak kita buat-buat. Desain akhir harus selalu diperiksa agar tidak terjadi hal yang
54
demikian. Masalah ini yang paling sering muncul jika singkatan yang dipakai sangat pendek sehingga kita (desiner) tidak tahu lagi kepanjangan suatu singkatan. Seorang desainer yang baik tentu akan memperhatikan atribut tersebut serta berusaha memvisuali sasikan nya. Database sekretaris yang dipakai adalah dBASEIII, dalam bab 9, dan R:base 5000 dalam bab 10. Modul program sampel digunakan untuk menguraikan laporan yang diperlukan oleh sekretaris tersebut.
5. 6
TUGAS UNTUK BAB 5
1. Desain kembali database sekretaris bowling dengan asumsi bahwa atribut yang akan disimpan dalam database adalah Bavg, Bgame, Losses, Tpins, Bpins, Hndk, Higam, dan Hiser! 2.
Jika database pada nomor satu di atas dilaksanakan, bagaimana caranya agar sekretaris tidak membuat kesalahan atribut yang telah dihitung dalam memasukkan data?
55