Desain Sistem Basis Data 1. Struktur Basis Data 2. Normalisasi Data 3. ERD (entity relationship diagram)
Normalisasi Data itu? Proses pengelompokkan data elemen menjadi tabel-tabel yang menunjukkan entity dan relasinya (tanpa redudansi). Dalam proses Normalisasi sebagian besar ambiguity bisa dihilangkan. Pada proses normalisasi selalu dilakukan pengujian database pada beberapa kondisi, antara lain: menambah/ insert menghapus/ delete mengubah/ update membaca/ retrieve
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.
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.
Normalisasi Sebuah tabel dikatakan baik (efisien) atau normal jika memenuhi 3 kriteria sbb: 1.
2. 3.
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. Terpeliharanya ketergantungan fungsional pada saat perubahan data (Dependency Preservation). Tidak melanggar Boyce-Codd Normal Form (BCNF) (-akan dijelaskan kemudian-)
Proses Normalisasi Dua konsep yang sebaiknya diketahui terlebih lebih dahulu, yang berhubungan dengan normalisasi, yaitu: Field/ atribute kunci. Kebergantungan fungsi (functional dependency).
Field/Attribute Kunci • Setiap file/tabel selalu terdapat kunci dari file/tabel berupa satu field atau satu set field yang dapat mewakili record. Contohnya nomor pegawai dalam tabel pegawai. • Jadi Key adalah satu atau gabungan dari beberapa atribut yang dapat membedakan semua baris data (row) dalam tabel secara unik. • Macam-macam Field/attribute kunci:
Candidate Key (Kunci Kandidat/Kunci Calon) Primary Key (Kunci Primer) Alternate Key (Kunci Alternatif) Foreign Key (Kunci Tamu)
Candidate Key/Kunci Kandidat • Kunci kandidat adalah satu atribute atau satu set minimal atribute yang mengidentifikasikan secara unik suatu kejadian spesifik dari entity. • Jika satu kunci kandidat berisi lebih dari satu atribute, maka biasanya disebut sebagai composite key (kunci campuran/ gabungan).
Candidate Key/Kunci Kandidat • Contoh: File Pegawai berisi attribute: – No Induk Pegawai (NIP) – No KTP – Nama
- Tempat Lahir - Tanggal Lahir
- Kota - Alamat
• Kunci kandidat disini adalah: • • • •
No Induk Pegawai (NIP) unik, tidak mungkin ganda. No KTP unik, tidak mungkin ganda. Nama, sering dipakai sebagai kunci pencarian namun tidak unik. Nama + Tanggal lahir, mungkin dapat dipakai sebagai kunci karena kemungkinan sangat kecil seseorang punya nama sama yang lahir pada hari yang sama. • Nama + tempat lahir + tanggal lahir, dapat dipakai sebagai kunci. • Alamat, kota (bukan kunci).
Primary Key/Kunci Primer • Primary Key adalah satu atribute atau satu set minimal atribute yang tidak hanya mengidentitikasi secara unik suatu kejadian spesifik, tapi juga dapat mewakili setiap kejadian dari suatu entity. • Setiap kunci kandidat punya peluang menjadi primary key, tetapi sebaiknya dipilih satu saja yang dapat mewakili secara menyeluruh terhadap entity yang ada.
Primary Key/Kunci Primer • Contoh: No Induk (NIP), karena unik tidak mungkin ganda dan mewakili secara menyeluruh terhadap entity Pegawai, dan setiap pegawai selalu punya nomor induk. No KTP, ini hanya dipakai bila sampai dengan pembayaran gaji pegawai ternyata nomor induk belum keluar.
Alternate Key (Kunci alternatif) Alternate Key adalah kunci kandidat yang tidak dipakai sebagai primary key. Seringkali kunci alternatif dipakai sebagai kunci pengurutan dalam laporan.
Foreign Key (Kunci Tamu/Asing) • Foreign Key adalah satu atribute (atau satu set atribute) yang melengkapi satu relationship (hubungan) yang menunjukkan ke induknya. • Kunci tamu ditempatkan pada entity anak dan sama dengan kunci primary induk yang direlasikan.
Foreign Key (Kunci Tamu/Asing)
Primary Key: NIP (table pegawai), Golongan (tabel golongan), SLIP (tabel gaji). Foreign Key: NIP dan Golongan.
Functional Dependency • Notasi: A B A dan B adalah atribut dari sebuah tabel. Berarti secara fungsional A menentukan B atau B tergantung pada A, jika dan hanya jika ada 2 baris data dengan nilai A yang sama, maka nilai B juga sama. •
Notasi: A B atau A x B Adalah kebalikan dari notasi sebelumnya.
Functional Dependency Contoh tabel nilai Nama Matakuliah
NIM
Nama Mahasiswa
Aksara
Struktur Data
672014001
Michael Jackson
A
Struktur Data
672014002
Tukul Astaga
B
Basis Data
672014001
Michael Jackson
C
Basis Data
672014002
Tukul Astaga
C
Bahasa Indonesia
672014001
Michael Jackson
B
Matematika
672014001
Michael Jackson
D
Bahasa Inggris
672014002
Tukul Astaga
D
Functional Dependency Functional Dependency dari tabel nilai
NIM Nama Mahasiswa Karena untuk setiap nilai NIM yang sama, maka nilai Nama Mahasiswa juga sama. {NamaMatakuliah, NIM} Aksara Karena attribut Aksara tergantung pada Nama Matakuliah dan NIM secara bersama-sama. Dalam arti lain untuk Nama Matakuliah dan NIM yang sama, maka Aksara juga sama, karena Nama Matakuliah dan NIM merupakan key (bersifat unik). Nama MataKuliah NIM NIM Aksara
Tahapan dalam Normalisasi
Bentuk tidak normal (Unnormalized Form) Bentuk Normal Kesatu (1NF/ First Normal Form) Bentuk Normal Kedua (2NF/ Second Normal Form) Bentuk Normal Ketiga (3NF/Third Normal Form) Boyce-Code Normal Form (BCNF) Bentuk Normal Tahap 4 (4NF) Bentuk Normal Tahap 5 (5NF)
Bentuk tidak normal itu? (Unnormalized Form)
Memiliki ciri-ciri, yaitu :
Merupakan kumpulan data yang akan direkam. Dapat saja data tidak lengkap atau terduplikasi. Data dikumpulkan apa adanya sesuai dengan kedatangannya.
Bentuk normal kesatu itu? (1NF/ First Normal Form) Mempunyai ciri yaitu: Setiap data dibentuk dalam flat file. Data dibentuk dalam satu record demi satu record dan nilai dari field-field berupa “atomic value”. Tidak ada set atribute yang berulang-ulang atau atribute bernilai ganda (multivalue). Tiap field hanya satu pengertian, bukan merupakan kumpulan kata yang mempunyai arti mendua, hanya satu arti saja dan juga bukanlah pecahan kata-kata sehingga artinya lain.
Bentuk normal kesatu (1NF/ First Normal Form) KELAS(Kode_kelas, nama_kelas, instruktur) merupakan bentuk 1NF karena tidak ada yang berganda dan tiap atribute satu pengertian yang tunggal. Kode Kelas 1234
Nama Kelas Fisika Dasar
Instruktur Suroso
1543 1775
Matematika Teknik Program
Paulus Bagus
Bentuk normal kesatu (1NF/ First Normal Form) SISWA(No_siswa, Nama, Wali_studi, Kelas1, Kelas2, Kelas3) Siswa yang punya nomor siswa, nama dan wali studi mengikuti 3 mata pelajaran/kelas. Disini terdapat perulangan kelas 3 kali, ini bukan bentuk 1 NF.
No_Siswa Nama
Wali_Studi Kelas1
22890100 Tanzania Zaman 22890101 Nia Rizki
1234 1234
Kelas2
Kelas3
1543 1775
1543
Bentuk normal kesatu (1NF/ First Normal Form) Bentuk 1NF.
No_Siswa
22890100 22890100 22890101 22890101 22890101
Nama
Tanzania Tanzania Nia Nia Nia
Wali_Studi Kode_Kelas
Zaman Zaman Rizki Rizki Rizki
1234 1543 1234 1775 1543
NIM
Nama
Matakuliah
001
Totok
Kalkulus, Aljabar Linear
002
Titik
Basisdata, Kalkulus
003
Andi
Basisdata, Kalkulus, Pemrograman Web
NIM
Nama
Matakuliah
001
Totok
Kalkulus
001
Totok
Aljabar Linear
002
Titik
Basisdata
002
Titik
Kalkulus
003
Andi
Basisdata
003
Andi
Kalkulus
003
Andi
Pemrograman Web
Bentuk normal kedua itu? (2NF/ Second Normal Form) Mempunyai syarat yaitu: Bentuk data telah memenuhi kriteria bentuk normal kesatu. Atribute bukan kunci haruslah bergantung secara fungsi pada kunci utama/ primary key. Sudah ditentukan kunci-kunci field, dimana kunci field haruslah unik dan dapat mewakili atribute lain yang menjadi anggotanya.
Bentuk normal kedua (2NF/ Second Normal Form)
Dari contoh relasi SISWA pada bentuk normal kesatu (1NF), terlihat bahwa: kunci utama/ primary key adalah nomor siswa. Nama siswa dan Wali_studi bergantung fungsi pada No_siswa, tetapi kode_kelas bukanlah fungsi dari SISWA maka file SISWA dipecah menjadi dua relasi/tabel.
Bentuk normal kedua (2NF/ Second Normal Form)
Relasi SISWA
Relasi AMBILKELAS
No_Siswa Nama 22890100 Tanzania
Wali_Studi Zaman
No_Siswa Kode_Kelas 22890100 1234
22890101 Nia
Rizki
22890100 22890101 22890101 22890101
1543 1234 1775 1543
Bentuk normal ketiga itu? (3NF/ Third Normal Form)
Syarat menjadi bentuk normal ketiga: Relasi haruslah dalam bentuk normal kedua dan semua atribute bukan primer tidak punya hubungan yang transitif. Setiap atribute bukan kunci haruslah bergantung hanya pada primary key dan pada primary key secara menyeluruh. Contoh pada bentuk normal kedua di atas termasuk juga bentuk normal ketiga karena seluruh atribute yang ada bergantung penuh pada kunci primernya.
Contoh Penerapan
Teknik Normalisasi Proses perancangan database dapat dimulai dari dokumen dasar yang dipakai dalam sistem.
Step 1. Bentuk Unnormalized Catat semua data yang terekam!
No_ Fak
Kode_ Supp.
Nama_ Supp.
Kode_ Brg
Nama_Barang
Tanggal
Jatuh Tempo
Qty
779
S02
Hitachi
998
G01
Gobel
Harga
Jumlah
Total
R02
Rice Cooker CC3
02/02/90
09/03/90
10
150000
1500000
1500000
A01
AC Split ½ PK
07/02/90
09/03/90
10
1350000
13500000
33500000
A02
AC Split 1 PK
10
2000000
20000000
Step 2. Bentuk Normal Kesatu 1NF Pisahkan data pada field-field yang tepat dan bernilai atomic. Seluruh record harus lengkap adanya. Bentuk file adalah flat file. No_ Fak
Kode_ Supp.
Nama_ Supp.
Kode_ Brg
Nama_Barang
Tanggal
Jatuh Tempo
Qty
Harga
Jumlah
Total
779
S02
Hitachi
R02
Rice Cooker CC3
02/02/90
09/03/90
10
150000
1500000
1500000
998
G01
Gobel
A01
AC Split ½ PK
07/02/90
09/03/90
10
1350000
13500000
25000000
998
G01
Gobel
A02
AC Split 1 PK
07/02/90
09/03/90
10
2000000
20000000
35000000
Kelemahan-kelemahan bentuk normal kesatu yaitu: Inserting/Penyisipan Kita tidak dapat memasukkan kode dan nama supplier saja tanpa ada transaksi pembelian, sehingga supplier baru dapat masuk bila ada transaksi pembelian.
Deleting/Penghapusan Bila satu record di atas dihapus misalnya nomor factur 779, maka berakibat pula menghapus data supplier S02 (Hitachi), padahal data supplier masih diperlukan. Updating/ Pengubahan Kode dan nama supplier terlihat ditulis berkali kali, bila suatu ketika terjadi perubahan nama supplier misalnya maka harus mengganti disemua record yang mengandung nama tersebut. Bila ada yang terlewat maka membuat data tidak konsisten lagi. Redundancy Field jumlah di atas merupakan redundancy, karena setiap kali harga dikalikan dengan quantitas akan menghasilkan jumlah. Maka field tersebut dapatlah dibuang, bila tidak dibuang maka mengakibatkan tidak konsisten. Tidak konsisten disini disebabkan karena bila ada perubahan harga, hanya data harga yang diubah, data jumlah tidak maka nilai jumlah tidak sama dengan qty x harga.
Step 3. Bentuk Normal Kedua 2NF
Pembentukan bentuk normal kedua dengan mencari kunci kunci field yang dapat dipakai sebagai patokan dalam pencarian dan sifatnya unik. Melihat kondisi dari permasalahan factur di atas dapat diambil kunci kandidat yaitu: No factur (no fac), Kode supplier, Kode barang. Bentuklah tiga tabel dengan kunci tersebut, lihatlah ketergantungan fungsional field field lain terhadap field kunci, maka didapatkan tabel (lihat halaman selanjutnya).
Step 3. Bentuk Normal Kedua 2NF
Step 3. Bentuk Normal Kedua 2NF
Dengan pemecahan seperti tadi (slide sebelumnya), maka sebagian dari pertanyaan pengujian pada bentuk normal kesatu yaitu inserting, deleting, updating dapat terjawab. Kode dan nama supplier baru dapat masuk kapanpun tanpa harus ada transaksi pada tabel Nota, cukuplah dibuka tabel Supplier dan disisipkan satu record baru. Demikian pula pada saat update dan delete baik untuk tabel Supplier dan juga tabel Barang.
Step 3. Bentuk Normal Kedua 2NF Masih terdapat permasalahan pada tabel Nota! Field Qty dan Harga pada tabel tersebut tidak bergantung penuh pada kunci primer nomor nota, ia juga bergantung fungsi pada kode barang. Hal ini disebut sebagai kebergantungan yang transitif dan haruslah dipisahkan dalam dua tabel. Masih terdapat redundancy yaitu setiap kali satu nota yang terdiri dari 5 macam barang yang dibeli maka 5 kali pula dituliskan no nota, tanggal nota, tempo, dan total. Ini harus pula dipisahkan bila terjadi penggandaan tulisan berulang ulang.
Step 4. Bentuk Normal Ketiga 3NF Bentuk normal ketiga mempunyai syarat setiap tabel tidak mempunyai field yang bergantung transitif, harus bergantung penuh pada kunci utama.
Step 4. Bentuk Normal Ketiga 3NF
Bentuk normal kedua, masih belum sempurna!
Step 4. Bentuk Normal Ketiga 3NF
Step 5. Pengujian dengan Data Contoh Pengujian disini untuk memastikan kebenaran isi tabel dan hubungan antara tabel tersebut. Ujilah bahwa setiap tabel haruslah punya hubungan dengan tabel yang lainnya. Bila tidak ada penghubung antar tabel maka dapat dikatakan perancangan untuk membuat satu database adalah GAGAL!
Step 5. Pengujian dengan Data Contoh
Step 6. Hubungan Relasi Antar Tabel
Pengertian relasi di atas adalah: Satu supplier punya banyak nota. Nota punya relasi terhadap supplier dan dalam hal ini tidaklah dapat dibalik supplier punya relasi terhadap nota. Satu nota punya beberapa transaksi barang. Satu barang terjadi beberapa kali transaksi pembelian barang.
Step 7. Kelengkapan field-field dalam perancangan Permasalahan di atas hanya mengacu pada satu dokumen Factur pembelian barang, padahal pada kenyataan sesungguhnya tentulah factur tersebut punya dokumen pelengkap misalnya Nota Penjualan Barang, Laporan Stock barang, Laporan Penjualan, Laporan pembelian dan masih banyak laporan dan dokumen data entry lainnya. Misalnya Tabel Barang dengan bertambahnya field yang lain menjadi:
Mau bertanya..?