10 Normalisasi Mata Kuliah: Basis Data ILMU KOMPUTER Teknik Informatika
Video Normalisasi Data Redundancy Update Anomalies Functional Dependency Ketergantungan Fungsional Penuh, Parsial, Transitif Daftar Pustaka
Normalisasi Tujuan utama dalam pengembangan model data logikal pada sistem database relasional adalah untuk menciptakan representasi akurat suatu data, keterhubungannya dan batasan-batasannya. Untuk mencapai tujuan ini, maka harus ditetapkan/diidentifikasi sekumpulan relasi. Empat bentuk normal yang biasa digunakan yaitu, first normal form (1NF), second normal form (2NF) dan third normal form (3NF), dan Boyce–Codd normal form (BCNF).
Normalisasi Berdasarkan pada functional dependencies antar atribut dalam relasi Sebuah relasi dapat dinormalisasi kedalam bentuk tertentu untuk mengatasi kemungkinan terjadinya pengulangan dari update yang tidak baik. Normalisasi adalah suatu teknik untuk menghasilkan sekumpulan relasi dengan sifat-sifat (properties) yang diinginkan, memenuhi kebutuhan data pada enterprise.
Data Redundancy Tujuan utama dari desain database relasional adalah untuk mengelompokkan atribut-atribut kedalam relasi-relasi sehingga meminimalisasi redundansi data dan mengurangi penggunaan tempat penyimpanan yang dibutuhkan oleh sebuah relasi dasar. Masalah-masalah yang terkait dengan redundansi dapat dijelaskan dengan membandingkan relasi Staff dan Branch dengan relasi StaffBranch.
Data Redundancy
Data Redundancy Relasi StaffBranch memiliki data redundan, yaitu detail dari branch dituliskan berulang-ulang untuk setiap staff. Sebaliknya, informasi mengenai branch muncul hanya satu kali pada relasi Branch dan hanya branchNo saja yang diulang dalam relasi Staff, untuk merepresentasikan dimana setiap staff tersebut bekerja.
Update Anomalies Relasi yang mengandung informasi yang redundan dapat diakibatkan oleh update anomalies. Beberapa tipe dari update anomalies, diantaranya: Insertion: anomaly yang terjadi apabila terdapat penyisipan baris baru pada tabel, (adanya PK yang kosong) Deletion: anomaly yang terjadi apabila terdapat penghapusan baris dari tabel, (ada informasi yang semestinya tidak hilang menjadi hilang bersamaan dihapusnya sebuah baris dalam tabel) Modification: anomaly yang terjadi apabila terdapat perubahan pada sebuah baris saja, tanpa merubah sisa baris dengan definisi yang sama.
Update Anomalies Pada contoh dari tabel staffBranch dapat dilihat anomaly-anomaly sebagai berikut: Anomaly insertion, apabila disisipkan sebuah baris staff baru, maka atribut yang akan disisipkan hanya staffno, sname, posisition dan salary. Padahal pada tabel tersebut PK adalah staffno dan Branchno. Maka disini terdapat anomaly bahwa terdapat PK yang kosong. Anomaly deletion, apabila terdapat staff yang mengundurkan diri, yaitu Mary Howe. Ketika menghapus informasi tentang Mary Howe, maka satu baris akan ikut terhapus, demikian pula informasi tentang cabang yang ada di Glasgow. Sehingga informasi cabang tidak lagi menyimpan informasi tentang cabang Glasgow. Anomaly update, apabila kita hendak mengganti informasi pada satu field. Tetapi karena terdapat redundansi maka ketika di update hanya terjadi pada 1 baris saja, sedangkan baris-baris yang lain tidak ikut di update sehingga menimbulkan inkonsistensi.
Update Anomalies Untuk mengatasi anomalies ini dapat dilakukan decomposotion pada relasi dasar. Terdapat dua sifat Decomposition yaitu: Lossless-join Memungkinkan kita menemukan suatu instance relasi dasar dari instance koresponden dalam relasi yang lebih kecil. Dependency Preservation Properties Memungkinkan kita untuk mengadakan batasan pada relasi dasar dengan menyediakan beberapa batasan pada relasi yang lebih kecil.
Functional Dependency Merupakan konsep inti yang terkait dengan normalisasi. Functional Dependency, menjelaskan relationship antar atribut-atribut dalam relasi. Misalkan, jika A dan B adalah atribut dari suatu relasi R, B dikatakan Functionally Dependent pada A (dinotasikan A --> B), jika setiap nilai A dihubungkan dengan tepat satu nilai B. ( A dan B masing-masing dapat terdiri atas satu atau lebih atribut) Functional Dependency merupakan sifat dari arti semantik suatu atribut dalam sebuah relasi.
Functional Dependency Direpresentasikan dalam diagram Determinant dari functional dependency mengacu kepada atribut atau himpunan atribut disebelah kiri anak panah.
Example - Functional Dependency
Functional Dependency Karakteristik utama dari functional dependency yang digunakan dalam normalisasi : Mempunyai relationship 1:1 antar atribut di sebelah kiri dan kanan dependency. Saling terkait (Hold for all time) Misal : staffNo sName dan sName staffNo Nontrivial. Kumpulan lengkap dari sebuah functional dependency untuk suatu relasi bisa sangat besar. Penting untuk menemukan pola pendekatan yang dapat mengurangi himpunan/kumpulan tersebut untuk mendapatkan ukuran yang lebih mudah diatur.
Functional Dependency Perlu untuk mengidentifikasi himpunan functional dependency (direpresentasikan oleh X) untuk relasi yang lebih kecil daripada himpunan lengkap functional dependency (direpresentasikan oleh Y) untuk relasi tersebut dan memiliki sifat disetiap functional dependency pada Y dipenuhi dengan functional dependencies pada X. Himpunan dari seluruh functional dependency yang dipenuhi dengan himpunan yang diberikan dari functional dependencies X disebut closure X (dituliskan, X+). Himpunan inference rules, disebut Armstrong’s axioms, menetapkan bagaimana functional dependency yang baru dapat disimpulkan dari functional dependency yang sudah ada.
Functional Dependency Misalkan A, B, dan C merupakan subset dari atribut suatu relasi R. Maka Armstrong’s axiom-nya adalah : Reflexivity, jika B merupakan subset dari A, then A B Augmentation, jika A B, maka A,C B, C Transitivity, jika A B dan B C, maka A C
Ketergantungan Fungsional Penuh Contoh: Dari tabel diatas dapat diketahui bahwa Primary key nya adalah No-pesanan dan No-pem. Primary key ini adalah composite primary key yang berarti perimary key lebih dari 1. Berarti semua atribut yang non primary key harus bergantung penuh kepada keduanya. No_pesanan No_pem No_bar Jml P00101122013 AM234 K934 25 P00201122013 AM124 10 P00301122013 AJ546 K931 120 P03203092013 AF122 125 P01204052013 13
Ketergantungan Fungsional Penuh No-pesanan, No-pem No_bar No-pesanan, No-pem jumlah Dari penjelasan diatas dapat diketahui bahwa nomor pemesanan dan no pemesan, keduanya menentukan nomor barang yang dipesan dan keduanya juga menentukan berapa jumlah pesanan. Sehingga atribut yang bukan primary key semuanya bergantung pada primary key-nya.
Ketergantungan Fungsional Parsial Ketergantungan fungsional parsial artinya bahwa dalam sebuah tabel ada atribut atau sebagian atribut yang tidak bergantung sepenuhnya kepada primary key di tabel tersebut. Hal ini biasa terjadi jika pada sebuah tabel terdiri dari lebih 1 primary key (composite primary key). Misalkan jika terdapat A, B C, D. Dan A E. Sehingga terdapat atribut E yang hanya bergantung kepada sebagian atribut primary key yaitu atribut A saja. Lihat gambar dibawah:
Ketergantungan Fungsional Parsial Jika tabel seperti diatas, maka dapat dirtentukan sebagai primary key bahwa nomor pesanan dan nomor pemesan menentukan semua atribut yang ada pada tabel tersebut. Tetapi kenyataannya bahwa ada atribut Na_pem yang hanya tergantung pada No_pem dan tidak tergantung pada No_pesanan. Sehingga terjadi ketergantungan parsial antara Na_pem kepada No_pem. No_pesanan No_pem Na_pem No_bar Na_bar Jml P00101122013 AM234 Anggita K934 Mouse Optik 25 P00201122013 AM124 Ronny 10 P00301122013 AJ546 Jasmine K931 Monitor LCD 120 P03203092013 AF122 Alfina 125 P01204052013 13
Ketergantungan Fungsional Transitif Ketergantungan fungsional transitif artinya jika pada sebuah tabel terdapat atribut yang tidak hanya tergantung kepada primary keynya, tetapi kepada atribut lain yang bukann kunci. Sehingga keadaan tersebut dapat diidentifikasikan dengan notasi: A B, B C
Ketergantungan Fungsional Transitif Perhatikan tabel contoh dibawah. Terdapat atribut nama barang yang tergantung pada kedua atribut kunci primer. Tetapi pada kenyataannya atribut nama barang ini bergantung kepada no_barang, sehingga terdapat ketergantungan transitif terhadap no_barang yang juga tergantung kepada atribut kunci primer yaitu No_pemesanan dan No_pemesan. No_pesanan No_pem No_bar Na_bar Jml P00101122013 AM234 K934 Mouse Optik 25 P00201122013 AM124 10 P00301122013 AJ546 K931 Monitor LCD 120 P03203092013 AF122 125 P01204052013 13
No_pesanan, No_pem No_bar Ketergantungan Fungsional Transitif No_pesanan, No_pem No_bar No_bar Na_bar Sehingga ada ketergantungan transitif dari No_pesanan, No_pem No_bar Na_bar
Any Question?
Video & Sound Gambar Buku Courtesy of Youtube https://google.co.id Thomas Connolly > Carolyn Begg, Database Systems, Fourth Edition.
Team Penyusun