DOSEN PENGAJAR
Yuvi Darmayunata, S.T, M.Kom
DISUSUN OLEH:
1. FELDIANSYAH PUTRA (1757201021)
Pengertian 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).
Tujuan Normalisasi
Untuk menghilang kerangkapan data
Proses Normalisasi
Data diuraikan dalam bentuk tabel, selanjutnya dianalisis 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.
Pentingnya Normalisasi
Bentuk normalisasi yang sering digunakan adalah 1st NF, 2nd NF, 3rd NF,
dan BCNF.
Bentuk ini merupakan kumpulan data yang akan direkam, tidak ada keharusan mengikukti
format tertentu, dapat saja data tidak lengkap atau terduplikasi. Data dikumpulkan apa adanya
sesuai dengan saat menginput.
Untuk mentransformasikan tabel yang belum ternomalisasi di atas menjadi tabel yang
memenuhi kriteria 1NF adalah kita harus merubah seluruh atribut yang multivalue menjadi
atribut single value, dengan cara menghilangkan repeating group pada tabel di atas.
Pada tahap ini dilakukan penghilangan beberapa group elemen yang berulang agar menjadi
satu harga tunggal yang berinteraksi di antara setiap baris pada suatu tabel, dan setiap atribut
harus mempunyai nilai data yang atomic (bersifat atomic value). Atom adalah zat terkecil yang
masih memiliki sifat induknya, bila terpecah lagi maka ia tidak memiliki sifat induknya.
1. setiap data dibentuk dalam flat file, data dibentuk dalam satu record demi satu record nilai dari
field berupa “atomic value”.
Langkah pertama yang dilakukan pada Tabel Pelanggan Biaya (pada Tabel 9.3) tersebut
adalah menghilangkan elemen data yang berulang dengan data-data Pelanggan yang sesuai pada
setiap baris. Hasil dari tabel yang telah memenuhi bentuk normal pertama dapat dilihat pada
Tabel 9.4. kita dapat mengidentifikasi primary key untuk relasi Pelanggan_Biaya yang masih
memiliki composite key (No_Pelanggan, No_Property). Pada kasus ini kita akan memperoleh
primary key yang bersifat composite key. Relasi Pelanggan_Biaya dapat didefinisikan sebagai
berikut. Pelanggan_Biaya =(No_Pelanggan, No_Property, Nama, Alamat_Property, Tgl_Pinjam,
Tgl_Selesai, Biaya,No_Pemilik, Nama_Pemilik)
Bentuk normal kedua didasari atas konsep full functional dependency (ketergantungan
fungsional sepenuhnya) yang dapat didefinisikan sebagai berikut. Jika A adalah atribut-atribut
dari suatu relasi, B dikatakan full functional dependency (memiliki ketergantungan fungsional
terhadap A, tetapi tidak secara tepat memiliki ketergantungan fungsional dari subset (himpunan
bagian) dari A.
Walaupun relasi 2-NF memiliki redudansi yang lebih sedikit dari pada relasi 1-NF, namun
relasi tersebut masih mungkin mengalami kendala bila terjadi anomaly peremajaan (update)
terhadap relasi tersebut.
Misalkan kita akan melakukan update terhadap nama dari seorang Pemilik (pemilik), seperti
Durki (No_Pemilik: CO93), kita harus melakukan update terhadap dua baris dalam relasi
Property_Pemilik (lihat Tabel 9.5, (c) relasi Property_Pemilik). Jika kita hanya mengupdate satu
baris saja, sementara baris yang lainnya tidak, maka data didalam database tersebut akan
inkonsisten / tidak teratur. Anomaly update ini disebabkan oleh suatu ketergantungan transitif
(transitive dependency). Kita harus menghilangkan ketergantungan tersebut dengan melakukan
normalisasi ketiga (3-NF).
2. Atribute bukan kunci (non-key) harus tidak memiliki ketergantungan transitif, dengan kata
lain suatu atribut bukan kunci (non_key) tidak boleh memiliki ketergantungan fungsional
(functional dependency) terhadap atribut bukan kunci lainnya, seluruh atribut bukan kunci pada
suatu relasi hanya memiliki ketergantungan fungsional terhadap priamry key di relasi itu
saja. Seluruh atribut non-primary key pada relasi Pelanggan dan Biaya di atas terlihat memiliki
ketergantungan fungsional (functional dependency) terhadap primary key dari masing-masing
tabel / relasi. Relasi / tabel Pelanggan dan Biaya di atas tidak memiliki ketergantungan transitif
(transitive dependency), sehingga tabel tersebut telah memenuhi kriteria normal ketiga (3-NF).
Seluruh atribut non-primary key pada relasi Property_Pemilik di atas terlihat memiliki
ketergantungan fungsional (functional dependency) terhadap primary key, kecuali
Nama_Pemilik yang masih memiliki ketergantungan fungsional (functional dependency)
terhadap No_Pemilik. Inilah contoh ketergantungan dari transitif (transitive dependency), yang
terjadi ketika atribut non-primary key (Nama_Pemilik) bergantung secara fungsi terhadap satu
atau lebih atribut non-primary key lainnya (No_Pemilik). Kita harus menghilangkan
ketergantungan transitif (transitive dependency) tersebut dengan menjadikan relasi
Property_Pemilik menjadi 2 relasi / tabel dengan format / bentuk sebagai berikut.
Nama_PemilikNo_Pemilik
Hasil akhir normalisasi tabel Pelanggan_Biaya sampai ke bentuk normal ketiga adalah
sebagai berikut:
Seluruh atribut bukan kunci pada suatu relasi hanya memiliki ketergantungan fungsional
terhadap primary key di relasi itu saja.
TRIGGER
Pengertian Trigger
Dalam DBMS (Database Management System), trigger merupakan kumpulan script yang
berhubungan dengan table, view ataupun skema yang dijalankan secara otomatis ketika terdapat
event yang dijalankan. Event tersebut meliputi operasi yang biasa dilakukan dalam mengolah
database, seperti :
DML (Data Manipulation Language) yang meliputi DELETE, INSERT atau UPDATE
DDL (Data Definition Language) yang meliputi CREATE, ALTER atau DROP
Operasi Database lainnya, seperti SERVERERROR, LOGON, LOGOFF, STARTUP
atau SHUTDOWN)
nama_trigger : nama trigger yang dibuat sesuai dengan karakteristik penamaan dalam
MySQL
[BEFORE|AFTER] : menunjukkan waktu untuk mengeksekusi trigger secara otomatis,
apakah sebelum atau sesudah perubahan pada row data table. Jadi pilihannya adalah
AFTER atau BEFORE.
[INSERT | UPDATE | DELETE] : digunakan untuk menentukan event yang
menyebabkan terjadinya trigger, pilIhan event tersebut terdiri dari INSER, UPDATE dan
DELETE.
nama_table : menunjukkan table yang akan dilakukan trigger didalamnya
trigger_body : menunjukkan statement perintah dalam MySQL yang akan otomatis
dijalankan jika event sedang aktif.
Pada umumnya, statement yang digunakan dalam trigger hanya berupa satu perintah saja.
Namun, jika Anda ingin membuat beberapa perintah di dalamnya, maka gunakan perintah
tersebut ke dalam blok BEGIN … END. Penggunaan trigger terjadi ketika adanya perubahan
yang terjadi pada record table. Dengan begitu, terdapat Anda perlu menambah referensi ke
record tersebut, yaitu OLD dan NEW. OLD menandakan referensi record sebelum terjadinya
perubahan, sedangkang OLD menandakan referensi setelah terjadinya perubahan.
Fungsi Trigger
Biasanya dalam relasional database, trigger dapat ditemui ketika melakukan perintah
eksekusi table. Hal itu menjadi lebih bermanfaat trigger menjaikan penulisan pemrograman yang
sederhana dan dapat menjaga informasi agar tetap konsisten dalam database. Selain itu, terdapat
beberapa fungsi trigger yang akan dijelaskan dibawah ini.
1. Integritas Data
Dengan adanya trigger, Anda dapat mempertahankan integritas table yang terdapat dalam
database. Sebab, Anda dapat melakukan operasi-operasi yang berkaitan dengan pengolahan
database, seperti INSERT, UPDATE dan DELETE
2. Mencegah Error
Trigger dalam MySQL dapat mencegah terjadinya error dalam pengoperasian data. Jika
terjadi error dalam pendefinisian trigger, error tersebut tidak mengganggu trigger yang sedang
berjalan.
Dalam praktiknya, biasa trigger digunakan untuk melakukan proses transaksi. Anda dapat
menyimpan record transaksi tersebut ke table lain (history) tanpa harus takut jika data tersebut
di-update atau delete. Semua perubahan yang terjadi juga dapat diacak berdasarkan waktu
pembuatannya.
Contoh Trigger
Setelah Anda memahami pengertian dari trigger beserta fungsinya, Penulis akan memberikan
beberapa contoh penerapan dari penggunaan trigger dalam database. Pada umumnya¸ trigger
dapat diaktivasi menggunakan event INSERT, UPDATE dan DELETE. Untuk lebih jelasnya,
dibawah ini akan dijelaskan mengenai beberapa contoh penerapan dari event tersebut. Namun,
Anda harus membuat beberapa tabel dalam database terlebih dahulu.
1. Table Penjualan
2. Table Pembelian
Trigger ini memiliki fungsi untuk menjalankan tugas trigger sebelum proses penambahan
(insert) data dalam suatu table dilakukan. Berikut sintaks trigger dalam MySQL :
Sebagai contoh, misalkan Anda ingin memeriksa operasi penambahan data barang yang baru
dalam table Barang. Jika barang tersebut telah dimasukkan sebelumnya maka akan mucul
peringatan “ID Barang sudah ada”. Maka perintah sederhananya adalah :
Trigger ini memiliki fungsi untuk menjalankan tugas trigger setelah proses penambahan
(insert) data dalam suatu table dilakukan. Berikut sintaks trigger dalam MySQL :
CREATE TRIGGER nama_trigger
AFTER INSERT
ON nama_table FOR EACH ROW
BEGIN
// deklarasi variable
END;
Sebagai contoh, ketika ingin menambahkan data barang yang sudah terjual, maka otomatis
jumlah pada table Barang akan berkurang. Maka perintah untuk trigger dalam MySQL adalah
Trigger ini memiliki fungsi untuk menjalankan tugas trigger sebelum proses pengubahan
(update) data dalam suatu table dilakukan. Berikut sintaks trigger dalam MySQL :
Misalkan dalam tabel Barang dengan Id_brg = ‘BRG001’ dengan nama_barang = “Piring”.
Dengan menggunakan perintah BEFORE UPDATE ini nama barang akan diubah menjadi
“Gelas”. Maka perintah yang sesuai untuk kasus diatas adalah :
END;
Trigger ini memiliki fungsi untuk menjalankan tugas trigger sebelum proses penghapusan
(delete) data dalam suatu table dilakukan. Berikut sintaks trigger dalam MySQL :
Misalnya, Anda ingin menghapus record Barang dengan id_brg = ‘BRG001’, nama_barang =
‘ Gelas’. Maka otomatis, stok barang akan bertambah sesuai dengan data barang yang telah
dihapus. Berikut mengenai sintaks untuk AFTER DELETE tersebut :
https://rifalfahrudin.wordpress.com/2015/09/27/normalisasi-database-1nf-2nf-3nf/
https://huntershare.wordpress.com/category/pengertian-normalisasi-data-base-dan-
contohnya/
https://www.nesabamedia.com/pengertian-trigger/
TRIGGER DATABASE AKADEMIK
Saya terlebih dahulu menambah field status di tabel Mahasiswa dan membuat tabel Status
Mahasiswa. Di Tabel Status Mahasiswa saya membuat Trigger. Trigger yang saya buat yaitu
Insert,Update, dan Delete pada field Status di tabel Mahasiswa yang insert,Update dan Delete
berasal dari tabel Status Mahasiswa. Misalnya ketika saya menginput Status “Aktif” ditabel
Status Mahasiswa maka otomatis Status di tabel Mahasiswa berubah “Aktif”.
a. Insert
b. Update
Update Status di tabel Status Mahasiswa yg awalnya ”aktif” menjadi “tidak aktif”
Tampilan tabel Status Mahasiswa satelah di Update
c. Delete
Insert 1 nilai lagi di tabel Status Mahasiswa dan Tampilan Status Mahasiswa
Tampilan tabel Mahasiswa