Contohnya
Normalisasi database merupakan suatu pendekatan sistematis untuk meminimalkan redundansi
data pada suatu database agar database tersebut dapat bekerja dengan optimal. Jika anda
seorang database administrator ketika terjadi sesuatu pada database seperti penurunan kinerja,
mungkin anda akan ditanya apakah database tersebut telah di normalisasi?
Tujuan Normalisasi Database
Tujuan normalisasi database adalah untuk menghilangkan dan mengurangi redudansi data dan
tujuan yang kedua adalah memastikan dependensi data (Data berada pada tabel yang tepat).
Jika data dalam database tersebut belum di normalisasi maka akan terjadi 3 kemungkinan yang
akan merugikan sistem secara keseluruhan.
1. INSERT Anomali : Situasi dimana tidak memungkinkan memasukkan beberapa jenis data
secara langsung di database.
2. DELETE Anomali: Penghapusan data yang tidak sesuai dengan yang diharapkan, artinya
data yang harusnya tidak terhapus mungkin ikut terhapus.
3. UPDATE Anomali: Situasi dimana nilai yang diubah menyebabkan inkonsistensi database,
dalam artian data yang diubah tidak sesuai dengan yang diperintahkan atau yang diinginkan.
Normalisasi Database
Normalisasi database terdiri dari banyak bentuk, dalam ilmu basis data ada setidaknya 9 bentuk
normalisasi yang ada yaitu 1NF, 2NF, 3NF, EKNF, BCNF, 4NF, 5NF, DKNF, dan 6NF. Namun
dalam prakteknya dalam dunia industri bentuk normalisasi ini yang paling sering digunakan ada
sekitar 5 bentuk.
Normal Form
Data yang direkam dan dimasukkan secara mentah dalam suatu tabel pada bentuk ini sangat
mungkin terjadi inkonsistensi dan anomali data
dari manual bon pembelian diatas kita dapat menjadi bentuk normal pertama dengan memisah-
misahkan data pada atribut-atribut yang tepat dan bernilai atomik, juga seluruh record / baris
harus lengkap adanya.
Menghapus beberapa subset data yang ada pada tabel dan menempatkan mereka pada
tabel terpisah.
Menciptakan hubungan antara tabel baru dan tabel lama dengan menciptakan foreign key.
Tidak ada atribut dalam tabel yang secara fungsional bergantung pada candidate key tabel
tersebut.
Contoh normalisasi database bentuk 2NF
Bentuk normal kedua dengan melakukan dekomposisi tabel diatas menjadi beberapa tabel dan
mencari kunci primer dari tiap-tiap tabel tersebut dan atribut kunci haruslah unik.
3. Normal Form (3NF)
Normalisasi database dalam bentuk 3NF bertujuan untuk menghilangkan seluruh atribut atau field
yang tidak berhubungan dengan primary key. Dengan demikian tidak ada ketergantungan transitif
pada setiap kandidat key. Syarat dari bentuk normal ketiga atau 3NF adalah :
Bentuk normal ketiga mempunyai syarat, setiap relasi tidak mempunyai atribut yang bergantung
transitif, harus bergantung penuh pada kunci utama dan harus memenuhi bentuk normal kedua (2
NF).
Membuat database Pembelian
create database pembelian
use pembelian
Membuat table
no_polisi char(10),
warna char(20),
merek char(30),
tahun char(5),
sp_help kendaraan
mekanik_id char(5),
nama_mekanik varchar(50),
sp_help mekanik
kode_parts char(20),
nama_parts varchar(50),
harga int,
sp_help parts
no_faktur char(10),
tanggal datetime,
no_polisi char(10),
mekanik_id char(5),
potongan int,
sp_help bon_pembelian
no_faktur char(10),
kode_parts char(20),
qty int,
harga int,
discount int,
sp_help transaksi_parts
/*jawaban no.3 */
/*jawaban no.3 */
b.kode_parts,c.nama_parts,b.qty,b.harga,b.discount,(b.qty*b.harga)-(b.qty*b.discount) as
jumlah,a.potongan,
from bon_pembelian as a
Normalisasi
•Normalisasi merupakan suatu proses untuk mendapatkan struktur tabel atau relasi yang efisienbeba
s dari anomali, dan mengacu pada cara data item dikelompokkan ke dalam strukturrecord.
•Normalisasi juga merupakan proses pembentukan struktur basis data sehingga sebagian besarambi
guity bisa dihilangkan
Mengapa dilakukan normalisasi?
•Optimalisasi struktur-struktur tabel
•Meningkatkan kecepatan akses
•Menghilangkan pemasukan data yang sama
•Mengurangi redundansi
•Lebih efisien dalam penggunaan penyimpanan
•Integritas data meningkat
Bentuk Normalisasi
•Bentuk Tidak Normal (Unormalized Form)
•Bentuk Normal Kesatu (1NF/ First Normal Form)
•Bentuk Normal Kedua (2NF/ Second Normal Form)
•Bentuk Normal Ketiga (3NF/Third Normal Form)
•Boyce-Codd Normal Form (BCNF)
•Bentuk Normal Keempat (4NF/Fourth Normal Form)
•Bentuk Normal Kelima (5NF/Fifth Normal Form)
ETERGANTUNGAN FUNGSIONAL
•Menggambarkan hubungan, batasan, keterkatian antar atribut-atribut dalam relasi
•Suatu atribut disebut ketergantungan fungsional pada yang
lain jika kita menggunakan atribut tersebutuntuk menentukan harga atribut yang lain.
•Simbol yang digunakan adalah à dibaca secara fungsional mementukan
•Notasi : A -> B
A dan B adala atribut dari sebuah tabel.
Secara fungsional A menentukan B /
B tergantung pada A, jika dan hanya jika ada 2 baris datadengan nilai A
yang sama maka nilai B juga sama.
Macam-macam Ketergantungan Fungsional
•Ketergantungan fungsional penuh
•Menunjukan jika terdapat atribut A dan B dalam suatu relasi, dimana:
•B memiliki ketergantungan fungsional secara penuh pada A
NIP -> Nama
B memiliki ketergantungan fungsional secara penuh pada A
•Ketergantungan fungsional parsial
•Ketergantungan fungsional dimana beberapa atribut dapat dihilangkan dari A denganketergantu
ngan tetap dipertahankan
•B memiliki dependensi terhadap subset A
•Ketergantungan fungsional transitif
•Merupakan tipe ketergantungan dimana kondisi A, B,
C adalah atribut sebuah relasi dimana Aà B dan B à C
•Maka C dikatakan sebagai ketergantungan transitif terhadap A melalui B
Ketergantungan Fungsional (KF)
Dalam membuat sebuah Database yang baik, efisisensi tabel sangat diperhatikan. Karena ini
akan berhubungan penghematan kapasitas database nantinya. Salah satu cara untuk membuat
tabel yang efisien adalah dengan menggunakan Metode Ketergantungan Fungsional (KF).
Sebuah tabel T berisi paling sedikit 2 buah atribut, yaitu A dan B. Kita dapat menyatakan notasi
berikut ini : A - B
A secara fungsional menentukan B atau B secara fungsional tergantung pada A
Jika untuk setiap kumpulan baris data (row) yang ada di tabel T, pasti ada 2 baris data (row) di
tabel T dengan nilai untuk A yang sama, maka nilai untuk B pasti juga sama
nim - nama_mhs
nama_kul, nim - indeks_nilai
nama_ku - nim
nim - indeks_nilai
dll.
Itu tadi penjelasan singkat mengenai Ketergantungan Fungsional (KF). Bila terdapat kekurangan
atau kesalahan mohon ditambahi atau dibenarkan. Semoga bermanfaat..
ALJABAR RELASIONAL
a. Selection
Operasi selection dapat didefiniskan sebagai ”Kumpulan semua tuple-tuple/record-record
dalam suatu tabel yang memenuhi kondisi P”. Operasi selection berfungsi untuk menyeleksi
tuple-tuple yang memenuhi predikat yang diberikan dari sebuah tabel relasi. Simbol sigma “σ”
digunakan untuk menunjukkan operasi select. Predikat muncul sebagai subscript dari σ dan
kondisi yang diinginkan yang ditulis dalam predikat. Argumen diberikan dalam tanda kurung yang
mengikuti σ dan berisi tabel relasi yang dimaksud.
Contoh penggunaan operasi selection :
Misalkan ada 3 tabel, yaitu tabel dosen, tabel matakuliah seperti berikut:
Tabel Dosen
NIP Nama_dosen Jenis_kelamin Alamat Kota
95001 Bambang Pria Jl. Mawar Jakarta Selatan
95002 Asri Wanita Jl. Anggrek Jakarta Selatan
95003 Hesti Wanita Jl. Bungur Jakarta Timur
95004 Dimas Pria Jl. Kemuning Cikarang
b. Projection
Operasi projection berfungsi untuk memilih nilai atribut-atribut tertentu saja dari sebuah
tabel relasi. Simbol phi “π” digunakan untuk menunjukkan operasi projection. Predikat muncul
sebagai subscript dari π dan hanya nama atribut yang diinginkan yang ditulis dalam predikat.
Argumen diberikan dalam tanda kurung yang mengikuti π dan berisi tabel relasi yang dimaksud.
Contoh penggunaan operasi projection :
1. Tampilkan NIP dan Nama_dosen dari tabel Dosen
Aljabar relasional : πNIP,Nama_dosen(Dosen)
Hasil:
NIP Nama_dosen
95001 Bambang
95002 Asri
95003 Hesti
95004 Dimas
2. Tampilkan NIP, Nama_dosen, dan kota dari tabel Dosen dari dosen-dosen yang bertempat
tinggal di kota Jakarta Selatan.
Aljabar relasional : πNIP,Nama_dosen,Kota(σKota=Jakarta Selatan(Dosen)
Hasil :
NIP Nama_dosen Jenis_kelamin Kota
95001 Bambang Pria Jakarta Selatan
95002 Asri Wanita Jakarta Selatan
c. Union
Operasi union berfungsi untuk mendapatkan gabungan nilai atribut dari sebuah tabel
relasi dengan nilai atribut dari tabel relasi lainnya. Simbol “∪” digunakan untuk menunjukkan
operasi union. Operasi union bernilai benar bila terpenuhi 2 kondisi, yaitu : Derajat dari 2 tabel
relasi yang dioperasikan harus sama dan domain dari atribut yang dioperasikan juga harus sama.
Contoh penggunaan operasi union :
Tampilkan NIP( dari relasi Dosen) Union dari NIP (dari tabel Mengajar)
Aljabar Relasional: πNIP (Dosen) ∪ NIP (Mengajar)
Hasil:
NIP
95001
95002
95003
95004
d. Set Difference
Operasi set difference berfungsi untuk mendapatkan nilai yang ada dalam sebuah tabel
relasi, tapi tidak ada dalam tabel relasi lainnya. Simbol “-“ digunakan untuk menunjukkan
operasi set difference.
Contoh penggunaan operasi set difference :
Tampilkan NIP (dari tabel Dosen) Set-difference dari NIP (dari tabel Mengajar).
Aljabar relasional: πNIP (Dosen) - NIP (Mengajar)
Hasil :
NIP
95001
e. Cartesian Product
Operasi cartesian product berfungsi untuk mengkombinasikan informasi yang ada dalam
2 tabel relasi dan menghasilkan sebuah tabel relasi yang baru. Simbol “x“ digunakan untuk
menunjukkan operasi cartesian product.
Contoh penggunaan operasi cartesian product :
Tampilkan Kode_mk, Nama_mk, Sks (dari tabel Matakuliah), Kelas (dari tabel Mengajar) dimana
kelas yang diajar adalah kelas A.
Aljabar relasional: πKode_mk,Nama_mk,Sks,Kelas (σKelas=A ˄ Mengajar.Kode_mk=Matakuliah.Kode_mk(Mengajar x Matakuliah))
atau
σMengajar.Kode_mk=Matakuliah.Kode_mk ˄ Kelas=A ((πKode_mk,Nama_mk,Sks (Matakuliah)) x πKelas(Mengajar))
Hasil:
Kd_mk Nama_mk Sks Kelas
MPK1 PKN 2 A
MKB3 BDT 3 A
MKB4 ASD 3 A
f. Intersection
Set intersection / Intersection (∩) termasuk ke dalam operator tambahan, karena operator
ini dapat diderivikasi dari operator dasar seperti berikut:
A ∩ B = A - ( A – B ), atau A ∩ B = B - ( B – A )
Operasi set intersection berfungsi untuk mendapatkan nilai yang ada dalam sebuah tabel
relasi dan juga ada dalam tabel relasi lainnya. Simbol “∩“ digunakan untuk menunjukkan
operasi set intersection.
Contoh penggunaan operasi set intersection :
Tampilkan NIP (dari tabel Dosen) Set Intersection dengan NIP (dari tabel Mengajar).
Aljabar relasional: πNIP (Dosen) ∩ πNIP (Mengajar)
Hasil:
NIP
95002
95003
95004
g. Natural Join
Operasi natural join berfungsi untuk menggabungkan
operasi selection dancartesian product menjadi hanya 1 operasi saja. Simbol “⋈“ digunakan
untuk menunjukkan operasi natural join. Operasi natural join hanya menghasilkan tupel yang
mempunyai nilai yang sama pada 2 atribut yang bernama sama pada 2 tabel relasi yang berbeda.
Contoh penggunaan operasi natural join :
Tampilkan seluruh data yang ada pada tabel Matakuliah dan tabel Mengajar.
Aljabar relasional : Matakuliah ⋈ Mengajar.Kode_mk=Matakuliah.Kode_mk Mengajar
Hasil:
Kd_mk Nama_mk Sks NIP Kelas
MKB3 BDT 3 95002 A
MKB4 ASD 3 95002 A
MPK1 PKN 2 95003 A
MPK1 PKN 2 95003 B
MKB4 ASD 3 95004 B
h. Theta Join
Operasi theta join berfungsi untuk mengkombinasikan tupel dari 2 tabel relasi dimana
kondisi dari kombinasi tersebut tidak hanya nilai dari 2 atribut bernama sama, tetapi kondisi yang
diinginkan juga bisa menggunakan operator relasional (≤, <, =, >, ≥).
Operasi theta join merupakan ekstensi dari natural join.
Contoh penggunaan operasi theta join:
Tampilkan seluruh data yang ada pada tabel Matakuliah dan tabel Mengajar.
Aljabar relasional : Matakuliah ⋈ Mengajar.Kode_mk=Matakuliah.Kode_mk Mengajar
Hasil:
Kd_mk Nama_mk Sks NIP Kd_mk Kelas
MKB3 BDT 3 95002 MKB3 A
MKB4 ASD 3 95002 MKB4 A
MPK1 PKN 2 95003 MPK1 A
MPK1 PKN 2 95003 MPK1 B
MKB4 ASD 3 95004 MKB4 B
A. CONCURRENCY
Concurrency adalah sebuah mekanisme pada system basis data yang mengijinkan
banyak transaksi pada saat bersamaan untuk mengakses data yang sama tanpa adanya
gangguan. Pada umumnya terdapat 3 masalah utama pada concurrency:
Lost update problem, ketika dua user mengupdate dua buah data yang sama
Contoh :
Satuan Waktu Transaksi A Transaksi B
1 Retrieve r –
2 – Retrieve r
3 Update r –
4 – Update r
Dari contoh diatas, maka transaksi A tidak akan dianggap dan data update pada transaksi A akan
di overwrite oleh transaksi B Ini akan menimbulkan lost update problem pada transaksi A.
Uncommited dependency problem, ketika user yang satu me-retrieve data dan user yang
lain me-rollback data tersebut
Contoh :
Satuan Waktu Transaksi A Transaksi B
1 – Update r
2 Update r –
3 – Rollback
Dari contoh diatas, maka transaksi A akan menerima data yang salah karena pada transaksi B
saat di update terjadi kesalahan kemudian di rollback.
Inconsistent analysis problem, ketika user yang satu meretrieve data dan user yang lain
mengupdate data tersebut
Contoh :
Satuan Waktu Transaksi A Transaksi B
1 Retrieve r1 –
2 Retrieve r2 –
3 – Update r1
4 – Commit
5 Update r3 = r1 + r2
Dari contoh diatas, maka transaksi A akan menghasilkan data yang salah dan tidak sesuai
database karena saat analisis di transaksi A terjadi update data pada salah satu datanya.
Untuk menangani masalah-masalah tersebut, dilakukan proses locking, jika sebuah transaksi
ingin record/resource tidak berubah dalam waktu tertentu maka dia bisa meminta lock. Ada dua
jenis lock yaitu :
Query
adalah semacam kemampuan untuk menampilkan suatu data dari database dimanamengambil
dari table-tabel yang ada di database, namun tabel tersebut tidak semuaditampilkan sesuai
dengan yang kita inginkan. data apa yang ingin kita tampilkan.misal : data peminjam dengan
buku yang dipinjam, maka nanti akan mengambil data daritable peminjam dan tabel buku.
Query
adalah suatu extracting data dari suatu database dan menampilkannya untuk
“pengolahan” lebih lanjut.
Query
adalah pertanyaan atau permintaan informasi tertentu dari sebuah basisdata yangditulis dalam
format tertentu.
Query
adalah perintah-perintah untuk mengakses data pada sistem basis data
Query
adalah merupakan bahasa untuk melakukan manipulasi terhadap database, yang
telahdistandarkan dan lebih dikenal dengan nama Structured Query Language (SQL)
Pada kesempatan kali ini saya akan menjelaskan contoh-contoh query dalam MySQL. Tabel-
tabel yang akan kita gunakan adalah sebagai berikut:
matakuliah hanya ditawarkan sekali dalam setahun, yaitu pada semester 1 (ganjil) saja
atau semester 2 (genap) saja dan tidak kedua-duanya.
bila pernah mengulang matakuliah, nilai yang diikutkan untuk perhitungan IP adalah nilai
terakhir
matakuliah dikatakan lulus bila nilai yang diperoleh minimal ‘D’