Kamis, 05 Juni 2014

PENGENALAN BASIS DATA, ENTITY RELATIONAL DIAGRAM (ERD), DAN NORMALISASI

PENGENALAN BASIS DATA, ENTITY RELATIONAL DIAGRAM (ERD), DAN NORMALISASI  


Bismillahirrahmaanirrahim 

      Setelah sekian lama tidak nulis di blog (blog-nya aja jelek gini yaa, hehe....) akhirnya saya terpaksa menulis juga karena tuntutan UAS. Terakhir saya nulis di blog yaitu beberapa tahun yang lalu ketika saya masih SMP, dan sekarang udah di bangku kuliah, dan ini adalah kedua kalinya saya nulis di blog (kemana aja bung??? -___-”). Oke deh daripada curhat ga jelas, to do point aja pada pembahasan ini, saya akan mencoba menjelaskan mengenai basis data dan teman-temannya sesuai judul di atas. Cekidot !!! 


1. BASIS DATA

       Jadi gini, dalam dunia yg serba digital ini data dan informasi merupakan hal yang sangat penting bagi kita. Nah, data dan informasi tadi, dikelola oleh sistem yang namanya basis data. Lalu apa sih pengertian data dan informasi???
- Data         adalah representasi fakta dunia nyata. Bentuknya dapat berupa nilai numerik, alphanumerik, gambar, suara, video, dan lain-lain.
- Informasi adalah data yang telah diolah/dikelola dalam bentuk tertentu. Nantinya informasi ini digunakan untuk mengembil suatu keputusan, sehingga memberikan makna atau arti bagi penerimanya.
Proses pengelolaan data untuk menjadi informasi tersebut dinamakan siklus informasi. Kalau digambarkan, kurang lebih seperti ini siklusnya:

      Data dan Informasi tadi nilainya akan bertambah bila dikelola dengan “baik dan semestinya”. Kualitas data dan informasi dipengaruhi oleh hal-hal berikut ini:
Benar merepresentasikan dunia nyata, dan
Tepat waktu, dan
Tepat penggunaan.

Lalu apa yang disebut dengan Basis Data ?? Kalau data kan diatas udah dijelasin, yang belum Basis.
 Basis → merupakan markas / tempat berkumpul.

      Kita tau kan, kalau suatu tempat berkumpul itu pasti diisi oleh banyak hal, mau orang, benda, dan lain-lain. Nah hal yang banyak itu diatur sama yang namanya SISTEM. Kenapa??? Ya supaya teratur, ngga berantakan. Terus yang namanya sistem itu pasti saling berhubungan satu sama lain dan saling melengkapi (kaya apa aja ya saling melengkapi, ehm...ehm...), untuk menuju satu tujuan yang sama.
       
      Jadi dari pengertian diatas, bisa ditarik kesimpulan kalau BASIS DATA itu merupakan suatu kumpulan representasi fakta dunia nyata yang terkumpul dalam suatu sistem yang saling berhubungan dan saling melengkapi agar kelak dapat dimanfaatkan kembali dengan cepat & mudah. Kurang lebih basis data itu mirip dengan lemari arsip. Perbedaannya kalau lemari arsip disimpan dalam suatu lemari, kalau basis data disimpan dalam media penyimpanan elektronik.
Terus untuk apa dibuat yang namanya Basis Data?? Kan udah ada lemari arsip??

      Jadi begini, tujuan utama dari basis data ini untuk mempermudah penggunanya. Bayangkan kalau disuruh nyari DATA A di lemari arsip yang isinya bejibun, pasti pusing kan. Tetapi dengan basis data, katakan tidak pada yang namanya PUSING, hahahaha... Karena dengan basis data, kita akan mendapatkan:

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

Ya, hal-hal diatas akan kita dapatkan dalam memproses data dan informasi dengan menggunakan BASIS DATA, hebat kan...

    Karena basis data dikelola secara elektronis, maka diperlukan software yang mengelolanya. Software atau alat yang digunakan dalam mengelola sistem basis data disebut dengan DBMS (Database Management System / Sistem Manajemen Basis Data). DBMS sendiri memiliki karkteristik yaitu:

• Software program
• Supplements operating sistem
• Manages data
• Queries data and generates reports
• Data security

Lalu kenapa harus pakai DBMS ??, ya tentunya karena mempunyai kelebihan dibandingkan dengan apabila kita hanya menyimpan data dalam bentuk file saja. Dengan DBMS, kita akan mendapatkan keuntungan dari kelebihan DBMS ini, 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)

Kalau digambarkan dalam bentuk skema, sistem basis data terlihat seperti ini:





Komponen-komponen pada sebuah sistem basis data yang digambarkan diatas tadi terdiri dari:

• Perangkat keras
• Sistem operasi
• Basis data
• DBMS (Database Management System)
• Pemakai
• Aplikasi lain

       Balik lagi ke DBMS, karena DBMS itu merupaka alat atau aplikasi, pasti ada macamnya. Dibawah ini ada beberapa contoh produk DBMS terkenal yang sering digunakan dalam mengelola suatu sistem basis data:

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), dan masih banyak lagi.

       Lalu dalam basis data, ada yg namanya abstraksi data, yaitu merupakan tingkatan lebel dalam melihat data dalam suatu basis data. Pusing kan maksudnya apa.... Coba lihat gambar dibawah ini:



Jadi, abstraksi data itu terbagi kedalam 3 level:

1. Level fisik → Disini user/pemakai melihat data hanya sebagai kumpulan dari struktur dan datanya sendiri.
2. Level logic → Namanya jua logic. Disini user/pemakai dapat melihat ada data apa saja yang disimpan di basis data, terus ada hubungan/relasi apa yang terjadi antara data-data tersebut.
3. Level view → Sesuai namanya, disini user/pemakai hanya melihat data yang dibutuhkannya saja. Ini merupakan level yang umumnya dipakai, soalnya ngga semua user butuh semua data yang ada di basis data kan, jadi user hanya melihat sebagian data yang dibutuhkannya saja.




2. ENTITY RELATIONAL DIAGRAM (ERD)



      Dalam basis data ada yang namanya pemodelan basis data. Untuk apa? Kita kan tau kalau melihat kumpulan data, terus kita disuruh nyari satu buah data di kumpulan data tadi, pasti pusing kan. Oleh karena itu dengan pemodelan basis data, data-data tadi bisa disimplifikasi untuk dilihat, dikembangkan dan dianalisis. Nah, salah satu cara pemodelan basis data tersebut yaitu dengan ERD.
Entity Relational Diagram merupakan suatu pemodelan struktur basis data yang menggambarkan relasi antar objek-objek data (entitas).

Dalam ERD ada 4 konsep utama yang harus kita pahami, yaitu:

1. Entitas/Entity/Tabel

Entitas → yaitu objek yang bisa dibedakan → lambangnya :
Entitas dibagi lagi menjadi 2 bagian, yaitu:

1. Entitas/Objek Konkrit → bisa dilihat dan diraba
Contohnya : Mahasiswa, Dosen, Guru, dan lain-lain

2. Entitas/Objek Abstrak → tidak bisa dilihat dan diraba
Contohnya : Penjualan, Jadwal, Pinjaman, Tabungan, dan lain-lain

2. Atribut

Atribut → yaitu ciri yang melekat pada entitas → lambangnya : 

Atribut juga terbagi lagi menjadi beberapa jenis, yaitu:

1. Atribut Key (Primary Key)
→ Atribut ini digunakan untuk menentukan suatu entity secara unik.
Contohnya : nim, id_ruangkelas, kode_dosen, dan sebagainya.

2. Atribut Single Value / Simple
→ Atribut ini bernilai atomic, maksudnya hanya bernilai tunggal, tidak bisa dibagi-bagi lagi.
Contohnya : jenis_kelamin, tgl_lahir, dan sebagainya.

3. Atribut Composite
→ Atribut ini dapat dibagi-bagi lagi menjadi beberapa bagian.
Contohnya : Atribut nama, karena nama bisa dibagi lagi menjadi nama_depan, nama_tengah, dan nama_belakang.

4. Atribut Multivalued (Bernilai Ganda)
→ Kalau pada atribut tunggal hanya bisa diisi oleh satu data/nilai saja, tetapi tidak pada atribut yang satu ini. Pada atribut ini nilai/data bisa diisi lebih dari satu nilai.
Contohnya : Atribut hobi, karena setiap orang bisa punya banyak hobi, misalnya memasak, menyanyi dan menari. Sehingga data hobi tersebut termasuk ke dalam atribut multivalued

5. Atribut Derivatif
→ Atribut ini nilainya memiliki arti pada suatu entitas apabila terdapat atribut lain yang menjadi ketergantungannya.
Contohnya : Atribut IPK, karena IPK bergantung pada atribut lain yaitu nilai dan sks. IPK bisa didapat dari penjumlahan nilai di bagi dengan jumlah sks yang diambil.


Dibawah ini ada contoh dari gabungan lambang tiap jenis atribut :



3. Relationship

Relasi/relationship → yaitu hubungan yang terjadi antara satu entitas dengan entitas lainnya → lambangnya :

      Dalam sebuah ERD, entitas yang dihubungkan oleh relasi bisa berjumlah lebih dari satu. Oleh karena itu, relasi yang menghubungkannya bisa dibagi lagi menjadi 3 macam, yaitu:

1. Unary → hanya merelasikan 2 entitas
Contoh :

2. Binary → merelasikan 2 buah entitas
Contoh :

3. Ternary → merelasikan 3 buah entitas
Contoh :


4. Kardinalitas

Kardinalitas → yaitu gambaran banyaknya jumlah maksimum entitas yang dapat ber-relasi dengan entitas yang lain. Kardinalitas juga terbagi lagi menjadi 3 bagian:

1. Satu ke satu (1 : 1)

Maksudnya, satu entitas pada tipe entitas yang satu hanya dapat berhubungan dengan paling banyak satu entitas pada tipe entitas lainnya, dan juga sebaliknya. Contohnya :



2. Satu ke banyak (1 : n), dan Banyak ke satu (n : 1)

Maksudnya, satu entitas pada tipe entitas yang satu dihubungkan dengan banyak entitas pada tipe entitas lainnya. Contohnya :


3. Banyak ke banyak (n : n)

Maksudnya, setiap entitas di entitas yang satu dapat berhubungan dengan banyak entitas di entitas yang lainnya, begitu pula sebaliknya. Contohnya :



      Selain 4 konsep utama diatas, dalam ERD juga ada beberapa hal lain yang perlu dipahami. Hal-hal itu adalah:

1. Entitas Lemah

       Prinsip entitas lemah sama seperti atribut derivatif. Entitas lemah ini merupakan entitas yang bergantung pada entitas lainnya, dan entitas ini tidak mempunyai atribut primary key. Primary key pada entitas lemah ada 2 yaitu:
- primary key pada entitas yang kuat
- diskriminator → (primary key-nya entitas lemah)
Lambang dari entitas lemah yaitu : double persegi panjang

2. Spesialisasi dan Generalisasi

- Spesialisasi → proses top-down → membuat subgrouping dari satu entitas, sehingga mempunyai
entitas dan atribut lain yang berbeda.
- Generalisasi → proses bottom-up → merupakan kebalikan spesialisasi, dari adanya subgroup
subgroup yang berbeda kemudian di cari entitas umum yang mewakili 2 himpunan entitas tersebut.

Kedua hal ini dilambangkan dengan segitiga berlabel IS A : 


Contohnya :


3. Agregasi

Agregasi → yaitu membuat kardinalitas dari suatu ERD yang entitasnya tidak bisa dibagi lagi. ERD tersebut dibungkus dengan lambang kotak persegi panjang. Contohnya :

4. Skema ER ke Tabel

       Setelah kita bisa membuat yang namanya ERD, kita juga harus bisa merubahnya kedalam sebuat tabel, agar data-data dari tiap entitas dan atribut bisa dengan mudah dilihat oleh user. Syarat-syarat umumnya yaitu :

- Setiap entitas (yang kuat maupun lemah) → akan menjadi tabel
- Setiap atribut → akan menjadi kolom dalam tiap tabel
- Kardinalitas relasi : 
    - apabila n:n → akan menjadi tabel dengan adanya foreign key
    - apabila 1:1/1:n/n:1 → tidak menjadi tabel

Contohnya seperti gambar dibawah ini :





3. NORMALISASI


       Selain ERD, di dalam basis data ada yang namanya normalisasi. Kenapa harus ada normalisasi ?? Soalnya, dalam basis data ada kemungkinan data yang sama, jadi bisa disebut data tersebut tidak normal, kurang lebih seperti itu. Jadi kita bisa tau kan arti normalisasi apa??
Ya, Normalisasi adalah proses pembentukan struktur basis data sehingga sebagian besar ambiguitas data / kerangkapan data bisa dihilangkan.
Normalisasi dibuat dengan tujuan :

1. Menghilangkan kerangkapan data
2. Mengurangi kompleksitas
3. Mempermudah pemodifikasian data

Tahapan normalisasi ada enam, yaitu : 1NF, 2NF, 3NF, BCNF, 4NF, 5NF, 6NF

Tapi pada umumnya, tahap normalisasi cuma sampai tahap 3NF, jarang banget yang sampai 5NF. Jadi di pembahasan yang terakhir ini, hanya akan dibahas sampai 3NF aja ya.....


1. 1NF (setelah menghilangkan perulangan group)
Di normal ke 1 ini, syaratnya yaitu:
- tidak boleh ada atribut multivalued (tau kan atribut multivalued?? kayak yang udah dijelasin diatas).
- tidak boleh ada atribut komposit (ini juga tau kan?? udah dijelasin diatas juga, hehe)
- setiap atribut harus bernilai atomic (tidak dapat dibagi-bagi lagi)

 
Contoh atribut multivalued dan penormalannya :






Kolom hobi, nilainya lebih dari satu, jadi harus didekomposisi menjadi :

- Tabel mahasiswa





- Tabel hobi








Contoh atribut komposit dan penormalannya :


KodeMK
NamaMK
Dosen
Kelas
Jadwal
Kolom jadwal bisa dipecah lagi kan, sehingga dinormalkan menjadi:


KodeMK
NamaMK
Dosen
Kelas
JadwalHari
JadwalJam


2. 2NF (setelah menghilangkan ketergantungan parsial)

Di normal ke 2 ini, syaratnya yaitu :
- sudah normal tahap 1
- tidak boleh ada ketergantungan parsial (ada atribut yang bergantung hanya pada satu atribut kunci, tetapi di tabel tersebut ada lebih dari satu atribut kunci, (nanti jadi bingung...makanya harus dipisah))
- harus functional dependency (semua atribut yang bukan kunci hanya boleh bergantung kepada atribut kunci aja, ga boleh bergantung sama atribut non-kunci)
- harus ada tabel penghubung atau ada foreign key bagi atribut-atribut yang telah dipisah tadi

Contoh penormalan tahap 2:


nim
mhs_nama
mhs_alamat
mk_kode
mk_nama
mk_sks
nilai
Tabel diatas terdapa 2 primary key (nim dan mk_kode) serta ada kolom nilai yg harus dipisah dari semuanya. Jadi functional dependency-nya:

Tabel mahasiswa
nim
mhs_nama
mhs_alamat

Tabel mata_kuliah
mk_kode
mk_nama
mk_sks

Tabel nilai
nim
mk_kode
nilai


3. 3NF (setelah menghilangkan ketergantungan transitif)

Di normal ke 3 ini, syaratnya yaitu :
- sudah normal tahap 2
- tidak ada ketergantungan transitif (yaitu atribut bukan kunci tergantung pada atribut bukan kunci lainnya)

Contoh penormalan tahap 3:

nrp
nama
alm_jalan
alm_kota
alm_provinsi
alm_kodepos
Tabel diatas ada atribut non-primary key terhadap atribut non-primary key lainnya yaitu alm_kodepos, jadi harus di dekomposisi menjadi:

Tabel mahasiswa
nrp
nama
alm_jalan
alm_kodepos

Tabel kodepos
alm_kodepos
alm_provinsi
alm_kota





 
       Oke seperti itu mungkin pembahasan yang bisa saya jelasin... Biarin blog-nya jelek, tapi insyaallah isinya ngga... (saolnya saya buat dengan sepenuh hati nih..... hehe)
Sekian dulu ya dari saya, semoga bisa bermanfaat untuk semua para pembaca. Jangan lupa komen kalau ada kritik atau saran, ditunggu bro komennya!!!!


References :
1. Diktat IK 330 Basis Data oleh Dosen : Budi Laksono Putro (budi.staf.upi.edu)
2. Catatan dan tugas(ERD) pribadi dan kelompok basis data
3. Powerpoint normalisasi oleh Dosen : Budi Laksono Putro (budi.staf.upi.edu)
4. Catatan Kuliah Analisis dan Perancangan Sistem [ Ida Ayu Y. Primashanti] (http://datatik.files.wordpress.com/2010/01/materi-erd.pdf)
5. Website of Computer Science, Indonesian University of Education (cs.upi.edu)