Matakuliah : Sistem Basisdata Versi 1.0.0 Materi Normalisasi Data (part 01) Penyaji Zulkarnaen NS
Perancangan basis data diperlukan, agar kita bisa memiliki basis data yang kompak dan efisien dalam penggunaan ruang penyimpanan, cepat dalam pengaksesan dan mudah dalam pemanipulasian data. Merancang basis data, dapat dilakukan dengan: Menerapkan normalisasi terhadap struktur table yang telah diketahui Langsung membuat model Entity – Relationship Perancangan basis data sering kali diasosiasikan dengan pembuatan model Entity-Relationship (Model E-R),”Dimana kelompok-kelompok data dan relasi antar kelompok data tersebut diwujudkan dalam bentuk diagram” Normalisasi sendiri merupakan cara pendekatan lain dalam membangun desain logic basis data relational yang tidak secara langsung berkaitan dengan model data, tetapi dengan menerapkan sejumlah aturan dan kriteria standar untuk menghasilkan struktur table yang normal.
Ketergantungan Fungsional Dalam pendekatan normalisasi, perancang/desainer basis data bertitik tolak dari situasi yang nyata. Ia telah memiliki item-item data yang siap ditempatkan dalam baris dan kolom pada table-tabel relational. Demikian juga dengan sejumlah aturan tentang keterhubungan antara item-item data tersebut Dalam uraian tentang normalisasi basis data, kita akan banyak menggunakan istilah: Atribut Key Domain Ketergantungan Fungsional 3 3
1 . Atribut Tabel (Table Attribute) Atribut identik dengan pemakaian istilah kolom data. Fungsi atribut sebagai pembentuk karakteristik (sifat-sifat) yang melekat pada sebuah table, apalagi penerapan aturan-aturan normalisasi terhadap atribut-atribut pada sebuah table dapat berdampak pada penghilangan kolom tertentu, penambahan kolom baru, atau bahkan penambahan table baru. Contoh: Tabel Mahasiswa memiliki 4 atribut (nim, nama_mhs, alamat_mhs, tgl_lahir) Tabel Dosen (kd_dosen, nm_dosen, alamat, telp) Disamping penamaan yang unik berdasarkan fungsi setiap table, atribut-atribut dapat dibedakan berdasarkan sejumlah pengelompokkan. Atribut dijadikan sebagai kunci Atribut yang lain == deskriptif Atribut atribut sederhana atau komposit 4 4
2 . Key dan Atribut Deskriptif Key adalah satu atau gabungan dari beberapa atribut yang dapat membedakan semua baris data (row) dalam table secara unik. Artinya, jika suatu atribut dijadikan sebagai key, maka tidak boleh ada dua atau lebih baris data dengan nilai yang sama untuk atribut tersebut. Ada 3 macam key yang dapat diterapkan pada table 1. Super Key 2. Candidate Key 3. Primary Key 5 5
(nim, nama_mhs, alamat_mhs, tgl_lahir) (nim, nama_mhs, alamat_mhs) Superkey Merupakan satu atau lebih atribut (kumpulan atribut) yang dapat membedakan setiap baris data dalam sebuah table secara unik. Bisa terjadi, ada lebih dari 1 kumpulan atribut yang bersifat seperti itu pada sebuah table. Contoh table Mahasiswa, yang dapat menjadi Superkey adalah: (nim, nama_mhs, alamat_mhs, tgl_lahir) (nim, nama_mhs, alamat_mhs) (nim, nama_mhs) (nama_mhs), jika kita dapat menjamin tidak ada nilai yang sama untuk atribut itu (nim) Candidate Key Merupakan kumpulan atribut minimal yang dapat membedakan setiap baris data dalam sebuah table secara unik. Candidate key tidak boleh berisi atribut atau kumpulan atribut yang telah menjadi super key yang lain Jadi candidate key pastilah super key, tapi tidak sebaliknya 6 6
Contoh: Pada table Mahasiswa candidate key (nim) (nama_mhs), jika kita dapat menjamin tidak ada nilai yang sama untuk kolom ini Pada sebuah tabel dimungkinkan adanya lebih dari satu seperti contoh diatas. Salah satu candidate key (jika memang ada lebih dari satu) dapat dijadikan sebagai Key Primer (Primary Key). Pemilihan primary key dari sejumlah candidate key tersebut umumnya didasari oleh: Key tersebut lebih sering (lebih natural) untuk dijadikan acuan Key tersebut lebih ringkas Jaminan keunikkan key tersebut lebih baik Dengan pertimbangan-pertimbangan tersebut, dari kedua candidate key yang ada di tabel Mahasiswa, yaitu nim dan nama_mhs, maka yang lebih cocok dipilih sebagai primary key adalah nim. Atribut deskriptif adalah atribut-atribut yang tidak menjadi atau bukan anggota dari primary key, jadi atribut-atribut nama_mhs, alamt_mhs, tgl_lahir digolongkan sebagai Atribut Deskriptif 7 7
Nama_mhs atribut sederhana Atribut sederhana (Simple Attribute) dan Atribut komposit (Composite Attribute) Atribut sederhana adalah atribut atomik yang tidak dapat dipilah lagi. Atribut komposit merupakan atribut yang masih dapat diuraikan lagi menjadi sub-sub atribut yang masing-masing memiliki makna. Contoh: Nama_mhs atribut sederhana Alamat_mhs atribut komposit (dapat di uraikan) Alamat_mhs (alamat, kota, kode_pos) Atribut bernilai tunggal (single value attribute) dan atribut bernilai banyak (Multivalued attribute) Atribut bernilai tunggal ditunjukkan pada atribut-atribut yang memiliki paling banyak satu nilai untuk setiap baris data. Contoh Mahasiswa (nim, nama_mhs, alamat) Merupakan atribut bernilai tunggal, karena atribut-atribut tersebut hanya dapat berisi 1 nilai. Jika ada seorang mahasiswa yang memiliki 2 tempat tinggal, maka hanya salah satu saja yang boleh diisikan ke dalam atribut alamat_mhs 8 8
Atribut harus bernilai (Mandatory Attribute) dan Nilai Null Attribut bernilai banyak ditunjukkan pada atribut-atribut yang dapat diisi dengan lebih dari satu nilai, tapi jenisnya sama. Contoh: Hobi (musik, olah raga dll) Attribut bernilai banyak (Multivalued attribute) Atribut harus bernilai (Mandatory Attribute) dan Nilai Null Ada sejumlah atribut pada sebuah table yang tidak boleh kosong (Mandatory Attribut) Contoh: (nim, nama_mhs) Sebaliknya, adapula atribut-atribut lain pada suatu table yang nilainya boleh dikosongkan (Non Mandatory Atribut). Nilai (konstanta) Null digunakan untuk menyatakan/mengisi atribut-atribut yang demikian, yang nilainya memang belum siap atau tidak ada Null = karakter ke 0 9 9
Atribut Turunan (Derived Atribute) Nilai Null tidak sama dengan spasi, walaupun pada waktu nilainya ditampilkan, sama-sama tidak memperlihatkan apa-apa. Perbedaan tersebut dapat ditinjau dari segi makna maupun dari segi representasi fisik. Dari segi makna, pengisian spasi ke suatu atribut berarti atribut tersebut memiliki nilai yaitu spasi, sedangkan pengisian nilai Null berarti atribut tersebut belum/tidak memiliki nilai. Dari segi representasi fisik spasi sama dengan karakter 32 dalam tabel ASCII, sedang nilai null sama dengan karakter 0. Atribut Turunan (Derived Atribute) Atribut turunan adalah atribut yang nilai-nilainya diperoleh dari pengolahan atau dapat diturunkan dari atribut atau table lain yang berhubungan. Atribut demikian dapat ditiadakan dari sebuah table karena nilai-nilainya bergantung pada nilai yang ada pada atribut lainnya. NIM Nama Mahasiswa Alamat Mahasiswa tgl_lhr Umur Angkatan …… …. 980004 Indah Susanti Jl. Adil No. 123 Bogor 43212 09/12/1978 19 1998 Atribut Turunan 10 10
Domain Pantas/ tidaknya nilai atribut (valid) 3 . Domain dan Tipe Data Penetapan tipe data akan berimplikasi pada adanya batas-batas nilai yang mungkin disimpan/ diisikan kesetiap atribut (kolom). Tipe data lebih merujuk pada kemampuan penyimpanan data yang mungkin bagi suatu atribut secara fisik, tanpa melihat layak/tidaknya data sersebut bila dilihat dari kenyataan pemakaiannya Domain Pantas/ tidaknya nilai atribut (valid) Domain lebih ditekankan batas-batas nilai yang diperbolehkan bagi suatu atribut, dilihat dari kenyataan yang ada. Contoh (sks 1,2,3,4) divalidasi hanya nilai 1,2,3,4 yang boleh diisi Pada saat pekerjaan perancangan basis data tengah dilakukan, yang perlu kita lihat dan pertimbangkan hanyalah Domain nilai dari setiap atribut. Penetapan tipe data bagi suatu atribut baru akan relevan dan penting untuk diperhitungkan pada saat implementasi basis data. 11 11
4 . Ketergantungan Fungsional (Functional Dependency) Diberikan sebuah table T berisi paling sedikit 2 buah atribut yaitu A, B, dan dapat di notasikan A B yang berarti A secara fungsional menentukan B, atau B secara fungsional tergantung pada A. Perhatikan tabel nilai yang memiliki empat buah atribut, yaitu nama_kul, nim, nama_mhs, indeks_nilai nama_kul nim nama_mhs indeks_nilai Struktur Data 980001 Ali Akbar A 980004 Indah Susanti B Basis Data 980002 Budi Haryanto Bahasa Indonesia Matematika I C row 1 row 2 row 3 row 4 row 5 row 6 row 7 12 12
Melihat data tadi KF yang dapat diajukan adalah: nim nama_mhs nama_mhs hanya tergantung pada atribut nim, hal ini dibuktikan dari fakta, untuk setiap nilai nim yang sama, pasti nilai nama_mhsnya juga sama nama_kul, nim indeks_nilai Bahwa atribut indeks_nilai tergantung pada atribut nama_kul dan nim secara bersama-sama. KF tersebut sesuai dengan pengertian bahwa setiap indeks nilai diperuntukkan pada mahasiswa tertentu untuk matakuliah tertentu yang diambilnya. Non KF (ketidaktergantungan) yang dapat diajukan: nama_kul nim yang artinya atribut nim tidak tergantung pada atribut nama_kul. Buktinya terlihat pada row 1 dan row 2 dengan nilai nama_kul yang sama, tapi nim-nya berbeda. nim indeks_nilai yang artinya atribut indeks_nilai tidak hanya tergantung pada atribut nim. Buktinya terlihat pada row 1 dan row 3 dengan nilai nim yang sama, tapi indeks_nilai-nya berbeda. 13 13
Selesai