Laman

Kamis, 05 Juni 2014

#Basis Data: Pengenalan, ER Model, Konversi ER ke Basis Data Relational, Normalisasi

Assalamu’alaikum :)
Ini UAS loh. Kalo biasanya UAS itu di kelas, duduk, ngerjain soal, sekarang beda. UAS kali ini tuh take home alias dibawa ke rumah. Selain bermanfaat buat diri sendiri, bermanfaat buat orang lain juga, InsyaAllah. Oke, selamat bertambah ilmu!

Sebelum mengenal Basis Data, kita harus terlebih dahulu mengetahui pengertian dari Data dan Informasi. 
Data adalah respresentasi untuk mewakili nilai fakta dunia  nyata yang dapat berupa nilai numerik, alphanumerik, gambar, suara, video, dan lain-lain.  Fakta dunia nyata dapat berupa barang, kejadian, aktivitas, perasaan dan semua tentang dunia nyata.
Informasi adalah data yang telah dikelola dalam  bentuk tertentu untuk memberikan makna bagi penerimanya.

Data dan informasi akan saling berkesinambungan sehingga membentuk suatu siklus yang namanya information cycle (siklus informasi).

Gambar 1. Siklus Informasi

Setelah mengetahui perbedaan Data dan Informasi, kita akan memasuki materi utama,yaitu apa itu Basis Data?
Basis Data terdiri dari dua kata, Basis dan Data. Basis dapat diartikan sebagai markas tempat berkumpul. Sedangkan data adalah representasi fakta dunia nyata yang mewakili suatu objek. Jadi, Basis Data adalah kumpulan informasi yang disimpan di dalam komputer secara sistematik sehingga dapat diperiksa menggunakan suatu program komputer untuk memperoleh informasi dari basis data tersebut.
Sebagai pengguna yang baik,tentunya harus tau juga tujuan dibangunnya Basis Data ini, yaitu:
1.      Kecepatan dan kemudahan (speed).
2.      Kebersamaan pemakai.
3.      Pemusatan control data.
4.      Efesiensi ruang penyimpanan (space).
5.      Keakuratan (Accuracy).
6.      Ketersediaan (availability).
7.      Keamanan (Security).
8.      Kemudahan dalam pembuatan program aplikasi baru.
9.      Pemakaian secara langsung.
10.  Kebebasan data (Data Independence)
11.  User view.

Dan lebih baik lagi mengetahui perkembangannya.


Gambar 2. Perkembangan Sistem Basis Data

Nah, untuk mengelola dan memanggil kueri (query) basis data, digunakan sebuah perangkat lunak yang disebut sistem manajemen basis data (Database Management System, DBMS). DBMS memiliki karakteristik sebagai berikut:
·         Software program
·         Supplements operating sistem
·         Manages data
·         Queries data and generates reports
·         Data security

Kelebihan-kelebihan DBMS:
·         Data berdiri sendiri (Data Independence)
·         Pengaksesan data efisien (Efficient data access)
·         Integritas data dan keamanan terjamin (Data integrity and security)
·         Administrasi data (Data administration)
·         Dapat diakses bersamaan (Concurrent access )
·         Recovery saat terjadi kegagalan (Crash recovery)
·         Mengurangi waktu pembangunan aplikasi (Reduced application development time)


Gambar 3. Komponen DBMS

Basis Data juga memiliki banyak model, seperti yang terlihat pada gambar berikut:


Gambar 4. Model Basis Data

Gambarnya terlalu rumit? Tenang saja, akan dijelaskan di bawah ini:
a.      Relational
Model ini direpresentasikan dalam tabel dua dimensi, tabel-tabel tersebut memiliki hubungan yang disebut dengan relasi. Model ini memiliki fleksibilitas dan kecepatan yang tinggi.
b.      Hierarchical
Memiliki struktur pohon dimana field hanya memiliki satu buah induk (parent), masing-masing parent memiliki banyak child (anak). Model ini memiliki kecepatan yang baik.
c.       Network
Relationship dibuat menggunakan linked list (pointer). Berbeda dengan model hierarchical satu anak dapat memiliki beberapa induk. Model ini memiliki fleksibilitas yang tinggi.
d.      Object oriented
Object Oriented Database adalah sebuah sistem database yang menggabungkan semua konsep object oriented seperti pewarisan, abstraksi, enkapsulasi, dll. Model ini dapat berinteraksi dengan baik dengan bahasa pemrograman berorientasi objek seperti java dan C++.

Dalam basis data, bahasa yang digunakan tidak sama seperti bahasa manusia. Inilah macam-macam bahasa Basis Data.
1.      Data Definition Language (DDL)
Dengan bahasa ini kita dapat membuat tabel baru, membuat indeks, mengubah tabel, menentukan struktur penyimpanan tabel dsb.
2.      Data Manipulation Language (DML)
Berguna untuk melakukan manipulasi dan pegambilan data pada suatu basis data.

Dalam Basis Data, kita akan sering menemukan yang namanya ERD(Entity Relationship Diagram). Sebelum mempelajarinya, kita harus mengetahui dulu komponen-komponen Model ER. Komponen utama Model ER adalah:
1.      Entitas
2.      Relasi
3.      Atribut
4.      Konstrain-konstrain (batasan-batasan)

Entitas adalah objek yang dirasa penting di sistem tersebut, yg bisa berupa :
·         Objek Konkrit  Contoh : Orang, Mobil, Buku
·         Objek Abstrak Contoh : Penjualan, Jadwal, Pinjaman, Tabungan 
Himpunan Entitas adalah sekelompok entitas yang sejenis dan berada dalam lingkup yang sama. Entitas menunjuk kepada pada individu suatu objek sedangkan himpunan entitas menunjuk pada rumpun (family) dari individu tersebut.


Gambar 5. Entitas dan Himpunan Entitas

Setiap entitas pasti memiliki atribut yang mendeskripsikan karakteristik (property) dari entitas tersebut.  Penentuan / pemilihan atribut-atribut yang relevan bagi sebuah entitas merupakan hal penting lainnya dalam pembentukan model ER.  Contoh: nim, nama, alamat, kode. ER menggambarkan entitas-entitas dengan atributnya yang saling berelasi. Relasi menggambarkan hubungan antara entitas satu dengan entitas yang lain sesuai dengan proses bisnisnya. Notasi relasi didalam diagram ER digambarkan dengan notasi belah ketupat.
Kumpulan semua relasi diantara entitas-entitas yang terdapat pada himpunan entitas-himpuan entitas tersebut membentuk himpunan relasi (relationship sets).

1.      Unary (Hanya me-relasi-kan 1 entitas)
Relasi di atas menggambarkan entitas employee yang  ber-relasi dengan entitas employee. Entitas karyawan bisa merupakan supervise biasa tetapi bisa juga merupakan supervisor.

2.      Binary (Me-relasi-kan 2 entitas)

Relasi di atas menggambarkan entitas pelangan yang ber-relasi dengan entitas pinjaman. 1 pelanggan bisa mempunyai banyak nomor pinjaman, dan 1 nomor pinjaman hanya untuk 1 pelanggan.  

3.      Ternary (Me-relasi-kan 3 entitas)

Relasi di atas menggambarkan entitas employee yang ber-relasi dengan entitas brunch dan entitas job melalui relasi work_on. 1 employee bekerja di sebuah title tertentu dan juga bekerja di sebuah brunch_name tertentu. Ada 3 entitas yang terlibat dari relasi di atas.

ER juga memiliki kardinalitas, di antaranya:
·         Satu ke Satu

·         Satu ke Banyak

·         Banyak ke Satu

·         Banyak ke Banyak

Untuk membedakan suatu entitas didalam himpunan entitas dengan entitas lain, digunakan Key. Key adalah satu atau gabungan dari beberapa atribut yang dapat membedakan semua row dalam relasi secara unik. Macam key dibedakan jadi 3 = super key, candidate key, primary key.
Ada juga entitas yang tidak memiliki primary key. Yaitu entitas lemah. Entitas ini selalu bergantung pada entitas lain. Notasi entitas lemah digambarkan dengan double persegi panjang, sedangkan relasi untuk himpunan entitas lemah digambarkan dengan double diamond.
Berikut ini adalah notasi-notasi simbol di ER:


Setelah memahami materi di atas, kita lihat contoh ERD beserta penjelasannya.

Keterangan :
      Entity dosen mempunya dua atribut, yaitu kode dosen (kd_dos) yang berfungsi sebagai primary key, dan nama dosen (nm_dos).
      Entity mahasiswa juga mempunyai dua atribut, yaitu No. Buku Pokok (nobp) sebagai primary key dan nama mahasiswa (nm_mhs).
      Hubungan antara kedua entitas tersebut dinyatakan dalam entitas mengajar, yang mempunyai 4 atribut, yaitu kode dosen (kd_dos) dan No.Buku Pokok mahasiswa (nobp) yang berfungsi sebagai foreign key pada entitas mengajar serta atribut waktu mengajar (waktu) dan tempat mengajar (lokal).
      Derajat relasi dinyatakan dengan M : N, yang menandakan bahwa hubungan antar entitas adalah banyak ke banyak, seperti terlihat pada gambar diatas.

Semangat kawan, satu bahasan lagi nih, mengenai normalisasi. Normalisasi sangat penting dipelajari, karena normalisasi ini bertujuan untuk menghilangkan kerangkapan data, mengurangi kompleksitas, dan mempermudah pemodifikasian data. Ada beberapa tahap dalam normalisasi:

Bentuk Tidak Normal
             Menghilangkan perulangan grup
Bentuk Normal Pertama (1NF)
             Menghilangkan Ketergantungan Parsial
Bentuk Normal Kedua (2NF)
Menghilangkan Ketergantungan Transitif
Bentuk Normal Ketiga (3NF)
Menghilangkan anomali-anomali hasil dari ketergantungan fungsional
Bentuk normal Boyce-Codd (BCNF)
Menghilangkan ketergantungan Multivalue
Bentuk Normal Keempat (4NF)
Menghilangkan anomali-anomali yang tersisa
Bentuk Normal Kelima

Tapi yang wajib kita lakukan hanya sampai bentuk normal ketiga saja (3NF), karena dalam bentuk normal ketiga, data sudah dapat dikatakan ‘normal’. Tunggu, memang data seperti apa yang dikatakan tidak normal? Langsung saja kita mulai normalisasi data.
Id_mhs
Nama_mhs
Hobi_mhs
1301111
Iko
Tidur, memancing
1302222
Ibo
Makan, menabung
Data dala tabel di atas disebut tidak normal karena memiliki perulangan grup. Untuk mencapai bentuk 1NF, maka harus dihilangkan perulangan tersebut, dengan cara dekomposisi seperti ini:
Id_mhs
Nama_mhs
1301111
Iko
1302222
Ibo

Id_mhs
Nama_mhs
1301111
Tidur
1301111
Memancing
1302222
Makan
1302222
Menabung

Kemudian, perhatikan tabel berikutnya:
nim
Nama_mhs
Alamat_mhs
Id_mk
Nama_mk
sks
Nilai
Pada tabel di atas, syarat untuk mencapai bentuk 1NF terpenuhi, namun tidak untuk bentuk 2NF. Kenapa? Karena nama_mhs dan alamat_mhs bergantung pada nim, sedangkan nama_mk dan sks bergantung pada id_mk. Artinya, di sana masih ada ketergantungan parsial. Ada dua primary key. Tabel di atas perlu didekomposisi menjadi beberapa tabel yang memenuhi syarat 2NF:
·         Tabel Nilai
nim
Id_mk
nilai

·         Tabel Mahasiswa
nim
Nama_mhs
Alamat_mhs

·         Tabel Mata Kuliah
Id_mk
Nama_mk
sks

Terakhir, bentuk normal yang ketiga (3NF). Dimana letak ke-tidak-normal-an-nya adalah adanya ketergantungan transitif. Biar jelas, perhatikan tabel di bawah ini:
nim
nama
Alamat_jalan
Alamat_kota
Alamat_provinsi
Kode_pos
Tabel di atas memenuhi syarat 2NF, namun belum memenuhi bentuk 3NF. Terdapat ketergantungan transitif, yaitu bergantungnya alamat_kota dan alamat_provinsi (yang keduanya bukan primary key) kepada kode_pos (yang juga bukan primary key). Sehingga tabel tersebut perlu didekomposisi menjadi:
·         Tabel Mahasiswa
nim
nama
Alamat_jalan
Kode_pos

·         Tabel Kode Pos
Kode_pos
Alamat_kota
Alamat_provinsi

Selesaaaai, kini data yang kita miliki sudah normal. Semoga ilmu dari atas sanaaaa sampai bawah sini bisa bermanfaat yah. Maaf jika ada penjelasan yang kurang jelas. Wassalamu’alaikum :)

Sumber: Diktat IK 330 Basis Data