Sistem Basis Data - Normalisasi

58
SISTEM BASIS DATA Macam-macam Anomaly Normalisasi

description

menjelaskan tentang maateri Normalisasi pada pertemuan 8 sistem basis data

Transcript of Sistem Basis Data - Normalisasi

Page 1: Sistem Basis Data - Normalisasi

SISTEM BASIS DATA

Macam-macam AnomalyNormalisasi

Page 2: Sistem Basis Data - Normalisasi

Definisi Normalisasi

Normalisasi merupakan sebuah teknik dalam logical desain sebuah basis data yang mengelompokkan atribut dari suatu relasi sehingga membentuk struktur relasi yang baik (tanpa redudansi).

Normalisasi adalah proses pembentukan struktur basis data sehingga sebagian besar ambiguity bisa dihilangkan

Page 3: Sistem Basis Data - Normalisasi

Tujuan Normalisasi

Untuk menghilang kerangkapan data Untuk mengurangi kompleksitas Untuk mempermudah pemodifikasian

data

Page 4: Sistem Basis Data - Normalisasi

Proses Normalisasi

Data diuraikan dalam bentuk tabel, selanjutnya dianalisis berdasarkan persyaratan tertentu ke beberapa tingkat.

Apabila tabel yang diuji belum memenuhi persyaratan tertentu, maka tabel tersebut perlu dipecah menjadi beberapa tabel yang lebih sederhana sampai memenuhi bentuk yang optimal.

Page 5: Sistem Basis Data - Normalisasi

Macam-macam Penyimpangan

(Anomaly)Macam-macam Anomaly :a. Insertion Anomalyb. Deletion Anomalyc. Update AnomalyDi bawah ini terdapat tabel resep :

No_Pasien Kode_Obat Harga_Obat

P001 Kd01 2000

P002 Kd02 4500

P003 Kd01 2000

Page 6: Sistem Basis Data - Normalisasi

a. Insertion Anomaly

Error atau kesalahan yang terjadi sebagai akibat operasi menyisipkan tuple/record pada sebuah relasi.

Contoh : Jika ada obat baru yang akan dimasukkan/disisipkan, maka obat tersebut tidak dapat disisipkan ke dalam relasi sampai ada pasien yang mengambil jenis obat tersebut.

Page 7: Sistem Basis Data - Normalisasi

b. Deletion Anomaly

Error atau kesalahan yang terjadi sebagai akibat operasi penghapusan terhadap tuple/record dari sebuah relasi.

Contoh: Jika pasien yang memiliki No_Pasien P001 membatalkan tidak jadi menebus resep obat tersebut, maka jika record tersebut dihapus akan menyebabkan hilangnya informasi tentang Kode_Obat Kd01.

Page 8: Sistem Basis Data - Normalisasi

c. Update Anomaly

Yaitu error atau kesalahan yang terjadi sebagai akibat operasi perubahan tuple/record dari sebuah relasi.

Contoh: Jika harga obat untuk kode_obat Kd01 dinaikkan menjadi 5000, maka harus dilakukan beberapa kali modifikasi terhadap record-record pasien yang menebus kode_obat Kd01, agar data selalu tetap konsisten. 

Page 9: Sistem Basis Data - Normalisasi

Dependency / Ketergantungan Merupakan konsep yang mendasari

normalisasi. Dependensi menjelaskan hubungan antar atribut, atau secara lebih khusus menjelaskan nilai suatu atribut yang menentukan nilai atribut lainnya.

Page 10: Sistem Basis Data - Normalisasi

Jenis-Jenis Ketergantungan

Jenis-jenis ketergantungan :a. Ketergantungan Fungsional (Functional

Dependence)b. Ketergantungan Fungsional Penuh (Fully

Functional Dependent)c. Ketergantungan Transitifd. Ketergantungan Parsiale. Ketergantungan Determinan

Page 11: Sistem Basis Data - Normalisasi

a. Ketergantungan Fungsional (Functional Dependence)

Suatu atribut Y mempunyai ketergantungan fungsi terhadap atribut X, jika dan hanya jika setiap nilai X berhubungan dengan sebuah nilai Y. Definisi diatas dituangkan dalam

bentuk notasi X Y

Dibaca : X secara fungsional menentukan Y

Page 12: Sistem Basis Data - Normalisasi

ContohTerdapat relasi PESANAN_JUAL yang dinotasikan dengan :

PESANAN_JUAL (PEMBELI, KOTA, BARANG, JUMLAH) Yang artinya bahwa relasi PESANAN_JUAL mengandung atribut PEMBELI, KOTA, BARANG dan JUMLAH.

Page 13: Sistem Basis Data - Normalisasi

PEMBELI KOTA BARANG JUMLAH

P1 Yogya B1 10

P1 Yogya B2 5

P2 Solo B1 7

P2 Solo B2 6

P2 Solo B3 6

P3 Klaten B3 7

P3 Klaten B4 6

Page 14: Sistem Basis Data - Normalisasi

Pada contoh ini, PEMBELI secara fungsional menentukan KOTA, sebab terlihat bahwa untuk PEMBELI yang sama, KOTA-nya juga sama.

Dengan demikian:PEMBELI KOTA

contoh lain:{Pembeli, Barang} Jumlah{Pembeli, Barang} Kota{Pembeli, Barang} {Jumlah, Kota}

Page 15: Sistem Basis Data - Normalisasi

Bagian yang terletak di sebelah kiri panah biasa disebut penentu (determinan) dan yang di sebelah kanan panah disebut yang tergantung (dependen).

Tanda { } biasa digunakan kalau ada lebih dari satu atribut, baik pada penentu maupun yang tergantung

Page 16: Sistem Basis Data - Normalisasi

b. Ketergantungan Fungsional Penuh (Fully Functional Dependent)

Suatu atribut Y mempunyai ketergantungan fungsional penuh terhadap atribut X, jika

Y mempunyai dependensi fungsional terhadap X

Y tidak memiliki dependensi terhadap bagian dari X

Notasi : X Y

Page 17: Sistem Basis Data - Normalisasi

contoh , terdapat relasi pelanggan:

Pelanggan ( KODE_PELANGGAN, NAMA, KOTA, NOMOR_FAX )

Pada relasi ini:

1. {KODE_PELANGGAN, KOTA} NOMOR_FAX

2. KODE_PELANGGAN NOMOR_FAX

KET:

Mengingat bahwa Nomor_Fax bergantung pada {KODE_PELANGGAN, KOTA} (kondisi 1) dan bergantung pada KODE_PELANGGAN (Kondisi 2) yang tidak lain adalah bagian dari {KODE_PELANGGAN, KOTA}, maka Nomor_Fax hanya mempunyai dependenci fungsional sepenuhnya terhadap KODE_PELANGGAN

Page 18: Sistem Basis Data - Normalisasi

c. Ketergantungan transitif

X Y Z

Atribut Z mempunyai dependensi transitif terhadap X bila:

Y memiliki dependensi fungsional terhadap X

Z memiliki dependensi fungsional terhadap Y

Page 19: Sistem Basis Data - Normalisasi

Gol_gaji fungsional dependency pada NIP dan Gaji_pokok Fungsional Dependency pada Gol_gaji.

NIP sebagai X, Gol_gaji sebagai Y, dan Gaji_pokok sebagai Z

Jadi nilai-nilai rinci data pada atribut Gaji_pokok (Z) bergantung transitif terhadap NIP

X Y ZNIP Gol_gaji Gaji_pokok

NIP Nama Gol_gaji Gaji_pokok

0001 Ian III A 600000

0002 Saputra III B 650000

0003 Rohim III A 600000

0004 Fani III B 650000

Page 20: Sistem Basis Data - Normalisasi

d. Ketergantungan Determinan

Yaitu suatu atribut atau gabungan atribut dimana beberapa atribut lain bergantung pada atribut tersebut.

Page 21: Sistem Basis Data - Normalisasi

Tahapan Normalisasi

Tahap Normalisasi dimulai dari tahap paling ringan (1NF) hingga paling ketat (5NF)

Biasanya hanya sampai pada tingkat 3NF atau BCNF karena sudah cukup memadai untuk menghasilkan tabel-tabel yang berkualitas baik.

Urutan: 1NF, 2NF, 3NF, BCNF, 4NF, 5NF

Page 22: Sistem Basis Data - Normalisasi
Page 23: Sistem Basis Data - Normalisasi

Normalisasi

Sebuah tabel dikatakan baik (efisien) atau normal jika memenuhi 3 kriteria sbb:1. Jika ada dekomposisi (penguraian) tabel, maka

dekomposisinya harus dijamin aman (Lossless-Join Decomposition). Artinya, setelah tabel tersebut diuraikan / didekomposisi menjadi tabel-tabel baru, tabel-tabel baru tersebut bisa menghasilkan tabel semula dengan sama persis.

2. Terpeliharanya ketergantungan fungsional pada saat perubahan data (Dependency Preservation).

3. Tidak melanggar Boyce-Codd Normal Form (BCNF) (-akan dijelaskan kemudian-)

Page 24: Sistem Basis Data - Normalisasi

Bentuk-bentuk Normal

1. Bentuk Normal Tahap Pertama (1st Normal Form / 1NF)

2. Bentuk Normal Tahap Kedua (2nd Normal Form / 2NF)

3. Bentuk Normal Tahap (3rd Normal Form / 3NF)

4. Boyce-Code Normal Form (BCNF)5. Bentuk Normal Tahap (4th Normal

Form / 4NF)6. Bentuk Normal Tahap (5th Normal

Form / 5NF)

Page 25: Sistem Basis Data - Normalisasi

Normal Pertama (1st Normal Form) Aturan : Tidak adanya atribut multi-value,

atribut komposit atau kombinasinya. Mendefinisikan atribut kunci. Setiap atribut dalam tabel tersebut

harus bernilai atomic (tidak dapat dibagi-bagi lagi)

Page 26: Sistem Basis Data - Normalisasi

Contoh 1 (atribut multi-value)Misal data mahasiswa sbb:

Atau:

Tabel-tabel di atas tidak memenuhi syarat 1NF

Page 27: Sistem Basis Data - Normalisasi

Contoh 1 (samb…)

Didekomposisi menjadi:

Tabel Mahasiswa

Tabel Hobi

Page 28: Sistem Basis Data - Normalisasi

Contoh 2 (composite)

JadwalKuliah

Kodekul NamaKul Dosen Kelas Jadwal

Dimana nilai pada atribut jadwal berisi gabungan antara Hari dan Jam.

Jika asumsi hari dan jam memegang peranan penting dalam sistem basis data, maka atribut Jadwal perlu dipisah sehingga menjadi JadwalHari dan JadwalJam sbb:

JadwalKuliahKodekul NamaKul Dosen Kelas JadwalHari JadwalJam

Page 29: Sistem Basis Data - Normalisasi

Normalisasi Kedua (2nd Normal Form)

Aturan : Sudah memenuhi dalam bentuk normal

kesatu (1NF) Semua atribut bukan kunci hanya boleh

tergantung (functional dependency) pada atribut kunci

Jika ada ketergantungan parsial maka atribut tersebut harus dipisah pada tabel yang lain

Perlu ada tabel penghubung ataupun kehadiran foreign key bagi atribut-atribut yang telah dipisah tadi

Page 30: Sistem Basis Data - Normalisasi

Contoh

Tabel berikut memenuhi 1NF tapi tidak termasuk 2NF:

Mhs_nrp mhs_nama mhs_alamat mk_kode mk_nama mk_sks nihuruf

Tidak memenuhi 2NF, karena {Mhs_nrp, mk_kode} yang dianggap sebagai primary key sedangkan:{Mhs_nrp, mk_kode} mhs_nama{Mhs_nrp, mk_kode} mhs_alamat{Mhs_nrp, mk_kode} mk_nama{Mhs_nrp, mk_kode} mk_sks{Mhs_nrp, mk_kode} nihuruf Tabel di atas perlu didekomposisi menjadi beberapa tabel yang memenuhi syarat 2NF

Page 31: Sistem Basis Data - Normalisasi

Contoh (samb…)

Functional dependencynya sbb:{Mhs_nrp, mk_kode} nihuruf

(fd1)Mhs_nrp {mhs_nama, mhs_alamat}

(fd2)Mk_kode {mk_nama, mk_sks} (fd3)

fd1 (mhs_nrp, mk_kode, nihuruf) Tabel Nilaifd2 (Mhs_nrp, mhs_nama, mhs_alamat) Tabel Mahasiswafd3 (mk_kode, mk_nama, mk_sks) Tabel MataKuliah

Page 32: Sistem Basis Data - Normalisasi

Normalisasi Ketiga (3rd Normal Form) Aturan :

Sudah berada dalam bentuk normal

kedua (2NF) Tidak ada ketergantungan transitif (dimana atribut bukan kunci

tergantung pada atribut bukan kunci lainnya).

Page 33: Sistem Basis Data - Normalisasi

Contoh

Tabel berikut memenuhi 2NF, tapi tidak memenuhi 3NF:

Mahasiswa

Nrp Nama Alm_Jalan Alm_Kota Alm_Provinsi Alm_Kodepos

karena masih terdapat atribut non primary key (yakni alm_kota dan alm_Provinsi) yang memiliki ketergantungan terhadap atribut non primary key yang lain (yakni alm_kodepos):

alm_kodepos {alm_Provinsi, alm_kota}

Sehingga tabel tersebut perlu didekomposisi menjadi:Sehingga tabel tersebut perlu didekomposisi menjadi:Mahasiswa (Nrp, nama, alm_jalan, alm_kodepos)

Kodepos (alm_kodepos, alm_provinsi, alm_kota)

Page 34: Sistem Basis Data - Normalisasi

Tabel-tabel yang memenuhi kriteria normalisasi ketiga, sudah siap diimplementasikan. Sebenarnya masih ada lagi bentuk normalisasi yang lain; Normalisasi Boyce-Codd, 4NF, 5NF, hanya saja jarang dipakai. Pada kebanyakan kasus, normalisasi hanya sampai ketiga.

Page 35: Sistem Basis Data - Normalisasi

Boyce-Codd Normal Form (BCNF) Bentuk BCNF terpenuhi dalam sebuah tabel, jika

untuk setiap functional dependency terhadap setiap atribut atau gabungan atribut dalam bentuk: X Y maka X adalah super key

tabel tersebut harus di-dekomposisi berdasarkan functional dependency yang ada, sehingga X menjadi super key dari tabel-tabel hasil dekomposisi

Setiap tabel dalam BCNF merupakan 3NF. Akan tetapi setiap 3NF belum tentu termasuk BCNF . Perbedaannya, untuk functional dependency X A, BCNF tidak membolehkan A sebagai bagian dari primary key.

Page 36: Sistem Basis Data - Normalisasi

Bentuk Normal Tahap Keempat (4th Normal Form /4NF) Bentuk normal 4NF terpenuhi dalam

sebuah tabel jika telah memenuhi bentuk BCNF, dan tabel tersebut tidak boleh memiliki lebih dari sebuah multivalued atribute

Untuk setiap multivalued dependencies (MVD) juga harus merupakan functional dependencies

Page 37: Sistem Basis Data - Normalisasi

Contoh

Misal, tabel berikut tidak memenuhi 4NF:

Setiap employee dapat bekerja di lebih dari project dan dapat memiliki lebih dari satu skill. Untuk kasus seperti ini tabel tersebut harus di-dekomposisi menjadi:

(Employee, Project)(Employee, Skill)

Page 38: Sistem Basis Data - Normalisasi

Bentuk Normal Tahap Keempat (5th Normal Form /5NF) Bentuk normal 5NF terpenuhi jika tidak

dapat memiliki sebuah lossless decomposition menjadi tabel-tabel yg lebih kecil.

Jika 4 bentuk normal sebelumnya dibentuk berdasarkan functional dependency, 5NF dibentuk berdasarkan konsep join dependence. Yakni apabila sebuah tabel telah di-dekomposisi menjadi tabel-tabel lebih kecil, harus bisa digabungkan lagi (join) untuk membentuk tabel semula

Page 39: Sistem Basis Data - Normalisasi

SISTEM BASIS DATA

Penerapan Normalisasi

Page 40: Sistem Basis Data - Normalisasi

Contoh Kasus Penerapan Normalisasi Pada proses perancangan database

dapat dimulai dari dokumen dasar yang dipakai dalam sistem sesuai dengan lingkup sistem yang akan dibuat rancangan databasenya.

Berikut ini adalah contoh dokumen mengenai faktur pembelian barang pada PT. Revanda Jaya..

Page 41: Sistem Basis Data - Normalisasi
Page 42: Sistem Basis Data - Normalisasi

Bentuk Tidak Normal (Unnormalized)

Langkah pertama dalam melakukan normalisasi data adalah dengan membentuk contoh data tersebut didtas dengan membentuk

unnormalisasi data, dengan cara mencantumkan semua atribut data yang ada apa adanya seperti terlihat berikut ini :

Page 43: Sistem Basis Data - Normalisasi

Pada relasi diatas adalah dengan menuliskan semua data yang ada yang akan direkam, data yang double tidak perlu ditulis. Terlihat baris / record yang tidak lengkap. Sulit dibayangkan bagaimana bentuk baris yang harus dibentuk untuk merekam data itu.

Page 44: Sistem Basis Data - Normalisasi

Bentuk Normal Pertama (1 NF) Bentuklah menjadi bentuk normal pertama

dengan memisah-misahkan data pada atribut-atribut yang tepat dan bernilai atomik, juga seluruh record / baris harus lengkap adanya. Bentuk relasi adalah flat file. Dengan normal pertama kita dapat membuat satu tabel yang terdiri dari 11 Atribut yaitu (No_Faktur, Kode_Supplier, Nama_Supplier, Kode_Barang, Nama_Barang, Tanggal, Jatuh_Tempo, Qty, Harga, Jumlah, Total ).

Page 45: Sistem Basis Data - Normalisasi

Sehingga hasil daripada pembentukan normal pertama (1 NF) adalah sebagai berikut ini :

Page 46: Sistem Basis Data - Normalisasi

Pada normal pertama tersebut masih terjadi banyak kelemahan, terutama pada proses ANOMALI insert, update dan delete berikut ini:

Inserting / PenyisipanKita tidak dapat memasukkan kode dan nama supplier saja tanpa adanya transaksi pembelian, sehingga supplier baru bisa dimasukkan kalau ada transaksi pembelian.

  Deleting / Penghapusan

Bila satu record / baris di atas dihapus, misal nomor faktur 779, maka berakibat pada penghapusan data supplier S02 (Hitachi) padahal data tersebut masih diperlukan.

  Updating / Pengubahan

Kode dan nama supplier terlihat ditulis berkali-kali, bila nama supplier berubah, maka di setiap baris yang ada harus dirubah, bila tidak menjadi tidak konsisten.

Catatan : Atribut jumlah (merupakan atribut turunan) seharusnya tidak perlu, karena setiap harga dikali kuantitas akan menghasilkan jumlah, sehingga hasilnya akan menjadi lebih konsisten.

Page 47: Sistem Basis Data - Normalisasi

Bentuk Normal Kedua (2 NF) Bentuk normal kedua dengan melakukan

dekomposisi relasi diatas menjadi beberapa relasi dan mencari kunci primer dari tiap-tiap relasi tersebut dan atribut kunci haruslah unik.

Melihat permasalahan faktur di atas, maka dapat diambil beberapa kunci kandidat : ( No_Faktur, Kode_Supplier, dan Kode_Barang ). Kunci kandidat tersebut nantinya bisa menjadi kunci primer pada relasi hasil dekomposisi.

Page 48: Sistem Basis Data - Normalisasi

2 NF……Lanj

Dengan melihat normal pertama, kita dapat mendekomposisi menjadi tiga relasi berserta kunci primer yang ada yaitu : relasi Supplier (Kode_Supplier), relasi Barang (Kode_Barang), dan Relasi Faktur (No_Faktur). Dengan melihat ketergantungan fungsional atribut-atribut lain terhadap atribut kunci, maka didapatkan 3 (tiga) relasi sebagai berikut :

Page 49: Sistem Basis Data - Normalisasi
Page 50: Sistem Basis Data - Normalisasi

Dengan pemecahan relasi di atas, maka untuk pengujian bentuk normal kesatu (1 NF) yaitu insert, update, dan delete akan terjawab.

Kode dan nama supplier baru dapat masuk kapanpun tanpa adanya transaksi pada tabel faktur. Demikian pula untuk proses update dan delete untuk tabel Supplier dan Barang.

Page 51: Sistem Basis Data - Normalisasi

Pada bentuk normal kedua tersebut masih terjadi permasalahan yaitu pada relasi Faktur, yaitu : Atribut Quantitas pada relasi Faktur, tidak

tergantung pada kunci utama, atribut tersebut bergantung fungsi pada Kode Barang + no_faktur, hal ini dinamakan ketergatungan transitif dan haruslah dipilah menjadi dua relasi.

Masih terdapat pengulangan, yaitu setiap kali satu faktur yang terdiri dari 5 macam barang maka 5 kali juga dituliskan no_faktur, tanggal, dan jatuh_tempo. Hal ini harus dipisahkan bila terjadi penggandaan tulisan berulang-ulang.

Page 52: Sistem Basis Data - Normalisasi

Bentuk Normal Ketiga (3 NF) Bentuk normal ketiga mempunyai syarat,

setiap relasi tidak mempunyai atribut yang bergantung transitif, harus bergantung penuh pada kunci utama dan harus memenuhi bentuk normal kedua (2 NF).

Untuk memenuhi bentuk normal ketiga (3 NF), maka pada relasi faktur harus didekomposisi (dipecah) lagi menjadi dua relasi yaitu relasi faktur dan relasi transaksi barang, sehingga hasilnya adalah sebagai berikut ini:

Page 53: Sistem Basis Data - Normalisasi
Page 54: Sistem Basis Data - Normalisasi

Primary key pada relasi Supplier adalah Kode_Supplier,

Primary key pada relasi Barang adalah Kode_Barang,

Primary key pada relasi Faktur adalah No_Faktur dan Foreign key nya adalah Kode_Supplier,

Primary key pada relasi Transaksi_Barang adalah No_Faktur, Kode_Barang dan keduanya juga menjadi Foreign key.

Page 55: Sistem Basis Data - Normalisasi

Entity Relationship Diagram (ERD)

Keterangan : * = Primary Key, ** =Foreign Key

Page 56: Sistem Basis Data - Normalisasi

Pengertian Hubungan (Relation) antar pada gambar ERD (entity relationship diagram) pada gambar di atas adalah sebagai berikut: Supplier ke Faktur relasinya adalah one to many,

artinya adalah satu supplier mempunyai banyak faktur, faktur punya relasi terhadap supplier.

Faktur ke Transaksi_Barang relasinya adalah one to many, artinya adalah satu faktur mempunyai beberapa transaksi barang (satu faktur terdiri dari satu atau lebih transaksi barang).

Barang ke Transaksi_Barang relasinya adalah one to many, artinya adalah satu barang bisa terjadi beberapa kali transaksi pembelian barang.

Page 57: Sistem Basis Data - Normalisasi

Implementasi ERD (entity relationship diagram) physical pada contoh diatas, bisa dituangkan kedalam database MS-Access aatau SQL Server, seperti terlihat pada gambar beikut ini:

ERD dengan database MS-Access 2000 

ERD dengan database MS-Access 2000

Page 58: Sistem Basis Data - Normalisasi

ERD dengan database SQL Server 2000