Anda di halaman 1dari 19

Normalisasi Database Beserta Pengertian dan 

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

Contoh Normal Form

Normalisasi Database Form (Rudiawan16)

1. Normal Form (1NF)


Bentuk normal yang pertama atau 1NF mensyaratkan beberapa kondisi dalam sebuah database,
berikut adalah fungsi dari bentuk normal pertama ini.

 Menghilangkan duplikasi kolom dari tabel yang sama.


 Buat tabel terpisah untuk masing-masing kelompok data terkait dan mengidentifikasi setiap
baris dengan kolom yang unik (primary key).
Contoh Normalisasi Database 1NF

Nirmalisasi Database 1NF (Rudiawan16)

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.

2. Normal form (2NF)


Syarat untuk menerapkan normalisasi bentuk kedua ini adalah data telah dibentuk dalam 1NF,
berikut adalah beberapa fungsi normalisasi 2NF.

 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

Normalisasi Database 2NF (Rudiawan16)

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 :

 Memenuhi semua persyaratan dari bentuk normal kedua.


 Menghapus kolom yang tidak tergantung pada primary key.
Contoh Normalisasi Database Bentuk 3NF

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

Normalisasi Database 3NF (Rudiawan16)

BCNF Boyce–Codd normal form


Merupakan sebuah teknik normalisasi database yang sering disebut 3.5NF, memiliki hubungan
yang sangat erat dengan bentuk 3NF. Pada dasarnya adalah untuk menghandle anomali dan
overlooping yang tidak dapat di handle dalam bentuk 3NF. Normalisasi database bentuk ini
tergantung dari kasus yang disediakan, tidak semua tabel wajib di normalisasi dalam bentuk
BCNF.

 
Membuat database Pembelian
create database pembelian

use pembelian

Membuat table

create table kendaraan (

no_polisi char(10),

warna char(20),

merek char(30),

tahun char(5),

primary key (no_polisi)

sp_help kendaraan

create table mekanik (

mekanik_id char(5),

nama_mekanik varchar(50),

primary key (mekanik_id)

sp_help mekanik

create table parts (

kode_parts char(20),

nama_parts varchar(50),
harga int,

primary key (kode_parts)

sp_help parts

create table bon_pembelian (

no_faktur char(10),

tanggal datetime,

no_polisi char(10),

mekanik_id char(5),

potongan int,

primary key (no_faktur),

constraint FK_nopolisi foreign key (no_polisi) references kendaraan(no_polisi),

constraint FK_mekanik foreign key (mekanik_id) references mekanik(mekanik_id)

sp_help bon_pembelian

create table transaksi_parts (

no_faktur char(10),

kode_parts char(20),

qty int,

harga int,

discount int,

primary key (no_faktur,kode_parts),


constraint FK_nofaktur foreign key (no_faktur) references bon_pembelian(no_faktur),

constraint FK_kodeparts foreign key (kode_parts) references parts(kode_parts)

sp_help transaksi_parts

Mengisi data pada table

/*jawaban no.3 */

/** Isi data table kendaraan **/

INSERT INTO kendaraan VALUES('B3117LB','Biru','Supra X','2005')

INSERT INTO kendaraan VALUES('B2121AA','Merah','Supra X','2005')

/** isi data table mekanik **/

INSERT INTO mekanik VALUES('DDE','Djoko Dewanto')

/** isi data table parts **/

INSERT INTO parts VALUES('20W501000CC','Oli Top 1 000cc',27000)

INSERT INTO parts VALUES('SERV001','Engine Tune Up',25000)

/** isi data table bon_pembelian **/

INSERT INTO bon_pembelian VALUES('05103214',GETDATE(),'B3117LB','DDE',2000)

INSERT INTO bon_pembelian VALUES('05103215',GETDATE(),'B2121AA','DDE',0)

/** isi data table transkasi_parts **/

INSERT INTO transaksi_parts (no_faktur,kode_parts,qty,harga,discount)

select '05103214','20W501000CC',2,harga,1000 FROM parts where kode_parts='20W501000CC'

INSERT INTO transaksi_parts (no_faktur,kode_parts,qty,harga,discount)

select '05103214','SERV001',1,harga,2000 FROM parts where kode_parts='SERV001'

INSERT INTO transaksi_parts (no_faktur,kode_parts,qty,harga,discount)

select '05103215','SERV001',1,harga,2000 FROM parts where kode_parts='SERV001'


Menampilkan data dari table yang telah kita isi

/*jawaban no.3 */

select * from kendaraan

select * from mekanik

select * from parts

select * from bon_pembelian

select * from transaksi_parts

/** Relasi antar table hingga terbentuk 1NF **/

select a.no_faktur, a.tanggal,a.no_polisi,e.warna,e.merek,e.tahun,a.mekanik_id,d.nama_mekanik,

b.kode_parts,c.nama_parts,b.qty,b.harga,b.discount,(b.qty*b.harga)-(b.qty*b.discount) as
jumlah,a.potongan,

(select sum((qty*harga)-(qty*discount))-a.potongan from transaksi_parts where


no_faktur=a.no_faktur) as total

from bon_pembelian as a

join transaksi_parts as b ON a.no_faktur=b.no_faktur

join parts as c ON b.kode_parts=c.kode_parts

join mekanik as d ON a.mekanik_id=d.mekanik_id

join kendaraan as e ON a.no_polisi=e.no_polisi

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

Berikut penjelasan tentang 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

nama_kul nim nama_mhs indeks_nilai

Struktur Data 980001 Ali Akbar A

Struktur Data 980004 Indah Susanti B

Basis Data 980001 Ali Akbar

Basis Data 980002 Budi Haryanto

Basis Data 980004 Indah Susanti

Bahasa Indonesia 980001 Ali Akbar B

Matematika I 980002 Budi Haryanto C

Ketergantungan Fungsional (KF) tabel diatas adalah:

 nim - nama_mhs
 nama_kul, nim - indeks_nilai

Non Ketergantungan Fungsional (KF) tabel diatas adalah:

 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

Aljabar relasional adalah sebuah bahasa query prosedural yang terdiri dari sekumpulan


operasi dimana masukannya adalah satu atau dua relasi dan keluarannya adalah sebuah relasi
baru sebagai hasil dari operasi tersebut. Operasi-operasi dalam aljabar relasional di
antaranya : selection, projection, union, set difference, cartesian product, intersection, dan join.

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

Tabel Matakuliah                               Tabel Mengajar


Kd_mk Nama_mk Sks NIP Kd_mk Kelas
MPK1 PKN 2 95002 MKB3 A
MKB3 BDT 3 95002 MKB4 A
MKB4 ASD 3 95003 MPK1 A
95003 MPK1 B
95004 MKB4 B
Tampilkan daftar dosen yang berjenis kelamin pria dari tabel Dosen.
Aljabar relasional : σJenis_kelamin=Pria(Dosen)
Hasil:
NIP Nama_dosen Jenis_kelamin Alamat Kota
95001 Bambang Pria Jl. Mawar Jakarta Selatan
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 :

·         Exclusive Lock (Xlock) -> write lock


·         Shared Lock (Slock) -> read lock

Bagaimana cara kerjanya?


·         Jika transaksi A memegang Xlock pada sebuah record, maka permintaan lock (X,S) pada
record yang sama harus diabaikan.
·         Jika transaksi A memegang Slock pada record R maka :
a.    Permintaan Xlock transaksi lain pada R ditolak
b.       Permintaan Slock transaksi lain pada R diterima

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(kodemk, namamk, sks), berisi daftar matakuliah yang ditawarkan


 dosen(nip, nama), berisi daftar dosen pengampu kuliah
 mahasiswa(nim, nama, dosenpembimbing), berisi daftar mahasiswa
 kuliah(kodekuliah, kodemk, nip, thnakademik, semester), berisi daftar matakuliah dan
dosen pengampu
 peserta(nim, kodekuliah, nilai), berisi kuliah yang diikuti mahasiswa beserta nilainya
dalam huruf

Dalam pembahasan kali ini diasumsikan:

 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’

Berikut ini adalah contoh-contoh query dalam MySQL:


1.      Menampilkan banyaknya SKS yang telah diselesaikan oleh masing-masing mahasiswa
a.       Bila matakuliah yang diulang semua masuk dalam perhitungan
SELECT nim, SUM( sks ) jumlahsks
FROM peserta, (
SELECT kodekuliah, kuliah.kodemk, sks
FROM kuliah, matakuliah
WHERE kuliah.kodemk = matakuliah.kodemk
)A
WHERE peserta.kodekuliah = A.kodekuliah
GROUP BY nim
Penjelasan:
Pada query ini kita menampilkan jumlah SKS yang telah diselesaikan oleh masing-masing
mahasiswa bila matakuliah yang diulang semua masuk dalam perhitungan. Pertama-tama, kita
melakukan join tabel kuliah dengan tabel matakuliah pada kondisi kodemk pada
tabel kuliah sama dengan kodemk pada tabel matakuliah untuk
mendapatkankodekuliah, kodemk dan sks.
…(
SELECT kodekuliah, kuliah.kodemk, sks
FROM kuliah, matakuliah
WHERE kuliah.kodemk = matakuliah.kodemk
)A

Lalu hasil join tersebut diberi alias A. Selanjutnya, tabel A tadi kita join-kan dengan tabel peserta
pada kondisi kodekuliah pada tabel peserta sama dengan kodekuliah pada tabelA untuk
mendapatkan nim dan sks yang selanjutnya kita menjumlahkan sks dengan SUM(sks) yang
dikelompokkan berdasarkan nim menggunakan GROUP BY nim.
b.      Bila matakuliah yang diulang hanya yang sesuai dengan asumsi yang masuk dalam
perhitungan
SELECT nim, SUM( sks ) totalsks
FROM (
SELECT DISTINCT nim, kodemk
FROM peserta, kuliah
WHERE peserta.kodekuliah = kuliah.kodekuliah
)P, matakuliah
WHERE P.kodemk = matakuliah.kodemk
GROUP BY nim
Penjelasan:
Pada query ini kita menampilkan jumlah SKS yang telah diselesaikan oleh masing-masing
mahasiswa bila matakuliah yang diulang hanya dihitung sekali. Pertama-tama kita melakukan join
tabel peserta dengan tabel kuliah pada kondisi kodekuliah pada tabel peserta sama
dengan kodekuliah pada tabel kuliah untuk mendapatkan nim dan kodemk.
…(
SELECT DISTINCT nim, kodemk
FROM peserta, kuliah
WHERE peserta.kodekuliah = kuliah.kodekuliah
)P …
Kata DISTINCT setelah SELECT digunakan untuk menghilangkan pengulangan record yang
mempunyai nim dan kodemk yang sama agar matakuliah yang diulang oleh seorang mahasiswa
hanya muncul sekali. Hasil join tersebut diberi alias P. Lalu tabel P kita join-kan dengan
tabel matakuliah pada kondisi kodemk pada tabel P sama dengan kodemk pada
tabel matakuliah untuk mendapatkan nim dan sks yang dijumlahkan dengan SUM(sks) setelah
dikelompokkan berdasarkan GROUP BY nim.
2.      Menampilkan data-data yang bisa untuk melakukan perhitungan IPK (berdasar asumsi di
atas)
SELECT nim, kuliah.kodemk, nilai, sks
FROM peserta, matakuliah, kuliah
WHERE kuliah.kodekuliah = peserta.kodekuliah
AND kuliah.kodemk = matakuliah.kodemk
AND (
nim, kuliah.kodemk, thnakademik
)
IN (
SELECT nim, kodemk, MA  thnakademik ) thnterakhir
FROM peserta, kuliah
WHERE kuliah.kodekuliah = peserta.kodekuliah
GROUP BY nim, kodemk
)
Penjelasan:
Pada query ini kita melakukan join pada tiga tabel, yaitu peserta, matakuliah dan kuliah dengan
kondisi kodekuliah pada tabel kuliah sama dengan kodekuliah pada
tabelpeserta dan kodemk pada tabel kuliah sama dengan kodemk pada tabel matakuliah. Setelah
itu kita lakukan operasi intersection dengan query yang menampilkan tahun terakhir
menyelesaikan suatu matakuliah.

AND (
nim, kuliah.kodemk, thnakademik
)
IN (
SELECT nim, kodemk, MA  thnakademik ) thnterakhir
FROM peserta, kuliah
WHERE kuliah.kodekuliah = peserta.kodekuliah
GROUP BY nim, kodemk
)
Pada query untuk menampilkan tahun terakhir menyelesaikan suatu matakuliah, kita melakukan
join pada tabel peserta dan tabel kuliah dengan kondisi kodekuliah pada tabel kuliahsama
dengan kodekuliah pada tabel peserta. Lalu untuk mencari tahun terakhir digunakan fungsi MA
thnakademik) setelah dikelompokkan berdasarkan nim dan kodemk denganGROUP BY
nim, kodemk. Lalu operasi intersection dilakukan dengan memeriksa apakah record nim, kodemk,
thnakademik dari hasil join tiga tabel ada pada hasil query untuk menampilkan tahun terakhir
menyelesaikan suatu matakuliah.
3.      Menampilkan dosen yang pernah mengampu kelas matakuliah yang pesertanya tidak lebih
dari 15 mahasiswa
SELECT DISTINCT nip
FROM kuliah, (
SELECT kodekuliah, COUNT( * ) jumlahpeserta
FROM peserta
GROUP
BY kodekuliah
) banyakpeserta
WHERE kuliah.kodekuliah = banyakpeserta.kodekuliah
AND jumlahpeserta <=15
Penjelasan:
Pada query ini kita akan menampilkan dosen yang pernah mengampu matakuliah yang
pesertanya <= 15 mahasiswa. Awalnya menggunakan tabel peserta, kita hitung dahulu jumlah
peserta dari setiap kuliah dengan menggunakan COUNT  setelah dikelompokkan berdasarkan
kodekuliah dengan GROUP BY kodekuliah.
…(
SELECT kodekuliah, COUNT( * ) jumlahpeserta
FROM peserta
GROUP
BY kodekuliah
) banyakpeserta

Setelah itu query tersebut diberi alias banyakpeserta. Lalu pada query utama kita melakukan join
pada tabel banyakpeserta dengan tabel kuliah pada kondisi kodekuliah pada tabelkuliah sama
dengan kodekuliah pada tabel banyakpeserta serta menambahkan kondisi jumlahpeserta <= 15.
Pada query utama kita menampilkan nip yang di dahului dengan kataDISTINCT agar nip yang
ditampilkan tidak ada perulangan.
4.      Menampilkan nama mahasiswa yang telah lulus lebih dari 100 SKS
SELECT nama
FROM (
SELECT nim, SUM( sks ) jumlahsks
FROM peserta, kuliah, matakuliah
WHERE nilai <  'E'
AND kuliah.kodekuliah = peserta.kodekuliah
AND kuliah.kodemk = matakuliah.kodemk
GROUP
BY nim
) yanglulus, mahasiswa
WHERE jumlahsks >100
AND yanglulus.nim = mahasiswa.nim
Penjelasan:
Pada query ini kita akan menampilkan nama mahasiswa yang telah lulus > 100 SKS. Mula-mula
kita menghitung jumlah SKS dari matakuliah yang lulus untuk masing-masing mahasiswa. Kita
melakukan join pada tiga tabel peserta, kuliah dan matakuliah dengan kondisi kodekuliah pada
tabel kuliah sama dengan kodekuliah pada tabel peserta dan kodemk pada tabel kuliah sama
dengan kodemk pada tabel matakuliah disertai dengan kondisi nilai < ‘E’ yang berarti nilai >= ‘E’
tidak diikutkan. Lalu sks yang memenuhi kondisi dijumlahkan dengan SUM(sks) yang diberi
alias jumlahsks setelah dikelompokkan berdasarkan nim dengan GROUP BY nim. Query tersebut
diberi alias jumlahlulus.
…(
SELECT nim, SUM( sks ) jumlahsks
FROM peserta, kuliah, matakuliah
WHERE nilai <  'E'
AND kuliah.kodekuliah = peserta.kodekuliah
AND kuliah.kodemk = matakuliah.kodemk
GROUP
BY nim
) yanglulus …
Pada query utama kita melakukan join pada tabel yanglulus dengan mahasiswa dengan
kondisi nim pada tabel yanglulus sama dengan nim pada tabel mahasiswa disertai
kondisijumlahsks > 100 untuk menampilkan nama mahasiswa yang telah lulus > 100 SKS.
5.      Menampilkan banyaknya siswa yang telah lulus tugas akhir bila kode matakuliah untuk
tugas akhir adalah ‘M0012’
SELECT COUNT( * ) lulusTA
FROM peserta, kuliah
WHERE nilai <  'E'
AND kuliah.kodekuliah = peserta.kodekuliah
AND kodemk =  'M0012'
Penjelasan:
Pada query kali ini kita akan menampilkan jumlah mahasiswa yang telah lulus tugas akhir bila
kode matakuliah tugas akhir = ‘M0012’. Pertama-tama kita melakukan join pada
tabel peserta dankuliah dengan kondisi kodekuliah pada tabel kuliah sama
dengan kodekuliah pada tabel peserta untuk mendapatkan nilai dan kodemk. Lalu hasil join
tersebut kita saring dengan kondisi nilai < ‘E’ dan kodemk = ‘M0012’ yang selanjutnya setelah
disaring kita hitung dengan COUNT  dan diberi alias lulusTA untuk menghitung jumlah
mahasiswa yang telah lulus tugas akhir.
6.      Menampilkan daftar nomor dan nama mahasiswa beserta IP  berdasar dua asumsi di atas
SELECT buatip.nim, nama, (
SUM( nilaisks ) / SUM( sks )
) ip
FROM mahasiswa, (
SELECT nim, kuliah.kodemk, (
( 69 – ASCII( UPPER( nilai ) ) ) * sks
) nilaisks, sks
FROM peserta, matakuliah, kuliah
WHERE kuliah.kodekuliah = peserta.kodekuliah
AND kuliah.kodemk = matakuliah.kodemk
AND (
nim, kuliah.kodemk, thnakademik
)
IN (
SELECT nim, kodemk, MA  thnakademik ) thnterakhir
FROM peserta, kuliah
WHERE kuliah.kodekuliah = peserta.kodekuliah
GROUP BY nim, kodemk
)
)buatip
WHERE mahasiswa.nim = buatip.nim
GROUP BY nim
Penjelasan:
Pada query yang cukup panjang ini. kita akan menampilkan nomor dan nama mahasiswa beserta
IP berdasar dua asumsi di atas. Pada awalnya kita membuat query untuk
menampilkan nim,kodemk dan nilai yang sudah dikali sks. Query ini mirip seperti query yang
dijelaskan pada nomor 2 dengan sedikit perubahan.
…(
SELECT nim, kuliah.kodemk, (
( 69 – ASCII( UPPER( nilai ) ) ) * sks
) nilaisks, sks
FROM peserta, matakuliah, kuliah
WHERE kuliah.kodekuliah = peserta.kodekuliah
AND kuliah.kodemk = matakuliah.kodemk
AND (
nim, kuliah.kodemk, thnakademik
)
IN (
SELECT nim, kodemk, MA  thnakademik ) thnterakhir
FROM peserta, kuliah
WHERE kuliah.kodekuliah = peserta.kodekuliah
GROUP BY nim, kodemk
)
) buatip
Bagian yang ditebalkan merupakan perubahan yang dilakukan untuk query kali ini. Hasil query
tersebut diberi alias buatip. Lalu kita melakukan join pada tabel buatip dan tabel nama dengan
kondisi nim pada tabel mahasiswa sama dengan nim pada tabel buatip untuk
mendapatkan nama. Selanjutnya untuk menghitung IP, kita menjumlahkan semua nilaisks dan
membaginya dengan jumlah sks dengan SUM(nilaisks) / SUM(sks) setelah dikelompokkan
menurut nim-nya dengan menggunakan GROUP BY nim.
7.      Menghitung IP bila asumsi kedua di atas diganti bahwa nilai yang dipakai untuk penentuan
IP adalah nilai yang terbaik (dari serangkaian mengulang matakuliah)
SELECT nim, (
SUM( nilaimaxsks ) / SUM( sks )
)ip
FROM (
SELECT nim, (
( 69 – ASCII( UPPER( nilaimax ) ) ) * sks
)nilaimaxsks, sks
FROM matakuliah, (
SELECT nim, kodemk, MIN( nilai ) nilaimax
FROM peserta, kuliah
WHERE kuliah.kodekuliah = peserta.kodekuliah
GROUP BY nim, kodemk
) nilaiterbaik
WHERE nilaiterbaik.kodemk = matakuliah.kodemk
)buatip
GROUP BY nim
Penjelasan:
Pada query ini kita akan menampilkan IP dengan asumsi kedua diganti menjadi nilai yang dipakai
untuk menghitung IP adalah nilai yang terbaik. Mula-mula kita mencari nilai terbaik pada setiap
matakuliah untuk masing-masing mahasiswa. Kita melakukan join pada tabel peserta dengan
tabel kuliah pada kondisi kodekuliah pada tabel kuliah sama dengan kodekuliah pada
tabel peserta untuk mendapatkan kodemk dan nilai. Lalu kita mencari nilai terbaik dari setiap
matakuliah untuk masing-masing mahasiswa dengan MIN(nilai) setelah dikelompokkan
berdasarkan nim dan kodemk dengan menggunakan GROUP BY nim, kodemk karena nilai ascii
‘A’ < ‘B’ < ‘C’ < ‘D’ < ‘E’.
…(
SELECT nim, kodemk, MIN( nilai ) nilaimax
FROM peserta, kuliah
WHERE kuliah.kodekuliah = peserta.kodekuliah
GROUP BY nim, kodemk
) nilaiterbaik

Hasil query tersebut diberi alias nilaiterbaik. Setelah itu kita melakukan join
tabel nilaiterbaik dengan tabel matakuliah pada kondisi kodemk pada tabel nilaiterbaik sama
dengan kodemk pada tabel kuliah untuk mendapatkan sks.
Selanjutnya ditampilkan nim, nilaimaxsks yang merupakan nilaimax dikali sks serta sks.
…(
SELECT nim, (
( 69 – ASCII( UPPER( nilaimax ) ) ) * sks
)nilaimaxsks, sks
FROM matakuliah, (
SELECT nim, kodemk, MIN( nilai ) nilaimax
FROM peserta, kuliah
WHERE kuliah.kodekuliah = peserta.kodekuliah
GROUP BY nim, kodemk
) nilaiterbaik
WHERE nilaiterbaik.kodemk = matakuliah.kodemk
)buatip

Hasil query tersebut diberi alias buatip. Kemudian kita menghitung IP seperti query pada nomor 6
yaitu SUM(nilaimaxsks) / SUM(sks)  setelah dikelompokkan berdasarkan nimdengan
menggunakan GROUP.
Pengertian Query| Apa itu Query? Pengertian Query adalah kemampuan untuk menampilkan
data dari database untuk diolah lebih lanjut yang biasanya diambil dari tabel tabel dalam
database. Pengertian query yang lain adalah pertanyaan (question) atau permintaan (order)
informasi tertentu daru sebuah database yang tertulis dalam format tertentu. Query dapat
didefinisikan sebagai perintah-perintah untuk mengakses data pada database atau basis data.
Sehingga secara garis besar, Pengertian query adalah bahasa yang digunakan untuk
memanipulasi, mengubah, menambahkan, mengatur sesuatu atau data dalam database.
Query sekarang telah diberikan standarisasi sehingga dapat digunakan secara umum pada
hampir semua program yang ada yaitu Structured Query Language (SQL).
Contoh penggunaan bahasa query adalah:
SELECT ALL WHERE kota=”Makassar” AND umur<20.
Query tersebut meminta semua record dari database yang sedang digunakan (misalkan database
konsumen) yang bertempat tinggal di Makassar dan berumur lebih dari 20 tahun (kota dan umur
adalah nama field yang telah didefinisikan). Standar bahasa query yang banyak digunakan
adalah SQL (structured query language). Metode SQL merupakan metode yang paling fleksibel

Anda mungkin juga menyukai