Strategi Perancangan D an
Pengolahan Basis Data
Kusrini, M.Kom.
Penerbit ANDI Yogyakarta
e-Book
Hak Cipta 2007
KATA PENGANTAR
Bismillahirrohmanirrokhim. Puji syukur penulis hatur kehadirat Allah SWT, atas limpahan rahmat-nya sehingga buku Strategi Perancangan dan Pengolahan Basis Data dapat terwujud. Buku ini dapat ditulis dengan baik atas dukungan dari
berbagai pihak. Untuk itu penulis sampaikan rasa terima kasih kepada seluruh pihak yang telah memberi memberi dukungan.
Buku ini didesain sedikit berbeda dari buku-buku lainnya, karena buku ini selain memaparkan basis data secara teori juga memberikan contoh-contoh praktis dan implementasi yang sesungguhnya. Kasus yang penulis angkat merupakan contoh nyata kasus basis data yang memang penulis gunakan dalam pengembangan system informasi.
Harapan penulis, biku ini dapat memberi tuntunan konseptual yang praktis basi mereka, baik praktisi maupun mahasiswa dalam memahami basis data. Buku ini digunakan sebagai buku pegangan bagi para pengajar, baik jurusan Manajemen informatika, Teknik Informatika, maupun Ilmu Komputer.
Penulis menyadari, isi maupun cara penyampian buku ini masih jauh dari sempurna. Untuk itu penulis mengharapkan saran dan krit ik yang bersifat membangun membangun dari para membaca sehingga penulis bias mengembangangkan buku ini menjadi lebih baik.
Terima kasih.
Yogyakarta, September 2006
Penulis
-1-
e-Book
Hak Cipta 2007
DAFTAR ISI
KATA PENGANTAR............................................ ................................................................. ........................................ ...................
iii
DAFTAR ISI................................................ ................................................................ ...................................... ................................... .............
V
BAB I
KONSEP DASAR BASIS DATA ..................................................
1
A. Pendahuluan......................... Pendahuluan.................................................. ............................................ ........................... ........
1
B. Definisi Basis Data.......................................... Data.............................................................. ........................ ....
2
C. Tujuan Basis Data............................................ Data............................................................... ........................ .....
2
D. Manfaat/Kelebihan Manfaat/Kelebihan Basis Data................................................ Data................................................
5
E. Operasi Dasar Basis Data............................................ Data........................................................ ............
9
F. BAB II
Soal Latihan..................................... Latihan............................................................. ........................................ ................
10
KONSEP DASAR SISTEM BASIS DATA ...................................
11
A. Sistem .................................................. ....................................................................... .................................... ...............
11
B. Sistem Basis Data.............................................. Data................................................................. ....................... ....
11
C. Soal Latihan.................................... Latihan.......................................................... ........................................ ....................
13
BAB III ARSITEKTU ARSITEKTUR R SISTEM SISTEM BASIS BASIS DATA DATA....................................
15
A. Arsitektur Basis Data........................................ Data............................................................... .......................
15
B. Soal Latihan.................................... Latihan.......................................................... .......................................... ....................
16
BAB IV MODEL-MODEL DATA............................................ ............................................................. .................
17
A. Model-Model Data.................................... Data............................................................. ............................... ......
17
B. Soal Latihan.................................... Latihan.......................................................... ........................................ ....................
20
ENTITY RELATIONSHIP DIAGRAM ....................................
21
A. Konsep Entity Relationship Diagram................................... Diagram...................................... ...
21
B. Tahap Pembuatan Entity Relationship Diagram.....................
25
C. Soal Latihan.................................... Latihan.......................................................... ........................................ ..................
31
IMPLEMENTASI IMPLEMENTASI ENTITY RELATIONSHIP DIAGRAM ..
33
A. Tahap Implementasi............... Implementasi.................................. .......................................... .............................. .......
33
B. Tipe Data File................................... File......................................................... ....................................... .................
35
C. Soal Latihan..................................... Latihan............................................................. ........................................ ................
36
BAB VII NORMALISA DAN DENOMARLISASI.................................
39
A. Normalisa....................................... Normalisa.............................................................. ......................................... ..................
39
B. Denomarlisa................................ Denomarlisa................................................... ............................................ .........................
46
BAB V
BAB VI
-2-
e-Book
Hak Cipta 2007 C. Soal Latihan.................................... Latihan........................................................... ........................................ .................
47
BAB VIII BAHASA BASIS DATA DATA........................................ ............................................................ ....................
49
A. Bahasa Basis Data............................................ Data.................................................................. ......................
49
B. Bahasa Basis Data untuk Mengimplementasikan Rancangan Rancangan Basis Data............................................... Data...................................................................... ................................ .........
50
C. Definisi Skema dalam SQL.............................................. SQL.................................................... ......
51
D. Soal Latihan................................... Latihan.......................................................... ......................................... ..................
61
MANIPULASI DATA...............................................................
63
A. Bahasa Basis Data............................................ Data.................................................................. ......................
63
B. Modifikasi Data…............................................. Data…................................................................ ..................... ..
64
C. Penghapusan Penghapusan Data............................................. Data.................................................................. .......................
67
D. Soal Latihan……............................. Latihan……................................................... ....................................... .................
69
MENGEKSEKUSI DATA....................................... ........................................................ .................
71
A. Struktur Data……............................ Data…….................................................... ...................................... ..............
74
B. Operasi Himpunan...................................... Himpunan......................................................... ........................... ........
77
C. Fungsi Agregasi…............................. Agregasi…................................................. .................................... ................
79
D. Soal Latihan…….............................. Latihan…….................................................... ..................................... ...............
82
QUERY ANTAR TABEL…………………………………….
83
A. Join Anta Tabel…................................... Tabel…...................................................... ............................... ............
83
B. Query dengan Dua Buah Tabel........................................ Tabel.............................................. ......
83
C. Menggunakan Menggunakan Alias.................................... Alias........................................................ ........................... .......
84
D. Perkalian Kartesian................................... Kartesian............................................................ ............................. ....
84
E. Equijoin....................... Equijoin............................................ .......................................... ..................................... ................
85
F. Self Join………................................... Join………............................................................ .................................. .........
85
G. Inner Join dan Quter Join.................................. Join....................................................... .....................
86
H. Query Bersarang (Nested Query................................ Query............................................ ............
89
I. Keanggotaan Keanggotaan Himpunan..................................... Himpunan........................................................ .....................
89
J. Perbandingan Himpunan................................... Himpunan...................................................... ..................... ..
89
K. Soal Latihan…….............................. Latihan…….................................................... .................................... ..............
90
DAFTAR PUSTAKA............................................ .................................................................. ..................................... ...............
91
GLOSSARIUM…………………………………………………………..
93
BAB IX
BAB X
BAB XI
-3-
e-Book
Hak Cipta 2007
BAB I KONSEP DASAR BASIS DATA A. PENDAHULUAN
Pemrosesan basis data sebagai perangkat andalan sangat diperlukan oleh berbagai institusi dan perusahaan. Dalam pengembangan sstem informasi diperlukan basis data sebagai media penyimpanan data. Kehadiran basis data dapat meningkatkan daya saing perusahaan tersebut. t ersebut. Basis data dapat mempercepat upaya pelayanan kepada pelanggan, menghasilkan informasi dengan cepat dan tepat sehingga membantu pengambilan keputusan untuk segera memutuskan suatu masalah berdasarkan informasi yang ada. Banyak aplikasi yang dibuat dengan berlandaskan pada basis data antara lain: semua transaksi perbankan, aplikasi pemesanan dan penjadwalan pe njadwalan penerbangan, penerbangan, proses pr oses regristasi dan pencatatan data mahasiswa pada perguruan tinggi, aplikasi pemrosesan penjualan, penjualan, pembelian dan pencatatan data barang pada perusahaan dagang, pencatatan data pegawai beerta akrifitasnya termasuk operasi penggajian pada suatu perusahaan, dan sebagainya. Beberapa informasi pada perusahaan retail seperti jumlah penjualan, mencari jumlah stok penjualan, mencari jumlah stok yang tersedia, barang apa yang paling lakudijual pada bulan ini, dan berapa laba bersih perusahaan dapat diketahui dengan mudah dengan basis data. Pada perpustakaan, adanya aplikasi pencarian data buku berdasarkan judul, pengarang pengarang atau kr iteria lain dapat mudah dilakukan dengan basis data. Pencarian data peminjam yang terlambat mengembalikan mengembalikan juga mudah m udah dilakukan sehingga bisa dibuat aplikasi pembuatan surat berdasarkan informasi yang t ersedia. Dengan memanfaatkan teknologi jaringan, kemampuan basis data dapat dapat dioptimalkan. Misalnya transak tr ansaksi si antar ant ar cabangpada sebuah perbankan secara online. Begitu banyak yang dapat diperoleh dengan pemanfaatan basis data. Basis data dapat meningkatkan daya guna perangkat computer yang mungkin tadinya hanya untuk keperluan game atau pengetikan pengetikan dengan aplikasi o ffice.
-4-
e-Book
Hak Cipta 2007
B. DEFINISI BASIS DATA
Basis data adalah kumpulan data yang saling berelasi. Data sendiri merupakan fakta mengenai obyek, orang, dan lain-lain. Data dinyatakan dengan nilai (angka,deretan (angka,deretan karakter, atau symbol). symbol). Basis data dapat didefinisikn dalam berbagai sudut pandang seperti berikut: 1.
Himpunan Himpunan kelompok kelompok data data yang yang saling saling berhubun berhubungan gan yang yang diorganis diorganisasik asikan an sedemikian rupa sehingga kelak dapat dimanfaatkan dengan cepat dan mudah.
2.
Kumpulan Kumpulan data yang yang saling saling berhubu berhubungan ngan yang yang disimp disimpan an secara secara bersam bersamaa sedemikian rupa tanpa pengulangan (redundancy) yang tidak perlu, untuk memenuhi kebutuhan.
3.
Kumpulan Kumpulan file/table file/table/arsip /arsip yang yang saling saling berhubun berhubungan gan yang yang disimpan disimpan dalam media penyimpanan elektronik.
C. TUJUAN BASIS DATA
Basis data bertujuan untuk mengatur data sehingga diperoleh kemudahan, ketepatan, dan kecepatan dalam pengambilan kembali. Untuk mencapai mencapai tujuan, tu juan, syarat sebuah basis data yang baik adalah sebagai berikut; 1. Tujuan Tujuan ada adanya nya redu redunda ndansi nsi dan dan inkons inkonsiste istensi nsi data data
Redudansi terjadi jika suatu informasi disimpan di beberapa tempat. Misalny M isalnya, a, ada data mahasiswa yang memuat NIM, nama, alamat, dan atribut lainnya, sementara kita punya data lain tentang data KHS mahasiswa yang isinya yang terdapat NIM, nama, mata kuliah, dan nilai. Pada ku\edua data tersebut kita tempat ada atribut nama, seperti digambarkan dalam Tabel 1.1 dan Tabel 1.2 berikut:
Tabel 1.1 Mahasiswa Mahasiswa NIM
Nama
Alamat
101
Agung
Klaten
102
Ratna
Bantul
-5-
e-Book
Hak Cipta 2007 Tabel 1.2 KHS KHS NIM
Nama
Mata Kuliah
Nilai
102
Ratna
Basis Data
A
101
Agung
Srukt ur Data
C
102
Endang
Struktur Data
B
102
Endang
Agama
A
Jika terjadi keadaan seperti pada Tabel 1.1 dan Tabel 1.2, informasi nama seorang mahasiswa disimpan diberbagai tempat. Maka data tersebut diatas masih mengandung mengandung redudansi yang harus dihindari pada perancangan dasis data. Akibat dari redudansi adalah inkonsistensi data atau data yang tidak konsisten. Sebagai contoh, perhatikan table 1.1 dan Tabel 1.2. pada table mahasiswa, mahasiswa, NIM 102 10 2 bernama ratna pada baris pertama, tetapi pada baris ke 3 dan 4 nama endang. Jelas informasi ini menyesatkan. Redudansi juga mungkin terjadi pada table yang sama. Contoh lain dari redundasi yang berakibat pada inkonsistensi seperti itu yaitu pada data Pembelian, dimana pada data tersebut disimpan informasi jumlah pembelian, harga satuan, dan harga total. Misalnya terjadi jumlah pembelian 5, harga satuan 1000, dan harga total 7000. padahal diketahui bahwa harga total tot al merupan hasil perkalian dari jumlah pembelian dengan harga satuan. Informasi ini juga menyesatkan. Kita tidak tahu informasi mana yang dapat dipercaya.
2. Kesul Kesulita itan n Pen Penga gaks kses esan an Data Data
Basis data memiliki fasilitas untuk melakuakan pencarian informasi dengan menggunakan Query taupun dari tool untik melihat tabelnya. Dengan fasilitas ini. Kita bias secara langsung langsung melihat data dari software DBMS-nya. Selain itu, baiss data bias dihubungkan dengan program aplikasi sehingga memudahkan pengguna dalam mengakses informasi. Misalnya program aplikasi untuk kasir yang terhubung dengan basis data . pengguna cukup mengguna fasilitas pencarian ataupun laporan. Yang tersedia pada program aplikasi untuk mendapatkan mendapatkan informasi stok, laporan penjualan, dan lain-lain.
-6-
e-Book
Hak Cipta 2007 Dalam basis data, informasi yang diperolah dari kumpulan data bisa berupa
keseluruhan data, sebagai data, data denga filter tertentu, data yang terurut, ataupun data summary. summary. Sebagai contoh sederhana ketika kita ingin mencatat data alamat dan telepon dari kolega kita. Sebagai orang akan menggunakan buku alamat. Metode pencatat dilakukan dilakukan dengan menuliskan data setelah catatan terakhir. Ketika kita menginginkan informasi alamat seseorang kita akan mencari karena informasi yang tersaji tidak terurut. Ada juga orang mencatat dengan mengelompokan nama berdasarkan abjad. Hal ini akan lebih mempermudah pencarian karena kita tidak perlu membaca keseluruhan data, tetapi cukup dalam satu kelompok saja. Tapi masalah baru muncul ketika jumlah data untuk sekelompokan data abjad teretentu telalu banyak sedangkan kelompok abjad yang lain masih terlalu sedikit. Dalam metode ini, ada banyak ruang tidak terpakai jika memberikan ruang yang sama untuk setiap kelompok. Dalam hal pencarian, kesulitan akan kita temui ketika informasi yang kita ingin cari dengan kata kunci sebagagian namanya. Misalnya kita akan mencari alamat Anto, sementara yang tercatat dalam buku catatan adalah Mardianto. Tentu saja kita tidak akan dapat menemukannya dalam kelompok data dengan huruf depan A. selain itu, tidak selamanya kata kunci yang diketahui adalah dari nama, tetapi bisa saja yang diketahui adalah nomer teleponnya, sedangkan yang ingin kita cari adalah alamat dan namanya. Hal ini merupakan masalah baru dari pencatatan data dengan buku. Basis data bisa memberikan solusi terhadap permasalahan-permasalahan tersebut diatas.
3.
Multip tiple User
Basis data memungkinkan pengguna data bersama-sama oleh banyak pengguna pada saat yang bersamaan atau pada saat yang berbeda. Dengan meletakkan basis data pada bagian server yang bisa diakses kesemua pengguna dari banyak klient, kita sudah menyediakan akses kesemua pengguna dari computer klient ke sumber informasi yaitu basis data. Tentu saja pengaksesan oleh pengguna-pengguna ini disesuaikan dengan hak aksesnya. Misalnya sebuah perguruan tinggi memiliki data tentang mahasiswa, pembayaran, dan lain-lain yang diletakan dalam sebuah basis data. Bagian Akademi akan bisa mengakses -7-
e-Book
Hak Cipta 2007
data-data akademi mahasiswa, Bagian Keuangan akan diijinkan mengakses data pembayaran mahasiswa, sementara mahasiswa hanya bisa melihat status akademi/keuangan yang berhubungan dengan dirinya saja. Hal ini sangat dimungkinkan dengan penyimpanan data data dalam basis data.
D. MANFAAT/KELEBIHAN BASIS DATA
Banyak memanfaat yang dapat kira peroleh dengan menggunakan basis data. Manfaat/kelebihan basis data diantaranya diantaranya adalah: 1. Kecep Kecepat atan an dan dan kem kemud udah ahan an ( speed )
Dengan menggunakan basis data pengambilan informasi dapat dilakukan dengan
cepat
dan
mudah.
Basis
data
memiliki
kemampuan
dalam
mengelompokan, mengurutkan bahkan perhitungan dengan metematika. Dengan perancangan yang benar, maka penyajian informasi akan dapat dilakukan dengan cepat dan mudah.
2. Keber Kebersa sama maan an pemak pemakai ai
Sebuah basis data dapat digunakan oleh banyak user san banyak aplikasi. Untuk data-data yang diperlukan oleh banyak orang/bagian. orang/bagian. Tidak perlu dilakukan pencatatan dimasing-masing bagian, tetapi cukup dengan satu basis data untuk dipakai bersama. Misalnya data mahasiswa dalam suatu perguruan tinggi, dibutuhkan oleh banyak bagian, diantaranya: bagian akademik, bagian keuangan, bagian kemahasiswaan, dan perpustakaan. Tidak harus semua bagian ini memiliki catatan dan semua bagian bisa mengakses data tersebut sesuai dengan keperluannya.
3. Pem Pemusata usatan n cont contro roll dat data a
karena cukup dengan satu basis data unutk banyak keperluan, pengontrolan terhadap data juga cukup dilakuan di satu tempat saja. Jika ada perubahan data alamat mahasiswa misalnya, maka tidak perlu kita meng-update semua data dimasing-masing dimasing-masing bagian tetapi t etapi cukup hanya disatu basis data.
4. Efesien Efesiensi si rua ruang ng penyim penyimpa panan nan ( space)
Dengan pemakain bersama, kita tidak perlu menyediakan tempat penyimpanan diberbagai tempat, tetapi cukup satu saja sehingga ini akan -8-
e-Book
Hak Cipta 2007
menghemat menghemat ruang penyimpanan data yang yang dimilikioleh sebuah organisasi. Dengan teknik perancangan basis data yang benar, kita akan menyederhanakan penyimpanan sehingga tidak semua data harus disimpan. Misalnya ada data pengambilan mata kuliah oleh mahasiswa, dimanan yang dicata adalah: NM, Nama, Jurusan, Alamat, Kode, NamaMatkul dan SKS. Perhatikan Tabel 1.1 tentang data KRS.
Tabel 1.3 KRS NM
Nama
Jurusan
Alamat
Kode
Nama Matkul
SKS
1
Anto
SI
Klat en
A
Ag Agama
3
1
Anto
SI
Klat en
B
Ba Bahasa
4
1
Anto
SI
Klaten
C
Calculus
2
2
Fika
MI
Bantul
A
Agama
3
2
Fika
MI
Bantul
B
Ba Bahasa
4
3
Fika
MI
Bantul
C
Calculus
2
Jika kita memiliki data 4000 mahasiswa dengan rata-rata setiap mahasiswa mengambil 5 mata kuliah, maka data seorang mahasiswa akan kita tulis 5 kali dan data tiap mata kuliah akan ditulis 4000kali. Andaikandata bernilai 1 byte (diabaikan tipe datanya) maka kita akan membutuhkan ruang penyimpanan sebesar jumlah field x jumlah mhs x jumlah matkul (7x4000x5 = 140000) Dengan basis data yang dirancang dengan benar, data ini bisa dibagi menjadi 3, seperti tampak pada Table 1.2, Table 1.3, dan Tabel 1.4.
Tabel 1.4 Mahasiswa
NM
Nama
Jurusan
Alamat
1
Anto
SI
Klaten
1
Anto
SI
Klaten
1
Anto
SI
Klaten
2
Fika
MI
Bantul
2
Fika
MI
Bantul
3
Fika
MI
Bantul
-9-
e-Book
Hak Cipta 2007 Tabel 1.5 Mata kuliah
Kode
NamaMatkul
Sks
A
Agama
3
B
Bahasa
4
C
Calculus
2
Tabel 1.6 KRS
NM
Kode
1
A
1
B
1
C
2
A
2
B
3
C
Kita membutuhkan ruang penyimpanan untuk table mahasiswa seperti tampakpada table 1.2 sebesar jumlah kolom x jumlah mahasiswa (4 x 4000 = 16000). Untuk mata kuliah seperti tampak pada table 1.3 sebesar jumlah kolom x jumlah matkul (3 x 5 = 15). Dan untuk KRS seperti tampak pada table KRS sebesar jumlah kolom X jumlah mahasiswa X jumlah matkul (2 x 4000 x 5 = 40000). Dari table 1.2, Tabel 1.3, dan Tabel 1.4, dibutuhkan sebesar 16000+15+40000 = 56015 byte. byte. Bila dibandingkan dengan penyimpanan data pada table 1.1 sebesar sebesar 140000, jelas relasi antar table pada basis data bias memperkecil rungan penyimpanan.
5.
Kea Ke akuratan ( Accuracy )
Penerapan secara ketat aturan tipe data, domain data, keunikan data, hubungan antara data, dan lain-lain, dapat menekan keakuratan dalam pemasukan/penyimpanan pemasukan/penyimpanan data.
- 10 -
e-Book 6.
Hak Cipta 2007
Kettersed Ke sediaa iaan ( availability availability)
Dengan basis data kita dapat d apat mem-backup mem-backup data, memilah-milah memilah-milah data mana yang masih diperlukan dan data mana yang perlu kita simpan ke tempat lain. Hal ini mengingat pertumbuhan transaksi suatu organisasi dari waktu ke waktu membutuhkan media penyimpanan yang semakin besar.
7.
Kellengkapan (Completenenss) Ke
8.
Keamanan (Security)
Kebanyakan DBMS dilengkapi dengan fasilitas manajemen pengguna diberikan hak akses yang berbeda-beda sesuai dengan pengguna dan posisinya. Basis
data
bisa
diberikan
passwordnya
untuk
membatasi
orang
yang
mengaksesnya.
9. Kemudahan Kemudahan dalam dalam pembuatan pembuatan program program aplikasi aplikasi baru baru
Pengguna basis data merupakan bagian dari perkembangan teknologi. Dengan adanya basis data pembuatan aplikasi bisa memanfaatkan kemampuan dari DBMS, sehingga pembuatan aplikasi tidak perlu mengurusi penyimpanan data, tetapi cukup mengatur interface interface untuk pengguna. pengguna.
10. Pemakain Pemakain secara secara langsun langsung g
Basis data memiliki fasilitas untuk melihat datanya secara langsung dengan tool yang disediakan oleh DBMS. Untuk melihat data, langsung ke tabel ataupun menggunakan query. Biasanya yang menggunakan fasilitas ini adalah user yang sudah ahli, atau database administrator.
11. Kebebasan Kebebasan data data (Data Independen Independence) ce)
Jika sebuah program telah selesai dibuat, dan ternyata ada perubahan isi/struktur data. Maka dengan basis data, perubahan ini hanya perlu dilakukan pada level DBMS tanpa harus membongkar kembali program aplikasinya.
12. 12. User User vie view w
Basis data penyediaan pandangan yang berbeda-beda untuk tiap-tiap pengguna. Misalnya kita memiliki data-data dari perusahaan yang bergerak dibidang retail. Data yang ada berupa data barang, penjualan, dan pembelian. Ada - 11 -
e-Book
Hak Cipta 2007
beberapa jenis pengguna yang memerlukan informasi terkait dengan data perusahaan tresebut. Mereka adalah pelanggan, kasir, bagian gudang, bagian akutansi dan manajer. Tidak semua data boleh diakses oleh semua pengguna. Misalnya kasir dia hanya boleh berhak melihat informasi nama barang dan harga jualnya. Sementara itu dia berhak untuk memasukan data penjualan . berbeda dengan pelanggan yang hanya melihat data keberadaan barang dan harga jual tetapi tidak berhak memasukan memasukan atau merubah data. Sementara itu bagian akutansi berhak melihat keuntungan dari tiap-tiap barang untuk menganalisa data akutansinya. Basis data mampu memberikan memberikan layanan organisasi seperti ini.
E. OPERASI DASAR BASIS DATA Beberapa operasi dasar basis data, yaitu : 1.
Pem Pembuata uatan n basi basiss data data
2.
Pen Pengha ghapus pusan bas basis is da data
3.
Pemb embuatan tan fil filee/tab table
4.
Peng Pengha hapu pusa san n file file/ta /tab ble
5.
Penguba ubahan tab table
6.
Pen Penamba ambah han/p an/peengisi gisian an
7.
Pengambilan ilan data
8.
Penghapusan data
F. SOAL LATIHAN 1. Jelas Jelaskan kan karas karasteri teristi stik k dari dari basis basis data! data! 2. Salah Salah satu tujuan tujuan basis basis data data adalah adalah menghilan menghilangkan gkan redudan redudansi si data. Berika Berikan n contoh contoh kasus terjadinya redudansi data dan jelaskan mengapa redudansi basis data harus dihindari! 3. Beri penje penjelasan lasan kelebihan kelebihan mengg menggunak unakan an basis basis data dibandin dibandingan gan dengan dengan menggunakan pencatatan melalui buku atau menggunakan program aplikasi Microsoft Exel!
- 12 -
e-Book
Hak Cipta 2007
BAB II KONSEP DASAR SISTEM BASIS DATA
A. SISTEM Sistem adalah sebuah tatanan yang terdiri dari atas sejumlah komponen fungsional (dengan tugas/fungsi khusus) yang saling berhubungan dan secara bersama-sama bersama-sama bertujuan untuk memenuhi memenuhi suatu proses/pekerjaan proses/pekerjaan tertentu. Sebgai contoh, system kendaraan terdiri dari komponen starter, komponen pengapian, komponen penggerak, komponen pengerem, komponen kelistrikan – speedometer, lampu, dan lain-lain. Komponen-komponen tersebut memiliki tujuan yang sama, yaitu untuk membuat kendaraan tersebut bias dikendarai dengan nyaman dan aman. Contoh lain yaitu system perguruan tinggi t inggi,, yang terdiri t erdiri dari dosen, mahasiswa, mahasiswa, kurikulum, dan lain-lain. System ini bertujuan untuk menghasilkan mahasiswamahasiswa yang memiliki kemampuan dibidang ilmunya.
B. SISTEM BASIS DATA Sistem basis data merupakan perpaduan antara basis data dan system manajemen basis data (SMBD). Komponen-komponen system system basis data meliputu : 1. Perangkat Perangkat keras(H keras(Hardwar ardware) e) sebagai sebagai pendukun pendukung g operasi operasi pengolah pengolah data. data. Perangkat keras komputer adalah semua bagian fisik komputer. Contoh dari
perangkat perangkat keras k eras computer yaitu : mouse, keyboarg, keyboarg, monitor, dan lain-lain. 2. Sistem Sistem operasi operasi (Operating (Operating system atau perangkat perangkat lunak lunak untuk mengolah mengolah basis data.
Sistem operasi merupakan suatu software system yang bertugas untuk melakukan control dan manajemen hardware serta operasi-operasi dasar sistem termasuk menjalankan software aplikasi seperti program-program pengolah kata dan browser web. Secara umum, Sistem Operasi akan melakukan layanan inti umum tersebut seperti akses ke disk, mamajemen memori, scadulling task, dan antar muka user. Dengan demiikian masing-masing software tidak perlu lagi memerlukan tugas-tugas inti umum tersebut, karena tidak dapat dilayani dan dilakukan oleh Sistem Operasi.
- 13 -
e-Book
Hak Cipta 2007
Contoh dari sistem operasi yang sudah ada sekarang ini, yaitu : DOS, Window 98, Window XP, Window 2000, Window NT, Linux, Macintost, dan lain-lain.
3. Basis Basis data data (Databa (Database) se) sebaga sebagaii inti dari dari system system basi basiss data. data. 4. Data Databa base se Manag Managem emen entt Syste System m (DBMS (DBMS))
DBMS adalah software yang menangani semua akses ke basis data. Secara konsep apa yang terjasi adalah sebagai berikut :
a.
User melak melakukan ukan pengakse pengaksesan san basis basis data data untuk untuk informasi informasi yang yang diperlu diperlukanny kannyaa menggunakan menggunakan suatu bahasa bahasa manipulasi data, bias any disebut SQl.
b. DBMS menerim menerimaa request request dari user dan menga menganali nalisa sa request request terseb tersebut. ut. c.
DBMS memeri memeriksa ksa skema skema ekstern eksternal al user, user, pemetaan pemetaan eksternal/k eksternal/kons onseptua eptual, l, skema konseptual, pemetaan konseptual/internal, konseptual/internal, dan struktur str uktur penyimpanan.
d. DBMS menge mengeksek ksekusi usi operasi-o operasi-operasi perasi yang yang diperlukan diperlukan untuk memen memenuhi uhi permintaan user. Contoh dari DBMS ini yaitu antara lain Microsoft SQL Server 2000, Oracle, MySQL, Interbase, Paradox, Microsoft Acces, dan lain-lain.
5.
Pemakai (Us (User er))
Pemakai merupakan orang atau system yang akan mengakses dan merubah isi basis data. Beberapa jenis penggunaan basis data, yaitu : a.
Programe Programerr Aplikasi Aplikasi ; orang orang yang yang mengk mengkodek odekan an aplikasi aplikasi dengan dengan bahasa bahasa pemrograman.
b.
User Mahir Mahir : orang orang yang yang mampu mampu mengg menggunak unakan an basis basis data secara secara langsung langsung dengan menggunakan DBMS.
c.
User User Umum/ Umum/End End User User : orang orang yang yang memak memakai ai basis basis data dengan dengan menggunakan
perantara
program
aplikasi.
Misalnya
seorang
kasir
memasukan data penjualan kedalam basis data dengan menggunakan aplikasi kasir. d.
6.
User User Khus Khusus us : bisa bisa berup berupaa sis sistem tem lain lain..
Aplikasi la lain
Aplikasi lain merupakan software yang dibiat untuk memberikan interface kepada user sehingga lebih mudahdan terkontrol dalam mengakses basis data. Aplikasi - 14 -
e-Book
Hak Cipta 2007
lain ini merupakan komponen tambahan dalam system basis data yang sifatnya opsional.
C. SOAL LATIHAN 1. Apa Apa perbeda perbedaan an basis basis data data dan dan syste system m basis basis data? data? 2. Sebutkan Sebutkan elemen-ele elemen-elemen men yang yang menyu menyusun sun system system basis basis data! data!
- 15 -
e-Book
Hak Cipta 2007
BAB III ARSITEKTUR SISTEM BASIS DATA
A. ARSITEKTUR SISTEM BASIS DATA Arsitektur sistem basis data memberikan kerangka kerja bagi para pengembang pengembang system basis data. dat a. Ada 3 level arsitektur sistem basis data, yaitu : 1. Le Leve vell Fis Fisik ik/I /Int nter erna nall
Level fisik merupakan level paling rendah yang menggambarkan bagaimana data disimpan secara fisik. Misalnya kita memiliki data mahasiswa. Pada level fisik data mahasiswa dipandang dengan memperhatikan bahwa dalam data ter sebut sebut ada atribut Nama yang disimpan pada media penyimpanan (disk) sepanjang 20 byte. 2. Le Leve vell Konse Konseptu ptual al/L /Log ogik ika a
Level ini menggambarkan data apa yang disimpan disi mpan dalam basis data dan hubungan ini memperhatikan data apa sebenarnya (secara fungsional) disimpan dalam basis data dan hubungannya dengan data yang lain. Pemakai tidak mempedulikan kerumitan dalam struktur level fisik lagi. Penggambaran cukup dengan memakai kotak, garis, dan hubungan secukupnya. Pada level ini biasanya desainer basis data membuat rancangan rancangan dalam bentuk diagram-diagram/model. diagram-diagram/model. 3. Level Level Pandan Pandangan gan Penggu Pengguna na (User View View level level)/Ek )/Ekster sternal nal
Level ini merupakan level abraksi data tertinggi yang menggambarkan hanya sebagaian saja yang yang
dilihat dan dipakai dipakai dari keseluruhan keseluruhan database. Hal ini
disebabkan beberapa pengguna database tidak membutuhkan semua ini database. Yang dimaksud dengan user/pengguna disini adalah programmer, eng user, atau DBA. Setiap user mempunyai ’bahasa’ yang sesuai dengan kebutuhannya, antara lain : a.
Programmer : bahasa yang digunakan adalah bahasa pemrograman seperti
C, COBOL, atau PL/I. b.
End User : bahasa yang digunakan adalah bahasa query atau menggunakan
fasilitas yang tersedia pada program pr ogram aplikasi. Pada level eksternal ini, user dibatasi pada kemampuan berangkat keras dan perangkat lunak yang digunakan aplikasi bahasa basis data.
- 16 -
e-Book
Hak Cipta 2007
Gambar di bawah ini menunjukan level-level yang ada dalam arsiktektur sistem basis data.
View level View 1
View 1
…
View n
Dosen
Physical level
Gambar 3.1 Arsiktektur Sistem Basis Data
Abstraksi data dalam arsiktektur sistem basis data memberikan pandangan terhadap data secara berbeda-beda tergantung dari levelnya. Sebagai contoh pada level user view, bayangan mengenai data tidak lagi memperhatikan bagaimana data disusun dan disimpan dalam disk, tetapi secara menyeluruh bagaimana data direpresentasikan sesuai dengan keadaan yang dihadapi sehari-hari oleh pengguna. Hal ini dimaksudkan menghindari kerumitan teknik penyimpanan dan pengelolaan data dari pandangan pengguna awam.
B. SOAL LATIHAN 1.
jelaskan jelaskan bagaimana bagaimana penggun penggunaa awam mem memandang data dalam dalam sistem sistem basis data !
2.
jelaskan jelaskan keguna kegunaan an dari dari level level konsep konseptual tual dalam dalam arsiktek arsiktektur tur sistem sistem basis data! data!
- 17 -
e-Book
Hak Cipta 2007
BAB IV MODEL-MODEL DATA
A. MODEL-MO MODEL-MODEL DEL DATA DATA
Yang dimaksud dengan model data adalah sekumpulan tool konseptual untuk mendeskripsikan data. Relasi-relasi antar data, semantik data, dan konsistensi konstrain. Menyatakan hubungan antar rekaman yang tersimpan dalam basis data. Bermacam-macam model data terbagi dalam dua kelompok besar, yaitu Object-based logical models dan record models . dan record based logical models. 1.
object-based logical models
yang termasuk dalam kelompk ini di antaranya adalah entity-reletionship model dan Object-oriented model . a. Entity-Relation Model E-R model didasarkan atas persepsi terhadap dunia nyata yang terdiri dari sekumpulan object, object, disebut entitas dan hubungan antar objek tersebut, disebut relasi. Entitas adalah objek didunia yang bersifat unik. Setiap entitas mempunyai atribut yang membedakannya dengan entitas lainnya. Contoh : entitas Mahasiswa, mempunyai atribut Nim, Nama, Alamat, dan Tanggal lahir. Permodelan data dengan model E_R menggunakan menggunakan diagram E_R. Diagram E_R terdiri dari: •
Kotak persegi panjang, menggambarkan menggambarkan himpunan entitas.
•
Elip, menggambarkan menggambarkan atribut-atribut entitas.
•
Diamond, menggambarkan hubungan antar hubungan antar entitas.
•
Garis, yang menghubungkan menghubungkan antar objek dalam diagram E-R.
b. Object-oriented Model Model berorientasi object berbasiskan kumpulan object. Setiap object berisi : •
Nilai yang disimpanan dalam variable instant , dimana variable
”melekat” dengan objek itu sendiri. •
Metode, operasi yang berlaku pada object o bject yang bersangkutan
•
Objel-objek yang memiliki tipe nilai dan metode yang dikelompokan dalam satu kelas. Kelas disini mirip dengan abstrak pada bahasa pemrograman.
- 18 -
e-Book
Hak Cipta 2007
•
Sending a massage , sebuah objek dapat mengakses data sebuah yang
lain hanya dengan memanggil metode dari objek terseb t ersebut. ut. Selain kedua model diatas, yang termasuk dalam kelompok object-based logical model adalah Semantic data model dan Functional data model. 2. Record-based Record-based models
Beberapa model yang termasuk dalam model ini, adalah model relasional, model hierarki, model jaringan. a.
Model odel rel relasi asional onal Model relational menggunakan menggunakan kumpulan tabel-tabel ta bel-tabel untuk mempresentasikan mempresentasikan data-data dan relasi antar sata-data tersebut. Setiap tebel terdiri dari atas kolom-kolom dan setiap kolom mempunyai nama yang unik.
b. Model hei heira rark rkii Model ini menyerupai pohon yang dibalik. Menggunakan pola hubungan orangtua-anak. Setiap simpul menyatakan sekumpulan medan. Simpul yang terhubung dengan dengan level yang yang dibawahnya disebut orangtua. Setiap Setiap orang tua hanya mempunyai satu anak, bisa banyak anak tetapi anak hanya mempunyai satu orangtua. Simpul yang mempunyai anak tersebut akar, dan simpul yang tidak punya anak disebut daun. Hubungan antar orangtua dan anak disebut cabang. Contoh DBMS yang menggunakan model hierarki : Informasi Management System, dikembangkan oleh IBM dan Rockwell International Corporation. Berikut adalah contoh model basis data dengan menggunakan model hierarki untuk domain masalah pengajaran diperguruan tinggi. t inggi.
- 19 -
e-Book
Hak Cipta 2007
Perguruan Tinggi STMK AMKOM Yogyakarta
Mata kuliah
Matakuliah
Matakuliah
Basis Data
Sistem Pakar
Struktur Data
Dosen
Dosen
Dosen
Dosen
Dosen
Kusrini
Andi Sunyoto
Kusrini
Kusrini
Kusrini
Gambar 4.1 Contoh model basis data hierarki
c.
Model jari aringan Data dalam jaringan direpresentasikan daengan sekumpulan record (Pascal) dan rlasi antar data dorepresentasikan oleh record dan pointer. Record-record diorganisasikan diorganisasikan sebagai graft. Model ini hampir sama dengan model hierarki. Perbedaannya pada model ini satu anak bisa mempunyai lebih dari 1 o rangtua. Istilah orangtua dalammodel dalammodel jaringan disebut d isebut sebagai pemilik, sedangkan anak disebut sebagai anggota. Contoh DBMS yang menggunakan model jaringan yaitu CAIDMS/DB dan Integreted Database Management System yang dibangan oleh Cullinet Software Inc. Berikut ini adalah contoh conto h medel basis data dengan menggunakan menggunakan jaringan.
- 20 -
e-Book
Hak Cipta 2007
Perguruan Tinggi
STMK
Mata kuliah
Matakuliah
Matakuliah
Basis Data
Sistem Pakar
Struktur Data
Dosen
Dosen
Dosen
Hanill al Fatta
Andi Sunyoto
Kusrini
Gambar 4.2 Contoh model basis data jaringan B. SO SOAL AL LATIH ATIHAN AN 1. jelaskan perbedaan dari model data yang berbasis obyek dan model data yang
berbasis record! 2. perhatikan ilustrasi kasus berikut :
sebuah perusahaan retailer memiliki domain usaha jual beli barang. Barangbarang yang diperjual belikan dikelompokan menjasi 2 kelompok, yaitu busana dan bahan makanan. Setiap pelanggan dimungkinkan untuk melakukan pembelian beberapa pelanggan. pelanggan. Tetapi Tet api setiap hanya dibeli dari seorang distr ibutor, meskipun seorang distbutor dimungkinkan untuk menjual beberapa jenis barang sekaligus. Gambarkan kasus tersebut diatas dengan : a.
Model odel rel relasi asional onal
b.
Model hi hierark rarkii
c.
Model jari aringan
- 21 -
e-Book
Hak Cipta 2007 BAB V ENTITY RELATIONSHIP DIAGRAM
A. KONSEP ENTITY ENTITY RELATIONSHIP RELATIONSHIP DIAGRAM DIAGRAM
Perancangan Perancangan basis data dengan menggunakan model entity relat ionship ionship adalah dengan menggunakan Entity Relationship Diagram (ERD). Terdapat tiga notasi dasar yang attribut . bekerja pada model E-R yaitu : entity sets, relationship sets, dan attribut. Sebuah entiti adalah sebuah ”benda” (thing) atau ”objek” (objek) didunia nyata yang dapat dibedakan dari objek lainnya. Entity sets adalah sekumpulan entiti yang mempunyai tipe yang sama. Kesamaan tipe ini dapat dilihat dari attribut/property yang dimiliki oleh setiap entity. Misal : -
Kumpulan Kumpulan orang yang yang menyim menyimpan pan uang pada suatu bank bank dapat dapat didef didefinisi inisikan kan sebagai entity set nasabah. nasabah.
-
Kump Kumpulan ulan orang orang yang yang belaja belajarr dipergur diperguruan uan ting tinggi gi didefin didefinisi isikan kan seba sebagai gai mahasiswa.
Entity set dilambangkan dengan bentuk persegi panjang , seperti tampak pada gambar :
Gambar 5.1 Lambang Entity Set
Relationship adalah hubungan diantara beberapa entiti. Relationship set adalah sekumpulan relasi yang mempunyai tipe yang sama. Relationship set digambar dengan diamond seperti tampak pada gambar dibawah ini.
Gambar 5.2 Lambang Entity Set
Atribut merupakan sebutan untuk mewakili suatu entity. Atribut dalam ERD dilambangkan dengan bebtuk elips. Seperti pada gambar 5.3
Gambar 5.3 Lambang Entity Set
- 22 -
e-Book
Hak Cipta 2007
Ada beberapa istilah yang harus dipahami sebelum merancang basis data dengan menggunakan menggunakan model entity entit y relationship diagram. Diantaranya yaitu ; 1.
Superkey
Satu atau lebih atribut (kump atribut) yang dapat membedakan setiap baris data dalam tabek secara unik. Sebagai ilustasi diberikan tabel mahasiswa berikut : Tabel 5.1 Tabel Mahasiswa NIM 1001
Nama Rita
1002 1003 1004
Aini Rita Iko
Alamat Yogya
Jurusan MI
Magelang
MI SI TI
Dari tabel tersebut yang memungkinkan menjadi superkey adalah atibut NIM, atribut NIM dan Nama, atribut NIM dan Alamat, atibut NIM dan Jurusan, atribut NIM, Nama, Alamat dan Jurusan. Atribut Nama tidak bisa menjadi superkey karena memungkinkan lebih dari 1 baris yang memiliki nilai sama. Demikian pula atribut alamat, atribut jurusan, atribut Nama dan Alamat, Atribut Nama dan Jurusan, Atribut Alamat dan Jurusan serta Atribut Nama, Alamat, dan Jurusan. 2.
Kandidat Ke Key
Merupakan kumpulan atribut minimal yang membedakan setiap baris data dalam tabel secara unik. Untuk bisa menjadi kandidat key, suatu atribut harus memenuhi persyaratan persyaratan sebagai berikut : a.
Untuk Untuk satu satu nilai nilai hany hanyaa mengid mengidenti entifik fikasi asikan kan satu satu bari bariss dalam dalam satu satu relasi relasi (unik).
b.
Tidak Tidak memili memiliki ki subse subsett yang yang juga juga merup merupaka akan n kun kunci ci rel relasi asi
c.
Tida Tidak k dapa dapatt ber bern nilai null ull
Dengan kata lain, sebuah kandidat key adalah superkey yang paling sedikit jumlah atributnya. Dari contoh pada superkey dari tabel Mahasisea pada tabel 5.1 yang memenuhi persyaratan sebagai sebagai kandidat key adalah atribut NIM. 3.
Kun Ku nci relasi ( relation relation key) kunci utama ( primary key )
Nilai dari kunci relasi harus mengidentifikasikan sebuah baris yang unik didalam sebuah rekasi. Kunci relasi terdiri dari satu atau lebih atribut-atribut relasi. Agar menjadi sebuah primary key, sebuah atribut haruslah memenuhi perdyaratan
- 23 -
e-Book
Hak Cipta 2007
sebagai kandidat key. Dalam contoh tabel mahaiswa pada pada Tabel 5.1 NIM adalah kunci relasinya. 4. Kunci Kunci Alt Alter erna natif tif (al (alter terna nate te Key) Key)
Kunci yang tidak ada didunia nyata, tetapi diadakan dan dijadikan primary key. Kunci alternatif dibuat ketika tidak ada satu pun atribut dalam sebuah relasi yang bisa mewakili relasi teresebut, atau ada yang bisa menjadi kandidat key tetapi tidak cukup efektif untuk digunakan sebagai sebagai primary pri mary key. Sebagai contoh berikut ini adalah sebuah relasi Hobby ;
Tabel 5.2 Tabel hobby
Hobby Nama Hiking Climbing Renang
Keterangan
Suka naik gunung itu lho
Dari tabel 5.2 kandidat key pada tabel tersebut adalah Nama. Tetapi untuk lebih efektif mungkin aja perancang basisdata akan memberikan kunci alternatif berupa kode_hobi. Kode tersebut tidak pernah ada dalam dunia nyata. Karena kita tidak pernah tahu kalau Hiking tersebut dipilih sebagai kunci utama. Maka kode_nilai disebut sebagai kunci alternatif. 5.
Komposit Ke Key y
Primary key yang terdiri dari lebih dari 1 atribut atr ibut 6.
Foreig reign n Ke Key y (FK) (FK)
Istilah Fk juga banyak digunakan dalam perancangan. Sebuah Fk adalah sekumpulan atribut dalam suatu rlasi (misal A) sedemikian sehingga kumpulan atribut ini bukan kunci A tetapi merupakan kunci dari relasi re lasi lain. 7. Kar Kardina dinali lita tass Pemet Pemetaa aan n
Kardinalitas pemetaan atau rasio kardinalitas menunjukan jumlah entity yang dihubungkan ke satu entity lain dengan suatu relationship sets. Kardinalitas pemetaan meliputi : a.
Hubung ungan satu ke satu satu ( one to one) yaitu satu entity dalam A dihubungkan dengan maksimum satu entity.
b.
Hubung ungan satu ke ban bany yak (one to many) yaitu satu entity dalam A dihubungkan dengan sejumlah entity dalam entity dalam B dihubungkan dengan maksimum satu entity dalam A.
- 24 -
e-Book
c.
Hak Cipta 2007 Hubung ungan ba banyak ke ke sa satu ( many to one) satu entity dalam A dihubungkan dengan maksimum satu entity B. satu entity dalam B hubungkan dengan sejumlah entity dalam A.
d.
Hubun ubunga gan n bany banyaak ke ke bany banyak ak ( many to many) satu entity dalam A dihubungkan dengan sejumlah entity dalam entity dalam B dihubungkan dengan sejumlah entity dalam A.
B. TAHAP PEMBUATAN PEMBUATAN ENTITY RELATIONSHIP DIAGRAM DIAGRAM
Secara umum ada 2 langkah dalam membuat ERD. Langkah pertama adalah membuat ERD awal untuk mendapat sebuah rancangan database yang minimal dapat mengakomodasi
kebutuhan
penyimpanan
data
sistem
yang
sedang
mempertimbangkan anomali-anomali dan aspek-aspek efesiensi, kinerja, dan flekibilitas. Berikut akan dijelaskan tahap-tahap pembuatan ERD awal. Untuk lebih memudahkan ilustrasi, akan diberikan kasus perancangan basis data dalam Sistem Informasi Akademik. Adapun langkah-langkahnya langkah-langkahnya adalah sebagai berikut. 1. Mengidentifi Mengidentifikai kai dan menetapk menetapkan an seluruh seluruh himpunan himpunan entitas 9entity 9entity)) yang yang akan terlihat.
Misalnya entitas yang terlihat adalah : Mahasiswa, Mahasiswa, Dosen, Matakuliah. 2. Menentukan Menentukan atribut-atr atribut-atribut ibut key dari dari masing-mas masing-masing ing himpun himpunan an entitas. entitas.
Untuk entitas Mahasiswa, atribut yang terlibat yaitu : NIM, Nama., Alamat, Jurusan. Untuk entitas Dosen, atribut yang terlibat adalah : NIP, Nama, Nama, Alamat. Untuk entitas Matakulaih, atribut yang terlibat adalah : Kode_Matakul, Nama, SKS. 3. Menentu Menentukan kan PK dari dari setia setiap p entita entitass yang yang ada. ada.
PK dari entitas Mahasiswa : NIM. PK dari entita Dosen : NIP. PK dari entitas Matakuliah Mat akuliah : Kode_Matkul. 4. Mengidentifi Mengidentifikas kasii dan menetapka menetapkan n seluruh seluruh himpunan himpunan relasi relasi di antar antara a himpunan entitas-himpunam entitas yang ada beserta foreign key-nya .
- 25 -
e-Book
Hak Cipta 2007
Dosen dengan mata kuliah berelasi secara langsung dengan relasi mengajar, yaituu deosen mengajar mata kuliah. Himpunan relasi mengajar antara Dosen dan Mata kuliah bisa dilihat pada gambar 5.4 dibawah ini. alamat
Kod_Matkul SKS
Nama
Mengajar
Dosen
Matakuliah
Nama
NIP NIP
atribut pada gambar 5.4 ada beberapa atribut yang digaris bawahi yang atribut NIP pada Entity Dosen dan Kode_Matkul pada Entity Matakuliah. Atribut yang diberi garis bawah ganda seperti atribut NIP dan Kode_Matkul pada relasi Mengajar merupakan Foregein Key. Selain Dosen dan Matakuliah yang dihubungkan dengan Relasi Mengajar, masih ada satu Entity yang masih berelasi dalam sistem ini, yaitu Entity Mahasiswa. Entity Mahasiswa berhubungan dengan relasi Matakuliah sekaligus beralasi dengan dosen, tetapi relasi antara Mahasiswa Mahasiswa dengan dengan kedua entity yang lain saling bekaitan (bersamaan). Mahasiswa mengikuti suatu matakuliah yang diajarkan oleh seorang dosen. Adi tidak hanya dosennya tetapi langsung dengan mata kuliahnya secara spesifik. Relasi seperti ini disebut dengan agragasi. Dimana sebuah entity berelasi dengan yang lain. Jika digambar akan tampak seperti pada gambar 5.5 berikut ini : alamat Nama
Kod_ Matkul
Kod_Matkul
Mengajar
Dosen
Matakuliah
NIP
NIP
Mengik ut
NIP
NIM
SKS
Nama
Kod_Matkul
NIP
Mahasiswa
Jurusan
alamat Nama
Gambar 5.5 Relasi Agregasi
5. Menentukan Menentukan derajat/ka derajat/kardi rdinalita nalitass relasi relasi untuk untuk setiap setiap himpun himpunan an relasi relasi
- 26 -
e-Book
Hak Cipta 2007
Relasi anatara dosen dengan matakuliah memiliki kardinalitas banyak ke banyak atau many to many, dimana satu dosen dapat mengajar banyak mata kuliah dan datu mata kuliah bisa diajarkan oleh banyak dosen. dosen. Demikian pula relasi antara Mahasiswa dengan RELASI Mengajar yang menghubungkan antara Entity Dosen dengan Matakuliah, memiliki kardinilitas Banyak ke Banyak. Berikut ini adalah gambar ERD setelah ditentukan derajat kardinilitasnya. kardinilitasnya.
alamat Nama
Kod_Matkul
Kod_ Matkul
Mengajar
Dosen
N IP
Matakuliah
NIP
Mengik ut
NIP
NIM
SKS
Nama
Kod_Matkul
NIP
Mahasiswa
Jurusan
alamat Nama
Gambar 5.6 Dengan derajat kardinalitas
Penggambaran ERD dapat pula dilengkapi dengan kamus data, sehingga tidak perlu digambarkan semua atributnya dalam gambaran ERD-nya. Cara penulisan kamus data yaitu dengan menyebutkan Entity diikuti dengan atribut-aributnya. Misal Entity Dosen akan ditulis sebagai berikut : Dosen : { NIP, Nama, Nama, Alamat} Alamat} Dalam kamus data NIP diberi garis bawah untuk menambahkan bahwa NIP merupakan primary key dari entiti Dosen. Dosen. Setelah ERD lengkap lengkap dengan kardanilitasnya selesai selesai dibuat. Langkah Langkah selanjutnya selanjutnya yang perlu dipikirkan adalah optimasi dilakukan untuk 3 t ujuan yaitu meningkatkan : -
Efesiensi
-
Kiner ja
-
Fleksibilitas
- 27 -
e-Book
Hak Cipta 2007
Untuk meningkatkan efesiensi dan kinerja, dalam optimasi ERD terkadang diperlukan pemberian kunci alternatif (alternate key) yaitu atribut yang sebenarnya tidak ada didunia nyata. Tetapi ditambahkan dan dijadikan sebagai primery key. Sebagai contoh dalam relasi hobi, dimana dalam relasi tersebut hanya tersiri dari nama_hobi. Mengingat panjang data nama hobi cukup banyak, terkadang perlu dipertimbangkan untuk menambahkan kode_hobi yang sebenarnya sebenarnya hal ini ada dalam dunia nyata. Dalam hal pengkodean, ada 3 bentuk pengkodean yang bisa diberikan yaitu : -
Sekue Sekuensi nsial al,, jenis kode kode ini dibe diberik rikan an secara secara urut. urut. Misalny Misalnyaa untuk untuk kode pemb pembeli elian an terurut dari 1, 2, 3, dan seterusnya.
-
Mnem Mnemonic. onic. Jenis Jenis kode ini ini berupa berupa karak karakter ter atau atau angka angka seb sebaga agaii simbol. simbol. Misalny Misalnyaa L dan P pada jenis kelamain yang aartinya laki-laki dan perempuan.
-
Blok. Blok. Jeni Jeniss pengko pengkodea dean n ini terdi terdiri ri dari bebe beberapa rapa bagia bagian, n, misal misalnya nya NIM NIM 02.11.2341. kode tersebut memiliki 3 bagian yang masing-masing memiliki makna tersendiri. Bliok pertama 02 bermakna tahun angkatan 2002. Blok ke 2 berisi kode jurusan yang menggambarkan menggambarkan nomer urutan u rutan mahaiswa pada tahun dan jurusan terebut.
Hal lain yang bisa dilakuakn dalam usaha optomasi adalah melakukan dekomposisi atau pemecahan pemecahan t abel. abel. Dalam hal peningkatan fleksibilitas, optimasi dilakukan dengan cara berikut : -
Penambah Penambahan an atribut. atribut. Dengan Dengan ditambahk ditambahkan an atribut atribut pada pada entity/rel entity/relasi asi diharapkan diharapkan,, entity/relasi ini akan lebih fleksibel penggunaannya. Sebagai contoh :relasi mengajar jika hanya memiliki atribut NIP dan Kode_Matkul, berarti relasi ini hanya berlaku untuk datu periode waktu daja. Namun jika ditambahkan atribut Tahun dan semester, maka relasi ini dapat menampung data untuk beberapa periode waktu.
-
Pemilihan Pemilihan domain domain atribut yang yang lebih lebih luas. luas. Sebagai Sebagai contoh adalah adalah pemili pemilih h lebar lebar data untuk atribut tahun. Sebelum tahun 2002, banyak system yang yang dibangun dengan rancangan rancangan lebar atr ibut tahun adalah 2 digit. Ddengan demikian untuk tahun 1982 hanya ditulis 82. untuk tahun 1989 hanya ditulis 98.
-
Gene Generel relasi asi.. Sebuah Sebuah contoh contoh kasus kasus generel generelasi asi adal adalah ah sebag sebagai ai berikut berikut.. Diberik Diberikan an 2 entitas Dosen dan Mahasiswa sebagai anggota dalam sistem perpustakaan. Masing-masing dari kedua entitas tersebut memiliki atribut IdAnggota, Nama, dan Alamat. Jika masing-masing jenis anggota direpresentasikan dalam sebuah relasi maka jika ada penambahan jenis anggota, anggota, misalnya karyawan, karyawan, maka harus - 28 -
e-Book
Hak Cipta 2007
ditambahkan relasi baru. Tetapi jika generelasi , seluruh relasi dari anggota perpustakan dijadikan sebuah relasi anggota dengan atriut IdAnggota, Nama, dan Alamat dan ditambah dengan jenis. -
Perub Perubah ahan an stuktur stuktur entit entitas as dari dari yang yang berorien berorientasi tasi kolom kolom bari bariss ke orienta orientasi si baris. baris. Sebagai contoh, sebuah relasi sirkulasi pada sistem perpustakaan yang berbentuk, seperti tampak pada tabelo 5.3 berikut. Tabel 5.3 Relasi Sirkulasi berorientasi kolom
Id_Ang
TglPinjam
IdBuku1
IdBuku2
1
1/1 06
A01
B54
3
3/2 06
D34
A43
...
Relasi pada tabel 5.3 diatas berlaku untuk perpustakaan yang memilki kebijakan meminjam buku 2 eksemplar untuk tiap peminjaman yang terjadi. Untuk perpustakaan perpust akaan yang memiliki kebijakan lain, relasi ini tidak dapat digunakan. Atau untuk perpustakaan yang sama, pihak manajemen tidak diijinkan untuk mengubah kebijakan. Tabel 54 Relasi Sirkulasi berorientasi baris
Id_Ang
TglPinjam
IdBuku
1
1/1 06
A01
1
1/1 06
B54
3
3/2 06
D34
3
3/2 06
A43
... C. SO SOAL AL LAT LATIH IHAN AN
Nerikut adalah sebuah kasus dalam perusahaan reatail yang memiliki lingkungan kerja penjualan dan pembelian barang. Identitas : 1. Enti Entita tass ya yang teli teliba batt 2. sebutkan sebutkan atribut-atrib atribut-atribut ut yang yang terlibat terlibat pada entitas entitas dari laitha laithan n nomor nomor 1. 3. pilih pilih primary primary key key entita entitass dari dari laithan laithan soal soal nomo nomorr 1 4. cari cari hubung hubungan an dianta diantara ra entita entitass dari latih latihan an soal soal nomor nomor 1 5. tentukan tentukan hubun hubungan gan kardinili kardinilitas tas dari hubun hubungan gan antar antar entitas entitas pada pada latihan latihan soal nomor 4
- 29 -
e-Book
Hak Cipta 2007 BAB VI IMPLEMENTASI ENTITY RELATIONSHIP DIAGRAM
A. TAHAP IMPLEMENTASI
Tahap Implementasi merupakan upaya untuk membangun basis data fisik yang ditempatkan dalam memori sekunder. sekunder. Adapun langkah-langkah untuk mengimplementasikan Entity Relationshp diagram adalah sebagai berikut : -
transforma transformasi si dari model model data yang yang telah dibuat dibuat ke skema skema basis basis data sesua sesuaii dengan dengan DBMS yang dipilih. à
-
Diagram ER
basis data.
-
Entit y à table-tabke/file-file data
-
Atr ibut à field
Transformasi dasar : 1. Setiap Setiap himpuna himpunan n entiatas entiatas akan akan diimpleme diimplementasi ntasikan kan sebagai sebagai sebuah sebuah table 2. Relasi Relasi dengan dengan deraja derajatt 1-1 yang yang menghubun menghubungkan gkan 2 buah buah himpuna himpuna entitas entitas akan akan direpresentasikan direpresentasikan dalam bentuk penambahan penambahan atribut-atribut relasi ke salah satu tabel yang memiliki kedua himpunan entitas. 3. Relasi Relasi dengan dengan deraja derajatt 1-N yang yang menghubun menghubungkan gkan 2 buah buah himpunan himpunan entitas juda juda akan direpresentasikan direpresentasikan dalam bentuk pencntuman atau pemberian atribut key dari himpunan entitas pertama pertama (yang derajat 1) ke himpunan himpunan ke 2 (yang derajat N). 4. Relasi Relasi dengan dengan deraja derajatt N-N yang yang menghubun menghubungkan gkan 2 buah buah himpunan himpunan entitas akan akan diwujudkan dalam bentuk table khusus, yang memiliki fiekd tepatnya (foreigen key) yang berasal dari key-key kedua himpunan entitas yang yang dihubungkan. 5. Relasi tu tungga ggal a. Derajat Derajat 1-1 : penggunaan penggunaan field field key dua kali kali pada satu satu table dengan dengan nama nama dan fungsi berbeda. b. Derajat Derajat 1-N : dibentuk dibentuk tabel baru yang yang mendapatk mendapatkan an field field dari atribut atribut relasi dari dari atribut relasi yang ditambah dengan atribut key k ey dari himpunan entitasnya. Sebgai contoh akan diberikan ER Diagram seperti tertera t ertera pada Gambar 6.1 berikut :
- 30 -
e-Book
Hak Cipta 2007
alamat Nama
Kod_Matkul
Kod_ Matkul
Mengajar
Dosen
Matakuliah
SKS
Prayarat
NIP NIP Nama
Mengik ut
NIP
Kod_Matkul
NIP
Mahasiswa
NIM
alamat
Nama Nama Mengik ut
Jurusan Kod_Jurusan
NIM Kod_Jurusan
Gambar 6.1 Entity Relationship Diagram
Adapun langkah implementasinya implementasinya adalah sbagai berikut : 1. Mengubah Mengubah entitas menjadi menjadi tabel dengan dengan fieldnya fieldnya adalah adalah atribut atribut dari entitas entitas tersebut. Dengan demikian tabel yang berbentuk pada tahap ini adalah : -
Tabel Tabel Dosen Dosen,, Fiel Field-fi d-fieldn eldnya ya : NIP, NIP, Nama Nama,, Alam Alamat. at.
-
Tabel Tabel Matak Matakuli uliah, ah, Fiel Field-fi d-field eldny nyaa : Kode Kode_M _Matku atkul, l, Nam Nama, a, SKS. SKS.
-
Tabel Tabel Maha Mahasis siswa wa,, Field Fieldny nya-fi a-field eldny nyaa : NIM, NIM, Nama, Nama, Alama Alamat. t.
-
Tabel Tabel Jurus Jurusan an,, Field Field-fi -field eldny nyaa : KD_Ju KD_Jurus rusan, an, Nama. Nama.
2. Menguba Mengubah h relasi antara entitas entitas dengan dengan derajat derajat kardina kardinalitas litas banya banyak k ke banyak banyak enjadi table baru. Dari gambar 6.1, relasi yang derajat kardinalitasnya banyak ke banyak adalah : -
Relasi Relasi Mengajar, Mengajar, yang yang menghubu menghubungk ngkan an antar Dosen Dosen dengan dengan Matakuliah Matakuliah.. Relasi ini diubah menjadi tabel Mengajar dengan field : NIP, NI P, Kode_Matkul.
-
Relasi Relasi
Prasy Prasyara aratan tan,,
yang yang
menghu menghubu bung ngkan kan
antara antara
Matak Matakuli uliah ah
deng dengan an
Matakulaiah. Relasi ini diubah menjadi tabel Prasyarat dengan field : kode_Matkul, Kode_Matkul_Prasyarat Kode_Matkul_Prasyarat -
Relasi Relasi Men Mengik gikuti uti,, yang yang menghub menghubung ungkan kan antar antar Maha Mahasis siswa wa dengan dengan Rela Relasi si Mengajar. Relasi ini diubah menjadi tabel mengikuti dengan nilai field : NIM, Kode_Matkul, NIP
- 31 -
e-Book
Hak Cipta 2007
Menambahkan fild pada entity yang dihubungkan oleh relasi dengan derajat satu ke banyak. Dari gambar 6.1, relasi yang berderajat satu ke derajat banyak adalah relasi memiliki yang menghubugkan antar jurusan dengan mahasiswa. Relasi ini mengakibatkan penambahan field Kode_Jurusan sebagai primary key dari entiti jurusan yang berserajat satu ke entiti mahasiwa yang berderajat banyak. Dengan demikian tabel mahasiswa memiliki field : Nim, Nama, dan Kode_Jurusan. B. TIPE TIPE DATA DATA FIEL FIELD D
Tipe-tipe data field beserta aturan penamaan tertanggung pada DBMS-nya. Secara umum macam-macam tipe field : -
Data Data An Angka gka : Num Numerik erik atau atau Alf Alfan anum umeri erik. k.
-
Data Data Nume Numerik rik : Bilang Bilangan an bula bulatt (interg (interger) er) atau atau Bila Bilang ngan an Nyata Nyata (real (real). ).
-
Data Data Bil Bilanga angan n Bula Bulatt (in (inte terg rger er)) o
Byte (1 byte)
o
Small interger (2 byte)
o
Long interger (4 byte)
- Data Data Bila Bilang ngan an Nyata Nyata o
Singel (4 byte)
o
Double (8 byte)
- Data Uang o
Money/currency
- Data Te Teks o
Character (fixed)
o
Variable Character (non fixed)
- Data Biner
Blob
C. SOAL LATIHAN
Tentukan implementasi basis data secara fisik berupa file, field, primary key, dan foreign key dari ER-Diagram berikut :
1. Mah Mahasi asiswa swa {NIM {NIM,, Nama} Hobbi {Kode, Hobbi} Mahasiswa
Memiliki
2. Dose Dosen n {NIP {NIP,, Nam Nama, a, Alam Alamat} at} - 32 -
Hobbi
e-Book
Hak Cipta 2007
Dosen
Pembimbing
3. Mah Mahasis asiswa wa {NI {NIM, M, Nam Nama} a} Matakuliah {Kode, Matakuliah, SKS}
Mahasiswa
Mengikuti
4. Dokter Dokter {Kode {KodeDok Dokter ter,, Nama, Nama, Alama Alamat} t} Dokter
Pasangan
BAB VII
- 33 -
Matakuliah
e-Book
Hak Cipta 2007 NORMALISASI DAN DENORMALISASI DENORMALISASI
A. TEKNIK NORMALISASI
Salah satu topik yang cukup kompleks dalam dunia manajemen database adalah proses untuk menormaslisasi tabel-tabel dalam database relasional. Bab ini akan membahas mengenai bentuk-bentuk normalisasi dan teknik-teknik yang digunakan dalam melakukan normalisasi. Dengan normalisasi normalisasi kita ingin mendesain database database relasional yang yang terdiri dari tabeltabel berikut : 1. Beri Berisi si dat dataa yang yang dip diperl erluk ukan an.. 2. Memilk Memilkii sedi sediki kitt mungk mungkin in reduda redudans nsi. i. 3. Mengakom Mengakomodasi odasi banya banyak k nilai nilai untuk untuk tipe tipe data yang yang diperluk diperlukan. an. 4. Men Mengsfi gsfisi sien enka kan n upda update te.. 5. Menghinda Menghindari ri kemungkinan kemungkinan kehilan kehilangan gan data secara secara tidak tidak disengaja/ disengaja/tidak tidak diketahu diketahui. i.
Alasan utama dari normalisasi database minimal sampai dengan bentuk normal ketiga adalah
menghilang
kemungkinan
adanya
”insertion
anomalies”,
”delection
anomalies”, dan ”update anomalies”. Tipe-tipe kesalahan terebut sangat mungkin terjadi pada database yang tidak normal.
”insertion anomalies” adalah sebuah kesalahan dalam penempatan informasi entry data baru ke seluruh tempat dalam data base dimana informasi tersebut perlu disimpan. Dalam database yang tidak perlu normalisasi, prses dimasukkan ke dalam satu tempat.
”Delection anomalies” adalah sebuah kesalahan dalam penghapusan suatu informasi dalam database harus dilakukan dengan penghapusan informasi tersebut dari beberapa tempat dalam database. Dalam database yang telah dinormalisasi, penghapusan suatu informasi hanya perlu dilakuakan dalam satu tempat dalam database database tersebut.
Sedang kan dalam melakukan update satu informasi, kesalahan juga dapat terjadi ketika kita harus melakukan update ke seluruh tempat yang menyimpan informasi tersebut. Kesalahan ini disebut dengan ”update anomaly”.
- 34 -
e-Book
Hak Cipta 2007
Normalisasi merupakan cara pendekatan dalam membangun desain logika basis dataa relasional yang tidak secara langsung berkaitan dengan model data, tetapi dengan menerapkansejumlah aturan dan kreteriastandar untuk menghasilkan struktur tabel yang normal.
Dalam perperspektif normalisasi sebuah databae dikatakan baik jika setiap tabel yang membentuk basis data sudah berada dalam keadaan normal. Suatu tabel dikatakan normal, jika : a. Jika Jika ada dekomposisi dekomposisi/pen /pengurai guraian an tabel, tabel, maka maka dekomposisi dekomposisinya nya dijamin dijamin aman (lossless-join (lossless-join decomposition) b. Terpelih Terpeliharany aranyaa ketergantun ketergantungan gan funtional funtional pada saat perubahan perubahan data (dependenc (dependency y preseervation) c. Tidak Tidak melanggar melanggar Boyce Boyce Code Code Normal Normal FORM (BCNF), (BCNF), jika jika tidak bisa bisa minimal minimal tidak melanggar bentuk normalisasi ketiga. Yang dimaksudkan dengan ketergantungan fungsional/fungcional fungsional/fungcional depedency adalah : Diberikan sebuah tabel /relasi T. Atribut B dari T bergantung secara fungsi pada atribut A dari T jika dan hanya jika setiap nilai B dari T punya hubungan dengan tepat satu nilai A dalam T (dalam setiap satu waktu) Beberapa kondii yang diuji pada proses normalisasi ; - Menambah Menambah data/inse data/insert rt - Mengedi Mengedit/mengup t/mengupdate date - Mengha Menghapu pus/d s/dele elete te - Membac Membaca/re a/retri trieve eve
3. BE BENT NTUK UK-B -BEN ENTU TUK K NOR NORMAL MALIS ISAS ASII a. Bentuk tidak normal
bentuk ini merupakan kumpulan data yang akan direkam, tidak ada keharusan megikuti format tertentu, dapat saja tidak lengkap dan keharusan dan terduplikasi. terduplikasi. Data dikumpulkan apa adanya sesuai keadaannya. b. Bentuk normal normal tahap tahap pertama (1
st
Normal Form)
Definisi : Sebuah table disebut 1NF jika :
Tidak ada baris yang duplikat dalam abel tersebut t ersebut
Masing-masing cell bernilai tunggal - 35 -
e-Book
Hak Cipta 2007
Catatan : permintaan yang menyatakan tidak ada baris yang duplikat dalam
sebuah tabel berarti tabel tersebut memiliki sebuah kunci, meskipun kunci tersebut merupakan kombinasi dari semua kolom. kolo m. Berikut ini akan dicontohkan normalisasi pertama, karena terdapat atribut waktu yang tergolong ke dalam atribut bernilai banyak. Agar tabel tersebut dapat memenuhi 1NF, maka solusiny so lusinyaa adalah dengan mengkomposisikan mengkomposisikan tabel Kuliah menjadi : Tabel kuliah tersebut tidak memenuhi normalisasi pertama, karena terdapat atribut waktu yang tergolong dalam atribut bernilai banyak. Agar tabel tersebut dapat memenuhi 1NF, maka solusinya adalah dengan mendekomposisikan tabel Kuliah menjadi : §
Tabel Kuliah (kode_kul, nama_kul, sks, semester, nama_dos) nama_dos)
§
Tabel Jadwal(kode_kul, Jadwal(kode_kul, waktu, ruang).
c. Bentuk normal normal tahap tahap kedua (2
nd
normal form)
Bentuk Normal Kedua (2NF) terpenuhi jika pada sebuah tabel semua atribut yang tidak termasuk dalam primary key memiliki ketergantungan fungsional pada primary key secara uth. Sebuah tabel dikatakan tidak memenuhi 2NF, jika ketergantungannya hanya bersifat parsial (hanya tergantungan ter gantungan pada sebagaian dari primary key). Bentuk normal kedua akan dicontohkan berikut. Misal tabel nilai terdiri dari atribut kode_kul, nim dan nilai. Jika pada tabel Nilai, misalnya kita tambahkan sebuah atribut yang bersifat redundan, yaitu nama_mhs, maka tabel nilai ini dianggap melanggar 2NF. Primary key pada tabel nilai ni lai adalah [kode_kul,nim]. Penambahan atribut baru (nama_mhs) akan menyebabkan adanya ketergantungan fungsional yang baru yaitu nim - >nama_mhs. Karena atribut nama_mhs ini haya memiliki keterbgantungan parsial pada primary key secara utuh (hanya tergantung pada nim, padahal nim hanya bagian dari primary pr imary key). Bentuk normal kedua ini dianggap belum memadai karena meninjau sifat ketergantungan atribtu terhadap primary key saja.
d. Bentuk normal normal tahap ketiga (3
rd
normal form)
- 36 -
e-Book
Hak Cipta 2007
sebuah tabel dikatakan memenuhi bentuk normal ketiga (3NF), jika untuk setiap ketergantungan fungsional dengan notasi X - > A, dimana A mewakili semua atribut tunggal didalam tabel yang tidak ada di dalam X, maka : - X haruslah haruslah super super key pada pada tabel tersebut tersebut - Atau A merupakan merupakan bagian bagian dari primary key pada tabel tabel tersebut tersebut Misalkan
pada
table
Mahasiswa,
atriibut
alamat_mhs
dipecah
kedalam
alamat_jalan, alamat_kota dank ode_pos. Bentuk ini tidak memenuhi 3NF, karena terdapat ketergantungan fungsional baru yang muncul baru pada tabel tersebut, yaitu : Alamat_jalan nama_kota - > kode_pos Dalam hal ini (alamat_jalan, nama_kota) bukan super key sementara kode_pos juga bukan bagian dari primary key pada t abel Mahasiswa. Mahasiswa. Jika tabel Mahasiswa didekomposisikan menjadi tabel Mahasiswa dan tabel Alamat, maka telah memenuhi 3NF. Hal ini dapat dibuktikan dengan memeriksa dua ketergantungan fungsional fungsional pada alamat tersebut, yaitu : Alamat_jalan nama_kota - > kode_pos Kode_pos - > nama_kota Ketergantungan
fungsional
yang
pertama
tidak
melanggar
3NF,
karena
(alamat_jalan, nama_kota merupakan superkey (sekaligus sebagai promari key) dari tabel Alamat tersebut. Demikian juga dengan ketergantungan fungsional yang kedua meskipun (kode_pos) bukan merupakan superkey, tetapi nama_kota merupakan bagain dari primary key dari tabel alamat. Karena telah memenuhi 3NF, maka tabel tersebut ter sebut tidak perlu di_dekomposi di _dekomposisikan sikan lagi. e. Bentuk normal normal tahap keempat keempat dan kelima kelima
penerapan aturan normalisasi sampai bentuk normal ketiga sudah memadai untuk menghasilkan tabel berkualitas baik. Namun demikian, terdapat pula bentuk normal keempat (2NF) dan kelima (5NF). Bentuk Normal keempat berkaitan dengan sifat ketergantungan banyak nilai (multivalued dependencey) pada suatu tabel yang merupakan pengembangan fungsional . adapun bentuk normal tahap kelima merupakan nama lain dari Project Joiin Normal Form (PJNF). f. Boyce Code Normal Form (BCNF) st
§
Memenuhi 1
§
Relasi harus bergantung fungsi pada atribut superkey
NF
3. CONTOH KASUS
- 37 -
e-Book
Hak Cipta 2007
Berikut akan diberikan contoh proses perancangan database dengan tteknik normalisasi.
Dokumen dasar : Faktur Pembelian Barang PT. Ayo Bersama Jl. Senopati 12 yk Kode Suplier : G01 Nama Suplier : Gober Nustra
Tanggal : 07/10/04 Nomor : 004
Kode
Nama Brg
Qty
Harga
Jml
A01
AC model 1
10
1000000
10000000
A02
AC model 2
5
900000
4500000 Tota Totall Fakt Faktur ur 1450 145000 0000 00
Jatuh Tempo 15/10/04
Faktur Pembelian Barang PT. Ayo Bersama Jl. Senopati 12 yk Kode Suplier : G01 Nama Suplier : Gober Nustra
Tanggal : 07/10/04 Nomor : 004
Kode
Nama Brg
Qty
Harga
Jml
B01
Kursi
5
100000
50000
A03
Meja
7
250000
3250000 Tota Totall Fakt Faktur ur 375 3750000 0000
Jatuh Tempo 17/10/04 Bentuk tidak ternormalisasi Kd Fak
Kd Sup
004
G01
006
A03
Nama Sup
Kd Brg
Gobel
A01,
Nustra
A02
Angkasa
B01,A03
- 38 -
Nama brg
Tgl
...
AC Model2
07/10/04
...
Meja,Kursi Meja,Kurs i
09/10/05
...
ACModel 1,
e-Book
Hak Cipta 2007
...
J.tempo
qty
15/10/04
10,5
17/10/05
5,7
Hrg
Jml
Tot
1000000,
10000000,
14500000
900000
4500000
100000,
500000,
250000
3250000
3750000
Bentuk Normal 1 Kd Fak
Kd Sup
Nama Sup
Kd Brg
Nama brg
...
004
G01
Gobel Nust ra
A01
AC Model 1
...
004
G01
Gobel Nustra
A02
AC Model2
...
004
G01
Angkasa
B01
Meja
…
004
G01
Angkasa
B03
Kursi
…
...
Tgl
J.tempo
qty
Hrg
...
07/10/40
15/10/04
10
1000000
...
07/10/40
15/10/04
5
900000
...
09/10/05
17/10/05
5
100000
...
09/10/05
17/10/05
7
250000
Kelemahan : - insert : ingin memasukan supplier tanpa transaksi? - Delete : menghapus transaksi à supplier terhapus - Update : mengganti mengganti satu nama supplier à lainnya jadi tidak benar - Redundancy : jumlah ß hasil perhitungan qty * harga nd
Bentuk 2 KdFaktur
NF :
KdFaktur Bentuk BCNF : KodeFaktur KdSup KdFaktur KodeBrg
à
Tgl, Jtempo KodeSup, NamaSup à NamaBrg, Qty, Harga
à
Tgl, Jtempo, KodeSup à NamaSup à Qty, Harga à NamaBrg
- 39 -
e-Book
Hak Cipta 2007
B. DENORMALISASI 1. KONSE KONSEP P DENOR DENORMA MASL SLIS ISAS ASII Normalisasi hanya merupakan kebijakan standart perancangan basis data yang masih boleh dilanggar. Pross pelanggaran terahadap konsep normalisasi disebut dengan denormalissi adalah untuk meningkatkn kinerja sistem sist em (performasi). 2. AKIBA AKIBAT T DENO DENOR RMALI MALISA SASI SI Denormalisasi dapat mengakibatkan adanya redudancy. Redudancy terjadi ketika terjadi penyimpanan fakta yang sama lebih dari 1 kali. Redudancy perlu dibedakan dengan duplikasi. Duplikasi terkadang memang diperlukan dalam basis data. Duplikasi adalah penyimpanan nilai-nilai yang lebih 1 kali untuk menggambarkan menggambarkan fakta yang beda. Kelemahan redudancy : - membutuhkan ruang penyimpanan yang besar. - Dapat menimbulkan menimbulkan inkonsistensi inkonsistensi data data (melemahkan (melemahkan integritas data). - Pemeliharaan integritas integritas membutuhkan membutuhkan waktu lebih lebih banyak. banyak. 3. BENTUK BENTUK-BE -BENTU NTUK K DENOR DENORMAL MALISA ISASI SI Berikut ini adalah bentuk-bentuk denormalisasi denormalisasi : - atribut atribut yang yang terderivias terderiviasii ànilai pada aribut ini bisa diolah dari nilai-nilai yang sudah ada tabel lain. - Atribut Atribut yang yang berlab berlabihan ihan : Atribut terkodekan atribut gabungan gabungan Atribut tumpang tindih Atribut bermakna ganda - Tabel Tabel rekap rekapitul itulasi asi C. SOAL LATIHAN 1. BUATLAH BUATLAH RANCANGAN RANCANGAN BASIS DATA DENGAN DENGAN MENGGUNAK MENGGUNAKAN AN TEKNIK NORMALISASI (BENTUK TIDAK NORMAL 1, NORMAL 2, DAN BENTUK BCNF) DENGAN DOKUMEN DASAR SEBAGAI BERIKUT : TRANSKIP NILAI PERGURUAN TINGGI XYZ
NIM Nama Alamat
: : :
110A213 Nindita Adi Swatika Jl. Apel Merah No 27A Yogyakarta
Jenjang Jurusan Th. Masuk
: : :
S1 Sistem Informasi 2002
Kode Matkul
Nama
SKS
Tahun Pengambilan
Semester Pengambilan
Nilai
BD
Basis Data
3
2002
2
A
SD
Struktur Data
4
2003
1
B
A
Agama
2
2002
2
D
K
Kalkulus
3
2003
1
C
Total SKS IPK
:
12
:
2.92
- 40 -
e-Book
Hak Cipta 2007
2. apa ala alasan san dil dilaku akukan kanny nyaa denoma denomarlis rlisasi asi?? 3. berikan berikan contoh contoh keadaan/ta keadaan/tabel bel yang yang perlu perlu denormalisas denormalisasi. i. Jelaskan Jelaskan alasanny alasannya! a!
- 41 -
e-Book
Hak Cipta 2007 BAB VIII BAHASA BASIS DATA
A. BAHASA BASIS DATA
Sistem basis data komersial menghendaki adanya sebuah bahasa query yang lebih mudah dipahami dan mudah digunakan (user-friendly). Oleh karena itu d iperkenalkan iperkenalkan SQL sebagai bahasa query yang lebih marketable. SQL menggunakan kombinasi aljabar relasional & kalkulus relasional. Meskipun SQL adalah bahasa query terhadap basis data. SQL mempunyai kemampuan untuk mendefinisikan struktur data, modifikasi data dalam basis data dan menentukan konstrain konstrain sekuriti. SQL mrupakan bahasa data relasional standart. Terdapat macam-macam versi SQL. Vrsi aslinya pertama kali dikembangkan oleh IBM San Jose Research Laboratory. Bahasa ini aslinya disebut Suquel, diimplementasikan pada Sytem R Project pada awal 1970-an. Bahasa Sequel berkembang dan berubah menjadi SQL (Structural Query Language). Pada tahun 1986, the American National Standart Institute (ANSI) dan the International Standart Organization (ISO) mengumumkan sebuah standart SQL yang disebut 86. Sampai sekarang bahasa yang menjadi standart adalah SQL 92.
Bahasa SQL mempunyai dua bagian, yaitu : 1. Data Data Def Defin initi ition on Lan Langu guag agee (DDL) (DDL)
DDL memberikan perintah untuk mendefinisikan dan memodifikasi database dan strukturnya termasuk konstrain-konstrain yang ada di suatu table. Contoh konstrain yang diimaksud disini adalah promery key, foreign key, null, default, index, unique, dan lain-lain. 2. Data Data-Ma -Mani nipul pulas asii Langu Languag agee (DML) (DML)
DML merupakan bahasa query yang digunakan untuk melakukan pengolahan terhadap data yang ada didalam sebuah database. Pengolahan yang dimaksudkan disini diantaranya adalah memasukan data kedalam table (INSERT), mengubah data (UPDATE), menghapus data (DELETE), dan mengambi data (SELECT) dari satu atau beberapa table.
- 42 -
e-Book B.
BAHASA
Hak Cipta 2007 BASIS
DATA
UNTUK
MENGIMPLEMENTASIKAN
RANCANGAN BASIS DATA
Pada bahasan sebelumnya, sudah dijelaskan SQL untuk mengakses data dan untuk manipulasi data. Didalam SQL juga dikenal bahasa definisi data atau sering dengan definition language .
Standart SQL-92 mendukung mendukung bermacam-macam bermacam-macam tipe domain
built-in yang yang dapat
dilihat pada tabel 8.1. Tabel 8.1 Tabel tipe domain standart SQL-92 Tipe
Keterangan
Char (n)
fixed-lengthcharacter ) Tipe karakter dengan panjang yang t etap (n) ( fixed-lengthcharacter
Vachar (n (n)
Tipe kara arakter de dengan panjang ang bervariasi. Ma Maksimum panj anjang ang n. n.
Int
Int erger
Smallint
Small interger
Numeric (p, d) Real, Double Precision
P menunjukkan jumlah digit bilangan dan d menunjukan jumlah digit dibelakang titik desimal. Floating-poin dan double-precision floating point
Float (n)
Floating—point number e
Date
Tipe kalender
Time
Tipe hari dalam jam, menit, dan det ik
D. DEFINIS DEFINISII SKEMA SKEMA DALAM DALAM SQL
Berikut ini adalah perintah-perintah SQL yang contohnya diimplementasikan dalam software SQL server 2000. 1.
Mem Membu buat at data datab base CREATE DATABASE SPBD ;
Scipt tersebut akan menghasilkan pembuatan database dilokasi default dari SQL Server 2000, yaitu di C:\Program Files\Microsoft Fi les\Microsoft SQL Server\MSSQL\Data\ Dengan nama SPBD, mdf dan SPBD_Log.Idf File dengan ekstensi .mdf bersisi data dari database tersebut sedangkan file dengan ekstensi . Idf erupakan file history. Apabila diinginkan lokasi database yang berbeda, bisa dibuat cript seperti dibawah ini :
- 43 -
e-Book
Hak Cipta 2007
CREATE DATEBASE SPBD ON PRIMARY ( NAME NAME = spbd, FILENAME = D : \spbd.mdf ,
SIZE = 1, MAXSIZE = 10, FILEGROW FILEGROWTH = 2 ) LOG ON ( NAME NAME = spbdlog ,
FILENAME = D : \spbd.ldf ,
SIZE = 1MB, MAXSIZE = 10 MB, FILEGROW FILEGROWTH = 1MB ) ; Scipt tersebut diatas akan membuat sebuah database dengan nama SPBF pada disk local dengan dua buah file, yaitu file data di D:\spbd.mdf dan history di D:\spbd.ldf. Keyboard size merupakan besar awl dari file ketika database dibuat. Maxsize merupakan nilai maximum dari databasenya sedangkan filegrowth merupakan nilai maksimum nilai pertambahan ukuran database ketika ukuran sudah mencapai mencapai ukuran yang didefinisikan sebelumnya. 2. Meng Mengha hapu puss data databa base se
Sintak query untuk menghapus database sebagai berikut :
DROP DATAB DATABASE ASEnam nama_database a_database Berikut ini adalah contoh query untuk menghapus menghapus database SPBD. DROP DATABSE SPBD ;
Sebagai catatan , didalam banyak DBMS pembuatan dan penghapusan database biasanya dapat menggunakan fasilitas GUI yang disediakan DBMS tersebut. 3.
Mebuat Ta Tabel
Berikut ini adalah contoh query untuk membuat table mahasiswa dengan atributnya adalah ThAng, Nim, Nama, dan Alamat. Dalam query dibawah ini belum didefinisikan primary key dan konstrain yang lain.
CREATE TABLE MAHASISWA ( THAN INTERGER,
- 44 -
e-Book
Hak Cipta 2007 NIM INTERGER, NAMA VARCHAR VARCHAR ( 30 ) , ALAMAT VARCHAR VARCHAR ( 80 ) ) ;
4.
Meng Mengha hapu puss tabe tabell
Untuk menghapus sebuah sebuah tabel dapat dituliskan perintah query berikut ini : DROP TABLE MAHASISWA ; 5. Mende Mendefin finisi isika kan n null null/n /not ot nul nulll
Secara default, suatu atribut boleh bernilai kosong (null) /tidak diisi ketika pengguna menambah data. Namun, terkadang dibutuhkan pula kostrain untuk mendefinisikan suatu atribut yang harus disi ( not null). Untuk melakukannya, berikut contoh bentuk query-nya : CREATE TABLE MAHASISWA ( THAN INTERGER not null , NAMA VARCHAR ( 30 ) not null , ALAMAT VARCHAR ( 80 ) ) ; Dalam query tersebut diatas, akan dibuat sebuah tabel dengan nama mahasiswa. Tabel tersebut memiliki 4 buah fielf yang bermakna ThAng, NIM, Nama dan Alamat. Field ThAng, NIM, dan Nama harus diisi ketika akan menambah data baru, tetapi field Alamat A lamat boleh tidak isi. 6. Mende Mendefi fini nisik sikan an Nil Nilai ai Defa Defaul ultt
Nilai default adalah nilai/data yang otomatis diberikan oleh sistem untuk suatu field ketika ada penambahan baris/record, sementara nilai pada field tersebut tidak diisi oleh user. Apabila tidak didefinisikan, nilai defaualt dari suatu atribut adalah null. Untuk mendifinisikan nilai default dapat dilakukan dengan membuat qury dengan bentuk seperti dibawah ini, pada saat ini pembuatan tabel. CREATE TABLE MAHASISWA ( THAN INTERGER not null , NAMA VARCHAR ( 30 ) not null , ALAMAT VARCHAR ( 80 ) ) default YOGYA ) ;
Query tersebut diatas mendefinisikan pembuatan tabel dengan 4 field, yaitu : ThAng, NIM, Nama dan Alamat. Karena memilki kostrain not null, Field ThAng, NIM harus diisi ketika ada penambahan data baru, sedangkan field Alamat tidak - 45 -
e-Book
Hak Cipta 2007
harus diisi. Namun jika tidak diisi, maka sistem secara otomatis akan mengisi field tersebut dengan ’YOGYA’. 7. Mende Mendefi finis nisik ikan an Prim Primar ary y Key Key
Primary key adalah satu atau lebih atribut yang terpilih sebagai wakil dari suatu tabel apabila akan direlasikan dengan t abel yang lain. Ada 3 cara yang yang dapat dilakukan dalam pembuatan pembuatan primary key, yaitu : a.
Didefinisi Didefinisikan kan dibelakang dibelakang atribut atribut yang yang terpilih sebagai sebagai primary key. key. Cara ini dilakukan bersama-sama pada saat dilakukan pembuatan table. Apabila atribut yang terpilih sebagai primary key lebih dari satu ( komposit key ), cara ini tidak dapat mengimplementasikannya. Berikut ini adalah contoh pembuatan tabel mahasiswa dengan primary key NIM : CREATE TABLE MAHASISWA ( THAN INTERGER not null , NIM INTERGER not null null , NAMA VARCHAR ( 30 ) not not null primary key , ALAMAT VARCHAR ( 80 ) ) default default ’ YOGYA’ ) ;
b.
Cara Cara kedua kedua dilakuk dilakukan an dengan dengan mendefi mendefinisi nisikan kan konst konstrai rain n primary primary key pada pada bagian akhir pendefinisikan tabel. Cara kedua seperti cara pertama, juga dilakukan pada saat pembuatan tabel. Hanya saja pada cara ini, primary key boleh atribut tunggal ataupun kumpulan atribut. Berikut ini adalah contoh query untuk membuat table mahasiswa dengan primary key atribut tunggal, yaitu NIM : CREATE TABLE MAHASISWA ( THAN INTERGER not null , NIM INTERGER not null , NAMA VARCHAR ( 30 ) not null , ALAMAT VARCHAR ( 80 ) ) default default ’ YOGYA’ ) , PRIMARY KEY ( NIM ) ) ;
Contoh yang lain, misalnya kita ingin membuat table KHS dengan atribut NIM, Matkul, dan Nilai dengan primary key NIM dan Matkul. Maka atribut query-nya adalah sebagai berikut : CREATE TABLE KHS ( NIM INTERGER not null , - 46 -
e-Book
Hak Cipta 2007 MATKUL VARCHAR ( 4 ) not null null , NILAI NILAI CHAR CHAR ( 80 ) ) defaul defaultt ’ B ’ ) , PRIMARY KEY ( NIM , MATKUL ) ) ;
c.
Cara Cara
terakh terakhiir
untuk untuk
mendefi endefinisi nisikan kan primary primary
key adalah adalah dengan dengan
menambahkan query khusus pendefinisisan kotrain primary key cara ini bisa dilakukan pada saat table sudah dibuat, tetapi primary key belum didefinisikan. Dengan cara ini, kita juga bisa mendefinisikan primary key yang berupa atribut tunggal atau komposit key. Sebagai contoh, apabila kita sudah membuat tabel mahasiswa dengan 4 atribut tanpa primary key dengan query berikut : CREATE TABLE MAHASISWA ( THAN INTERGER not null , NIM INTERGER not null null , NAMA VARCHAR ( 30 ) not not null , ALAMAT VARCHAR ( 80 ) ) default default ’ YOGYA’ ) ; Setelah query dijalankan dan tabel sudah terbuat, sementara kita merasa masih harus didefinisikan primary key-nya maka kita bisa menambahkan query berikut tanpa melakukan melakukan penghapusan tabel terlebih ter lebih dahulu. ALTER TABLE MAHASISWA ADD CONSTRAIN PK_MHS PRIMARY KEY (NIM) ;
Mahasiswa pada query diatas adalah nama table yang ingin ditambahi pr imary key, PK_MHS merupakan nama konstrainnya sedangkan NIM merupakan atribut yang terpilih sebagai primary key. Sebenarnya semua konstrain didalam database memilki nama, tetapi apabila tidak didefinisikan, nama tersebut akan diberikan secara otomatis oleh siste. Namaum khusus untuk pendefinisian primary key dengan cara ketiga ini, kostrain primary key HARUS diberikan nama. Atribut yang dipilih sebagai primary key harus terdefinisian terlebih dahulu dalam pembuatan table sebelumnya dan memiliki konstrain not null pada atribut tersebut. Dengan cara ini nama kostrain kost rain PK_MHS dapat kita gunakan untuk menghapus konstrain tersebut dengan cara berikut berikut : ALTER TABLE MAHASISWA DROP CONSTRAIN PK_MHS ;
- 47 -
e-Book 8.
Hak Cipta 2007
Mend Mendef efin inis isika ikan n Fore Foreig ign n Key Key
Untuk mendefiniskan Foeign Key harus dipastikan bahwa table dan atribut yang dirujuk (table induk dari foreign key) k ey) sudah didefinisikan terlebih dahulu. Misalnya kita membuat 3 buah table mahasiswa, mata kuliah, dan primary keynya adalah NIP dan pada table Mata kuliah primary key-nya adalah Kode, sedangkan primary key dari kelas adalh IdKelas. Sementara pada table kelas terdapat foreign key kode yang merujuk pada atribut kode pada mata kuliah. Selain itu table tersebut juga memiliki foreign key NIP yang merujuk pada atribut NIP pada dosen. KELAS PK
KELAS
PK
IDKELAS KODE NIP
PK
KODE MATAKULIAH SKS
PK KELAS PK
NIP
NAMA
Gambar 8.1 Relasi antar table
Untuk mengimplementasikan foreign key pada table kelas, maka table induk dari foreign key yang ada pada table tersebut (mahasiswa dan dosen) harus diimplementasikan diimplementasikan terlebih t erlebih dahulu. Ada dua cara untuk mendefinisikan foreign key pada suatu table, cara pertama dengan mendefinisikan pada saat pembuatan table. Sebagai contoh, perhatikan pendefinisian pendefinisian foreign key pada t able Kelas berikut : CREATE TABLE KELAS ( IDKELAS INTERGER NOT NULL PRIMARY KEY, KODE CHAR ( 2 ) NOT NULL REFERENCES MATAKULI MATAKULIAH AH ( KODE )
- 48 -
e-Book
Hak Cipta 2007 ON UPDATE CASCADE ON DELETE NO ACTION , NIP INTERGER NOT NULL REFERENCES DOSEN ( NIP ) ON UPDATE CASCADE ON DELETE NO ACTION ) ;
Cara ini digunakan hanya untuk foreign key yang bukan komposit komposit key (hanya satu atribut saja). Sementara apabila foreign key lebih dari satu atribut atau didefinisikanssesudah didefinisikanssesudah table terimplementasi, maka dapat didefinisikan dengan query berikut : ALTER TABLE KELAS ADD CONSTRAINT FK_KELAS1 FOREIGN KEY (KODE) REFERENCES MATAKULIAH (KODE) ON UPDATE CASCADE ON DELETE NO ACTION ; ALTER TABLE KELAS ADD CONSTRAINT FK_KELAS2 FOREIGN KEY (NIO) REFERENCES DOSEN (NIP) ON UPDATE CASCADE ON DELETE NO ACTION ;
Pendefinisian foreign key dengan cara kedua ini mempunayi keuntungan dalam memodifikasi/menghapus foreign key NIP pada table kelas yang diberi namaFK_Kelas2 namaFK_Kelas2 dapat dilakukan dilakukan dengan langkah sebagai sebagai berikut ber ikut : ALTER TABLE KELAS DROP CONTRAINT FK_KELAS ;
Dalam pendefinisian konstrain foreign key, ada variable status ON UPDATE dan ON DELETE yang isisnya bisa CAScade atau NO ACTION. CASCADE maksudnya, segala perubahan data pada table induk dimana data tersebut sudah dipakai pada table yang ada foreign key-nya tersebut maka data pada table yang ada foreign key akan menyesuaikan/mengikuti perubahannya. perubahannya. Sebagai contoh data table DOSEN ditujukan pada table 8.2 dan data KELAS ditujukan pada table 8.3 berikut :
- 49 -
e-Book
Hak Cipta 2007 Tabel 8.2 Tabel Dosen
NIP
NAMA
1
Ani
2
Eka
3
Rat ih
Tabel 8.3 Tabel Kelas IDKELAS
KODE
NIP
1
1
2
2
2
2
3
2
1
Dengan NIP pada kelas merupakan foreign key yang merujuk ke NIP pada table Dosen, jika didefinisikan ON UPDATE CASCADE maka ketika NIP 2 di table dosen diubah menjadi 5 maka semua NIP pada table kelas yang bernilai 2 akan berubah menjadi 5. Jika didefinisikan ON DELETE CASCADE, maka yang terjadi ketika NIP 1 di table dosen dihapus, maka semua NIP yang bernilai 1 pada table Kelas juga terhapus. Sementara itu nilai NO ACTION maksudnya adalah, jika sebuah data pada table induk sudah dirujuk pada table yang ada foreign key-nya (seperti NIP 2 dan 1 pada table dosen sudah dirujuk oleh NIP pada table kelas) maka pada table induknya tidak ijinkan untuk dilakukan pengubahan/penghapusan. Jika didefinisikan ON UPDATE CASCADE, maka pengeditan tidak diijinkan. Sementara jika definisi ON DELETE NO ACTION, maka penghapusan tidak diijinkan. Jika tepaksa diinginkan pegnubahan/penghapusan pada tabel induk yang sudah dirujuk dengan foreign key yang didefinisikan dengan ON UPDATE NO ACTION
atau
ON
DLETE
NO
ACTION,
maka
sebelum
penghapusan/pengubahan, data terkait pada tabel yang ada foreign key-nya tersebut harus dihapus terlebih dahulu. Misalnya diinginkan menghapus NIP 1 pada tabel dosen, maka harus dilakukan penghapusan data dengan NIP 1 pada table Kelas terlebih dahulu.
- 50 -
e-Book
Hak Cipta 2007
Berikut diberikan contoh sebuah rancangan database pada gambar 8.2 dan diimplementasikan diimplementasikan dengan query quer y dibawahnya secara lengkap.
DOSEN
MATAKULAH
PK PK
PK
NIP NAMA
KODE MATAKULIAH
PK
SKS
KELAS PK
IDKELAS KODE NIP
PK
KRS PK PK
PK
NIM IDKELAS NILAI
MAHASISWA
PK
THANG NIM NAMA ALAMAT
Gambar 8.2 Rancangan Database
CREATE TABLE MAHASISWA ( THAN INTERGER not null , NIM INTERGER not null null , NAMA VARCHAR ( 30 ) not not null , ALAMAT VARCHAR ( 80 ) ) default default ’ YOGYA’ ) ;
- 51 -
e-Book
Hak Cipta 2007
ALTER TABLE MAHASISWA ADD CONSTRAIN PK_MHS PRIMARY KEY (NIM) ;
CREATE TABLE DOSEN ( NIP INTERGER NOT NULL PRIMAARY KEY , NAMA VARCHAR ( 30 ) NOT NULL ) ; CREATE TABLE MATAKULIAH ( KODE CHAR ( 2) NOT NULL PRIMARY KEY , MATAKULIAH VARCHAR ( 30 ) NOT NULL , SKS INTERGER DEFAULT 2 ) ; CREATE TABLE KELAS ( IDKELAS INTERGER NOT NULL PRIMARY KEY , KODE CHAR ( 2 ) NOT NULL NULL , NIP INTERGER NOT NULL ) ; ALTER TABLE KELAS ADD CONSTRAIN FK_KELAS1 FOREIGEN KEY (KODE) ; REFERENCES MATAKULIAH (KODE) ON UPDATE CASCADE ON DELETE NO ACTION ; ALTER TABLE KELAS ADD CONSTRAIN FK_KELAS2 FOREIGN KEY (NIP) ; REFERENCES DOSEN (NIP) ON UPDATE CASCADE ON DELETE NO ACTION ; CREATE TABLE KHS ( NIM INTRGER NOT NULL , IDKELAS INTERGER NOT NULL , NILAI INTERGER DEFAULT 0 , PRIMARY KEY (NIM, IDKELAS ) ) ; ALTER TABLE KRS ADD CONSTRAIN FK_KRS1 FOREIGN KEY (NIM) ; REFERENCES MAHASISWA (NIM) ON UPDATE CASCADE
- 52 -
e-Book
Hak Cipta 2007 ON DELETE NO ACTION ;
ALTER TABLE KRS ADD CONSTRAIN FK_KRS2 FOREIGN KEY (NIP) ; REFEREBCES KELAS (IDKELAS) ON UPDATE CASCADE ON DELETE NO ACTION ;
9.
Man Manambah Ko Kolom
Terkadang penembahan kolom baru diperlukan pada table yang telah dibuat. Berikut adalah contoh query untuk melakukan melakukan penambahan kolom/field pada tabel mahasiswa yang sudah diimplementasikan sebelumnya. ALTER TABLE MAHASISWA ADD JKEL CHAR ( 1 ) ; 10. Mengha Menghapus pus Kolom Kolom
Jika diinginkan untuk menghapus suatu kolom yang sudah tidak diperlukan disuatu table, dapat dilakukan seperti contoh query berikut dimana dalam query tersebut akan dilakukan penghapusan kolom jkel pada table mahasiswa. ALTER TABLE MAHASISWA DROP COLOM JKEL ; 11. Mengub Mengubah ah Tipe Tipe Kolom Kolom
Mengubah suatu tipe kolom dapat dilakukan seperti contoh query di bawah ini, dimana dalam query tersebut akan dilakukakan pengubahan tipe kolom alamat menjadi varchar (255). ALTER TABLE MAHASISWA ALTER COLOM ALAMAT VARCHAR ( 255 ) ; Dalam pengubahan suatu kolom tidak perlu disebutkan tipe kolom awal tetapi cukup tipe barunya saja. Terkadang pengubah tipe kolom tidak dapat dilakukan pada kolom yang telah berisi data yang tidak kompotibel. Sebagai contoh, kolom alamat tidak bia diubah menjadi tipe interger apabila telah berisi nonangka, seperti huruf dan si mbol/tanda baca.
- 53 -
e-Book
Hak Cipta 2007
D. SOAL LATIHAN
1. Didefinisi Didefinisikan kan bahas bahasaa basis data data untuk pemb pembuatan uatan tabel barang barang dengan dengan field field : Nama, Satuan, dan Keterangan. File Nama dan Satuan tidak boleh berisi NULL. Pilih tipe-tipe yang paling sesuai untuk field-field tersebut, dan berikan penjelasan! 2. Tambahkan Tambahkan field field KodeBar KodeBaran ang g ebagai ebagai primary key pada tabel di latihan latihan soal no.1. no.1. 3. definisi definisikan kan sebuah sebuah table table pembelian pembelian denga dengan n field : Tanggal Tanggal,, KodeBarang KodeBarang,, Harga, Harga, dan Jumlah. 4. Hapus Hapus field field KodeBaran KodeBarang g dari table pada laitha laithan n soal soal nomer nomer 3. 5. Tambahkan Tambahkan table pembelian pembelian pada soal nomor nomor 3 dengan dengan field KodeBa KodeBarang rang dan didefinisikan sebagai foreign key yang merujuk pada field KodeBarang dan table Barang.
- 54 -
e-Book
Hak Cipta 2007 BAB 1X MANIPULASI DATA
Data manipulasi language (DML) merupakan bahasa query yang berdasarkan pada
aljabar relasi dan kalkulus relasi tuple. Termasuk dalam perintah ini adalah penyisipan, penghapusan dan modifikasi.
A. PENYISIPAN DATA ( INSERTION)
Perintah
SQL
untuk
measukan
data
ke
dalam
tabel
adalah
INSERT
INTO....VALUES.... Syntax : INSERT INTO nama_tabel VALUE (nilai_1, nilai_2, .., niai_n) ; Atau INSERT INTO table_name (kolom_1, kolom_2, ..,kolom_n) VALUE (nilai_1, nilai_2, ,nilai_n) ;
Contoh : Penyisipan data mahasiswa ke table mahaiswa. INSERT INTO mahasiswa VALUE (2003, 204, Maharani ) ; Atau INSERT INTO mahasiswa ( thmasuk, nim, nama ) VALUE (2003, 204, Maharani ) ;
Penulisan query untuk menyisipkan data dapat dilakukan dengan 2 cara. Pada cara pertama, nama kolom yang akan diisikan tidak disebutkan. Dengan cara ini, jumlah dan urutan kolom yang akan diisis harus sesuai dengan jumlah dan urutan struktur tabel mahasiswa. Lain halnya dengan cara kedua, nama kolom yang diisi tida harus sesuai dengan struktur tabel mahasiswa tetapi antara jumlah dan urutan kolom yang disebutkan harus dengan jumlah dan urutan pada bagiann value. Selain itu, seluruh kolom yang didefinisikan tidak null (not null) harus selalu diisi dala proses penyisipan data.
- 55 -
e-Book
Hak Cipta 2007
B. MODIFIKASI DATA
Dalam situasi tertentu, diinginkan untuk mengganti nilai dalam tabel tanpa harus mengganti semua nilai dalam tabel tersebut. Untuk tujuan ini dapat digunakan statement UPDATE. UPDATE juga dapat digunakan untuk mengubah data yang terdapat pada baris tertentu. Syntaks : UPDATE nama_tabel1 SET
Kolom_1 = nilai_baru_1 , Kolom_2 = nilai_baru_2 , ... Kolom_3 = nilai_baru_n [Whare kondisi] Ada empat hal yang bisa kita lakukan untuk mengubah mengubah data dengan UPDATE : §
Mengubah sebuah kolom untuk baris tertentu.
§
Mengubah beberapa kolom sekaligus
§
Mengubah beberapa baris.
§
Mengubah semua baris.
1. Menguba Mengubah h kolo kolom m terten tertentu tu untuk untuk bar baris is terten tertentu tu
Mislkan kita ingin mengubah kolom nama menjadi Anita Marani dalam tabel mahasiswa yang nim-nya = 200. Data semula : NIM
ThMasuk
Nama
200
1999
Nita Mariani
Perintah SQL : UPDATE mahasiswa SET nama = ’ Anita Mariani ’ WHERE nim = 200 ; Data hasil : NIM
ThMasuk
Nama
200
1999
Anit a Mar iani
- 56 -
e-Book
Hak Cipta 2007
2. Mengub Mengubah ah bebera beberapa pa kolom kolom sekali sekaligu guss
Misalkan diinginkan untuk mengubah beberapa data seorang mahasiswa mahasiswa Data semula : NIM
ThMasuk
Nama
200
1999
Anit a Mar iani
Perintah SQL : UPDATE mahasiswa SET nama = ’ Anita Mariani ’ ,
thmasuk = 2000 , WHERE nim = 200 ; Data hasil : NIM
ThMasuk
Nama
200
2000
Anit a Mar iani
3. Mengu Mengubah bah bebe bebera rapa pa bari bariss
Untuk membatasi baris baris yang akan diubah, kiata perlu menggunakan klausa WHERE. Kondisi yang disertakan di belakang belakang klausa kl ausa WHERE akan menentukan
berapa banyak baris yang akan diubah. Apabila kondidinya memenuhi syarat untuk satu baris saj, maka yang akan diubah juga hanya satu baris saja. Namun bila kondisinya terpenuhi oleh beberapa baris, maka semua baris yang memenuhi akan ikut diubah. Contoh :
Perubahan thmasuk mahasiswa yang semula 2001 menjadi 2002. Data semula : NIM
ThnMasuk
Nama
200
1999
Nita Mariana
201
1999
Fit r i Lut fia
202
2000
Farhan Saleh
234
2000
Romi Amanda
323
2000
Emilia
324
2000
Fery Aryant o
325
2000
Miranda Jamil
- 57 -
e-Book
Hak Cipta 2007
400
2001
Ast rina Damayant i
425
2001
Gogon Nandito
426
2001
Ananda Mirant i
Contoh : UPDATE mahasiswa SET thmasuk = 2002 WHERE thmasuk = 2001 Data hasil : NIM
ThnM asuk
Nama
200
1999
Nita Mariana
201
1999
Fit r i Lut fia
202
2000
Farhan Saleh
234
2000
Romi Amanda
323
2000
Emilia
324
2000
Fery Aryant o
325
2000
Miranda Jamil
400
2002
Ast rina Damayant i
425
2002
Gogon Nandito
426
2002
Ananda Mirant i
4. Meng Mengub ubah ah sem semua bar baris
Untuk mengubah semua baris, kita tidak perlu menuliskan klausa WHERE sebagai pembatas. Contoh : UPDATE mahasiswa SET thmasuk = 2003 ;
Dengan perintah diatas, maka seluruh baris dalam tabel mahasiswa pada kolom thmasuk akan diisi dengan 2003
- 58 -
e-Book
Hak Cipta 2007
C. PENGHAPUSAN DATA (DELETION) (DELETIO N)
Untuk menghapus baris-baris yang terdapat pada suatu tabel dapt digunakan pernyataan DELETE. Yang dapat dihapus (delete) hanyalah tuple bukan nilai pada suau atribut tertentu. Sintaks : DELETE FROM nama_tabel
[WHERE kondisi ] ; Penghapusan data pada suatu tabel yang menjadi referensi (master) dari tabel lain tidak dapat dilakukan apabila sifat relasinya on de;ete no action . Tetapi jika sifatrelasinya on delete cascade akan penghapusan suatu data master akan mengakibatkan mengakibatkan terhapusnya data pada tabel t abel yang mereferensi (detail). Sebagai contoh adalah pada relasi antar tabel mahasiswa mahasiswa dengan tabel KRSTeori. KRSTeori. Relasi kedua tabel tersebut tampak pada gambar 9.1. dalamrelasi mereka NIM pada tabel tersebut tampak pada tabel 10.1 dan 10.6, aka pada sifat relasi on delete no action penghapusan data mahaisawa dengan NIM 200 tidak bisa dilakukan, karena sedang digunakan pada tabel KRSTeori. Tetapi sifat relai on delete on cascade, maka penghapusan data mahasiswa dengan NIM 200 akan mengakibatkan penghapusan semua data ada KRSTeoti dengan NIM 200. Mahasiswa
Mahasiswa PK
NIM ThMasuk
PK
Kelas
PK,FK1
KodeKul
PK,FK2
NIM
Nama
Nilai
Gambar 9.1 Relasi tabel Mahasiswa dan KRSTeori
Ada dua penggolongan dalam menghapus tabel : §
Menghapus beberapa baris
§
Menghapus semua baris
1. Menghap Menghapus us bebera beberapa pa baris baris
Seperti pada bagian modifikasi data, penghapusan data pada baris-baris tertentu memerlukan klausa WHERE sebagai pembatasan baris dengan de ngan kondisi bagaimana yang akan dihapus. Contoh :
Menghapus data KRSTeori yang memiliki kelas-nya – ’A’ - 59 -
e-Book
Hak Cipta 2007
Data semula : Kelas
KodeKul
NIM
Nilai
A
SD
200
23
A
SD
201
43
B
SD
200
65
B
SD
234
85
A
SPBD
323
35
A
SPBD
324
76
B
SPBD
234
45
A
PT
234
87
A
PT
202
45
Perintah SQL : DELETE FROM KRHTeori WHERE Kelas = A Data hasil : Kelas
KodeKul
NIM
Nilai
B
SD
200
65
B
SD
234
85
B
SPBD
234
45
2. Mengh Menghap apus us sem semua ua bar baris is
Untuk menghapus semua baris dalam suatu table, tidak diperlukan adanya pembatasan kondisi sehingga sintaknya tidak memerlukan klausa WHERE. Contoh :
Penghapusan Penghapusan seluruh isi dari table mahasiswa berikut : DELETE FROM mahasiswa ;
D. SOAL LATIHAN
Perhatikan table mahasiswa berikut : NIM
Nama
Alamat
1
Ana Jamaica frinsca
Klaten
2
Edi mailo lo ho
Yogya
- 60 -
e-Book
Hak Cipta 2007
3
Edna jur ica
Yogya
4
Emilia Anastasia
Klaten
5
Famili
yogya
1. sebutkan sebutkan isi isi table table mahasis mahasiswa wa jika jika dijalank dijalankan an perintah perintah SQL beriku berikutt : update ahasiswa Set Nama = ’Jamaica Endrina ’ Where NIM = 3 ; 2. buatlah buatlah bahasa bahasa SQL SQL untuk untuk menambah menambahan an mahasisw mahasiswaa dengan dengan NI 6 dan dan Nama Nama Edmon. 3. Buatlah Buatlah bahasa bahasa SQL untuk mengha menghapus pus data mahasis mahasiswa wa yang yang beralamat beralamat di klaten. klaten. Tunjukan hasilnya!
- 61 -
e-Book
Hak Cipta 2007 BAB X MENGAKSES DATA
Untuk membantu memahami pemahaman mengenai SQL, perhati9kan relasi basis data berikut : KRSPraktikum PK PK, Fk1 PK, Fk2
KRSTeori
Mahasiswa
Kelas KodeKul NIM
PK PK, Fk1 PK, Fk2
NIM
PK
ThnMasuk Nama
Nilai
Kelas KodeKul NIM
Nilai
Matakuliah KodeKul
PK
Kuliah SKSTeoril SKSPraktek
KuliahPraktikum PK, Fk2 PK, Fk2
KuliahTeori
Kelas KodeKu
Dosen Fk
NIP Lab
PK
PK, Fk2 PK, Fk2
NIP Nama
Fk
Kelas KodeKu
NIP
Gambar 10.1 Relasi antar tabel
Dengan asumsi isi dari tabel-tabel dala basis data adalah sebagai berikut : Tabel 10.1 Isi tabel Mahasiswa
NIM
ThnMasuk
Nama
200
1999
Nita Mariana
201
1999
Fitr i Lut fia
202
2000
Farhan Saleh
234
2000
Romi Amanda
323
2000
Emilia
324
2000
Fer y Ar yanto
- 62 -
e-Book
Hak Cipta 2007 325
2000
Miranda Jamil
400
2001
Astrina Damayant i
425
2001
Gogon Nandito
426
2001
Ananda Mirant i
Tabel 10.2 Isi tabel Dosen NIP
Nama
066
Kusrini, M.Kom
067
Erik H.S, S.Kom
068
Khusnawi, Khusnawi, S.Kom S. Kom
056
Suyanto, MM
Tabel 10.3 Isi tabel Matakuliah KodeKul
Kuliah
SKSTeori
SKSPraktek
SD
Struktur data
2
1
SPBD
Bais Data
2
2
MM
Multimedia
2
0
PT
Pengenalan Pascal
0
2
Tabel 10.4 Isi tabel KuliahTeori Kelas
KodeKul
NIP
A
SD
066
B
SD
067
A
SPBD
068
B
SPBD
066
A
MM
056
Tabel 10.5 Isi tabel KuliahPraktikum Kelas
KodeKul
NIP
Lab
A
SD
068
I
B
SD
066
I
A
SPBD
066
I
B
SPBD
067
II
A
MM
067
II
- 63 -
e-Book
Hak Cipta 2007 Tabel 10.6 Isi tabel KRSTeori Kelas
KodeKul
NIM
Nilai
A
SD
200
40
A
SD
202
80
B
SD
234
50
B
SD
323
30
A
SPBD
200
15
A
SPBD
234
100
B
SPBD
324
25
B
SPBD
323
34
A
MM
324
65
Tabel 10.7 Isi tabel KRSTeori Kelas
KodeKul
NIM
Nilai
A
SD
200
23
A
SD
201
43
B
SD
200
65
B
SD
234
85
A
SPBD
323
35
A
SPBD
324
76
B
SPBD
234
45
A
PT
234
87
A
PT
202
45
A. STRUKTUR BAHASA
Struktur dasar dari ekspresi SQL terdiri dari tiaga klausa, yaitu : select, form, dan where. Klausa Select berhubungan dengan operasi proyeksi dari aljabar relasional. Operasi ini digunakan untuk mendaftar semua atributyang diinginkan sebagai hasil suau query. Klausa Form Klausa Form berhubungan berhubungan dengan operasi Cartesian-product dari aljabar relasional. Operasi ini mencatat semua relasi yang di”scan” dalam evaluai suatu query. Klausa opersi ini terdiri dari sebuah predikat seleksi dari aljabar relasional. Operasi ini terdiri dari sebuah predikat yang menyangkut atribut-atribut relasi yang muncul dalam klausa from. Sebuah query SQL biasanya mempunyai mempunyai bentuk : Select kolom_1 , Kolom_2 , ... Kolom_n
- 64 -
e-Book
Hak Cipta 2007
Form Tabel_1 , Tabel_2 , … Tabel_n Where Kondisi 1. Klau Klausa sa Sele Select ct
Contoh : ” t entukan nama-nama nama-nama mahasiswa dari relasi Mahasiswa”. Query-nya : Select nama form Mahasiswa form Mahasiswa
Hasil dari query terebut adalah sebuah relasi sebuah atribut tunggal dengan nama nama.
Bahasa query formal bersifat matematis dimana relasi adalah sebuah himpunan sehingga tuple-tuple yang telah muncul tidak akan muncul lagi (tidak akan terjadi duplikasi tuple). Tapi dalam prakteknya untuk menghilangkan duplikasi tuple sangat memakan waktu. Oleh karenanya itu SQL memungkinkan terjadinya duplikasi tersebut. Dari contoh di atas, maka query-nya akan mencatat setiap nama_mhs setiap kali nama_mhs tersebut ditentukan dalam relasi Mahasiswa.
Untuk kasus diatas jika diinginkan untuk menghilangkan duplikasi, maka dapat disisipkan perintas distinct setelah select. Jika tuple yang terduplikasi diinginkan hilang maka query diatas ditulis ulang sebagai berikut : Klausa select dapat juga mengandung operasi aritmatika yaitu operator : +, -, *, / dan operasi terhadap konstanta atau atribut dari tuple. Contoh query berikut : Select K.NIM, K.KodeKul, K.Nilai * M.SKSTeori Form MataKuliah Form MataKuliah M, KRSTeori K Where M.KodeKul Where M.KodeKul = K.KodeKul
SQL-92 juga menyediakan tipe data spesial seperti tipe date dan memungkinkan beberapa fungsi aritmatika untuk beroperasi pada tipe-tipe ini. Untuk menampilkan semua kolom dari suatu tabel, bisa digunakan * sebagai pengganti penyebutan nama-nama kolomnya. Misalnya untuk menampilkan semua kolom pada tabel t abel mahasiswa. 2. Klau Klausa sa Wher Wheree
Contoh query : ”temukan semua NIM dari relasi mahasiswa yang namanya Gogon Nandito”. Query-nya ditulis sebgai berikut : Select NIM Select NIM
- 65 -
e-Book
Hak Cipta 2007
Form Mahasiswa Form Mahasiswa Where nama = `Gogon Nandito’
SQL menggunakan konektivitas logika and, or, dan not dalam klausa where. SQL juga memiliki perintah between untuk menentukan apakah suatu nilai lebih kecil dari pada atau sama dengan suatu nilai dan lebih besar dari pada atau sama dengan suatu nilai lain. Contoh : untuk menentukan data mahasiswa yang nim-nya antara 210 dan 400, ditulis sebagai berikut : Select * Form Mahasiswa Form Mahasiswa Where NIM Where NIM between 210 and 400
Query tersebut akan menghasilkan daftar sebagai berikut : ThMasuk
NIM
Nama
2000
234
Romi Amanda
2000
323
Emilia
2000
324
Fery Ar yant o
2000
325
Miranda Jamil
2001
400
Ast rina Damayant i
3. Klau Klausa sa Form orm
From digunakan untuk menyebutkan menyebutkan nama tabel sumber s umber data yang yang akan diambil. d iambil. Contoh : ”contoh semua data yang masuk pada tahun 2001, tentukan NIM dan Namanya”. Dalam SQL ditulis : Select NIM, Select NIM, Nama Form Mahasiswa Form Mahasiswa Where ThMasuk = 2001 4. Op Oper erasi asi Ren Renam amee / Alia Aliass
SQL menyediakan mekanisme operasional rename untuk relasi dan atribut. Operasional rename dalam SQL menggunakan menggunakan klausa as dengan bentuk : Nama lama as nama baru
Contoh : jika atribut dengan nama ThMasuk akan diganti dengan nama Angkatan, dapat ditulis sebagai berikut :
- 66 -
e-Book
Hak Cipta 2007
Select Nama, Select Nama, ThMasuk as ThMasuk as Angkatan Angkatan Form Mahasiswa Form Mahasiswa Where NIM Where NIM = 234
Qurey tersebut akan menghasilkan daftar sebagai berikut : Nama
Angkatan
Romi Amanda
2000
B. OPERASI HIMPUNAN
Operasi-operasi himpunan pada SQL-92 meliputi : union, intersect, dan except. Union identik dengan U (gabungan ). Intersect identik tik dengan
(irisan) dan
expect (tidak) identik ~ pada aljabar relasional.
1. Op Oper eras asii Unio Union n
Operasi ini digunakan untuk menggabungkan menggabungkan hasil dari beberapa query.
Tabel 1
Tabel 2
Contoh : a.
Untuk mendapa mendapatkan tkan semua semua mata mata kuliah kuliah yang yang ditawark ditawarkan an di kuliah teori. teori. Select KodeKul from KuliahTeori Hasilnya : ”MM” , ”SD” dan ”SPBD”.
b. Untuk menda mendapatka patkan n semua semua mata kuliah kuliah yang yang ditawark ditawarkan an di kuliah kuliah prakti praktikum kum Select KodeKul from KuliahPraktikum
Hasilnya : ”PT” , ”SD” , ”SPBD”. c.
Untuk menda mendapatka patkan n semua semua mata kuliah kuliah yang yang ditawarkan ditawarkan dikuliah dikuliah teori atau praktikum. (Select KodeKul from KuliahTeori) Union (select KodeKul from KuliahPraktikum)
Hasilnya : “MM” , “PT” , “SD” dan “SPBD”
- 67 -
e-Book
Hak Cipta 2007
Operasi union akan menampilkan semua hasil pencarian pada seleksi pertama dan seleksi kedua secara unik. Apabila terdapat duplikasi maka yang akan ditampilkan hanya salah satu. Jika diinginkan adanya akan ditulis ulang dengan bentuk : (Select KodeKul from KuliahTeori) Union all (select KodeKul from KuliahPraktikum) 2. Op Oper eras asii Inter Interse sect ct
Operasi intersect digunakan ketika diinginkan hasil dari 2 query, dimana yang ditampilkan adalah yang memenuhi kedua query tersebut. t ersebut.
Tabel 1
Tabel 2
Dengan menggunakan menggunakan Contoh 1 dan 2 pada Bab 7, akan ditampilkan daftar mata kuliah yang ditawarkan baik dikuliah teori maupun di kuliah praktikum. Bentuk query-nya query-nya akan menjadi : (Select KodeKul from KuliahTeori) Intersect (select KodeKul from KuliahPraktikum)
Hasil dari query tersebut adalah : ”SD dan ”SPBD” Operai intersect secara otomatis menghilangkan duplikasi. Jika diinginkan duplikasi tetap ada ditulis intersect all, sehingga query-nya menjadi : (Select KodeKul from KuliahTeori) Intersect all (select KodeKul from KuliahPraktikum)
Sehingga hasilnya menjadi ”SD”, ”SPBD”, ”SD” dan ”SPBD”. 3. Op Oper eras asii Exce Except pt
Operasi except digunakan untuk menampilkan hasil dari 2 buah query dimana, hasil yang akan ditampilkan adalah semua hasil query pertama yang t idak terdapat dalam hasil query kedua.
Tabel 1
Tabel 2 - 68 -
e-Book
Hak Cipta 2007
Contoh : untuk mendapatkan semua mahasiswa yang mengikuti kuliah teori tetapi tidak mengikuti kuliah praktikum, ditulis : (select KodeKul from KuliahTeori) except (select KodeKul from KuliahPraktikum)
Dari query tersebut akan dihasilkan : ”MM” Operasi except secara otomatis menghilangkan duplikasi. Jika diinginkan ada, maka tulis : except all.
C. FUNGSI-FUNGSI AGREGASI
Operator agregasi merupakan salah satu bahasan penting materi SQL dalam perbandingan dengan relasi aljabar. Dalam relasi aljabar, semua kondidsi dinilai satu saat : satu kondisi selalu merupakan sbuah predikat yang dinilai pada masing-masing tuple secara terpeisah laiinnya. Sering terjadi diinginkan untuk menilai sebuah properti yang tergantung pada sekelompok sekelompok tuple. t uple. Misalnya ingin diketahui jumlah peserta yang ikut kuliahteori, atau rata-rata nilai mahasiswa pada suatu mata kuliah. Yang termasuk operator dari kata avarage, akan mengembalikan nilai rata-rata dari suatu atribut. Min berasal dari kata minimum , akan akan mengembali mengembalikan kan nilai nilai tekecil dari dari suatu atribut. Max berasal dari kata maximum, akan mengembalikan nilai besar dari suatu artibut. Sum mengembalikan mengembalikan jumlah item dari dar i suatu atribut. Fungsi-fungs diatas telah tersedia. Input untuk avg, sum, min dan max harus bertipe numerik. Sementara untuk operator count dapat bertipe non-numerik. Bentuk umum dari fungsi agregasi adalah : Select avg I min I max I sum I count (nama_kolom) From nam_tabel
[Where kondisi] Contoh : 1. untuk menda mendapatkan patkan rata-rata nilai nilai mahasisw mahasiswaa yang ikut ikut kuliah kuliah teori, teori, gunakan gunakan sintaks berikut :
- 69 -
e-Book
Hak Cipta 2007
Select avg (nilai) From KRSTeori
2. untuk untuk mendapatk mendapatkan an jumlah jumlah peserta peserta kuliah kuliah teori, teori, gunak gunakan an sitaks sitaks berikut berikut : Select count (* ) From KRSTeori
Jika fungsi agregasi ingin diterapkan pada kelompok himpunan tuple, maka gunakan klausa group bye . Nama atribut/kel. Atribut dalam d alam bahasa klausa group by digunakan untuk membentuk gruop/kelompok. Artinya tuple-tuple yang mempunyai nilai yang sama pada semua atribut dalam bahasa klausa group-by dimasukan dalam satu group/kelompok. group/kelompok. Bentuk umum u mum dari klausa ini adalah : Select kolom_1, kolom_2, ....kolom_n
[, avg I min I max I sum I Count (kolom_n +1)] From nam_tabel
[Where kondisi] Group by kolom_1, kolom_2, ....kolom_n
Contoh : Untuk mencari jumlah peserta kuliah teori yang dikelompokan berdasarkan mata kuliahnya : Select KodeKul, Count ( * ) as Jumlah as Jumlah From KRSTeori Group by KodeKul
Query tersebut akan menghasilkan menghasilkan : KodeKul
Jumlah
MM
1
SD
4
SPBD
4
Jika suatu fungsi diterapkan pada group/kelompok yang dibentuk oleh group by, maka dapat digunakan pada klausa having setelah group by. Bentuk umum dari klausa ini menjadi : Select kolom_1, kolom_2, ....kolom_n
[, avg I min I max I sum I Count (kolom_n+1)]
- 70 -
e-Book
Hak Cipta 2007
From nam_tabel
[Where kondisi] Group by kolom_1, kolom_2, ....kolom_n Having avg I min I max I sum I Count (kolom_n +1)
Contoh : Untuk menampilkan mata kuliah teori yang mempunyai rata-rata nilai mahasiswanya diatas 45, gunakan sintaks berikut : Select KodeKul, avg ( Nilai as Nilai Nilai ) as Nilai From KRSTeori Group by KodeKul Having avg ( Nilai Nilai ) > 45 KodeKul
Nilai
MM
65
SD
50
Atau : Select KodeKul From KuliahTeori Group by KodeKul Having avg ( Nilai Nilai ) > 75
Hasilnya : Nilai
65 50
Having memiliki fungsi hampir sama dengan where, yaitu sama-sama memberi batasan dari tuple yang akan ditampilkan. Namun ada perbedaan antara where dengan having. Where digunakan untuk membatasi pada level tuple, sedangkan having memberi batasan pada level group. Fungsi agregasi count sering digunakan untuk menghitung jumlah tuple dalam suatu relasi. Notasi fungsi ini dalam SQL adalah count ( * ). Jadi untuk mentukan jumlah tuple dalam relasi mahasiswa, ditulis : Select count ( * ) from mahasiswa
- 71 -
e-Book
Hak Cipta 2007
D. SOAL LATIHAN
Dengan menggunkan table yang memiliki relasi seperti tergambar pada Gambar 10.1 dan data pada table 10.1 sampai 10.7, buatlah query untuk : 1. Menampil Menampilkan kan seluruh seluruh data mahas mahasiswa iswa dari tabel tabel mahasis mahasiswa. wa. 2. Menemp Menempilk ilkan an alama alamatt asal asal mahasi mahasiswa swa (unik). (unik). 3. Menampil Menampilkan kan jumlah jumlah kelas teori berdas berdasarkan arkan mata mata kulia kuliah. h.
BAB XI QUERY ANTAR TABEL
A. JOIN ANTAR TABEL Ada kalanya diperlukan suatu informasi yang merupakan gabungan dari beberapa tabel. Misalnya diinginkan diinginkan data NIM (tabel Mahasiswa), nama (tabel Mahasiswa). Mahasiswa). Kodekul (tabel krsteori).
- 72 -
e-Book
Hak Cipta 2007 NIM NA NAMA
KODEKUL
NILAI
324
Fery Arianto
MM
65
200
Nita Mariani
SD
40
202
Farhan Saleh
SD
80
200
Ni Nita Mariani
SPBD
15
234
Romi Ama nda
SPBD
100
234
Ro Romi Ama nda
SD
50
323
Emilia
SD
30
323
Emilia
SPBD
34
324
Fe Fery Aryanto
SPBD
25
B. QUERY DENGAN DUA BUAH TABEL Untuk menghasilkan informasi seperti tertera pada table 11.1 diperlukan query dengan 2 buah table, yaitu table mahasiswa dan table KrsTeori. Adapun bentuk query-nya adalah sebagai berikut : SELECT mahasiswa.NIM , Mahasiswa.nama , From mahasiswa , krsteori Where mahasiswa.NIM = krsteori.NIM Bentuk umum query 2 buah table atau lebih adalah sebagai berikut : SELECT Tabel1. Kolom1 , Tabel1.Kolom2 , ..., Tabel1.Kolomn , Tabel2.Kolom1 , Tabeln.Kolom2 , ..., Tabel2.Kolomn , ... Tabeln.Kolom1 , Tabeln.Kolom2 , ..., Tabeln.Kolomn FROM Tabel1 , Tabel2 , ..., Tabeln Where kondisi ;
C. MENGG MENGGUN UNAK AKAN AN ALI ALIAS AS
Nama tabel yang digunakan dalam query antar tabel t abel bisa diberikan nama alias. Bentuk pemberian nama alias : SELECT alias1.kolom , alias2.kolom FROM tabel1 alias1 , t abel2 abel2 alias2 WHERE kondisi ;
- 73 -
e-Book
Hak Cipta 2007
Dalam hal ini, kondisi bisa menggunkan alias juga. Sebagai contoh, perhatikan perintah dibawah ini : SELECT m.NIM , m.nama
k.kodekul , k.nilai FROM mahasiswa mahasiswa m , krsteori kr steori k WHERE m.NIM = m..NIM
D. PERKALIAN ALIAS
Bentuk paling sederhana dari penggabungan dua buah table akan membentuk perkalian kartesian (cartesian product) atau biasa juga disebut cross join atau full join. Hal ini diperoleh kalu klausa WHERE tidak disebutkan. Sebagai contoh,
perkalian kartesian adalah sebagai sebagai berikut : SELECT * FROM mahasiswa , krsteori
Pada prakteknya, operasi seperti ini jarang berguna dan dapat menimbulkan proses yang sangat lama sekiranya masing-masing tabel mengandung data yang besar.
E. EQUIJOIN
Yang disebut dengan adalah penggabungan antar tabel yang menggunakan operator sama dengan ( = ) pada kondisi dalam klausa WHERE untuk membandingkan satu kolom dengan kolom lainya. Contoh-cotoh diatas tadi merupakan contoh equijoin.
F. SELF-JOIN
Self-join merupakan upaya penggabungan ari tabel yang sama. Misalnya, untuk memperoleh pasangan nama mahasiswa yang NIM-nya < = 300 dengan mahasiswa dengan NIM > 300 seperti tertera a\pada query berikut : SELECT x . nama , y . nama FROM mahasiswa mahasiswa x , mahasiswa y WHERE x . nim < = 300 And y . nim > 300
Hasil dari query tersebut adalah seperti seperti t ercantum dibawah dibawah ini : NAMA
NAMA
Nita Mariani
Emilia
Fitr i Lut fia
Emilia
- 74 -
e-Book
Hak Cipta 2007
Farhan Saleh
Emilia
Romi Amanda
Emilia
Nita Mariani
Fery Ar iant o
Fitr i Lut fia
Fery Ar iant o
Farhan Saleh
Fery Ar iant o
Romi Amanda
Fery Ar iant o
Nita Mariani
Miranda Jamil
Fitr i Lut fia
Miranda Jamil
Farhan Saleh
Miranda Jamil
Romi Amanda
Miranda Jamil
Nita Mariani
Ast rina Damayant i
Fitr i Lut fia
Ast rina Damayant i
Farhan Saleh
Ast rina Damayant i
Romi Amanda
Ast rina Damayant i
Nita Mariani
Gogon Nandito
Fitr i Lut fia
Gogon Nandito
Farhan Saleh
Gogon Nandito
Romi Amanda
Gogon Nandito
Nita Mariani
Ananda Mirt ani
Fitr i Lut fia
Ananda Mirt ani
Farhan Saleh
Ananda Mirt ani
Romi Amanda
Ananda Mirt ani
G. INNER JOIN DAN OUTTER JOIN
Equijoin seringkali dibedakan menjadi dua kategori, yaitu inner wquijoin (atau disingkat inner join) dan outer equijoin (atau disingkat outer join). Untuk melihat perbedaan kedua macam equijoin ini, dilakukan qurey berikut : Contoh Inner Join : SELECT d . nip , d . nama , k . kodekul FROM dosen d , kuliahpraktikum k WHERE d . nip nip = k . nip
- 75 -
e-Book
Hak Cipta 2007
Hasilnya : NIP
NAMA
KODEKUL
67 Erik Hadi Saputra, S.Kom
PT
66 Kusr ini, M. Kom
SD
67 Erik Hadi Saputra, S.Kom
SD
66 Kusr ini, M. Kom
SPBD
68 Khusnawi, S.Ko m
SPBD
Contoh Left Join : SELECT d . nip , d . nama , k . kodekul FROM dosen d , LEFT JOIN kuliahpraktikum kuliahpraktikum k ON d . nip = k . nip
Hasilnya : NIP NAMA
KODEKUL
65 Suyanto, MM
NULL
67 Erik Hadi Saputra, S.Kom
SD
66 Kusr ini, M. Kom
SPBD
67 Erik Hadi Saputra, S.Kom
PT
66 Kusr ini, M. Kom
SD
68 Khusnawi, S.Ko m
SPBD
Contoh Right Join : SELECT d . nip , d . nama , k . kodekul FROM dosen d , RIGHT JOIN kuliahpraktikum kuliahpraktikum k ON d . nip = k . nip
Hasilnya : NIP NAMA
KODEKUL
67 Erik Hadi Saputra, S.Kom
PT
66 Kusr ini, M. Kom
SD
67 Erik Hadi Saputra, S.Kom
SD
66 Kusr ini, M. Kom
SPBD
68 Khusnawi, S.Ko m
SPBD
- 76 -
e-Book
Hak Cipta 2007
Contoh Full Join : SELECT d . nip , d . nama , k . kodekul FROM dosen d , FULL JOIN kuliahpraktikum kuliahpraktikum k ON d . nip = k . nip
Hasilnya : NIP NAMA
KODEKUL
65 Suyanto, MM
NULL
67 Erik Hadi Saputra, S.Kom
SD
66 Kusr ini, M. Kom
SPBD
67 Erik Hadi Saputra, S.Kom
SD
66 Kusr ini, M. Kom
PT
68 Khusnawi, S.Ko m
SPBD
Dengan menggunakan inner join, informasi yang ditampilkan adalah berasal dari dua tabel yang berisi data sesuai dengan syarat dibelakang on (tidak boleh null). Dengan kata lain semua data dari tabel t abel kiti mendapat pasangan data dari tabel sebelah kanan. Dengan menggunakan menggunakan right join, semua informasi yang ditampilakan adalah data dari tabel sebelah kanan statement right join beserta pasangannya dari tabel sebelah kiri. Meskipun ada data tersebut t ersebut tetap ditampilkan dengan pasangan dengan NULL. Pada full join, informasi yang ditampilakan adalah dari kedua tabel, baik kiri maupun kanan statement full join dengan paaangannya. Bagi data yang tidak memiliki pasangan akan diberi pasangan dengan NULL. Inner join bisa dilakukan terhadap lebih dari dua tabel. Dalam inner join penambahan tabel dapat dilakukan seperti pada contoh berikut ini : SELECT d . nip , d . nama , k . kodekul , M . Kuliah FROM dosen d , kuliahpraktikum k , matakuliah m WHERE d . nip nip = k . nip ON K . KodeKul = M . KodeKul
Sementara pada outer join, join hanya dapat dilakukan terhadap 2 tabel. Apabila diinginkan untuk menjoin terlebih dari 2 tabel, maka 2 tabel pertama harus di-join terlebih dahulu untuk kemudian hasil join tersebut dianggap sebagai satu tabel dan dapat di-join habis. Berikut adalah contoh join 3 tabel dengan manggunakan right join :
- 77 -
e-Book
Hak Cipta 2007
SELECT d . nip , d . nama , k . kodekul , M . Kuliah FROM ( dosen d , Right Right Join kuliahpraktikum kuliahpraktikum k , matakuliah m ON d . nip nip = k . nip ) Right Join Matakuliah M ON K . KodeKul = M . KodeKul
H. QUERY BERSARANG (NESTED QUERY)
Subquery tersarang biasanya digunakan untuk melakukan melakukan test t est keanggotaan himpunan, perbandingan himpunan, dan kardinalitas himpunan.
I. KEANGGOTAAN HIMPUNAN
Untuk melakuakan test keanggotaan himpunan digunakan in dan not in. Contoh : Untuk mendapatkan semua nim dan nama mahasiswa yang nimnya terdaftar dalam krsteori. SELECT nip , nama FROM mahasiswa WHERE nim in ( SELECT in FROM krstoeri ) J. PERBANDINGAN HIMPUNAN
Perhatikan query berikut : “Temukan nim mahasiswa yang mendapatkan nilai SPBD lebih dari nilai dari nilai SPBD yang yang diperoleh mahasiswa mahasiswa dengan NIM 200”. Query-nya nim SELECT nim FROM krsteori WHERE nilai > all ( SELECT nilai FROM krstoeri WHERE nim = 200 AND kodekul = ‘SPBD’ ) AND kodekul = ‘SPBD’
- 78 -
e-Book
Hak Cipta 2007
K. SOAL LATIHAN
Dengan menggunakan menggunakan tabel yang memiliki relasi seperti tergambar t ergambar pada Gambar 10.1 dan data pada Tabel 10.1 s/d 10.7, buatlah quey untuk : 1. Menampil Menampilan an data mahasi mahasiswa swa yang yang mengambil mengambil mata mata kuliah teori yang yang diambil, diambil, SD. 2. Menampil Menampilkan kan data data mahasisw mahasiswaa beserta beserta mata kuliah teori teori yang yang diambil, diambil, terdiri terdiri dari : NIM, Nama, KodeKul, SKS, Nilai. 3. Tampak Tampak data data mahasi mahasisawa sawa beserta beserta inde indeks ks prestasi prestasi komulatif komulatif (IPK) (IPK) dengan dengan tampilan : NIM, NAMA, IPK.
- 79 -
e-Book
Hak Cipta 2007 DAFTAR PUSTAKA
Basis data . Bandung ; Penerbit Informatika. Fatansyah, 1999. Basis
Kadir, A 2002. Penuntun Praktis Belajar SQ ,.Yogyakarta: Penerbit ANDI. Korth, H.F. & Silberschats A. 1991. Database System Concepts. C.Graw Hill Kristanto, H., 1994. Konsep dan Perancangan Database . Yogyakarta : Penerbitan ANDI. Kroenke, D.M 2005. Database Processing : Dasar-dasar, Desain dan Implementasi . Penerbit Erlangga.
- 80 -