-->

Kegiatan Belajar 8 : Pengantar Teknik Normalisasi Data (Basis Data)

1. Perancangan Basis Data

Masrana.com - Perancang basis data merupakan suatu hal yang sangat penting. Kesulitan utama dalam merancang database adalah bagaimana merancang sehingga databas dapat memuaskan keperluan saat ini dan masa mendatang. Tujuan perancangan adalah agar dapat memiliki basis data yang kompak, efisien dalam penggunaan ruang penyimpanan, cepat dalam pengaksesan dan mudah dalam memanipulasi data (operasi tambah, ubah, hapus).
Perancangan model konseptual perlu dilakukan di samping perancangan model phisical. Perancangan konseptual akan menunjukkan entity dan relasinya berdasarkan proses yang di inginkan oleh organisasi. Tugas perancangan model konseptual basis data ini merupakan tanggung jawab dari Database Administrator. Beberapa pengertian berkaiatan dengan perancangan model konseptual, ialah :
  1. Bukan merupakan pendekatan proses informasi untuk seorang programmer aplikasi, tetapi merupakan kombinasi beberapa cara untuk memproses data untuk beberapa aplikasi.
  2. Tidak tergantung pada aplikasi individual.
  3. Tidak tergantung pada DBMS yang digunakan.
  4. Tidak tergantung pada hardware yang digunakan.
  5. Tidak tergantung pada phisikal model.
  6. Tidaklah perlu dipikirkan tentang terapan dan operasi yang akan dilakukan pada database.
Pada perancangan model konseptual penekanan tinjauan dilakukan pada struktur data dan relasi antara file. Pendekatan yang dilakukan pada menggunakan model data relational. Dalam merancang basis data dapat dilakukan melalui dua pendekatan yaitu :
  1. Model Entity–Relationship-diagram (telah dijelaskan dalam uraian kegiatan 3, 4 dan 5)
  2. Menerapkan normalisasi terhadap struktur tabel yang telah diketahui.

2. Definisi Normalisasi

Normalisasi diartikan sebagai suatu teknik yang menstrukturkan atau mendekomposisi atau memecah data menggunakan cara–cara tertentu untuk mencegah timbulnya permasalahan pengolahan data dalam basis data. Permasalahan yang dimaksud adalah berkaitan dengan penyimpangan– penyimpangan (anomalies) yang terjadi akibat adanya kerangkapan data dalam relasi dan inefisiensi pengolahan. Proses normalisasi akan menghasilkan relasi yang optimal, yaitu :
  1. Memiliki struktur record yang mudah untuk dimengerti.
  2. Memiliki struktur record yang sederhana dalam pemeliharaan.
  3. Memiliki struktur record yang mudah untuk ditampilkan kembali untuk memenuhi kebutuhan pemakai.
  4. Minimalisasi kerangkapan data guna meningkatkan kinerja sistem.
Dalam pendekatan normalisasi, perancangan basis data bertitik tolak dari situasi nyata. Ia telah memiliki item–item data yang siap ditempatkan dalam baris dan kolom pada tabel–tabel relasional. Demikian juga dengan sejumlah aturan tentang keterhubungan antara item–item data tersebut. Sementara pendekatan model data ER lebih tepat dilakukan jika yang diketahui baru prinsip sistem secara keseluruhan.

Pada penerapannya dua pendekatan tersebut dilakukan secara bersama– sama dan, berganti–ganti. Untuk kepentingan evaluasi dan dokumentasi, hasil normalisasi diwujudkan dalam sebuah model data. Model data yang sudah jadi tersebut bisa saja dimodifikasi dengan pertimbangan tertentu. Selanjutnya Hasil modifikasinya diimplementasikan dalam bentuk sejumlah struktur tabel dalam sebuah basis data. Struktur ini dapat diuji kembali dengan menerapkan aturan– aturan  normalisasi, hingga akhirnya diperoleh sebuah struktur basis data yang benar–benar efektif dan efisien. Begitulah kedua pendekatan dapat saling memperkuat satu sama lain.


3. Domain dan Tipe Data Konsep pendukung teknik normalisasi

Beberapa konsep yang harus dipahami sebelum mengimplementasikan teknik normalisasi data antara lain ialah: 

  1. Ketergantungan fungsional (sudah dibahas dalam kegiatan belajar tujuh).
  2. Domain dan tipe data.
  3. Konsep key atribut (Field/atribute kunci).

Penetapan tipe data pada setiap atribut (kolom) digunakan untuk keperluan penentuan struktur setiap tabel. Penetapan tipe data ini akan berimplikasi pada adanya batas–batas nilai yang mungkin disimpan atau diisikan kesetiap atribut tersebut. Jika telah menetapkan bahwa tipe data untuk sebuah atribut adalah integer, maka kita hanya mungkin untuk menyimpan data angka yang bulat diantara –32.768 hingga 32.768. Pengguna tidak mungkin untuk memasukkan data diluar batas nilai tersebut. untuk memasukkan data pecahan pengguna harus menggunakan data nbertipe string atau text.

Domain memiliki banyak kesamaan pengertiannya dengan fungsi tipe data tersebut. Akan tetapi, tipe data merujuk pada kemampuan penyimpanan data yang mungkin bagi suatu atribut secara fisik, tanpa melihat layak tidaknya data tersebut bila dilihat dari kenyataannya pemakaiannya. Sementara domain nilai lebih ditetapkan pada batas–batas nilai yang diperbolehkan bagi suatu atribut, dilihat dari kenyataanya yang ada.


Contoh : pada tabel kuliah, ditetapkan tipe data untuk atribut sks adalah integer. Dengan begitu secara fisik kita dapat menyimpan nilai –1, 0 atau 100 untuk atribut sks. Tetapi kita mengetahui dengan pasti, bahwa nilai–nilai tersebut tidak pantas (invalid) untuk menjadi data pada atribut sks. Lalu nilai–nilai yang boleh (valid) untuk atribut sks adalah 1, 2, 3, 4 dan 6, maka dapat dikatakan, domain nilai untuk atribut sks adalah 1, 2, 3, 4 dan 6.


4. Key Attribute


Setiap file atau tabel selalu mempunyai kunci (key) yaitu berupa satu field atau satu set field yang dapat mewakili record. Misalnya nomor pegawai merupakan kunci dari tabel pegawai suatu perusahaan. setiap pencarian cukup dengan menyebut nomor pegawai tersebut maka dapat diketahui nama, alamat dan atribute lainnya mengenai seorang pegawai tersebut.Key adalah satu atau gabungan dari beberapa atribut yang dapat membedakan semua baris data (row) dalam table secara unik.Macam-macam Filed/attribute kunci :

  1. Candidate Key (Kunci Kandidat/Kunci Calon).
  2. Primary Key (Kunci Primer).
  3. Alternate Key (Kunci Alternatif).
  4. Foreign Key (Kunci Tamu).


Candidate Key (Kunci Kandidat/Kunci calon) adalah satu atribute atau satu set minimal atribute yang mengidentifikasikan secara unik suatu kejadian spesific dari entity. Jika satu kunci kandidat berisi lebih dari satu atribute, maka biasanya disebut sebagai composite key (kunci campuran/ gabungan).


Misalnya tabel Pegawai berisi attribute : No Induk Pegawai (NIP), No KTP, Nama, Tempat Lahir, Tanggal Lahir, Alamat, KotaKunci kandidat disini antara lain ialah :

  1. No Induk Pegawai (NIP), karena unik tidak mungkin ganda.
  2. No KTP, karena unik tidak mungkin ganda.
  3. Nama, sering dipakai sebagai kunci pencarian namun tidak dapat dikatakan kunci karena sering seseorang punya nama yang sama.
  4. Nama + Tanggal lahir, mungkin dapat dipakai sebagai kunci karena kemungkinan sangat kecil seseorang punya nama sama yang lahir pada hari yang sama.
  5. Nama + tempat lahir + tanggal lahir, dapat dipakai sebagai kunci
  6. Alamat, kota (bukan kunci).


Primary Key adalah satu atribute atau satu set minimal atribute yang tidak hanya mengidentitikasi secara unik suatu kejadian spesific, tapi juga dapat mewakili setiap kejadian dari suatu entity. Setiap kunci kandidat punya peluang menjadi primary key, tetapi sebaiknya dipilih satu saja yang dapat mewakili secara menyeluruh terhadap entity yang ada. Contoh :

  1. No Induk (NIP), karena unik tidak mungkin ganda dan mewakili secara menyeluruh terhadap entity Pegawai, dan setiap pegawai selalu punya nomor induk.
  2. No KTP, ini hanya dipakai bila sampai dengan pembayaran gaji pegawai ternyata nomor induk belum keluar.


Alternate Key (Kunci alternatif) adalah kunci kandidat yang tidak dipakai sebagai primary key. Kerap kali kunci alternatif dipakai sebagai kunci pengurutan dalam laporan.Contoh: Kunci Alternatif untuk pengurutan berdasarkan nama.
Foreign Key (Kunci Tamu/Asing) adalah satu atribute (atau satu set atribute) yang melengkapi satu relationship (hubungan) yang menunjukkan ke induknya. Kunci tamu ditempatkan pada entity anak dan sama dengan kunci primary induk direlasikan. Contoh:
Dalam hal hubungan dua buah file yang punya relationship banyak lawan banyak maka terdapat 2 buah kunci tamu pada file konektornya. Contoh:


  1. File Proyek berisi atribute: NomorProyek, Tgl Mulai, Tgl Selesai, Anggaran.
  2. File Pegawai berisi atribute: No Induk, Nama.

Hubungan antara file tersebut adalah banyak lawan banyak yaitu satu Pegawai mengerjakan lebih dari 1 proyek dan satu proyek dikerjakan oleh beberapa pegawai maka untuk menunjukkan hubungan tersebut dipakai file konektor yang berisi kunci tamu dari kedua file.

  1. File Proyek_Pegawai berisi atribute: Nomor Proyek, NIP, Jam Kerja (proyek tersebut dikerjakan oleh pegawai ter-tentu selama sekian jam kerja).
  2. Maka pada file Proyek_Pegawai terdapat kunci tamu yaitu Nomor Proyek dan NIP. Kedua atribute tersebut juga merupakan kunci primary.


5. Persyaratan teknik normalisasi data

Dalam perspektif normalisasi, sebuah basis data dapat dikatakan baik, jika setiap tabel yang menjadi unsur pembentuk basis data tersebut juga telah berada dalam keadaan baik atau normal. Selanjutnya, sebuah tabel dapat dikategorikan baik (efisien) atau normal, jika telah memenuhi 3 (tiga) kriteria berikut:

  1. Jika ada dekomposisi (penguraian) tabel, maka dekomposisinya harus dijamin aman (Lossless–Join Decomposition).
  2. Terpeliharanya ketergantungan fungsional pada saat perubahan data (DependencyPreservation).
  3. Tidak melanggar Boyce–Code Normal Form (BCNF).


6. Lossless–Join Decomposition

Dekomposisi memang merupakan upaya untuk mendapatkan tabel yang baik. Tetapi jika tidak hati–hati, upaya ini justru dapat menghasilkan kesalahan. Dekomposisi yang benar terjadi jika tabel–tabel hasil dekomposisi kita gabungkan kembali dapat menghasilkan tabel awal sebelum didekomposisi. Dekomposisi yang benar semacam ini disebut Lossless–Join Decomposition atau Lossless Decomposition (dekomposisi aman).

Di bawah ini contoh abstrak yang menghasilkan dekomposisi tidak aman (Lossy–Join Decomposition):

Diasumsikan ada table XYZ yang didefinisikan dua buah ketergantungan fungsional   X > Y dan Y > Z. Kedua ketergantungan fungsional tersebut diperoleh dari pengamatan terhadap data yang kurang memadai atau karena asumsi yang kurang tepat. Katakan isi tabel XYZ tersebut adalah sebagai berikut:


Memang dengan isi seperti itu, pernyataan ketergantungan fungsional yang kedua     Y > Z tidak sepenuhnya tepat, karena pada row 2 dan row 4, dengan nilai untuk atribut Z–nya berbeda. Tetapi yang ingin ditekankan di sini adalah adanya dua buah ketergantunagn fungsional itu mendorong kita untuk mendekomposisi tabel XYZ tersebut menjadi dua buah tabel yaitu tabel XY dan YZ sebagai berikut:

Jika kedua tabel diatas kita gabungkan kembali, maka hasilnya adalah:

Maka ini tentu saja berbeda dengan tabel awal (sebelum didekomposisi). Maka dekomposisi semacam ini disebut Lossy–Join Decomposition (dekomposisi tidak aman), yaitu sebuah dekomposisi yang sedapat mungkin kita hindari.Akan tetapi jika data pada row 4 yang ada di tabel XYZ awal, kita ganti dengan data berikut:

Sehingga tabel XYZ menjadi:

Dengan data ditabel XYZ demikian maka kedua ketergantungan fungsional dapat dibenarkan. Tabel XYZ tersebut didekomposisikan menjadi tabel XY dan YZ sebagai berikut:

Kalau kedua tabel diatas digabungkan kembali maka, tabel awal XYZnya akan diperoleh kembali sehingga dekomposisi tersebut aman. Karena itulah ketergantungan fungsional pada suatu tabel harus kita tetapkan berdasarkan pengamatan yang teliti dan asumsi yang dapat dipertanggung jawabkan agar kelak hasil dekomposisi dapat dibenarkan.


7. Dependency Preservation

Dependency Preservation (pemeliharaan ketergantungan) merupakan kriteria kedua yang harus dapat dicapai untuk mendapatkan tabel dan basis data yang baik. Ketika kita melakukan perubahan data, maka harus bisa dijamin agar perubahan tersebut tidak menghasilkan inkonsistensi data yang mengakibatkan ketergantungan fungsional yang sudah benar menjadi tidak terpenuhi. Akan tetapi, dalam upaya untuk memelihara ketergantungan fungsional yang ada untuk tetap terpenuhi tersebut, prosesnya harus dapat dilakukan dengan efisien.

Contoh:
Tabel mahasiswa : (nim, nama_mhs, alamat_mhs, tgl_lahir) dengan ketergantungan fungsional–nya yaitu:
nim > nama_mhs, alamat_mhs, tgl_lahir
Tabel nilai : (nama_kul, nim, nama_mhs, indeks_nilai) dengan ketergantungan fungsional–nya yaitu:
nama_kul, nim > indeks_nilai  dan
nim > nama_mhs

Jika ada perubahan nama_mhs di tabel mahasiswa maka perubahan tersebut harus juga dilakukan di tabel nilai dan juga berlaku sebaliknya yaitu jika ada perubahan nama_mhs di tabel nilai maka perubahan tersebut harus juga dilakukan di tabel  mahasiswa.

Jika hal tersebut tidak dilakukan maka data menjadi tidak konsiste dan ketergantunan fungsional menjadi tidak terpenuhi. Misalnya nilai yang nim–nya sama tetapi nama_mhs berbeda. Jika begitu, maka perubahan harus dilakukan diseluruh basis data, tetapi masalahnya perubahan itu tidak efisien dan seharusnya dihindari.Karena itu sebaiknya agar kriteria dependency preservation dapat terpenuhi dengan meniadakan/melepaskan atribut nama_mhs dari tabel nilai (sehingga tabel nilai berisi 3 atribut, yaitu nama-kul, nim dan indeks_nilai).


8. Boyce Code Normal Form (BCNF)

Kriteria berikutnya untuk mendapatkan tabel yang baik adalah dengan menerapkan BCNF. Sebuah tabel dikatakan memenuhi BCNF jika untuk semua ketergantungan fungsional dengan notasi X > Y, maka X harus merupakan candidate key pada tabel tersebut. Jika tidak demikian, maka tabel tersebut harus didekomposisi berdasarkan ketergantungan fungsional yang ada, sedemikian hingga X menjadi candidat key dari tabel–tabel hasil dekomposisi.

Contoh tabel yang tidak memenuhi BCNF:
Ditentukan tabel A = (E, F, G, H, I) dan berlaku ketergantungan fungsional, yaitu:
E, F  G, H, I
F, G  H, I

Disini tabel A tidak memenuhi BCNF karena ada X yang bukan candiday key, yaitu F, G sehingga F, G  H, I.

Sedangkan E, F adalah candidat key karena E, F  G, H, I

Karena terdapat 2 ketergantungan fungsional maka agar tabel A tidak memenuhi BCNF maka tabel tersebut harus didekomposisikan menjadi:
A1 = (E, F, G) dengan ketergantungan fungsional E, F  G
A2 = (F, G, H, I) dengan ketergantungan fungsional F, G  H, I


RANGKUMAN

Perancangan basis data merupakan suatu hal yang sangat penting. Tujuan perancangan adalah agar dapat memiliki basis data yang kompak, efisien dalam penggunaan ruang penyimpanan, cepat dalam pengaksesan dan mudah dalam memanipulasi. Perancangan basis data meliputi perancangan model konseptual dan  model phisik. Dalam merancang basis data dapat dilakukan melalui dua pendekatan yaitu:

  1. Model Entity–Relationship-diagram dan
  2. Menerapkan normalisasi terhadap struktur tabel yang telah diketahui.

Normalisasi diartikan sebagai suatu teknik yang menstrukturkan atau mendekomposisi atau memecah data menggunakan cara–cara tertentu untuk mencegah timbulnya permasalahan pengolahan data dalam basis data. Beberapa konsep dasar yang berkaiatan dengan normalisasi data: 

  1. ketergantungan fungsional (sudah dibahas dalam kegiatan belajar tujuh). 
  2. Domain dan tipe data. 
  3. Konsep key atribut (Field/atribute kunci).

Domain memiliki kesamaan arti dengan fungsi tipe data. Tipe data merujuk pada kemampuan penyimpanan data yang mungkin bagi suatu atribut secara fisik, tanpa melihat layak atau tidaknya data  bila dilihat dari kenyataannya pemakaiannya. Domain nilai lebih ditetapkan pada batas–batas nilai yang diperbolehkan bagi suatu atribut, dilihat dari kenyataanya yang ada. Key atribut adalah satu atau gabungan dari beberapa atribut yang dapat membedakan semua baris data (row) dalam table secara unik. Ragam attribute kunci antara lain :Candidate Key (Kunci Kandidat/Kunci Calon), Primary Key (Kunci Primer), Alternate Key (Kunci Alternatif), Foreign Key (Kunci Tamu).

Dalam perspektif normalisasi, sebuah tabel dapat dikategorikan baik (efisien) atau normal, jika telah memenuhi 3 (tiga) kriteria yaitu: 

  1. Jika ada dekomposisi (penguraian) tabel, maka dekomposisinya harus dijamin aman (Lossless–Join Decomposition). 
  2. Terpeliharanya ketergantungan fungsional pada saat perubahan data (DependencyPreservation). 
  3. Tidak melanggar Boyce–Code Normal Form (BCNF).

Baca Juga : Kegiatan Belajar 9 : Tahapan Proses Normalisasi

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel

close