Kamis, 05 Juni 2014

Belajar Basis Data

BASIS DATA  

Referensi :
Diktat IK 330 Basis Data 
Budi Laksono Putro Dosen Ilmu Komputer UPI  
Ilmu Komputer UPI
 

Pengenalan Basis Data

       Nah pada thread terbaru ini, kita akan belajar yang namanya Basis Data. Mungkin teman-teman sering mendengar kata “Basis Data”, kalaupun jarang mungkin teman-teman sering mendengar kata “Database”. Nah disini kita akan mengenal lebih jauh apa itu Basis Data atau Database…


       Seperti pepatah, “tak kenal maka tak sayang”. Oleh karena itu, kita kenalan dulu yuk sama yang namanya Basis Data. Basis Data disusun dari 2 kata yaitu basis dan data. Basis dapat diartikan sebagai suatu tempat, markas, kumpulan  yang memiliki tujuan yang sama (input – proses – output)  sedangkan data yaitu representasi fakta dunia nyata. Jadi Basis data adalah adalah sekumpulan data yang disimpan secara sistematis di dalam komputer dan dapat diolah atau dimanipulasi menggunakan perangkat lunak untuk menghasilkan informasi.
       Oh iya, bedakan pula mana yang data, mana yang informasi. Data, adalah respresentasi untuk mewakili nilai fakta dunia nyata. Informasi, adalah data yang telah dikelola dalam bentuk tertentu untuk memberikan makna atau arti bagi penerimanya. 


       Data dan informasi mempunyai kualitas yang dipengaruhi oleh :

• Merepresentasikan fakta dunia nyata dengan Benar (akurat)
• Tepat waktu, dan
• Tepat penggunaan.

       Data dapat diolah menjadi informasi yang berguna bagi penggunanya, dan proses itu disebut siklus informasi. Berikut adalah gambarannya…

 



       Mungkin teman-teman bertanya-tanya, apa sih tujuan dan kegunaan dari basis data. Teman-teman tahu kan yang namanya lemari arsip, nah lemari arsip dan basis data sesungguhnya memiliki prinsip kerja dan tujuan yang sama. Prinsip utamanya adalah pengaturan data/arsip. Tujuan utama basis data dan lemari arsip adalah kemudahan dan kecepatan dalam pengambilan kembali data/ arsip.

       Tidak semua bentuk penyimpanan data secara elektronis bisa disebut basis data. Dan tujuan dari dibangunnya basis data yaitu :

•  Kecepatan & kemudahan (speed)
•  Efisiensi ruang penyimpanan (space)
•  Keakuratan (accuracy)
•  Ketersediaan (availability)
•  Kelengkapan (completeness)
•  Keamanan (security)
•  Kebersamaan pemakaian (sharability)

      Mengapa sih kita harus belajar tentang basis data ?? jawabannya ada dibawah ini…

• Perpindahan dari komputasi ke informasi, 
• Himpunan elemen data semakin banyak dan beragam, contohnya perpustakaan, 
• DBMS mencakup bidang ilmu lain, contohnya :System operasi, bahasa pemrograman, teori komputasi, AI, logika, multimedia.

       Basis data juga berkembang dari waktu ke waktu loh, dari pertama dibangun sampai sekarang, lebih lengkap bisa dilihat digambar… 

Database Management System (DBMS) 

        Hmm, bagaimana cara kita mengelola dan memanipulasi basis data yang disimpan dalam komputer ? Untuk menjawab pertanyaan tersebut kita membutuhkan suatu perangkat lunak yang disebut system manajemen basis data atau Database Management System (DBMS). Oh iya, DBMS juga mempunyai beberapa karakteristik loh, diantaranya sebagai berikut :
Software program

Supplements operating sistem

Manages data

Queries data and generates reports

Data security


        Terus, apa sih kelebihan dari DBMS ? Kelebihannya yaitu :
• 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 disamping menjelaskan tentang komponen-komponen pada sebuah system basis data, diantaranya :
Perangkat keras • Sistem operasi  
• Basis data 
• DBMS (Database Management System)  
 • Pemakai 
 • Aplikasi lain








Model Basis Data




Berikut ini adalah beberapa model basis data:



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


 

Basis Data Relational




      Disini kita akan masuk kedalam model basis data relasional yang merupakan model yang paling sederhana sehingga mudah digunakan dan dipahami oleh kita. Model ini menggunakan sekumpulan tabel berdimensi dua ( yang disebut relasi atau tabel ), dengan masing-masing relasi tersusun atas tupel atau baris dan atribut. DBMS yang bermodelkan relasional biasa disebut RDBMS (Relational Data Base Management System). 

       Oh iya, modul basis data ini dikemukakan pertama kali oleh EF Codd, seorang pakar basis data. Dan modul basis data ini punya nama lain yaitu database relasi.



                Tingkatan Data Dalam Database Relasi


  • Karakter (Characters)

     Karakter adalah  bagian terkecil dalam database, dapat berupa karakter angka, huruf, ataupun karakter-karakter khusus, seperti simbol-simbol.



  • Field atau Attribute

      Attribute adalah bagian dari record yang menunjukkan suatu item data yang sama / sejenis. Misalnya : field nama, file NIM dan lain sebagainya. Setiap field harus mempunyai nama dan tipe data tertentu. Isi dari field di sebut Data Value. Dalam table database, field ini disebut juga kolom.



  • Record atau Tupple

    Tuple/Record adalah kumpulan data value dari attributee yang berkaitan sehingga dapat menjelaskan sebuah entity secara lengkap.



  • Table/Entity ( entitas )

     Entitas adalah 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. Dalam aplikasi nantinya, penggunaan istilah Entity sering di samakan dengan istilah Tabel. (Entity = table). Disebut tabel, karena dalam merepresentasikan datanya di atur dalam bentuk baris dan kolom. Baris mewakili 1 record dan kolom mewakili 1 field. Dalam sistem database tradisional, entity/table ini disebut juga dengan file. 

  • Database


Kumpulan dari tabel-tabel yang saling berelasi, disusun secara logis, sehingga menghasilkan informasi yang bernilai guna dalam proses pengambilan keputusan.




Dikarenakan model relasional mudah digunakan, banyak produk DBMS terkenal yang menggunakannya antara lain adalah.

1. DB2 (IBM)

2. Rdb/VMS (Digital Equipment Corporation)

3. Oracle (Oracle Corporation)

4. Informix (Informix Corporation)

5. Ingres (ASK Group Inc)

6. Sybase (Sybase Inc)

7. Dan masih banyak lagi



Bahasa Basis Data



       Terus bagaimana cara kita untuk membuat basis data ? Sebelum kesana kita harus mengetahui bahasa-bahasa untuk mengatur dan memodifikasi basis data. Disini kita akan menggunakan system manajemen basis data relasional atau Relational Database Management System (RDBMS) dengan menggunakan perangkat lunak MySQL. Singkatnya MySQL adalah alat/software untuk me-manage/mengatur database. Bahasa yang digunakan yaitu SQL (Structured Query Languange), dalam SQL terdapat perintah-perintah tertentu untuk mengatur SQL. Jadi, MySQL adalah software-nya sedangkan SQL adalah sintaks perintahnya.
 
        Dalam bahasa basis data, tentunya memiliki perintah-perintah yang dapat dikelompokan menjadi :

1.      Data Definition Languange (DDL)



DDL adalah, Data Definition Language, merupakan kumpulan perintah SQL yang digunakan untuk membuat, mengubah dan menghapus struktur dan definisi metadata dari objek-objek database.

               

2.      Interactive Data Manipulation Manipulation Languange (DML)



DML adalah Data Manipulation Language, merupakan kumpulan perintah SQL yang digunakan untuk proses pengolahan isi data di dalam table seperti memasukkan, merubah dan menghapus isi data - dan tidak terkait dengan perubahan struktur dan definisi tipe data dari objek database.

                 



Entity Relationship Diagram




     Fiuhh, setelah berkutat dengan pengertian-pengertian sebelumnya, kita sampai ke bagian ERD atau Entity Relationship Diagram. Teman-teman pasti bertanya-tanya, apa sih ERD itu ? Nah disini kita akan belajar tentang ERD.


   ERD adalah suatu cara memodelkan suatu data ditingkat konseptual dalam perancangan basis data. Model Entity-Relationship meruapakan alat modeling data yang polpuler dan banyak digunakan oleh para perancang basis data.
               

    Terus apa tujuan dari ERD, yaitu untuk menyajikan data dan menjadikan data lebih mudah dimengerti untuk khalayak, sehingga mempermudah perancangan dan pengaksesan basis data. Dibawah ini merupakan contoh dari ERD. ERD merupakan suatu model untuk menjelaskan hubungan antar data dalam basis data berdasarkan objek-objek dasar data yang mempunyai hubungan antar relasi.
 

 




Komponen - komponen utama Entity Relationship Diagram


Agar dapat memahami ERD dengan mudah, kita harus megetahui komponen-komponen pembangun dari ERD yaitu entitas, atribut, relasi, dan kardinalitas.

1.      Entitas (Entity)



Entity merupakan objek yang dapat dibedakan dengan yang lain dalam dunia nyata. Dalam entity ada yang disebut sebagai Entity set yaitu kumpulan dari entity yang sejenis.

Entitas dapat berupa objek konkrit/pasti seperti orang, mobil ataupun objek abstrak seperti jadwal, tabungan dll.

        Sebuah entitas digambarkan dalam ERD berupa persegi panjang. Misal : entitas Mahasiswa. 


2.      Atribut
        Atribut adalah karakteristik dari entity atau relationship, yang menyediakan penjelasan detail tentang entiy atau relationship tersebut . atribut dalam ERD digambarkan dalam bentuk oval.


        Atribut terdiri dari beberapa tipe, diantaranya yaitu :


a.       Simple dan Composite

Atribut simpel merupakan atribut yang tidak dapat dibagi menjadi bagian yang lebih kecil lagi sedangkan atribut komposit kebalikannya. Contoh :


b.       Single value dan Multivalued

Atribut Single value yaitu suatu atribut yang bisa di isi paling banyak 1 nilai untuk setiap baris data. Contoh atribut single value adalah Jenis Kelamin. Atribut Multivalued yaitu suatu atribut yang bisa lebih dari 1 nilai yang sejenis untuk setiap baris data. Contoh atribut mutlivalued value adalah Alamat, No telp dan hobi.


c.       Derivated Atribut

Derived Attribute yaitu suatu atribut yang nilainya didapatkan dari hasil pengolahan atribut lain. Contoh atribut derived adalah umur yaitu didapatkan dari perhitungan tanggal lahir dan tanggal sekarang. IPK yang didapatkan dari penjumlahan nilai di bagi dengan jumlah sks yang diambil.


 
  3.      Relationship

Relationship menggambarkan bagaimana entitas – entitas dengan atributnya saling berhubungan. Notas relasi dalam ERD digambarkan dengan belah ketupat. Contoh :



Dilihat dari jumlah entitas yang dihubungkan oleh sebuah relasi, maka kita bisa membaginya menjadi 3 macam :
  • Unary (hanya merelasikan 1 entitas)  


  •  Binary (merelasikan 2 entitas)
  
  • Ternary (merelasikan 3 entitas)


4.      Kardinalitas Relasi

Kardinalitas relasi menunjukkan jumlah maksimum entitas yang dapat berelasi dengan entitas pada himpunan entitas lain. Rancangan basis data relasional hasil transformasi sendiri bergantung kepada desain awal ERD yang telah dibuat. Pada ERD terdapat 3 jenis kardinalitas, yaitu One To One, One To Many, dan Many To Many.


5.      Key / Kunci
                       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.
Selain komponen – komponen utama tadi, masih ada loh komponen – komponen pembangun dari ERD yang lain. Dan secara singkat dapat dilihat di gambar di bawah ini…








Tahapan Pembuatan ER Diagram




Setelah kita mengetahui berbagai komponen dalama ERD, kita dapat menyimpulkan untuk membuat ER Diagram, dapat mengikuti urutan tahapan berikut:





1. Mengidentifikasikan dan menetapkan seluruh himpunan entity yang akan terlibat.

2. Menentukan atribut-atribut dari setiap entity.

3. Menentukan atribut primary key dari setiap entity.

4. Menentukan relationship antar entity.

5. Menentukan atribut-atribut dari setiap relationship (jika ada).

6. Menentukan Cardinality Rasio.

7. Menentukan Participation Constraint.




Normalisasi


Normalisasi merupakan sebuah teknik dalam logical desain sebuah basis data yang mengelompokkan atribut dari suatu relasi sehingga membentuk struktur relasi yang baik (tanpa redudansi). 


Normalisasi adalah proses pembentukan struktur basis data sehingga sebagian besar ambiguity bisa dihilangkan.

Adapun tujuan dari normalisasi yaitu :

          Untuk menghilang kerangkapan data

          Untuk mengurangi kompleksitas

          Untuk mempermudah pemodifikasian data



Sebelum dinormalisasikan, data diurai dalam bentuk tabeldianalisis 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.


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


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-)

 



Bentuk - bentuk normal :

1.Bentuk Normal Tahap Pertama (1st Normal Form / 1NF)

2.Bentuk Normal Tahap Kedua (2nd Normal Form / 2NF)

3.Bentuk Normal Tahap (3rd Normal Form / 3NF)

4.Boyce-Code Normal Form (BCNF)

5.Bentuk Normal Tahap (4th Normal Form / 4NF)

6.Bentuk Normal Tahap (5th Normal Form / 5NF)





  •   Bentuk Normal Pertama (1NF)
     
    Bentuk normal pertama merupakan bentuk normal dengan lever terendah, dan diperlukan tahapan normalisasi berikutnya untuk mencapai kelebih normalan dan keakuratan data. Berikut adalah persyaratan untuk mencapai First Normal Form :

1. Tidak adanya atribut multi-value, atribut komposit atau kombinasinya.

( atribut multi-value adalah atribut yang bernilai ganda dan dapat dibagi lagi )

2. Mendefinisikan atribut kunci.

3. Setiap atribut dalam tabel tersebut harus bernilai atomic (tidak dapat dibagi-bagi lagi)



  •           Bentuk Normal Kedua (2NF)
     
    Untuk mencapai bentuk normal kedua, dibutuhkan beberapa persyaratan sebagai berikut :

1. Sudah memenuhi dalam bentuk normal kesatu (1NF)

2. Semua atribut bukan kunci hanya boleh tergantung (functional dependency) pada atribut kunci

3. Jika ada ketergantungan  parsial maka atribut tersebut harus dipisah pada tabel yang lain

4. Perlu ada tabel penghubung ataupun kehadiran foreign key bagi atribut-atribut yang telah dipisah tadi



  •           Bentuk Normal Ketiga (3NF)
      
    Jika tabel telah berada dalam bentuk normal ke tiga ( Third Normal Form ) , maka tabel tersebut bisa dianggap cukup normal. Third Normal Form merupakan syarat minimum bagi sebuah desan tabel walaupun akan lebih baik jika juga memenuhi BCNF.
Berikut adalah persyaratan untuk mencapai bentuk normal ketiga ( 3NF ) :



1. Sudah berada dalam bentuk normal kedua (2NF)

2. Tidak ada ketergantungan transitif (dimana atribut bukan kunci tergantung pada atribut bukan kunci lainnya). 



  •          Normalisasi BCNF



Bentuk Normal Boyce-codd Normal Form lebih akurat dari 3NF karena memiliki level ke akuratan yang lebih tinggi.

Persyaratan untuk memenuhi BCNF adalah sebagai berikut :



• Telah memenuhi bentuk normal ketiga ( 3NF )
jika tidak memnuhi 3NF maka tidak akan memenuhi BCNF

• Untuk semua FD yang terdapat di tabel, ruas kiri dari FD tersebut adalah super key 

          

Denormalisasi


           Denormalisasi merupakan suatu 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.

Denormalisasi berbeda dengan normalisasi. Denormalisasi dilakukan setelah tabel dalam kondisi ‘cukup normal’ (mencapai level bentuk normal yang dikehendaki). sedangkan normalisasi dimulai sejak tabel dalam keadaan tidak normal atau belum cukup normal.

 Tujuan 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


Konsekuensi Denormalisasi :


1. Perlu ruang ekstra untuk penyimpanan data
2. Memperlambat pada saat proses insert, update dan delete sebab proses-proses tersebut harus dilakukan terhadap data yang redundant (ganda)

        Dari uraian diatas dapat disimpulkan bahwa denormalisasi harus dilakukan dengan bijak sebab walaupun memiliki beberapa keuntungan namun juga memiliki konsekuensi yang patut diperhitungkan.





        Sekian postingan dari mimin sekarang, semoga bermanfaat bagi teman - teman semua ^_^ . Sorry buat long post nya :p