330 likes | 897 Views
NORMALISASI. Normalisasi. Normalisasi merupakan teknik analisis data yang mengorganisasikan atribut-atribut data dengan cara mengelompokkan sehingga terbentuk entitas yang non-redundant, stabil, dan fleksible
E N D
Normalisasi • Normalisasi merupakan teknik analisis data yang mengorganisasikan atribut-atribut data dengan cara mengelompokkan sehingga terbentuk entitas yang non-redundant, stabil, dan fleksible • Normalisasi dilakukan sebagai uji coba pada suatu relasi secara berkelanjutan untuk menentukan apakah relasi itu sudah baik, yaitu dapat dilakukan proses insert,update,delete, dan modifikasi pada satu atau beberapa atribut tanpa mempengaruhi integritas data dalam relasi tersebut.
Tahap Normalisasi • Ada tiga tahap dalam proses normalisasi yang dilakukan pada tiap tabel di database agar tabel tersebut memiliki tiga bentuk berikut: • First Normal Form (1NF) • Second Normal Form (2NF) • Third Normal Form (3NF)
Normalisasi: 1NF, 2NF, 3NF • Bentuk Normal ke Satu(1NF) Syarat : • Tidak ada set atribut yang berulang atau bernilai ganda. • Telah ditentukannya primary key untuk tabel atau relasi. • Tiap atribut hanya memiliki satu pengertian. Tiap atribut yang dapat memiiki banyak nilai sebenarnya menggambarkan entitas atau relasi yang terpisah.
Normalisasi: 1NF, 2NF, 3NF • Bentuk Normal ke Dua(2NF) Syarat : • Bentuk data telah memenuhi kriteria bentuk normal ke satu. • Atribut bukan kunci(non-key attribute) haruslah memiliki ketergantungan fungsional sepenuhnya pada primary key.
Normalisasi: 1NF, 2NF, 3NF • Bentuk Normal ke Tiga(3NF) Syarat : • Bentuk data telah memenuhi kriteria bentuk normal ke dua. • Atribut bukan kunci(non-key attribute) tidak boleh memiliki ketergantungan fungsional terhadap atribut bukan kunci lainnya. Seluruh atribut bukan kunci pada suatu relasi hanya memiliki ketergantungan fungsional terhadap primary key di relasi itu saja.
Contoh Normalisasi : Tabel Mahasiswa di bawah ini, akan dilakukan normalisasi sampai bentuk normal ke tiga Perhatikan Bahwa tabel di atas sudah dalam bentuk normal ke Satu(1NF)
Contoh Bentuk Normal ke dua(2NF) : Belum memenuhi kriteria 3NF, Karena atribut non-key Nilai dan Bobot masih memiliki ketergantu- ngan fungsional.
Contoh Bentuk Normal ke tiga(3NF) :
MID MNAMA IDCARD_NO JOIN_DB ( D_BASE, YEAR ) M001 John 001.J {(ORACLE,97), (MYSQL,98), (SQL SERVER 7,99)} M002 Smith 002.S {(ACCESS, 00)} M003 Willy 003.W {(INFORMIX,01), (SYSBASE,02)} M004 Jansen 004.J {(PARADOX,02)} 005.S M005 Soen { (ORACLE,99), (SYSBASE,00), (ACCESS,01) } Teknik pertama untuk merubah relasi dari Non 1st NF ke 1st NF yaitu Bentuk relasi baru yang memisahkan attribute JOIN_DB, dimana primary key dari relation baru tersebut adalah (MID, JOIN_DB) FIRST-NF (1NF) MID MNAMA IDCARD_NO MID JOIN_DB YEAR M001 John M001 ORACLE 97 001.J M002 Smith M001 MYSQL 98 002.S … … M001 SQL SERVER 7 99 … M002 ACCESS 00 … … …
Teknik kedua untuk merubah relasi dari Non 1st NF ke 1st NF yaitu Expand key dari pada relasi Non 1st NF, hingga terdapat tupple-tupple yang terpisah untuk multivalues attr nya, yang akan menjadi PK adalah attr kombinasi (yaitu : MID, JOIN_DB) FIRST-NF (1NF) MID MNAMA IDCARD_NO JOIN_DB ( D_BASE, YEAR ) M001 John 001.J {(ORACLE,97), (MYSQL,98), (SQL SERVER 7,99)} M002 Smith 002.S {(ACCESS, 00)} M003 Willy 003.W {(INFORMIX,01), (SYSBASE,02)} M004 Jansen 004.J {(PARADOX,02)} M005 Soen 005.S { (ORACLE,99), (SYSBASE,00), (ACCESS,01) } JOIN_DB MID MNAMA IDCARD_NO YEAR 97 ORACLE M001 John 001.J 98 MYSQL M001 John 001.J 99 SQL SERVER 7 M001 John 001.J ACCESS 00 M002 Smith 002.S 003.W 01 INFORMIX M003 Willy SYSBASE 003.W 02 M003 Willy … … … … …
Teknik ketiga untuk merubah relasi dari Non 1st NF ke 1st NF yaitu hanya bisa dilakukan jika multivalue attr nya diketahui jumlah maximum yang bisa terjadi (misalnya seorang hanya bisa JOIN DB sebanyak 3 DB, maka attr JOIN_DB dipisah jadi 3) FIRST-NF (1NF) MID MNAMA IDCARD_NO JOIN_DB M001 John 001.J ORACLE, MYSQL, SQL SERVER 7 ACCESS M002 Smith 002.S M003 Willy 003.W INFORMIX, SYSBASE M004 Jansen 004.J PARADOX M005 Soen 005.S ORACLE, SYSBASE, ACCESS MID MNAMA IDCARD_NO JOIN_DB2 JOIN_DB3 JOIN_DB1 M001 John 001.J MYSQL SQL SERV 7 ORACLE M002 Smith ACCESS 002.S M003 Willy 003.W SYSBASE INFORMIX M004 Jansen 004.J PARADOX M005 Soen 005.S SYSBASE ACCESS ORACLE
SECOND-NF (2NF) A relational table is in second normal form 2NF if it is in 1NF and every non-key column is fully dependent upon the primary key. MID MNAMA IDCARD_NO JOIN_DB YEAR M001 John 001.J 97 ORACLE M001 John 001.J 98 MYSQL MID, JOIN_DB = PRIMARY KEY M001 John 001.J 99 SQL SERVER 7 M002 Smith 00 002.S ACCESS 003.W 01 M003 Willy INFORMIX 003.W M003 Willy 02 SYSBASE … … … … … {MID, JOIN_DB} MNAMA, IDCARD_NO Merupakan Partial Dependent, bukan Fully Dependent, karena jika Attribut JOIN_DB dihilangkan, tidak menjadi masalah karena berlaku : MID MNAMA, IDCARD_NO
A relational table is in second normal form 2NF if it is in 1NF and every non-key column is fully dependent upon the primary key. SECOND-NF (2NF) MNAMA MID IDCARD_NO M001 001.J John 002.S Smith M002 003.W JOIN_DB Willy YEAR MID M003 MNAMA IDCARD_NO 97 … … ORACLE M001 … John 001.J 98 MYSQL M001 John 001.J 99 SQL SERVER 7 M001 John 001.J MID JOIN_DB YEAR 00 ACCESS M002 Smith 002.S M001 ORACLE 01 003.W 97 INFORMIX M003 Willy M001 MYSQL 02 SYSBASE 003.W 98 M003 Willy M001 … SQL SERVER 7 … … 99 … … M002 ACCESS 00 M003 INFORMIX 01 M003 SYSBASE 02 MID MNAMA, IDCARD_NO {MID, JOIN_DB} YEAR … … …
THIRD-NF (3NF) 3NF requires that all columns in a relational table are dependent only upon the primary key, in other words, all nonkey attributes are functionally dependent only upon the primary key. MNAMA MID IDCARD_NO IDCARD_NO MNAMA M001 001.J John 002.S Smith M002 003.W Willy M003 MID IDCARD_NO … … … M001 001.J 002.S M002 MID YEAR JOIN_DB 003.W M003 … … M001 97 ORACLE M001 98 MYSQL IDCARD_NO MNAMA M001 99 SQL SERVER 7 001.J John M002 00 ACCESS 002.S Smith M003 01 INFORMIX 003.W Willy M003 SYSBASE 02 … … … … …
Study Kasus • Buat relasi-relasi 3NF untuk atribut berikut untuk database riwayat pendidikan informal pegawai: • NoPeg, Nama, Alamat, Kota, KodePos, Kecamatan, TglPdk1, KdPdk1, NamaPdk1, NilaiPdk1, TglPdk2, KdPdk2, NamaPdk2, NilaiPdk2, TglPdk3, KdPdk3, NamaPdk3, NilaiPdk3