Normalization Perancangan Basis Data Education Fair Use material Re-Arrange by : Feri Sulianta Learning Objectives • • • • Referential Integrity Functional Dependency Transitive Dependency 1NF, 2NF, 3NF NORMALISASI • Normalisasi adalah suatu teknik untuk mengorganisasi data ke dalam table – table untuk memenuhi kebutuhan pemakai Tujuan Dari Normalisasi • Menghilangkan Kerangkapan Data • Mengurangi Kompleksitas • Mempermudah Pemodifikasian Data Proses Normalisasi • Data diuraikan dalam bentuk tabel, selanjutnya di analisis berdasarkan persyaratan tertentu ke beberapa tingkat • Apabila tabel yang diuji belum memenuhi persyaratan, maka tabel tersebut perlu dipecah menjadi beberapa tabel yg lebih sederhana sampai memenuhi kriteria optimal Tahapan Normalisasi BENTUK TIDAK NORMAL Menghilangkan perulangan group BENTUK NORMAL PERTAMA (1NF) Menghilangkan ketergantungan sebagian BENTUK NORMAL KEDUA (2NF) Menghilangkan ketergantungan transitif BENTUK NORMAL KETIGA (3NF) Ketergantungan Fungsional • Atribut Y pada relasi R dikatakan tergantung fungsional pada atribut X, jika dan hanya jika stp nilai X pada relasi R mempunyai tepat satu nilai Y pada R • Misal,terdapat skema db pemasok-barang: pemasok(no-pem,na-pem) Tabel Pemasok-barang NO-PEM NA-PEM P01 BAHARU P02 SINAR P03 HARAPAN •CTH KET FUNGSIONAL : NO-PEMNA-PEM Ketergantungan Fungsional Penuh • Atribut y pada relasi r dikatakan tergantung fungsional penuh pada atribut x pd relasi r, jika y tidak tergantung pd subset dr x (bila x adalah key gabungan) • Kirim-barang(no-pem,na-pem, nobar, jumlah) Tabel Kirim-barang NO-PEM NA-PEM NO-BAR JUMLAH P01 BAHARU B01 1000 P01 BAHARU B02 1500 P01 BAHARU B03 2000 P02 SINAR B03 1000 P03 HARAPAN B02 2000 •CTH KET FUNGSIONAL : NO-PEMNA-PEM •NO-BAR,NO-PEMJUMLAH (TERGANTUNG PENUH THD KEYNYA) Ketergantungan Sebagian NO-PEM KODEKOTA KOTA NO-BAR JUMLAH P01 1 JAKARTA B01 1000 P01 1 JAKARTA B02 1500 P01 1 JAKARTA B03 2000 P02 3 BANDUNG B03 1000 P03 2 SURABAYA B02 2000 Ketergantungan Transitif • Atribut z pada relasi r dikatakan tergantung transitif pada atribut x, jika atribut y tergantung pada atribut x pada relasi r dan atribut z tergantung pada atribut y pada relasi r. ( X y, y z, maka x z) Ketergantungan Transitif NO-PEM KODEKOTA KOTA NO-BAR JUMLAH P01 1 JAKARTA B01 1000 P01 1 JAKARTA B02 1500 P01 1 JAKARTA B03 2000 P02 3 BANDUNG B03 1000 P03 2 SURABAYA B02 2000 •KET FUNGSIONAL : •NO-PEM KODE-KOTA •KODE-KOTA KOTA, MAKA •NO-PEM KOTA CONTOH NORMALISASI BENTUK UN NORMAL s/d BENTUK NORMAL KE-TIGA (3NF) Tabel Kirim-1 (Unnormal) NO-PEM KODEKOTA KOTA NO-BAR JUMLAH P01 1 JAKARTA B01 1000 B02 1500 B03 2000 P02 3 BANDUNG B03 1000 P03 2 SURABAYA B02 2000 Bentuk Normal Kesatu (1nf) • Suatu relasi dikatakan sdh memenuhi bentuk normal kesatu bila setiap data bersifat atomik, yaitu setiap irisan baris dan kolom hanya mempunyai satu nilai data Tabel Kirim-2 (1nf) NO-PEM KODEKOTA KOTA NO-BAR JUMLAH P01 1 JAKARTA B01 1000 P01 1 JAKARTA B02 1500 P01 1 JAKARTA B03 2000 P02 3 BANDUNG B03 1000 P03 2 SURABAYA B02 2000 NO-PEM KODE-KOTA KOTA NO-BAR JUMLAH P01 1 JAKARTA B01 1000 P01 1 JAKARTA B02 1500 P01 1 JAKARTA B03 2000 P02 3 BANDUNG B03 1000 P03 2 SURABAYA B02 2000 KODE-KOTA NO-PEM JUMLAH KOTA NO-BAR Bentuk Normal Kedua (2nf) • Suatu relasi dikatakan sdh memenuhi bentuk normal kedua bila relasi tersebut sudah memenuhi bentuk normal pertama dan atribut yang bukan key sudah tergantung penuh terhadap key nya Tabel Pemasok-1 (2nf) NO-PEM KODE-KOTA KOTA P01 1 JAKARTA P02 3 BANDUNG P03 2 SURABAYA Bentuk Normal Kedua (2nf) TABEL KIRIM-3 (2NF) NO-PEM NO-BAR JUMLAH P01 B01 1000 P01 B02 1500 P01 B03 2000 P02 B03 1000 P03 B02 2000 Bentuk Normal Ketiga (3nf) • Suatu relasi dikatakan sdh memenuhi bentuk normal ketiga bila relasi tersebut sudah memenuhi bentuk normal kedua dan atribut yang bukan key sudah tidak tergantung transitif terhadap key nya Bentuk Normal Ketiga (3nf) TABEL KIRIM-3 (3NF) NO-PEM NO-BAR JUMLAH P01 B01 1000 P01 B02 1500 P01 B03 2000 P02 B03 1000 P03 B02 2000 TABEL PEMASOK-2 (3NF) TABEL PEMASOK-3 (3NF) KODE-KOTA KOTA NO-PEM KODE-KOTA 1 JAKARTA P01 1 3 BANDUNG P02 3 2 SURABAYA P03 2 The Question & Quiz Ubah bentuk tabel tidak normal berikut sampai memenuhi bentuk normal 3 (3NF) Normalisasi Database Perkuliahan NO-MHS 2683 NAMAMHS KODEMK JURUS AN NAMA-MK WELLI MI350 MI MANAJEMEN DB NAMA-DOSEN NILAI B104 ATI A ANALISIS PRC SISTEM B317 DITA B MANAJEMEN DB B104 ATI C AK201 AKUNT.KEUANGAN D310 LIA B MK300 DASAR PEMASARAN B212 LOLA A MI465 5432 BAKRI MI350 AK KODEDOSEN •ASUMSI : •SEORANG MHS DAPAT MENGAMBIL BEBERAPA MATAKULIAH •SATU MATAKULIAH DAPAT DIAMBIL OLEH LBH DR 1 MHSW •SATU MATAKULIAH HANYA DIAJARKAN SATU DOSEN •SATU DOSEN DAPAT MENGAJAR BEBERAPA MATAKULIAH •SEORANG MHSW PD MATAKULIAH TERTENTU HANYA MEMPUNYAI SATU NILAI Diagram Ketergantungan Fungsional NAMA-MHS NO-MHS JURUSAN NILAI NAMA-MK KODE-MK KODE-DOSEN NAMA-DOSEN Normalisasi – Contoh II Un Normal Form The data we would want to store could be expressed as: Project No Project Name Employee No Employee Name Rate category Rate 1203 Madagascar travel site 11 Jessica Brookes A £90 12 Andy Evans B £80 16 Max Fat C £70 11 Jessica Brookes A £90 17 Alex Branton B £80 1506 Online estate agency Normalization 1 We could place the data into a table called: tblProjects_Employees Project No. Project Name Employee No. Employee Name Rate category Rate 1203 Madagascar travel site 11 Jessica Brookes A £90 1203 Madagascar travel site 12 Andy Evans B £80 1203 Madagascat travel site 16 Max Fat C £70 1506 Online estate agency 11 Jessica Brookes A £90 1506 Online estate agency 17 Alex Branton B £70 Normalization 2 We now have 3 tables: tblProjects Project No Project Name 1023 Madagascar travel site 1056 Online estate agency tblProjects_Employees Project No Employee No 1023 11 1023 12 1023 16 1056 1056 tblEmployees Employee No Employee Name Rate Category Rate 11 Jessica Brookes A £90 12 Andy Evans B £80 16 Max Fat C £70 17 Alex Branton A £80 11 17 Normalization Looking at the project note the reduction in: Redundant data The text “Madagascar travel site” is stored once only, not for each occurrence of an employee working on the project. Inconsistent data Because we only store the project name once we are less likely to enter “Madagascat” The link is made through the key, Project No. Obviously there is no way to remove this duplication without losing the relation altogether, but it is far more efficient storing a short number repeatedly, than a large chunk of text. Normalization The solution, as before, is to remove this excess data to another table. We do this by: Looking for Transitive Relationships Relationships where a non-key attribute is dependent on another non-key attribute. Hourly rate should depend on rate category BUT rate category is not a key Removing Transitive Relationships As before we remove the redundant data and place it in a separate table. In this case we create a new table tblRates and add the fields rate category and hourly rate. We then delete hourly rate from the employees table. Normalization 3 tblProjects We now have 4 tables: tblProjects_Employees Project No Employee No 1023 11 Project No Project Name 1023 Madagascar travel site 1056 Online estate agency tblEmployees 1023 12 1023 16 1056 11 1056 17 Employee No Employee Name Rate Category 11 Jessica Brookes A Andy Evans B 16 Max Fat C 17 Alex Branton A 12 tblRates Rate Rate Category A £90 B £80 C £70 Normalization Again, we have cut down on redundancy and it is now impossible to assume Rate category A is associated with anything but £90. Our model is now in its most efficient format with: Minimum REDUNDANCY Minimum INCONSISTENCY Normalisasi – Contoh III First Normal Form (1NF) • “Flattening” the table • All columns (fields) must have no repeating items in columns OrderDate 11/30/1998 Customer Joe Smith Items Hammer, Saw, Nails OrderDate 11/30/1998 Customer Joe Smith Item1 Hammer Item2 Saw Item3 Nails Solution: make a separate table for each set of attributes with a primary key (parser, append query) 36 Second Normal Form (2NF) • In 2NF and every non-key column is fully dependent on the (entire) primary key – Means : Does the key field imply the rest of the fields? – Do we need to know both OrderID and Item to know the Customer and Date? OrderID 1 1 1 Item Hammer Saw Nails CustomerID 1 1 1 OrderDate 11/30/1998 11/30/1998 11/30/1998 Solution: Remove to a separate table (Make Table) 37 Third Normal Form (3NF) • In 3NF, every non-key column is mutually independent – means : no transitive dependency like calculations Item Hammer Saw Nails Quantity 2 5 8 Price $10 $40 $1 Total $20 $200 $8 • Solution: Put calculations in queries and forms 38 Transitive Dependency • Transitive Dependency is a condition where – – A, B and C are attributes of a relation such that if A B and B C, then C is transitively dependent on A through B. (Provided that A is not functionally dependent on B or C). 39 DreamHome Example 40 Example - Normalization UNF to 1NF Relation 41 Example - Normalization UNF to 1NF Relation 42 Example - Normalization UNF to 1NF Relation 43 Second Normal Form (2NF) • A relation that is in 1NF, and • Every non-primary-key attribute is functionaly dependent only on the primary key, but not any subset of the primary key. 44 1NF to 2NF • Identify the primary key for the 1NF relation. • Identify the functional dependencies in the relation. • If partial dependencies exist on the primary key remove them by placing them in a new relation. 45 FDs for Customer_Rental Relation Rental (Customer_No, Property_No, RentStart, RentFinish) Customer (Customer_No, Cname) Property_Owner (Property_No, Paddress, Rent, Owner_No, Oname) 46 FDs for Customer_Rental Relation Rental (Customer_No, Property_No, RentStart, RentFinish) Customer (Customer_No, Cname) Property_Owner (Property_No, Paddress, Rent, Owner_No, Oname) 47 FDs for Customer_Rental Relation Rental (Customer_No, Property_No, RentStart, RentFinish) Customer (Customer_No, Cname) Property_Owner (Property_No, Paddress, Rent, Owner_No, Oname) 48 FDs for Customer_Rental Relation Rental (Customer_No, Property_No, RentStart, RentFinish) Customer (Customer_No, Cname) Property_Owner (Property_No, Paddress, Rent, Owner_No, Oname) 49 FDs for Customer_Rental Relation Rental (Customer_No, Property_No, RentStart, RentFinish) Customer (Customer_No, Cname) Property_Owner (Property_No, Paddress, Rent, Owner_No, Oname) 50 Example - Normalization Customer_Rental to 2NF Relations 51 Third Normal Form (3NF) • Remove transitive dependency. E.g.: Property_Owner (Property_No, PAddress, Rent, Owner_No, OName) Therefore, the 3 NF is a relation that is in 1NF and 2NF and in which no non-primary-key attribute is transitively dependent on the primary key. 52 2NF to 3NF • Identify the primary key in the 2NF relation. • Identify functional dependencies in the relation. • If transitive dependencies exist on the primary key remove them by placing them in a new relation along with a copy of their dominant. 53 Example - Normalization FDs for Customer_Rental Relation 54 Example - Normalization Property_Owner to 3NF Relations 5539 Example - Normalization Process of Decomposition 56 Summary of 3NF Relations 5741