Kamis, 05 Juni 2014

KEPO-IN BASIS DATA :D


Assalamualaikum Wr. Wb
Hallo, apa kabar? Ketemu lagi dalam postingan baru, kali ini saya mau bahas mengenai basis data, gak usah lama-lama, langsung aja kita ke bedah Te Ka Pe :D
================================================================
"Basis data itu apa ???"

FYI, Basis data terdiri dari 2 kata:
Basis => Markas/gudang, diartikan juga sebagai suatu sistem yang terdiri dari satu kesatuan tiap-tiap komponen dan prosedur (input -> proses -> output) yang memiliki tujuan yang sama.
Data => Representasi fakta dunia nyata, dinotasikan dengan simbol-simbol seperti nilai numerik, alfanumerik, audio, visual dan lain-lain. Data yang telah diolah dan memberikan makna disebut informasi .kualitas data dan informasi dipengaruhi oleh hal-hal berikut:
  • Benar merepresentasikan dunia nyata,
  • Tepat waktu, dan
  • Tepat penggunaannya.
Jadi, bisa diasumsikan Basis data => Kumpulan atau himpunan data/arsip dalam media penyimpanan elektronis yang saling berhubungan dan diorganisasi sedemikian rupa agar dapat dimanfaatkan kembali.
Tujuannya basis data apa sih???
  • Kecepatan dan kemudahan (speed),
  • Efisiensi ruang penyimpanan (space),
  •  Keakuratan (accuracy),
  • Ketersediaan (availability),
  • Kelengkapan (completeness),
  • Keamanan (security),
  •  Kebersamaan pemakaian (sharability).

Kenapa kita perlu mempelajari basis data???

  Ø  Perpindahan komputasi ke informasi,
  Ø  Himpunan elemen data semakin banyak dan beragam, contoh:
  • Perpustakaan digital,
  • Video interaktif,
  • Kebutuhan untuk memperluas DBM.
  Ø  DBMS mencakup bidang ilmu lain, contoh:
ü  Sistem operasi, bahasa pemrograman, teori komputasi, AI, logika, multimedia, dan lain-lain.

Untuk mempelajari perkembangan basis data, cek gambar di bawah:


"Apa sih DBMS(Database Management System) itu???"

DBMS(Sistem Basis Data) => perangkat yang digunakan untuk mengelola dan memanggil query basis data. Karakteristiknya:
  • Software program,
  • Supplement operating system,
  • Manages data,
  • Queries data and generates reports,
  • Data security.
Keuntungan DBMS:

  §  Data berdiri sendiri (Data independence), 
  §  Pengaksesan data efisien (Efficient data acces), 
  §  Integritas data dan keamanan terjamin (Data integrity and security), 
  §  Administrasis data (Data administration), 
  §  Dapat diakses bersamaan (Concurrent access), 
  §  Recovery saat terjadi kegagalan (Crash recovery), 
  §  Mengurangi waktu pembangunan aplikasi (Reduced application development time).

Komponen-komponen DBMS:
  • Perangkat keras
  • Sistem Operasi
  • Basis Data
  • Pengguna (user)
  • Aplikasi-aplikasi lain


Abstraksi data merupakan level dalam bagaimana melihat data dalam sebuah sistem basis data.  Berikut ini tiga level abstraksi data: 

1.       Level Fisik
       Di level terendah ini ditunjukkan bagaimana data disimpan. Pada level ini pemakai melihat data sebagai   gabungan dari struktur dan datanya sendiri. 

2.       Level Lojik 
Di level berikutnya diggambarkan data apa yang disimpan pada basis data dan hubungan apa saja yang ada di antara data tersebut. 

3.       Level View 
Merupakan level tertinggi dari abstraksi data yang hanya menunjukkan sebagian dari basis data.

Basis data memiliki beberapa jenis model:
1.       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. 

2.       Hierarcical,Memiliki struktur pohon dimana  field  hanya memiliki satu buah induk (parent), masing-masing parent memiliki banyak child (anak). Model ini memiliki kecepatan yang baik. 

3.       Network,Relationship dibuat menggunakan linked list (pointer). Berbeda dengan model  hierarchical satu anak dapat memiliki beberapa induk. Model ini memiliki fleksibilitas yang tinggi. 

4.       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++.

Basis data dapat digambarkan sebagai suatu model yang bisa disebut basis data relasional. Model ini dapat diaktakan sebagai penggambaran yang paling sederhana dan mudah dipahami, terdiri dari:
1.       Karakter,adalah  bagian terkecil dalam database, dapat berupa karakter angka, huruf, ataupun karakter-karakter khusus, seperti simbol-simbol. 
2.       Field atau attribute, adalah bagian dari record yang menunjukkan suatu item data yang sama / sejenis. Misalnya : field nama, file NIM dan lain sebagainya. 
3.       Record atau Tupple,adalah kumpulan data value dari attributee yang berkaitan sehingga dapat menjelaskan sebuah entity secara lengkap. 
4.       Table/Entity (entitas), sesuatu yang diidentifikasi dari suatu sistem database, bisa berupa objek, orang, tempat, kejadian atau konsep yang informasinya akan disimpan di database. Misal. Pada sistem database akademik, yang menjadi entity adalah, mahasiswa, dosen, matakuliah dan lain-lain.

Untuk mengelola database kita perlu MySQL, yaitu perangkat lunak system manajemen basis data relasional.Sedangkan SQL(Structured Query Language) adalah bahasa/sintaks-sintaks perintah tertentu unuk mengatur database. Semua perintah SQL secara umum terbagi 2 kategori:
  • DDL(Data Definiton Language),kumpulan perintah SQL yang digunakan untuk membuat, mengubah dan menghapus struktur dan definisi metadata dari objek-objek database.
  • DML (Data Manipulation Language), digunakan untuk mendefinisikan, mengubah dan menghapus basis data dan objek-objek yang diperlukan, misalnya tabel, view, user, index dan sebagainya.DDL biasa digunakan oleh DBA dalam pembuatan sebuah aplikasi basis data. 
===================================||
ERD (Entity Relationship Diagram) => diagram model konseptual untuk menggambarkan struktur logis dari basisdata berbasis grafis. Komponen-komponen pokoknya yaitu:
  1. Entitas,melambangkan objek yang terdapat dalam basis data. Entitas merupakan individu yang mewakili sesuatu yang nyata (eksistensinya) dan dapat dibedakan dari sesuatu yang lain.
  2. Relasi,menunjukan adanya hubungan diantara sejumlah entitas yang berasal dari himpunan entitas yang berbeda.
  3. Attribute,Merupakan properti yang mendeskripsikan karakteristik dari setiap entitas yang ada pada ERD.

Dalam ERD terdapat:
       1.         Relationship(relasi), dimana terdapat derajat himpunan relasi:
1.       Unary (relasi satu entitas saja),
2.       Binary (relasi dua entitas),
3.       Ternary (relasi tiga entitas atau lebih).
        2.         Kardinalitas relasi, menggambarkan banyaknya jumlah maksimum entitas yang berelasi dengan  entitas pada himpunan entitas lainnya. Pada himpunan relasi biner, pemetaannya berupa salah satu dari pilihan berikut:
1.       Satu ke Satu (One to One),
2.       Satu ke Banyak (One to Many),
3.       Banyak ke Satu (Many to One),
4.       Banyak ke Banyak (Many to Many).


Prosedur membuat suatu ERD:
  1. Mengidentifikasi dan menetapkan seluruh himpunan entitas yang akan terlibat,
  2. Menentukan atribut-atribut dari setiap entitas,
  3. Menentukan atribut primary key dari tiap-tiap entitas,
  4. Menentukan relationship antar entitas,
  5. Menentukan atribut-atribut dari setiap relationship (jika ada),
  6. Menentukan Cardinality Rasio,
  7. Menentukan Participation Constraint.
  ===================================||
Konversi ER ke Basis Data Relasional
ER adalah sebuah model yang konseptual dari basis data relational.  Untuk dapat lebih mengerti konversi ER ke basis data relational, diharapkan untuk memahami konsep Weak Entity, Spesialisasidan Agregasi dan memahami konsep penurunan dari Diagram ER ke Tabel.

  • Himpunan Lemah (Weak Entity)
Himpunan entitas lemah adalah himpunan entitas yang tidak memiliki primary key dan selalu bergantung pada entitas lain. Notasi dari entitas lemah digambarkan dengan double persegi panjang sedangkan relasi untuk himpunan entitas lemah digambarkan dengan double diamond.Diskriminator adalah atribut yang dapat membedakan entitas yang terdapat pada himpunan entitas parsial.Konsep diskriminator hanya dipakai pada himpunan entitas lemah, primary key pada himpunan ini ada 2 yaitu primary key dari entitas kuat dan diskriminator/ key parsial.



  • Spesialisasi dan Generalisasi
Spesialisasi merupakan proses desain  top-down  dengan mendesain subgrouping didalam didalam himpunan entitas yang berbeda dari himpunan entitas. Tujuan dari spesialisasi adalah memberikan gambaran konseptual tentang perbedaan karakteristik dari himpunan entitas yang hampir serupa dengan konsep sub grouping / pengelompokan.

Generalisasi  merupakan proses desain bottom-up  dengan mengkombinasikan jumlah himpunan entitas yang digunakan secara bersama sama. Spesialisasi dan generalisasi sama sama digambarkan dengan notasi ISA, yang membedakan adalah sudut pandangnya saja. Jika Spesialisasi kita mendefinisikan entitas secara umum kemudian mencari subgroup dari entitas tersebut, tetapi generalisasi memandang sebaliknya, dari adanya subgroup subgroup  yang berbeda kemudian di cari entitas umum yang mewakili dua himpunan entitas tersebut.
  • Agregasi
Merupakan hubungan antara satu object dengan object lainnya dimana object satu dengan object lainnya sebenarnya terpisah namun disatukan. sehingga tidak terjadi kebergantungan (Object lain bisa ada walau object penampungnya tidak ada ). contoh dalam dunia nyatanya adalah object pemain bola dan klub bola dimana pemain bola bisa tetap ada walau tidak ada klub bola.

Adapaun Konversi Skema ER ke Tabel yang sangat dibutuhkan karena penurunan skema dimaksudkan untuk mengubah sebuah konsep hubungan entitas dan relasi kedalam bentuk fisik tabel tabel yang berelasi. Inti dari Entity Relationship adalah menggambarkan hubungan di dunia nyata kedalam bentuk entitas entitas yang saling ber-relasi, dari diagram ini bisa di buat kedalam bentuk tabel yang langsung di implementasikan kedalam basis data.Secara umum penurunan diagram ER ke tabel memiliki aturan sebagai berikut :

  • Setiap himpunan entitas menjadi Tabel (himpunan entitas kuat atau lemah).
  • Setiap atribut menjadi kolom di tabel.
  • Kardinalitas relasi akan menentukan jumlah tabel yang terbentuk.
 ===================================||
Normalisasi => sebuah teknik dalam logical  desain sebuah basis data yang mengelompokkan atribut dari suatu relasi sehingga membentuk struktur relasi yang baik(tanpa redudansi).

Bentuk Normal => Sekumpulan kriteria yang harus dipenuhi oleh sebuah desain tabel untuk mencapai/level bentuk normal tertentu.

Tujuan Normalisasi: memperbaiki desain tabel yang kurang baiksehingga penyimpanan data menjadi lebih efisien dan bebas anomali data.
Normalisasi terbagi menjadi lima tahapan: 1NF, 2NF, 3NF, BCNF(Boyce Code-Normal Form), 4NF, dan 5NF. Namun yang kita gunakan hanya pada tahapan yang umum digunakan, yaitu tahap 3NF. 




1.)Normal pertama (1st Normal Form)
Dalam 1NF  terdapat beberapa aturan seperti dibawah ini 
  1. Tidak adanya atribut multivalue, atribut komposit atau kombinasi.
  2. Mendefinisikan atribut kunci.
  3. Setiap atribut dalam tabel tersebut harus bernilai atomic (tidak dapat dibagi lagi).
          Contoh:


 Contoh Kedua:
Pada tabel, nilai pada atribut jadwal berisi gabungan antara Hari dan Jam. Jika asumsi hari dan jam memegang peranan penting dalam sistem basis data, maka atribut Jadwal perlu dipisah sehingga menjadi JadwalHari dan JadwalJam sbb:



2.)Normalisasi kedua (2nd Normal Form)
Normalisasi kedua memiliki beberapa ketentuan yaitu sebagai berikut,
  1. Sudah memenuhi dalam bentuk normal kesatu (1NF)
  2. Semua atribut kunci bukan kunci hanya boleh tergantung (functional dependency) pada atribut kunci.
  3. Jika ada ketergantungan parsial maka atribut teresbut harus dipisahkan pada tabel yang lain.
  4. Perlu ada tabel penghubung ataupun kehadiran foreign key bagi atribut-atribut yang telah dipisahkan tadi.
Contohnya:
Tabel diatas tidak memenuhi 2NF, karena {Mhs_nrp, mk_kode} yang dianggap sebagai primary  key sedangkan:
 {Mhs_nrp, mk_kode} (tidak termasuk) mhs_nama
 {Mhs_nrp, mk_kode} (tidak termasuk) mhs_alamat
 {Mhs_nrp, mk_kode} (tidak termasuk) mk_nama
 {Mhs_nrp, mk_kode} (tidak termasuk) mk_sks
 {Mhs_nrp, mk_kode} (termasuk) nihuruf

Tabel di atas perlu didekomposisi menjadi beberapa tabel yang memenuhi syarat 2NF 

{Mhs_nrp, mk_kode}                        => nihuruf                                       (fd1)
Mhs_nrp                                             => {mhs_nama, mhs_alamat}       (fd2)
Mk_kode                                            => {mk_nama, mk_sks}                (fd3)

fd1  (mhs_nrp, mk_kode, nihuruf)              => Tabel Nilai
fd2  (Mhs_nrp, mhs_nama, mhs_alamat)  => Tabel Mahasiswa
fd3 (mk_kode, mk_nama, mk_sks)           => Tabel MataKuliah

3.)Normalisasi ketiga (3rd Normal Form)
Normalisasi ketiga memiliki beberapa ketentuan yaitu sebagai berikut,
  1. Sudah berada dalam bentuk normal kedua (2NF).
  2. Tidak ada ketergantungan transitif (dimana atribut bukan kunci tergantung pada atribut bukan kunci lainnya).

Karena masih terdapat atribut non primary key (yakni alm_kota dan alm_Provinsi) yang memiliki ketergantungan terhadap atribut non primary key yang lain (yakni alm_kodepos):
alm_kodepos -->{alm_Provinsi, alm_kota}

Sehingga menjadi :

Mahasiswa (Nrp, nama, alm_jalan, alm_kodepos)
Kodepos (alm_kodepos, alm_provinsi, alm_kota)

Selain normalisasi, ada juga proses denormalisasi yaitu  proses untuk menggandakan data secara sengaja (sehingga menyebabkan redundansi atau perulangan data) untuk meningkatkan performa basis data, untuk meningkatkan kecepatan akses data atau memperkecil query cost. 

Berikut ini tujuan digunakannya denormalisasi:
1. Mempercepat proses query dengan cara meminimalkan cost yang disebabkan oleh 
    operasi join antar tabel,
2. Untuk keperluan Online Analytical Process (OLAP),
3. Dan lain-lain.


Namun ada konsekuensi bila kita menggunakan denormalisasi, yaitu memerlukan ruang ekstra untuk penyimpanan data dan juga akan memperlambat pada saat proses insert, update dan delete sebab proses-proses tersebut harus dilakukan terhadap data yang redundant (ganda).
Nah, itulah beberapa pengetahuan dasar tentang basis data, dari pengenalan sampai ke  normalisasi suatu basis data. Sampai ketemu dalam postingan lainnya yaa :D
Wassalamualaikum Wr. Wb
    
"Jangan puas dengan ilmu yang engkau dapatkan hanya di satu tempat, karena bisa jadi engkau mendapat ilmu yang lebih banyak di tempat lainnya"
===============================oOo============================
Referensi:
v  Diktat IK 330 Basis Data, from Our Lecturer, Mr. Budi Laksono Putro, S.Si, MT.
v  Our Lecturer’s Blog: budi.staf.upi.edu
v  Computer Science’s official web pages : cs.upi.edu
Superman