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:
§ 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:
- Entitas,melambangkan objek yang terdapat dalam basis data. Entitas merupakan individu yang mewakili sesuatu yang nyata (eksistensinya) dan dapat dibedakan dari sesuatu yang lain.
- Relasi,menunjukan adanya hubungan diantara sejumlah entitas yang berasal dari himpunan entitas yang berbeda.
- 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:
- Mengidentifikasi dan menetapkan seluruh himpunan entitas yang akan terlibat,
- Menentukan atribut-atribut dari setiap entitas,
- Menentukan atribut primary key dari tiap-tiap entitas,
- Menentukan relationship antar entitas,
- Menentukan atribut-atribut dari setiap relationship (jika ada),
- Menentukan Cardinality Rasio,
- 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
- Tidak adanya atribut multivalue, atribut komposit atau kombinasi.
- Mendefinisikan atribut kunci.
- 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,
- Sudah memenuhi dalam bentuk normal kesatu (1NF)
- Semua atribut kunci bukan kunci hanya boleh tergantung (functional dependency) pada atribut kunci.
- Jika ada ketergantungan parsial maka atribut teresbut harus dipisahkan pada tabel yang lain.
- 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,
- Sudah berada dalam bentuk normal kedua (2NF).
- 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.
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

