1.Proses Normalisasi
Pada dasarnya,dekomposisi table dapat mengurangi redundansi yang ada dan menghilangkan
anomaly. Oleh sebab itu, perencangan melalui proses normalisasi memiliki beberapa
keuntungan, di antaranya meminimalkan ukuran penyimpanan yang diperlukan untuk
penyimpanan data, meminimalkan kemungkinan anomali pembaruan, meminimalkan risiko
inkonsistensi data pada basis data, dan memaksimalkan stabilitas struktur data. Maka, proses
normalisasi identic dengan proses untuk memperoleh properti-properti skema relasi yang bagus
menjadi bentuk normal lebih tinggi sehingga syarat-syarat yang harus dipenuhi adalah sebagai
berikut.
a.Mengoptimalisasi Redundansi (Pengulangan Data Yang Tidak Perlu)
Rendundansi tidak bisa dihilangkan karena berguna untuk integritas referensial, tetapi
redundansi bisa dioptimalisasi. Jumlah data yang sedikit tidak perlu mempengaruhi penggunaan
harddisk. Namun bisa dibayangkan jika memiliki ribuan, bahkan jutaan redundansi akan sangat
berpengaruh pada penggunaan ruang.
b.Menghilangkan Anomali
Anomalipada dasarnya identik dengan ketidak-konsistenan (inkonsistensi).Misalnya,ada
pergantian nama dari bus “putra perkasa” menjadi bus “Putra Perkasa Utama” sebanyak 4
record.Jika pergantian nama hanya dilakukan pada salah satu record,maka terjadi ketidak
konsistenan,yaitu satu nomor bus berselasi dengan dua nama bus yang berbeda.
2. Anomali dan Redundansi
Proses normalisasi selalu diuji kesulitan saat menambah, mneghapus, mengubah, dan
membaca suatu basis data. Bila masih ada kesulitan berarti relasi pada basis data tersebut belum
optimal dan relasi harus dipecah dalam beberapa tabel sampai kesulitan yang dihadapi hilang.
Dengan kata lain, normalisa adalah sebuah proses mengubah relasi yang memiliki masalah
kedalam dua tabel atau lebih sehingga tak memiliki masalah yang terulang kembali.
a. Anomali (Anomaly)
Anomali identic dengan proses pada basis data yang memberikan efek samping yang
tidak diharapkan. Seperti halnya ketidak konsistenan, dan hilang saat suatu data dihapus,
dan adanya redundansi (data rangkap). Anomali dikategorikan menjadi sebagai berikut.
Seandainya guru Yohanna berpindah alamat, misalnya ke Jl. Bumi, dan perubahannya
hanya dilakukan pada data pertama. Maka, relasi akan menjadi seperti berikut.
Relasi di atas menyatakan kursur-kursur yang diikuti oleh siswa dan jumlah
biayanya. Masalah akan timbul saat dibuka kursus baru tetapi belum ada siswanya,
misalnya Bahasa Belanda dengan biaya 90.000. Akibat, data kursus baru tersebut
tidak bisa dicatat.
3. Dependensi ( Ketergantungan)
Depentensi adalah konsep dasar pada tahap normalisasi yang menjelaskan hubungan atribut
atau secara lebih khusus menjelaskan nilai suatu atribut yang menentukan atribut lainnya. Jenis
jenis dependensi (ketergantungan) antara lain sebagai berikut.
a. Dependesi fungsional ( Functional Dependency)
Dependensi fungsional identik dengan suatu atribut Y memiliki dependensi fingsianal
terhadap atribut X jika dan hanya jika setiap nilai X berhubungan dengan sebuah nilai Y. maka,
pernyataannya adalah “X secara fungsional menentukan Y” atau secara istilah dengan cara;
penentu ( determinan) yang tergantung ( dependen ) . Jika dituangkan dengan notasi :
X Y atau Y = f(X). Misalnya, sebuah tabel Siswa berisi atribut siswa (NIM, Nama,
Jns_kel,Alamat). Isi atribut nama bergantung pada NIM sehingga kita dapat mengatakan bahwa
atribut nama bergantung secara fungsi pada NIM.Jika mengetahui sebuah NIM,secara otomatis
kita dapat menentukan nama siswa tersebut.Artinya,adanya NIM yang sama juga akan
berpengaruh pada nama yang sama pula.
b. Dependensi Fungsional Sepenuhnya
Suatu atribut Y memiliki dependensi fungsional sepenuhnya terhadap atribut X jiga Y
memiliki dependensi fungsional terhadap X dan Y tidak memiliki dependensi terhadap bagian
dari X.Misalnya,relasiopelanggan berisi atribut pelanggan(Kd_Pelanggan,Nama,Kota,No_Telp).
Pada relasi ini diketahui data sebagai berikut.
1) {Kd_Pelanggan, Kota} No_Telp
2) Kd_Pelanggan No_Telp>
Berdasarkan data di atas, diketahui bahwa No_Telp bergantung pada {Kd_Pelanggan, Kota}
dan juga bergantung pada Kd_Pelanggan sebagai bagian dari {Kd_Pelanggan, Kota}, maka
No_telp tetap tidak memiliki dependensi fungsional sepenuhnya pada {Kd_Pelanggan, Kota}
tetapi memiliki dependensi fungsional sepenuhnya terhadap Kd_Pelanggan.
c. Dependensi Total
Suatu atribut Y memiliki dependensi total terhadap atribut X jika Y memiliki dependensi
fungsional terhadap X dan X memiliki dependensi fungsional terhadap Y. Dependensi seperti ini
dinyatakan dengan notasi : X << Y. Misalnya, relasi siswa berisi atribut siswa
(No_Swa,Nama_Swa, Alamat). Dengan demikian, notasi yang digunakan adalah No_Swa <<
Nama_Swa dengan asumsi tidak ada nama siswa yang sama.
d. Depedensi Transitif
Atribut Z memiliki dipendensi transitif terhadap X jika y memiliki dependensi
fungsional terhadap X, sedangkan Z memiliki dependensi fungsional terhadap Y sehingga
dinyatakan dengan notasi : X Y Z. Perhatikan data-data pada tabel berikut.
Tabel 2.4 Tabel contoh dependensi transitif
Mt_pelajaran Kelas Tempat Waktu
Fisika X Lt.II Senin, 07.00-09.00
Basis Data XI Lt.I Selasa, 10.00-12.00
Relasi Umum
1NF
2NF
3NF
BCNF
4NF
5NF
Bentuk-bentuk normalisasi berikut paling sering digunakan.
a. Bentuk Normal Pertama
Pada dasarrnya, bentuk normal pertama (INF) selalu ekuivalen dengan definisi model
relasi. Dalam hal ini, relasi identic dengan bentuk normal pertama (INF) jika semua nilai
atributnya adalah sederhana (bukan komposit). Beberapa syarat pada bentuk normal pertama
(INF) di antaranya sebagai berikut.
1) Tiap atribut hanya memiliki satu pengertian saja.
2) Tidak ada himpunan atribut yang berulang atau bernilai ganda.
3) Tiap atribut yang dapat memiliki banyak nilai sebenarnya menggambarkan entitas atau
relasi yang terpisah.
4) Telah ditentukannya primary key untuk tabel atau relasi.
b. Bentuk Normal Kedua (2NF)
Relasi pada bentuk normal kedua tidak harus menyiimpan fakta-fakta mengenai bagian
kunci relasi. Beberapa syarat pada bentuk normal kedua (2NF) di antaranya adalah atribut
bukan kunci (non-key attribute) harus memiliki ketergantungan fungsional sepenuhnya pada
primary key dan bentuk data telah memenuhi kriteria bentuk normal ke satu. Bentuk normal
kedua menghilangkan ketergantungan parsial dan masih memiliki anomali yang secara
praktis tidak dapat diterima.
c. Bentuk Normal Ketiga (3NF)
Pada dasarnya, bentuk normal ketiga (3NF)akan menghilangkan ketergantungan
transitif. Awalnya, bentuk normal ketiga dinyatakan sebagai bentuk normal puncak atau
paling akhir. Pada perkembangannya, ada penemuan bentuk normal yang lebih kuat yaitu
bentuk normal Boyce-Codd. Beberapa syarat pada bentuk normal ketiga (3NF)
diantaranya bentuk data telah memenuhi kriteria bentuk normal kedua dan atribut bukan
kunci (non-key attribute) tidak boleh memiliki ketergantungan fungsional pada atribut
bukan kunci lainnya. Seluruh atribut bukan kunci pada suatu relasi hanya memiliki
ketergantungan fungsional terhadap primary key di relasi itu.
d. Bentuk Normal Boyce-Codd (BCNF)
Pada dasarnya, bentuk normal Boyce-Codd (BCNF) untuk mengatasi anomali dan
overlopping yang tidak dapat ditangani dalam bentuk 3NF. Normalisasi basis data bentuk ini
tergantung pada kasus yang disediakan karena tidak semua tabel wajib dinormalisasi dalam
bentuk BCNF. Teknik normalisasi basis data jenis ini sering disebut 3.5NF dan memiliki
hubungan yang sangat erat dengan bentuk 3NF. Secara mendasar, BCNF memiliki ketentuan
sendiri, yaitu masing-masing atribut utama bergantung fungsional penuh pada masing-
masing kunci yang bukan bagiannya. Namun demikian, ada perbedaan mendasar antarBCNF
dengan 3NF, yaitu BCNF dengan suatu atribut yang bergantung secara fungsional pada kunci
primer maupun kunci primer bagi atribut yang lain. Sebaliknya, pada 3NF hal ini bisa saja
terjadi dan tidak menjadi masalaha. BCNF memiliki ketentuan-ketentuan sebagai berikut.
1) Bentuk BCNF terpenuhi dalam sebuah tabel, jika untuk setiap functional dpendency
terhadap setiap atribut atau gabungan atribut dalam bentuk; X Y maka X adalah super
key.
2) Tabel tersebut harus didekomposisi berdasarkan functional dependency yang ada
sehingga X menjadi super key dari tabel-tabel hasil dekomposisi.
3) Setiap tabel daklam BCNF merupakan 3NF. Namun, setiap 3NF belum tentu termasuk
BCNF. Perbedaannya adalah untuk functional dependency X A, BCNF tidak
membolehkan A sebagai bagian dari primary key.
Dengan demikian, relasi adalah BCNF (optimal) jika setiap determinan atribut-atribut
relasi adalah kunci relasi. Kapanpun fakta-fakta disimpan mengenai beberapa atribut, maka
atriut-atribut tersebut menjadi satu kunci relasi. Dalam hal ini, BCNF bisa memilih lebih dari
satu kunci. Sementara itu , properti penting BCNF dalam bentuk relasi tidak memiliki
informasi redundan.
e) Bentuk Normal Keempat (4NF)
Relasi dalam bentuk normal keempat (4NF) jika relasi dalam BCNF dan tidak berisi keter
gantungan banyak nilai. Untuk menghilangkan ketergantungan banyak nilai dari satu relasi, kita
membagi relasi menjadi dua relasi baru. Masing-masing relasi berisi dua atribut yang memiliki
hubungan banyak nilai.
f) Bentuk Normal Kelima (5NF)
Bentuk normal kelima (5NF) berurusan dengan propwrti yang disebut join tanpa adanya
adanya kehilangan informasi (lossless join). Bentuk normal kelima (5NF) juga disebut PJNF
(projection-join normal form). Kasus- kasus ini sangat jarang muncul dan sulit untuk dideteksi
secara praktis.
Tiga bentuk normal pertama berkaitan dengan ketergantungan fungsional. Sementara itu,
bentuk gempa dan kelima berkaitan dengan redundansi yang disebabkan ketergantungan banyak
nilai (multi-valued dependencies). Bentuk normal pertama untuk menghilangkan atribut bernilai
jamak. Bentuk normal kedua bertujuan menghilangkan ketergantungan parsial. Bentuk normal
ketiga bertujuan menghilangkan ketergantungan transitif. Bentuk normal Boyce-Codd bertujuan
menghilangkan anomalia yang tersisa karena ketergantungan fungsional. Bentuk norma keempat
bertujuan menghilangkan ketergantungan nilai jamak. Kemudian, bentuk norml kelima untuk
menghilangkan anomalia tersisa.
Data diatas sebenarnya tidak ada yang salah karena memang outputnya akan menghasilkan
seperti tabel tersebut. Namun, jika dilihat dari sisi duplikasi data pada informasi Nama_siswa
dan NIK, tabel seperti diatas jelas terlihat sangat tidak efisien. Ketiga jenis objek tersebut tidak
saling berkaitan dan masing-masing memiliki informasi mengenai kriterianya. Jadi, apa yang
harus diubah adalah membuat tabel untuk masing-masing objek tersebut menjadi seperti berikut
ID_MtPel Nama_Siswa
1 PKN
2 Fisika
3 Matematika
4 RPL
5 Bhs.Indonesia
6 Bhs.Inggris
Dari hasil pemecahan ketiga tabel tersebut kita perlu satu satu tabel lagi untuk
menjadi penghubung.Anggap saja tabel tersebut bernamaJadwal Mata Pelajaran
(JadwalMtPl) yang hanya menyimpan nilai kunci masing-masing tabel.Susunan
lengkap tabel setelah dilakukan normalisasi adalah sebagai berikut:
Tabel MtPel
Id_sisw
ID_MtPel
Tabel Siswa Tabel JadwaMtPel
Id_Sisw Nama_siswa
Id_Sisw
NIK ID_MtPel
Nama_siswa
Nama_siswa
Tabel Kelas
Kls_Id
Nama_siswa
Dari relasi tabel diatas terlihat sudah lenkap untuk disusun menjadi
Kumpulan tabel awal.Perbedaan nya terlihat setelah dilakukan normalisasi.Tentu cara ini lebih
efisien ketimbang kita hanya menggunakan satu tabel yang data nya dikumpulkan menjadi
satu.Itu akan menjadikan “Bahasa Inggris” sangat berat nantinya apabila data yang ingin dikelola
sangat banyak.
Bentuk perintah di atas akan menghapus kolom dan indeks dengan nama nama_data1 dakn kelas.
Option IF EXISTS dugunakan untuk memastikan bahwa basis data tersebut diketahui
keberadaannya. Jika basis datanya berisi berbagai jenis data, maka basis data serta seluruh tabel
di dalamnya akan dihapus. Jika nama basis data yang akan dihapus tidak ditemukan, maka akan
ditampilkan pesan eror.
2. DATA MANIPULATION LANGUANGE
Data manipulation language (DML) identik dengan subperintah dari bahasa SQL yang
digunakan untuk mengubah, memanipulasi, dan mengambil data pada basis data, pada dasarnya,
Data manipulation language digunakan untuk memanipilasi basis data yang telah didefinisikan
dengan DDL. DML dikatagorikan menjadi procedural dan non procedural. Procedural menuntut
pengguna menentukan data apa saja yang diperlukan dan cara mendapatkannya. Sementara itu,
non procedural menuntut pengguna menentukan data apa sja yang di perlukan tetapi tidak perlu
menyebutkan cara mendapatkannya. Beberapa perintah yang termasuk DML antara lain sebagai
berikut.
a. INSERT
Perintah ini digunakan untuk memasukan data baru kedalam sebuah tabel. Perintah tersebut
hanya bisa dijalankan ketika basis data dan tabel sudah dibuat. Formatnya adalah sebagai berikut
INSERT INTO nama_tabel VALUES ( data , data2 , dan seterusnya . . .);
b. SELECT
Perintah ini digunakan untuk mengambil data atau menampilkan data dari satu tabel atau
beberapa tabel dalam relasi. Data yang diambil langsung dapat ditampilkan dalam layar prompt
MySQL secara langsung maupun ditampilkan pada tampilan aplikasi.
c. UPDATE
Perintah ini digunakan untuk memperbarui data lama menjadi data terbarui. Jika memiliki
data yang keliru atau kurang up to date dengan kondisi sekarang, maka kita dapat mengubah isi
datanya menggunakan perintah UPDATE.
d. DELETE
Perintah ini digunakan untuk menghapus data dari tabel. Biasanya data yang dihapus
merupakan data yang sudah tidak diperlukan lagi. Pada saat menghapus data, perintah yang telah
dijalankan tidak dapat digagalkan, sehingga data yang telah hilang tidak dapat lagi dikembalikan
lagi.
a. COMMIT
Perintah COMMIT digunakan untuk menyimpan pekerjaan yang dilakukan .
b. SAVEPOINT
Perintah SAVEPOINTT digunakan untuk mengidentifikasi titik dalam suatu transaksi,
kemudian dapat memutar kembali.
c. ROLLBACK
Perintah ROLLBACK digunakan untuk mengembalikan basis data ke aslinya sejak
COMMIT terakhir.
d. SET TRANSACTION
Perintah SET TRANSACTION digunakan untuk mengubah opsi transaksi seperti tingkat
isolasi dan apa segmen rollback untuk menggunakannya.
Perhatikan contoh CTL dalam basis data sebagai berikut.
BEGIN TRAN
Delete From daftar Where id = 1124 ;
Rollback
//Commit
Berdasarkan kode promo tersebut perintah BEGIN TRAN digunakan untuk perintah
bahwa akan dimulai suatu transaksi/query. Pada bagian akhir, ada perintah Rollback dan
Commit. Penggunaan Rollback memiliki arti bahwa query yang ada di antara Begin Tran tidak
akan dieksekusi dalam basis data secara langsung sehingga data yang sesungguhnya tidak
berubah. Dalam hal ini, penggunaan TCL digunakan untuk melihat apakah query yang
dijalankan sudah benar atau belum. Jika query masih salah maka DBA (programme) dapat
memperbaikinya lagi sehingga tidak membahayakan data dalam tabel fisiknya. Jika query sudah
benar, maka DBA dapat me-remark TCL rollback dan mengaktifkan perintah TCL Commit
untuk memberikan perubahan pada tabel fisik.