Rabu, 22 Oktober 2014

Normalisasi Tabel “1NF, 2NF, 3NF dan BCNF”

Pengertian normalisasi:
Normalisasi adalah Teknik atau pendekatan yang digunakan dalam membangun disain database relasional melalui himpunan data dengan tingkat ketergantungan fungsional dan keterkaitan yang tinggi sehingga menghasilkan struktur tabel yang normal.
Tujuan normalisasi:
  •  Minimalisasi redundansi (pengulangan data)
  •  Memudahkan identifikasi entitas
  •  Mencegah terjadinya anomali
Beberapa bentuk normal:
  1. 1NF, 2NF, 3NF, BCNF
    1NF Suatu relasi dikatakan bentuk normal pertama, jika dan hanya jika setiapatribut bernilai tunggal untuk setiap baris. Tiap field hanya satu pengertian, bukanmerupakan kumpulan kata yang mempunyai arti mendua, hanya satu arti saja dan juga bukanlah pecahan kata – kata sehingga artinya lain. Tidak ada set atribut yangberulang-ulang atau atribut bernilai ganda.
    2NF Memenuhi bentuk 1 NF (normal pertama), Atribut bukan kunci haruslah bergantung secara fungsi pada kunci utama /primary key
    3NF Memenuhi bentuk 2 NF (normal kedua),  Atribut bukan kunci tidak memiliki dependensi transitif terhadap kunci utama / primarykey.
    BCNF Memenuhi bentuk 3 NF (normal ketiga), Semua penentu (determinan) adalah kunci kandidat (atribut yang bersifat unik) serta Setiap atribut harus bergantung fungsi pada atribut superkey.


  1. 4NF, 5NF
    Contoh:
    1. First Normal Form (1NF)
    • Suatu relasi disebut memenuhi bentuk normal pertama (1NF) jika dan hanya jika setiap atribut dari relasi tersebut hanya memiliki tunggal dan tidak ada pengulangan grup atribut dalam baris.
    • Bentuk 1NF tidak boleh mengandung grup atribut yang berulang.
    • Tujuan membentuk 1NF :
      • Semantik tabel menjadi lebih eksplisit (say anything once).
      • Semua operator aljabar relasional dapat diaplikasikan pada tabel.

    Kasus yang Di Buat:
    v  Pekerjaan
    v  Sales
    v  Mahasiswa

    1. Berikut adalah contoh data-data yang belum ternormalisasi:
    NIPNamaJabatanKeahlianLama
    001ManAnalisisAcces6 tahun
    Oracle3 tahun
    002RizalAnalisisMySQL2 tahun
    Oracle4 tahun
    003HanifProgramerC4 tahun
    VB5 tahun
    Java8 tahun

    Pada tabel di atas, contoh data belum ternormalisasi sehingga
    dapat diubah ke dalam bentuk 1NF dengan cara membuat setiap baris
    berisi kolom dengan jumlah yang sama dan setiap kolom hanya mengandung satu
    nilai.

    NIPNamaJabatanKeahlianLama
    001ManAnalisisAcces6 tahun
    001ManAnalisisOracle3 tahun
    002RizalAnalisisMySQL2 tahun
    002RizalAnalisisOracle4 tahun
    003HanifProgramerC4 tahun
    003HanifProgramerVB5 tahun
    003HanifProgramerJava8 tahun

    Relasi Pekerjaan tersebut merupakan bentuk 1 NF, karena tidak ada atribut yang bernilai ganda, dan tiap atribut satu pengertian yang bernilai tunggal.

    1. Berikut adalah contoh data-data yang belum ternormalisasi:
    Id_SalesNama_SalesTelepon
    S001Ria3513214, 3541245
    S002Anti6548143, 5825143, 7563249
    S003Ani085337732666
    S004Maya6836592
    S005Wulan6823928, 081234321454

    Pada data tabel di atas, contoh data belum ternormalisasi sehingga
    dapat diubah ke dalam bentuk 1NF dengan cara membuat setiap baris
    berisi kolom dengan jumlah yang sama dan setiap kolom hanya mengandung satu
    nilai.
    Id_SalesNama_SalesTelepon
    S001Ria3513214
    S001Ria3541245
    S002Anti6548143
    S002Anti5825143
    S002Anti7563249
    S003Ani085337732666
    S004Maya6836592
    S005Wulan6823928
    S005Wulan081234321454
    Relasi Sales tersebut merupakan bentuk 1 NF, karena tidak ada atribut yang bernilai ganda, dan tiap atribut satu pengertian yang bernilai tunggal.

    1. Berikut adalah contoh data-data yang belum ternormalisasi:
    NIMNamaKode_Matkul
    201010241Siti001, 004, 008
    201010242Beti002, 005
    201010243Eli005, 008
    201010244Rosi003, 006
    201010245Eci001, 007, 009

    Pada data tabel di atas, contoh data belum ternormalisasi sehingga
    dapat diubah ke dalam bentuk 1NF dengan cara membuat setiap baris
    berisi kolom dengan jumlah yang sama dan setiap kolom hanya mengandung satu
    nilai.
    NIMNamaKode_Matkul
    201010241Siti001
    201010241Siti004
    201010241Siti008
    201010242Beti002
    201010242Beti005
    201010243Eli005
    201010243Eli008
    201010244Rosi003
    201010244Rosi006
    201010245Eci001
    201010245Eci007
    201010245Eci009

    Relasi Mahasiswa tersebut merupakan bentuk 1 NF, karena tidak ada atribut yang bernilai ganda, dan tiap atribut satu pengertian yang bernilai tunggal.
    1. 2NF
    • Memenuhi bentuk 1 NF (normal pertama).
    • Atribut bukan kunci haruslah bergantung secara fungsi pada kunci utama atau primary key.
    Contoh:
    Diketahui tabel R=(A,B,C,D,E) ; A,B kunci utama (primary key)
    dengan FD : A,B & C,D,E maka tabel R memenuhi 2NF sebab :
    A,B & C,D,E berarti :
    A,B & C,
    A,B & D dan
    A,B & E
    Jadi semua atribut bukan kunci utama tergantung penuh pada (A,B).
    Bagaimana bila R = (A,B,C,D,E) tetapi dengan FD :
    (A,B) & (C,D) dan B & E. Apakah memenuhhi 2NF ?
    Jelas bahwa R bukan 2NF karena ada atribut E yang bergantung
    hanya pada atribut B saja dan bukan terhadap (A,B).
    Dari FD : (A,B) à (C,D) juga mencerminkan bahwa hanya C dan D saja yang bergantung secara fungsional terhadap (A,B), tidak untuk E.
    Jadi bukan 2NF.
    Untuk mengubah menjadi 2NF, lakukan dekomposisi menjadi :
    R1 = (A,B,C,D) dan R2 = (B,E). Tampak R1 dan R2 memenuhi 2NF.

    1. Untuk membentuk normal, kedua tiap tabel atau file haruslah ditentukan kunci-kunci atributnya. Kunci atribut harus unik dan dapat mewakili atribut lain yang menjadi anggotanya. Pada contoh tabel Pekerjaan yang memenuhi normal pertama (1 NF) , terlihat bahwa NIP merupakan Primery Key (PK).
    NIP           Nama dan Jabatan: Artinya atribut Nama dan Jabatan bergantung pada NIP.
    Tetapi NIP            Keahlian dan Lama: Artinya bahwa atribut Lama tidak tergantungpada NIP.

    Belum Normal
    NIPNamaJabatanKeahlianLama
    001ManAnalisisAcces6 tahun
    Oracle3 tahun
    002RizalAnalisisMySQL2 tahun
    Oracle4 tahun
    003HanifProgramerC4 tahun
    VB5 tahun
    Java8 tahun

    Normal 1NF
    NIPNamaJabatanKeahlianLama
    001ManAnalisisAcces6 tahun
    001ManAnalisisOracle3 tahun
    002RizalAnalisisMySQL2 tahun
    002RizalAnalisisOracle4 tahun
    003HanifProgramerC4 tahun
    003HanifProgramerVB5 tahun
    003HanifProgramerJava8 tahun

    Normal 2NF
    NIPNamaJabatan
    001ManAnalisis
    002RizalAnalisis
    003HanifProgramer

    NIPKeahlianLama
    001Acces6 tahun
    001Oracle3 tahun
    002MySQL2 tahun
    002Oracle4 tahun
    003C4 tahun
    003VB5 tahun
    003Java8 tahun

    1. Untuk membentuk normal, kedua tiap tabel atau file haruslah ditentukan kunci-kunci atributnya. Kunci atribut harus unik dan dapat mewakili atribut lain yang menjadi anggotanya. Pada contoh tabel Pekerjaan yang memenuhi normal pertama (1 NF) , terlihat bahwa Id_Sales merupakan Primery Key (PK).
    Id_Sales    Nama_Sales: Artinya atribut Nama_Sales bergantung pada Id_Sales.
    Tetapi Id_Sales     Telepon: Artinya bahwa atribut Telepon tidak tergantung pada Id_Sales.

    Belum Normal
    Id_SalesNama_SalesTelepon
    S001Ria3513214, 3541245
    S002Anti6548143, 5825143, 7563249
    S003Ani085337732666
    S004Maya6836592
    S005Wulan6823928, 081234321454

    Normal 1NF
    Id_SalesNama_SalesTelepon
    S001Ria3513214
    S001Ria3541245
    S002Anti6548143
    S002Anti5825143
    S002Anti7563249
    S003Ani085337732666
    S004Maya6836592
    S005Wulan6823928
    S005Wulan081234321454

    Normal 2NF
    Id_SalesNama_Sales
    S001Ria
    S002Anti
    S003Ani
    S004Maya
    S005Wulan

    Id_SalesTelepon
    S0013513214
    S0013541245
    S0026548143
    S0025825143
    S0027563249
    S003085337732666
    S0046836592
    S0056823928
    S005081234321454

    1. Untuk membentuk normal, kedua tiap tabel atau file haruslah ditentukan kunci-kunci atributnya. Kunci atribut harus unik dan dapat mewakili atribut lain yang menjadi anggotanya. Pada contoh tabel Pekerjaan yang memenuhi normal pertama (1 NF) , terlihat bahwa NIM  merupakan Primery Key (PK).
    NIM          Nama: Artinya atribut Nama bergantung pada NIM.
    MatkulTetapi NIM            Kode_Matkul: Artinya bahwa atribut Kode_m tidak tergantung pada NIM.

    Belum Normal
    NIMNamaKode_Matkul
    201010241Siti001, 004, 008
    201010242Beti002, 005
    201010243Eli005, 008
    201010244Rosi003, 006
    201010245Eci001, 007, 009

    Normal 1NF
    NIMNamaKode_Matkul
    201010241Siti001
    201010241Siti004
    201010241Siti008
    201010242Beti002
    201010242Beti005
    201010243Eli005
    201010243Eli008
    201010244Rosi003
    201010244Rosi006
    201010245Eci001
    201010245Eci007
    201010245Eci009

    Normal 2NF
    NIMNama
    201010241Siti
    201010242Beti
    201010243Eli
    201010244Rosi
    201010245Eci

    NIMKode_Matkul
    201010241001
    201010241004
    201010241008
    201010242002
    201010242005
    201010243005
    201010243008
    201010244003
    201010244006
    201010245001
    201010245007
    201010245009

    1. 3NF
    Suatu relasi disebut memenuhi bentuk normal ketiga (3NF) jika dan hanya jika :
    • Memenuhi 2NF
    • Setiap atribut yang bukan kunci tidak tergantung secara fungsional terhadap atribut bukan kunci yang lain dalam relasi tsb (tidak terdapat ketergantungan transitif pada atribut bukan kunci).
    • Jika dan hanya jika setiap FD nontrivial : X & A, dimana X dan A atribut (atau kompositnya), memenuhi salah satu kondisi :
      1. X adalah superkey
      2. A merupakan anggota candidate key (A disebut prime attribute)

    Jika suatu relasi sudah memenuhi 2NF tapi tidak memenuhi 3 NF, maka untuk normalisasi ke bentuk 3NF, tabel 2NF didekomposisi menjadi beberapa tabel hingga masing-masing memenuhi 3NF.

    Tujuan membentuk 3NF :
    ü  Semantik tabel 3NF menjadi lebih eksplisit (fully FD hanya pada primary key).
    ü  Menghindari update anomali yang masih mungkin terjadi pada 2NF.

    Jika suatu relasi memenuhi 2NF dan hanya memiliki tepat satu atribut yang bukan kunci utama maka relasi tersebut memenuhi 3NF

    Contoh :
    Diketahui tabel R=(A,B,C,D,E) ; A,B kunci utama (primary key)
    dengan FD : A,B & C,D,E dan C & D,E maka R bukan 3NF sebab :
    Atribut D dan E (bukan kunci utama) bergantung secara fungsional
    pada C (yang juga bukan kunci utama).
    Melalui FD :
    Diketahui A,B & C,D,E. Karena sifat refleksif maka A,B & A,B. Sehingga A,B & A,B,C,D,E (A,B) : Superkey.
    Diketahui C & D,E. Karena sifat refleksif maka C & C. Sehingga C & C,D,E. Karena C> A,B,C,D,E maka C bukan superkey.
    Tidak memenuhi definisi 3NF. Jadi R bukan 3NF. Agar R memenuhi 3NF maka didekomposisi menjadi :
    R1=(A,B,C) dan R2=(C,D,E) sehingga R1 dan R2 memenuhi 3NF.
    1. Tabel Pekerjaan
    Belum Normal:
    NIPNamaJabatanKeahlianLama
    001ManAnalisisAcces6 tahun
    Oracle3 tahun
    002RizalAnalisisMySQL2 tahun
    Oracle4 tahun
    003HanifProgramerC4 tahun
    VB5 tahun
    Java8 tahun

    Normal 2NF
    NIPNamaJabatan
    001ManAnalisis
    002RizalAnalisis
    003HanifProgramer

    NIPKeahlianLama
    001Acces6 tahun
    001Oracle3 tahun
    002MySQL2 tahun
    002Oracle4 tahun
    003C4 tahun
    003VB5 tahun
    003Java8 tahun

    Normal 3NF
    NIPNamaJabatan
    001ManAnalisis
    001ManAnalisis
    002RizalAnalisis
    002RizalAnalisis
    003HanifProgramer
    003HanifProgramer
    003HanifProgramer

    JabatanLama
    Analisis6 tahun
    Analisis3 tahun
    Analisis2 tahun
    Analisis4 tahun
    Programer4 tahun
    Programer5 tahun
    Programer8 tahun

    NIPJabatanKeahlian
    001AnalisisAcces
    001AnalisisOracle
    002AnalisisMySQL
    002AnalisisOracle
    003ProgramerC
    003ProgramerVB
    003ProgramerJava

    1. Tabel Sales
    Belum Normal
    Id_SalesNama_SalesTelepon
    S001Ria3513214, 3541245
    S002Anti6548143, 5825143, 7563249
    S003Ani085337732666
    S004Maya6836592
    S005Wulan6823928, 081234321454

    Normal 2NF
    Id_SalesNama_Sales
    S001Ria
    S002Anti
    S003Ani
    S004Maya
    S005Wulan

    Id_SalesTelepon
    S0013513214
    S0013541245
    S0026548143
    S0025825143
    S0027563249
    S003085337732666
    S0046836592
    S0056823928
    S005081234321454

    Normal 3NF
    Id_SalesNama_Sales
    S001Ria
    S002Anti
    S003Ani
    S004Maya

    Nama_SalesTelepon
    S0013513214
    S0013541245
    S0026548143
    S0025825143
    S0027563249
    S003085337732666
    S0046836592
    S0056823928
    S005081234321454
    Id_SalesNama_SalesTelepon
    S001Ria3513214
    S001Ria3541245
    S002Anti6548143
    S002Anti5825143
    S002Anti7563249
    S003Ani085337732666
    S004Maya6836592
    S005Wulan6823928
    S005Wulan081234321454

    1. Tabel Mahasiswa
    Belum Normal
    NIMNamaKode_Matkul
    201010241Siti001, 004, 008
    201010242Beti002, 005
    201010243Eli005, 008
    201010244Rosi003, 006
    201010245Eci001, 007, 009

    Normal 2NF
    NIMNama
    201010241Siti
    201010242Beti
    201010243Eli
    201010244Rosi
    201010245Eci

    NIMKode_Matkul
    201010241001
    201010241004
    201010241008
    201010242002
    201010242005
    201010243005
    201010243008
    201010244003
    201010244006
    201010245001
    201010245007
    201010245009

    3NF
    NIMNama
    201010241Siti
    201010242Beti
    201010243Eli
    201010244Rosi
    201010245Eci

    NamaKode_Matkul
    Siti001
    Siti004
    Siti008
    Beti002
    Beti005
    Eli005
    Eli008
    Rosi003
    Rosi006
    Eci001
    Eci007
    Eci009

    NIMNamaKode_Matkul
    201010241Siti001
    201010241Siti004
    201010241Siti008
    201010242Beti002
    201010242Beti005
    201010243Eli005
    201010243Eli008
    201010244Rosi
    003
    201010244Rosi006
    201010245Eci001
    201010245Eci007
    201010245Eci009


    1. BCNF
    • Suatu relasi disebut memenuhi BCNF jika dan hanya jika setiap determinan yang ada pada relasi tersebut adalah candidate key.
    • Definisi yang lain : Suatu relasi disebut memenuhi BCNF jika untuk setiap FD nontrivial : X à A atribut X adalah superkey.
    • Untuk normalisasi ke bentuk BCNF, maka tabel 3NF didekomposisi menjadi beberapa tabel yang masing-masing memenuhi BCNF.
    • Tujuan membentuk BCNF : multiple candidate key menjadi lebih eksplisit (FD hanya pada candidate key). Menghindari update anomali yang masih mungkin terjadi pada 3NF.

    Dari definisi 3NF dan BCNF, maka apabila suatu relasi memenuhi BCNF pasti memenuhi 3NF, tetapi belum tentu sebaliknya.

    Contoh :
    Diketahui tabel R=(A,B,C) dengan FD : A & B dan B & C maka R bukan BCNF, sebab :
    v  A Superkey ?
    AàB (diketahui)
    AàB dan B & C maka A & C (transitif)
    AàA (refleksif)
    Sehingga A & (A,B,C) atau A & R. Jadi A superkey.
    v  B Superkey ?
    B & C (diketahui)
    B & B     (refleksif)
    Tapi BA. Sehingga B & A,B,C atau B bukan superkey. Agar R memenuhi BCNF maka didekomposisi menjadi :
    R1=(A,B) ; FD : A & B dan
    R2=(B,C) ; FD : B & C. Sehingga R1 dan R2 masing-masing memenuhi BCNF.  Sebab A dan B dua-duanya sekarang menjadi superkey.
    1. Tabel Pekerjaan
    Belum Normal
    NIPNamaJabatanKeahlianLama
    001ManAnalisisAcces6 tahun
    Oracle3 tahun
    002RizalAnalisisMySQL2 tahun
    Oracle4 tahun
    003HanifProgramerC4 tahun
    VB5 tahun
    Normal BCNF
    NIPNamaJabatanKeahlian
    001ManAnalisis
    002RizalAnalisis
    003HanifProgramer

    NamaLama
    Man6 tahun
    Man3 tahun
    Rizal2 tahun
    Rizal4 tahun
    Hanif4 tahun
    Hanif5 tahun
    Hanif8 tahun

    1. Tabel Sales
    Belum Normal
    Id_SalesNama_SalesTelepon
    S001Ria3513214, 3541245
    S002Anti6548143, 5825143, 7563249
    S003Ani085337732666
    S004Maya6836592
    S005Wulan6823928, 081234321454

    Normal BCNF
    Id_SalesNama_Sales
    S001Ria
    S002Anti
    S003Ani
    S004Maya
    S005Wulan

    Nama_SalesTelepon
    S0013513214
    S0013541245
    S0026548143
    S0025825143
    S0027563249
    S003085337732666
    S0046836592
    S0056823928
    S005081234321454

    1. Table Mahasiswa
    Belum Normal
    NIMNamaKode_Matkul
    201010241Siti001, 004, 008
    201010242Beti002, 005
    201010243Eli005, 008
    201010244Rosi003, 006
    201010245Eci001, 007, 009



    Normal BCNF
    NIMNama
    201010241Siti
    201010242Beti
    201010243Eli
    201010244Rosi
    201010245Eci

    NamaKode_Matkul
    Siti001
    Siti004
    Siti008
    Beti002
    Beti005
    Eli005
    Eli008
    Rosi003
    Rosi006
    Eci001
    Eci007
    Eci009

5 komentar: