Lompat ke konten Lompat ke sidebar Lompat ke footer

Pengantar Teknik Normalisasi Data

1. Perancangan Basis Data 

Perancang basis data merupakan suatu hal yang sangat penting. Kesulitan utama dalam merancang database ialah bagaimana merancang sehingga database sanggup memuaskan keperluan dikala ini dan masa mendatang.Tujuan perancanganadalah biar sanggup mempunyai basis data yang kompak, efisien dalam penggunaan ruang penyimpanan, cepat dalam pengaksesan dan gampang dalam memanipulasi data (operasi tambah, ubah, hapus). 

Perancangan model konseptual perlu dilakukan di samping perancangan model phisik.Perancangan konseptual akan mengatakan entity dan relasinya menurut proses yang diinginkan oleh organisasi. Tugas pernacangan model konseptual basis data ini merupakan tanggung jawab dari Database Administrator. Beberapa pengertian berkaiatan dengan perancangan model konseptual, ialah : 
  • Bukan merupakan pendekatan proses info untuk seorang programmer aplikasi, tetapi merupakan kombinasi beberapa cara untuk memproses data untuk beberapa aplikasi.  
  • Tidak tergantung pada aplikasi individual.  
  • Tidak tergantung pada DBMS yang digunakan. 
  • Tidak tergantung pada hardware yang digunakan.  
  • Tidak tergantung pada phisikal model. 
  • Tidaklah perlu dipikirkan wacana terapan dan operasi yang akan dilakukan pada database. 

Pada perancangan model konseptual penitikberatan tinjauan dilakukan pada struktur data dan kekerabatan antara file.Pendekatan yang dilakukan pada memakai model data relational.Dalam merancang basis data sanggup dilakukan melalui dua pendekatan yaitu: 
  1. Model Entity–Relationship-diagram (telah dijelaskan dalam uraian acara 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 memakai cara–cara tertentu untuk mencegah timbulnya permasalahan pengolahan data dalam basis data. Permasalahan yang dimaksud ialah berkaitan dengan penyimpangan– penyimpangan (anomalies) yang terjadi akhir adanya kerangkapan data dalam kekerabatan dan inefisiensi pengolahan.Proses normalisasi akan menghasilkan kekerabatan yang optimal, yaitu : 
  1. Memiliki struktur record yang gampang untuk dimengerti. 
  2. Memiliki struktur record yang sederhana dalam pemeliharaan. 
  3. Memiliki struktur record yang gampang 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 mempunyai item–item data yang siap ditempatkan dalam baris dan kolom pada tabel–tabel relasional. Demikian juga dengan sejumlah hukum wacana keterhubungan antara item–item data tersebut. Sementara pendekatan model data ER lebih sempurna dilakukan jikalau yang diketahui gres prinsip sistem secara keseluruhan. 

Pada penerapannya dua pendekatan tersebut dilakukan secara bersama– sama dan, berganti–ganti. Untuk kepentingan penilaian 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 sanggup diuji kembali dengan menerapkan aturan– aturan  normalisasi, hingga jadinya diperoleh sebuah struktur basis data yang benar–benar efektif dan efisien. Begitulah kedua pendekatan sanggup 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 acara berguru 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 memutuskan bahwa tipe data untuk sebuah atribut ialah integer, maka kita hanya mungkin untuk menyimpan data angka yang lingkaran diantara –32.768 hingga 32.768. Pengguna mustahil untuk memasukkan data diluar batas nilai tersebut. untuk memasukkan data potongan pengguna harus memakai data nbertipe string atau text.

Domain mempunyai 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 ialah integer. Dengan begitu secara fisik kita sanggup 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 ialah 1, 2, 3, 4 dan 6, maka sanggup dikatakan, domain nilai untuk atribut sks ialah 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 sanggup mewakili record. Misalnya nomor pegawai merupakan kunci dari tabel pegawai suatu perusahaan. setiap pencarian cukup dengan menyebut nomor pegawai tersebut maka sanggup diketahui nama, alamat dan atribute lainnya mengenai seorang pegawai tersebut.Key ialah satu atau gabungan dari beberapa atribut yang sanggup membedakan semua baris data (row) dalam table secara unik.Macam-macam Filed/attribute kunci: 
  • Candidate Key (Kunci Kandidat/Kunci Calon) 
  • Primary Key (Kunci Primer) 
  • Alternate Key (Kunci Alternatif) 
  • 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 : 
  • No Induk Pegawai (NIP), sebab unik mustahil ganda. 
  • No KTP, sebab unik mustahil ganda. 
  • Nama, sering digunakan sebagai kunci pencarian namun tidak sanggup dikatakan kunci sebab sering seseorang punya nama yang sama. 
  • Nama + Tanggal lahir, mungkin sanggup digunakan sebagai kunci sebab kemungkinan sangat kecil seseorang punya nama sama yang lahir pada hari yang sama. 
  • Nama + daerah lahir + tanggal lahir, sanggup digunakan sebagai kunci                                          
  • Alamat, kota (bukan kunci). 
Primary Key ialah satu atribute atau satu set minimal atribute yang tidak hanya mengidentitikasi secara unik suatu kejadian spesific, tapi juga sanggup mewakili setiap kejadian dari suatu entity. Setiap kunci kandidat punya peluang menjadi primary key, tetapi sebaiknya dipilih satu saja yang sanggup mewakili secara menyeluruh terhadap entity yang ada. Contoh: 

  • No Induk (NIP), sebab unik mustahil ganda dan mewakili secara menyeluruh terhadap entity Pegawai, dan setiap pegawai selalu punya nomor induk 
  • No KTP, ini hanya digunakan bila hingga dengan pembayaran honor pegawai ternyata nomor induk belum keluar. 

 Perancang basis data merupakan suatu hal yang sangat penting Pengantar Teknik Normalisasi Data

Alternate Key (Kunci alternatif)adalah kunci kandidat yang tidak digunakan sebagai primary key. Kerap kali kunci alternatif digunakan sebagai kunci pengurutan dalam laporan.Contoh: Kunci Alternatif untuk pengurutan menurut nama. 


Foreign Key (Kunci Tamu/Asing)Foreign Key ialah satu atribute (atau satu set atribute) yang melengkapi satu relationship (hubungan) yang mengatakan ke induknya.  Kunci tamu ditempatkan pada entity anak dan sama dengan kunci primary induk direlasikan. Contoh: 

Dalam hal korelasi dua buah file yang punya relationship banyak lawan banyak maka terdapat 2 buah kunci tamu pada file konektornya. Contoh: File Proyek berisi atribute: NomorProyek, Tgl Mulai, Tgl Selesai, Anggaran File Pegawai berisi atribute:   No Induk, Nama Hubungan antara file tersebut ialah banyak lawan banyak yaitu satu Pegawai mengerjakan lebih dari 1 proyek dan satu proyek dikerjakan oleh beberapa pegawai maka untuk mengatakan korelasi tersebut digunakan file konektor yang berisi kunci tamu dari kedua file. 

File Proyek_Pegawai berisi atribute : Nomor Proyek, NIP, Jam Kerja (proyek tersebut dikerjakan oleh pegawai ter-tentu selama sekian jam kerja) 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 sanggup dikatakan baik, jikalau setiap tabel yang menjadi unsur pembentuk basis data tersebut juga telah berada dalam keadaan baik atau normal. Selanjutnya, sebuah tabel sanggup dikategorikan baik (efisien) atau normal, jikalau telah memenuhi 3 (tiga) kriteria berikut : 
  1. Jika ada dekomposisi (penguraian) tabel, maka dekomposisinya harus dijamin kondusif (Lossless–Join Decomposition). 
  2. Terpeliharanya ketergantungan fungsional pada dikala perubahan data  (DependencyPreservation). 
  3. Tidak melanggar Boyce–Code Normal Form (BCNF) 
 
6. Lossless–Join Decomposition 

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

Di bawah ini pola ajaib yang menghasilkan dekomposisi tidak kondusif (Lossy–Join Decomposition) : Diasumsikan tabel  XYZ yang didefinisikan oleh dua buah ketergantungan fungsional   X -> Y dan Y -> Z. Kedua ketergantungan fungsional tersebut diperoleh dari pengamatan terhadap data yang kurang memadai atau sebab perkiraan yang kurang tepat. Katakan isi tabel XYZ tersebut ialah sebagai berikut: 

Memang dengan isi menyerupai itu, pernyataan ketergantungan fungsional yang kedua     Y -> Z tidak sepenuhnya tepat, sebab pada row 2 dan row 4, dengan nilai untuk atribut Z–nya berbeda. Tetapi yang ingin ditekankan di sini ialah 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 ialah : 

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 jikalau data pada row 4 yang ada di tabel XYZ awal, kita ganti dengan data 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 memutuskan menurut pengamatan yang teliti dan perkiraan yang sanggup dipertanggung jawabkan biar kelak hasil dekomposisi sanggup dibenarkan. 
 

7. Dependency Preservation 

Dependency Preservation (pemeliharaan ketergantungan) merupakan kriteria kedua yang harus sanggup dicapai untuk mendapat tabel dan basis data yang baik. Ketika kita melaksanakan perubahan data, maka harus bisa dijamin biar 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 sanggup 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 jikalau 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 biar kriteria dependency preservation sanggup 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 mendapat tabel yang baik ialah dengan menerapkan BCNF. Sebuah tabel dikatakan memenuhi BCNF jikalau 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 menurut 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 sebab ada X yang bukan candidat key, yaitu F, G sehingga F, G -> H, I. 
Sedangkan E, F ialah candidat key sebab E, F -> G, H, I 
Karena terdapat 2 ketergantungan fungsional maka biar 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