NORMALISASI TABEL BASIS DATA

                 Untuk kali ini saya akan coba berbagi Materi ilmu yang saya dapatkan di kampus mengenai NORMALISASI TABEL BASIS DATA. 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 (tambah, ubah, hapus) data.

Dalam merancang basis data, kita dapat melakukannya dengan :
1.  Menerapkan normalisasi pada struktur table yang telah diketahui.
2.  Langsung  membuat model ER (Entity Relationship)

                Proses  Normalisasi, merupakan  proses pengelompokan data elemen menjadi  table-table  yang menunjukkan entity dan relasinya. Pada proses normalisasi  selalu diuji pada beberapa kondisi,  apakah ada kesulitan pada saat menambah /  insert, menghapus /  delete, mengubah / update, dan membaca / retrieve pada suatu Database.

                Bila ada kesulitan pada pengujian tersebut, maka relasi tersebut dipecahkan menjadi beberapa table lagi, sehingga diperoleh database yang optimal.

1. Atribut Table
Normalisasi lebih difokuskan pada tinjauan komprehensif terhadap setiap kelompok data (table) secara individual. Lebih jauh tinjauan tersebut dititikberatkan pada data di masing – masing  kolom pembentuk tabel. Kita menggunakan istilah baru, yaitu atribut yang sebenarnya identik dengan  pemakaian istilah kolom data atau field.

Sebagai contoh :

  • Table Dosen, memiliki 9 buah field / atribut, yaitu : nid, nama_d, tempat_lhr, tgl_lahir, jkelamin, alamat, kota, kodepos, dan gajipokok.
  • Table Matakuliah, memiliki 4 buah atribut, yaitu : kdmk, nama_mk, sks dan semester.
  • Table Jurusan, memiliki 4 buah atribut, yaitu : kode_jur, nama_jur, jenjang, dan nama_kajur
  • Table Mengajar, memiliki 9 buah atribut, yaitu : nid, thn_akademik, smt, hari, jam_ke, kdmk, waktu, kelas, dan kode_jur.

Dari 4  table di atas, masing-masing  table memiliki  field / atribut sebagai  key, dan lainnya sebagai atribut deskriptif. Ada pula atribut yang tergolong atribut sederhana atau komposit dan lainnya.

1.1. Key dan Atribut Deskriptif
Key, adalah satu atau gabungan beberapa atribut yang dapat membedakan semua baris data (row) dalam tabel secara unik. Artinya adalah apabila suatu  field / atribut dijadikan  key, maka tidak boleh ada  dua atau lebih baris data dengan nilai yang sama untuk field / atribut tersebut.
Sehubungan dengan pernyataan tersebut, maka kita dapat membedakan  3 (tiga) macam key yang dapat diterapkan pada suatu tabel :
1.  Superkey.
2.  Candidate-Key.
3.  Key Primer (Primary-Key).
4.  Kunci tamu (Foreign Key)

a.  Superkey 
Superkey adalah merupakan satu atau lebih  field / 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.
Pada tabel Dosen yang memiliki 4 buah  field / atribut tersebut, yang dapat menjadi superkey  adalah :
  • (nid, nama_d, tempat_lhr, tgl_lahir, jkelamin, alamat, kota, kodepos, gajipokok)
  • (nid, nama_d, tempat_lhr, tgl_lahir, jkelamin, alamat, kota, kodepos)
  • (nid, nama_d, tempat_lhr, tgl_lahir, jkelamin, alamat, kota,)
  • (nid, nama_d, tempat_lhr, tgl_lahir, jkelamin, alamat,)
  • (nid, nama_d, tempat_lhr, tgl_lahir, jkelamin,)
  • (nid, nama_d, tempat_lhr, tgl_lahir)
  • (nid, nama_d, tempat_lhr)
  • (nid, nama_d,)
  • (nid)
  • (nama_d)

 b.  Candidate-Key 
Candidate_key adalah merupakan kumpulan  field / atribut minimal yang dapat membedakan setiap baris data dalam sebuah table secara unik.Sebuah Candidate-key tidak boleh berisi atribut atau kumpulan atribut yang telah menjadi superkey yang lain. Jadi sebuah Candidate-key pasti superkey, tapi belum tentu sebaliknya.

Pada table Dosen tersebut diatas, yang dapat menjadi Candidate-key adalah ;
  • (nid)
  • (nama_d), jika kita bisa menjamin tidak ada nilai yang sama untuk atribut ini.
Pada sebuah table dimungkinkan ada lebih dari satu Candidate-key, seperti contoh diatas.
Salah satu dari Candidate–key ini (jika memang lebih dari satu) dapat dijadikan sebagai Key Primer (Primary key).

c.  Primarye-Key

Primary_key adalah candidate-key yang dipilih untuk mengidentifikasi tupel secara unik pada suatu relasi. Kunci utama dapat terbentuk dari satu atribut atau lebih.  Pemilihan Key Primer dari sejumlah Candidate-key pada suatu table didasari pada  ketiga hal berikut ini:

1.  Key  tersebut lebih sering (natural) untuk dijadikan acuan.
2.  Key tersebut lebih ringkas.
3.  Jaminan keunikan Key tersebut lebih baik.

 Dengan pertimbangan tersebut, kedua  Candidate-key pada  table dosen, yaitu nid dan nama_d, yang lebih cocok sebagai  Key Primer adalah  (nid). Hal ini dikarenakan bahwa jaminan  keunikan daripada nid (nomor induk dosen) akan terjamin karena karena setiap nid pada suatu  perguruan tinggi pastinya tidak akan sama nilainya, sedangkan kenapa tidak memilih nama_d, karena  nama_d kemungkinan ada yang sama nilainya.


c.  Foreign-Key
Kunci tamu adalah  satu atribut (satu set atribut)  yang melengkapi satu  relationship (hubungan) yang menunjukkan ke induknya.  Kunci tamu ditempatkan  pada relasi anak dan sama dengan kunci primer induk direlasikan. 
Hubungan antara relasi induk dengan anak adalah   satu lawan banyak (one to many relationship)

Untuk Download Artikel Lengkap bisa di Klik disini : 
NORMALISASI TABEL BASIS DATA.doc




Kunci tamu dari table / relasi  mengajar  adalah : nid, kdmk dan kode_jur karena dalam table ini membutuhkan data – data yang ada dalam table dosen, matakuliah dan jurusan Kunci primer untuk table / relasi mengajar adalah nid,thn_akademik,smt,hari,jam_kei,  karena unik dan mewakili entity.
 Dalam hal hubungan 2 buah relasi yang mempunyai  relation banyak ke banyak (many to many), maka terdapat 2 buah kunci tamu pada relasi konektornya.

Hubungan relasi proyek dengan pegawai adalah many to many, dengan pengertian bahwa satu pegawai mengerjakan  lebih dari 1 proyek  dan 1 proyek dikerjakan oleh beberapa pegawai.
Untuk menunjukkan hubungan tersebut, maka dipakai relasi konektor yang berisi kunci tamu dari kedua relasi (proyek dan pegawai). Sehingga relasi konektor proyek_pegawai berisi atribut :

Pada relasi proyek_pegawai tersebut atribut nik dan no_proyek merupakan kunci tamu  (FK) dan  keduanya juga menjadi primay key, dan keduanya merupakan kunci primer (primary key) pada relasi induknya.
Sehingga hasilnya menjadi sebagai berikut :

Gambar 4.3. Dekomposisi many to many
d. Atribut Deskriptif
Atribut diskriptif adalah   atribut – atribut yang tidak menjadi atau merupakan anggota dari Key Primer  pada suatu  table didalam database. Pada  table dosen diatas, yang menjadi atribut diskriptif adalah nama_d, tempat_lhr, tgl_lahir, jkelamin, alamat, kota, kodepos, gajipokok.

1.2. Atribut Sederhana dan Atribut Komposit
Atribut sederhana  adalah merupakan atribut atomik yang tidak dapat dipilah lagi menjadi lainnya, sedangkan atribut komposit adalah merupakan atribut yang masih dapat diuraikan lagi menjadi sub-sub atribut  yang masing-masing memiliki  makna.
Sebagai contoh pada  table dosen tersebut diatas:
·         Nama_d, tempat_lhr merupakan contoh atribut sederhana, karena tidak dapat diuaraikan lagi menjadi atribut lainnya.
·         Alamat seorang dosen adalah merupakan contoh atribut komposit, karena dapat diuraikan menjadi beberapa sub atribut seperti : alamat_jln,  kelurahan,kecamatan rt,rw,no_rumah, yang masing – masing memiliki makna tersendiri.



Pada atribut alamat, dipecah menjadi 6 (enam) atribut (alamat_jln, kelurahan,kecataman,rt,rw,no_rumah),  bertujuan jika kelak ada rencana / kebutuhan untuk melakukan pengolahan data terhadap sub-sub atribut  tersebut. Misalkan  untuk mencari dosen yang tinggal di kelurahan atau kecamatan tertentu siapa saja, atau ingin mecari dosenj yang tinggal di kota tertentu (Bekasi misalnya) siapa saja dapat dihasilkan dengan mudah dengan memanfaatkan fasilitas SQL (query).
 1.3. Atribut Bernilai Tunggal dan Atribut Bernilai Banyak
Atribut bernilai tunggal ditujukan pada atribut – atribut yang memiliki paling banyak satu nilai untuk setiap baris data.
 Pada table dosen, atribut (nid, nama_d, tempat_lhr, tgl_lahir, jkelamin, alamat, kota, kodepos, gajipokok) merupakan atribut bernilai tunggal, karena atribut-atribut tersebut hanya dapat berisi satu nilai. Jika ada seorang dosen yang memiliki 2 tempat tinggal, maka hanya salah satu saja yang boleh dimasukkan ke atribut alamat.
Atribut bernilai banyak ditujukan pada atribut-atribut yang dapat kita isi dengan lebih dari  satu  nilai, tetapi jenisnya sama.  Pada table dosen, kita dapat menambahkan atribut hobbi. Seorang dosen ada yang mempunyai 1 hobi, banyak hobi, bahkan ada yang tidak punya hobi.

1.4. Atribut Harus Bernilai (Mandatory Attribute ) dan Nilai Null
Mandatory Attribute  adalah merupakan sejumlah atribut yang ada pada suatu  table yang harus berisi data dan tidak boleh kosong. Sedangkan Non Mandatory Attribute  adalah  sejumlah atribut yang ada pada suatu table yang boleh tidak diisi datanya / boleh kosong. Nilai Null digunakan untuk  mengisi atribut – atribut yang  nilainya memang belum siap / tidak ada. Misalkan pada table dosen kita tambahkan 1 (satu) record, seperti tampak pada gambar berikut:

        Atribut nid dan nama_d adalah atribut mandatory dan nilainya tidak boleh kosong (not null), hal ini juga berhubungan pada saat kita mendesain  table pada  database, pada saat  table dosen tersebut di  create maka pendefinisian atribut tersebut harus  not null/   dan biasanya yang menjadi primary key pada suatu table pasti nilainya not null.
         Untuk atribut yang berisi null adalah karena data yang ada maasih meragukan atau belum ada sama sekali, jadi pada saat kita meng create table untuk atribut tersebut harus didefinisikan

null, kalau kita mendefinisikan not null, walaupun datanya belum ada atau meragukan maka kita harus mengisi datanya.
                Pada contoh diatas yang menjadikan mandatory atribut adalah nid dan nama_d,karena pada saat petugas melakukan input (pemasukan data) nid pasti ada nama_d, karena nim akan terbentuk kalau nama_d (nama dosen) nya ada, tidak mungkin ada nim sedangkan nama_d nya tidak ada dan pada atribut ini nilainya harus ada tidak boleh kosong (null) jadi harus isi datanya. Sedangkan untuk atribut  non mandatory adalah tempat_lhr,tgl_lahir,jkelamin,alamat dan lainnya, karena pada atribut tersebut nilainya boleh kosong dikarenakan datanya belum siap atau masih meragukan.
 1.5. Atribut Turunan (Derived Attribute)
Atribut turunan adalah atribut yang nilai-nilainya  diperoleh dari pengolahan atau dapat diturunkan dari atribut atau  table lain yang berhubungan. Penambahan atribut tahun_masuk pada table dosen merupakan contoh atribut turunan.


Atribut tahun_masuk  pada contoh diatas dapat ditiadakan, karena atribut tersebut dapat diperoleh dari atribut nid, yaitu 2 digit pertama yang menyatakan tahun masuk dosen, jadi tidak perlu dibuat untuk atribut tersebut.

Untuk Artikel Lengkap bisa di download disini : 
Normalisasi Tabel Basis Data.doc

1 komentar:

Unknown mengatakan...

jelek banget

Posting Komentar

Please be a member and put your comments here.