350 likes | 735 Views
Normalisasi. Basis data 11. Normalisasi. Normalisasi adalah suatu teknik untuk menghasilkan sekumpulan relasi dengan sifat-sifat ( properties ) yang diinginkan, memenuhi kebutuhan data pada enterprise.
E N D
Normalisasi Basis data 11
Normalisasi • Normalisasi adalah suatu teknik untuk menghasilkan sekumpulan relasi dengan sifat-sifat (properties) yang diinginkan, memenuhi kebutuhan data pada enterprise. • Sebuah relasi dapat dinormalisasi kedalam bentuk tertentu untuk mengatasi kemungkinan terjadinya pengulangan dari update yang tidak baik. • 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).
Data redudancy • Kerangkapan data dapat menyebabkan anomali
Update Anomalies • Relasi yang mengandung informasi yang redundan dapat diakibatkan oleh update anomalies. • Beberapa tipe dari update anomalies, diantaranya : • Insertion • Deletion • Modification
Functional Dependency • 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)
Direpresentasikan dalam diagram : A B B tergantung secara fungsional terhadap A • Determinant dari functional dependency mengacu kepada atribut atau himpunan atribut disebelah kiri anak panah.
Karakteristik FD • 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
Proses Normalisasi • Suatu teknik formal untuk menganalisa relasi berdasarkan primary key atau candidate key-nya dan functional dependency antar atribut. • Dilakukan dalam beberapa langkah. Setiap langkah mengacu ke bentuk normal tertentu, sesuai dengan sifat yang dimilikinya. • Setelah normalisasi diproses, relasi secara bertahap menjadi lebih terbatas/kuat bentuk formatnya dan juga mengurangi tindakan update yang anomali.
Unnormalized Form (UNF) • Merupakan suatu table yang berisikan satu atau lebih group/data yang berulang. • Membuat tabel unnormalized yaitu dengan memindahkan data dari sumber informasi (Contoh : Form) kedalam format tabel dengan baris dan kolom.
First Normal Form (1NF) • Merupakan sebuah relasi dimana setiap irisan antara baris dan kolom berisikan satu dan hanya satu nilai. • UNF ke 1NF • Tunjuk satu atau sekumpulan atribut sebagai kunci untuk tabel unnormalized. • Identifikasikan groups yang berulang dalam tabel unnormalized yang berulang untuk kunci atribut. • Hapus group yang berulang dengan cara : • Masukkan data yang semestinya kedalam kolom yang kosong pada baris yang berisikan data yang berulang (flattening the table), atau dengan cara • Menggantikan data yang ada dengan copy dari kunci atribut yang sesungguhnya kedalam relasi terpisah.
Contoh: Contoh sederhana DreamHome lease. Seorang klien bernama John Kay menyewa properti di Glasgow yang dimiliki oleh Tina Murphy. Dalam kasus ini diasumsikan seorang klien dapat menyewa sebuah properti hanya satu kali dan tidak dapat menyewa lebih dari satu pada saat yang bersamaan. Sample data yang digunakan diambil dari 2 kontrak dari 2 klien yang berbeda yaitu John Kay dan Aline Stewart yang diubah kedalam bentuk tabel sbb, disebut dengan
Proses: • Tentukan atribut kunci untuk tabel unnormalized ClientRental , yaitu clientNo. • Tentukan group/kelompok yang berulang untuk setiap clientNo, yaitu : • Group berulang = (properyNo, pAddress, rentStart, rentFinish, rent, ownerNo, oName) • Untuk mengubah tabel unnormalized menjadi 1NF, maka harus ditetapkan terdapat 1 nilai untuk setiap kolom dan baris. Dapat dicapai dengan memindahkan group yang berulang.
Kemudian tentukan candidate key untuk relasi ClientRental dalam bentuk Composite Key yaitu (clienNo, propertyNo), (clientNo, rentStart), dan (propertyNo, rentFinish). • Ketiga kombinasi tadi dibandingkan dan dipilih (clientNo, propertyNo) sebagai primary key. • Sehingga relasi ClientRental didefinisikan : ClientRental (clientNo, propertyNo, cName, pAddress, rentStart, rentFinish, rent, ownerNo, oName)
Second Normal Form (2NF) • Berdasarkan pada konsep full functional dependency, mengindikasikan bahwa, jika A dan B merupakan atribut dari sebuah relasi, B dikatakan fully dependent terhadap A jika B functionally dependent pada A tetapi tidak pada proper subset dari A. • 2NF – merupakan sebuah relasi dalam 1NF dan setiap atribut non-primary-key bersifat fully functionally dependent pada primary key.
1NF ke 2 NF • Identifikasikan primary key untuk relasi 1NF. • Identifikasikan functional dependency dalam relasi. • Jika terdapat partial dependency terhadap primary key, maka hapus dengan menempatkannya dalam relasi yang baru bersama dengan salinan determinan-nya.
Contoh: • Direpresentasikan functional dependency (fd1 – fd6) untuk relasi: ClientRental dengan (clientNo, propertyNo) sebagai primary key. • Walaupun ClientRental memiliki 3 candidate key, tetapi yang diperhatikan hanya keterkaitan terhadap primary key saja, karena menggunakan definisi dari 2 NF yang berhubungan hanya dengan primary key dari relasi yang bersangkutan. • Sedangkan candidate key yang lain akan dipergunakan pada saat definisi umum untuk 2NF.
fd1 clientNo, propertyNo rentStart, rentFinish (Primary Key) • fd2 clientNo cName (Partial Dependency) • fd3 propertyNo pAddress, rent, ownerNo, oName (Partial Dependency) • fd4 ownerNo oName (Transitive Dependency) • fd5 clientNo, rentStart propertyNo, pAdrress, • rentFinish, rent, ownerNo, oName (Candidate Key) • fd6 properyNo, rentStart clientNo, cName, rentFinish (Candidate Key)
Proses: • Pada saat identifikasi functional dependency yang ada, dimulai dengan memeriksa apakah terdapat partial dependency terhadap primary key. Atribut (cName) partially dependent pada primary key, yaitu hanya atribut clientNo (fd2), atribut (pAddress, rent, ownerNo, oName) partially dependent pada primary key, yaitu hanya atribut propertyNo (fd3), atribut (rentStart dan rentFinish) fully dependent pada seluruh primary key, yaitu clientNo dan propertyNo (fd1). • Identifikasi partial dependency pada relasi ClientRental mengindikasikan bahwa relasi tersebut tidak termasuk dalam 2NF. Untuk mengubah relasi ClientRental kedalam 2NF diperlukan pembuatan relasi baru dimana seluruh atribut non-primary-key dihapus/digantikan dengan atribut yang fully dependen.
Hasil 2NF • Karena setiap atribut non-primary-key bersifat fully dependent pada primary key dalam relasi, maka relasi-relasi diatas mempunyai bentuk : • Client (clientNo, cName) • Rental (clientNo, propertyNo, rentStart, rentFinish) • PropertyOwner (propertyNo, pAddress, rent, ownerNo, oName)
Third Normal Form (3NF) • Berdasarkan pada konsep transitive dependency, yaitu suatu kondisi dimana A, B dan C merupakan atribut dari sebuah relasi, maka jika A B dan B C, maka C transitively dependent pada A melalui B. (menegaskan bahwa A tidak functionally dependent pada B atau C). • 3NF – Adalah sebuah relasi dalam 1NF dan 2NF dan dimana tidak terdapat atribut non-primary-key attribute yang bersifat transitively dependent pada primary key.
2NF ke 3NF : • Identifikasikan primary key dalam relasi 2NF. • Identifikasikan functional dependency dalam relasi. • Jika terdapat transitive dependency terhadap primary key, hapus dengan menempatkannya dalam relasi yang baru bersama dengan salinan determinan-nya.
Contoh: • Functional dependency yang ada dalam relasi Client, Rental dan PropertyOwner, yang dihasilkan dari contoh sebelumnya, sbb :
Deskripsi:: • Seluruh atribut non-primary key yang terdapat pada relasi client dan Rental bersifat functionally dependent pada masing-masing primary key-nya dan tidak memiliki transitive dependency yang dibutuhkan dalam 3NF. • fd yang diberi label tanda kutip (fd5’ dan fd6’) menandakan bahwa dependency yang terdapat didalamnya telah dibandingkan sebelumnya (bandingkan dgn fd1). • Seluruh non-primary-key pada relasi PropertyOwner bersifat functionally dependen pada primary key-nya, terkecuali oName yang juga dependent pada ownerNo. • Transitive dependency adalah jika suatu atribut dependent pada satu atau lebih non-primary-key.
Untuk merubah relasi PropertyOwner kedalam bentuk 3NF, harus menghilangkan transitive dependencies dengan membuat 2 relasi baru yaitu PropertyForRent dan Owner. • Sehingga relasi yang baru tersebut mempunyai bentuk sbb : PropertyForRent (propertyNo, pAddress, rent, ownerNo) Owner(ownerNo, oName)
Definisi umum 2NF dan 3NF • Second normal form (2NF) • Suatu relasi yang ada dalam 1NF dan setiap atribut non-primary-key bersifat fully functionally dependent pada candidate key. • Third normal form (3NF) • Suatu relasi yang ada dalam 1NF dan 2NF dan dimana tidak terdapat atribut non-primary-key attribute yang bersifat transitively dependent pada candidate key.