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. 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-)
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) - Tempat Lahir - Kota No KTP - Tanggal Lahir - Alamat Nama 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.
Contoh: Primary Key/Kunci Primer 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 Nama Kelas Instruktur 1234 Fisika Dasar Suroso 1543 Matematika Paulus 1775 Teknik Program 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 Kelas2 Kelas3 22890100 Tanzania Zaman 1234 1543-22890101 Nia Rizki 1234 1775 1543
Bentuk normal kesatu (1NF/ First Normal Form) Bentuk 1NF. No_Siswa Nama Wali_Studi Kode_Kelas 22890100 Tanzania Zaman 1234 22890100 Tanzania Zaman 1543 22890101 Nia Rizki 1234 22890101 Nia Rizki 1775 22890101 Nia Rizki 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 No_Siswa Nama Wali_Studi 22890100 Tanzania Zaman 22890101 Nia Rizki Relasi AMBILKELAS No_Siswa Kode_Kelas 22890100 1234 22890100 1543 22890101 1234 22890101 1775 22890101 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 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 33500000 A02 AC Split 1 PK 10 2000000 20000000
Step 2. Bentuk Normal Kesatu Pisahkan data pada field-field yang tepat dan bernilai atomic. Seluruh record harus lengkap adanya. Bentuk file adalah flat file. 1NF 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..?