SubQuery SQL

Subquery SQL digunakan untuk menyelesaikan suatu masalah yang tidak diketahui nilainya pada suatu tabel database.

Contoh :

Diketahui : tabel mahasiswa, tabel ambilMK dan tabel MK
Diketahui : tabel mahasiswa, tabel ambilMK dan tabel MK


Tabel mahasiswa
NIM
Nama_mhs



Tabel  Ambil_MK
NIM
Kode_MK
Nilai




Tabel Kode_MK
A01
A02
A03




Berikut ada suatu permasalahan berkaitan tabel database diatas :
Ambil nama mahasiswa yang nilainya paling tinggi dari tabel diatas dengan kode 'A02'

Penyelesaian :
SELECT mahasiswa.namaMhs, ambilMK.nilai
FROM mahasiswa, ambilMK
WHERE mahasiswa.nim=ambilMK.nim
AND ambilMK.kodeMK='A02'
AND ambilMK.nilai=(select max(nilai) FROM ambilMK WHERE kodeMK='A02');

Keterangan :
SELECT mahasiswa.namaMhs, ambilMK.nilai
FROM mahasiswa, ambilMK
WHERE mahasiswa.nim=ambilMK.nim
AND ambilMK.kodeMK='A02'
AND ambilMK.nilai=

Syntaq diatas merupakan Query, sedangkan subQuerynya :
 (select max(nilai) FROM ambilMK WHERE kodeMK='A02');



Normalisasi dalam Sistem Basis Data


Normasasi adalah suatu proses pembentukan struktur basis data untuk mendapatkan struktur tabel atau relasi yang efisien dan bebas dari anomali, dan mengacu pada cara data item dikelompokkan ke dalam struktur record.
Ada beberapa bentuk normalisasi yang biasa digunakan :

1NF - First Normal Form
Adalah suatu keadaan yang membuat setiap perpotongan baris dan kolom dalam relasi hanya berisi satu nilai saja.
Tidak diperbolehkan adanya :
-          Atribut bernilai banyak
-          Atribut komposit atau kombinasi keduanya
Contoh :
NIM
Nama
Hobi
5302411111
Adrian
Sepak bola, membaca komik, Berenang
5302411150
Fara
Memasak, Membaca novel
5302411175
Beni
Bermain PS, catur

Tabel diatas tidak memenuhi syarat 1NF
Bentuk 1NF ??
NIM
Nama
Hobi
5302411111
Adrian
Sepak bola
5302411111
Adrian
Membaca komik
5302411111
Adrian
Berenang
5302411150
Fara
Memasak
5302411150
Fara
Membaca novel
5302411175
Beni
Bermain PS
5302411175
Beni
Catur

2NF – Second Normal Form
Bentuk normal 2NF terpenuhi jika sudah memenuhi bentuk 1NF, dan semua atribut selain primary key, secara utuh memiliki functional Dependency pada primary key. Jika terdapat atribut yang tidak memiliki ketergantungn terhadap primary key, maka atribut tersebut harus dipindah atau dihilangkan.
NIM
Nama_Mhs
NIP
Nama_Dosen
5302411111
Adrian
10.001.1
Ade
5302411125
Beni
11.098.2
Lia
5302411134
Hiena
11.032.1
Fara
5302411150
Fara
12.043.2
Dina
5302411176
Setiawan
10.023.1
Indra

{NIM, NIP} à {Nama_Mhs, Nama_Dosen}


NIM
NIP
5302411111
10.001.1
5302411125
11.098.2
5302411134
11.032.1
5302411150
12.043.2
5302411176
10.023.1

NIM
Nama_Mhs
5302411111
Adrian
5302411125
Beni
5302411134
Hiena
5302411150
Fara
5302411176
Setiawan

NIP
Nama_Dosen
10.001.1
Ade
11.098.2
Lia
11.032.1
Fara
12.043.2
Dina
10.023.1
Indra

3NF – Third Normal Form
Bentuk normal 3NF terpenuhi jika bentuk 2NF telah terpenuhi, dan tidak ada atribut non primary key yang memiliki ketergantungan terhadap atribut non primary key yang lainnnya (ketergantungan transitif)
NIM
Nama
Jalan
Kota
Provinsi
Kode_Pos
5302411111
Adrian
Jl. Ahmad Yani
Purwokerto
Jawa Tengah
53165
5302411125
Beni
Jl. Pramuka
Pekalongan
Jawa Tengah
73224
5302411134
Hiena
Jl.Pahlawan
Semarang
Jawa Tengah
62125
5302411150
Fara
Jl.Panurukan
Semarang
Jawa Tengah
62312

NIM à {Nama, Jalan, Kota, Provinsi, Kode_Pos}
Kode_Pos à {Kota, Provinsi}
NIM à {Nama, Jalan, Kode_Pos}                             Sebagai Tabel Mahasiswa
Kode_Pos à {Provinsi, Kota}                                     Sebagai Tabel Kode Pos

Tabel Mahasiswa
NIM
Nama
Jalan
Kode_Pos
5302411111
Adrian
Jl. Ahmad Yani
53165
5302411125
Beni
Jl. Pramuka
73224
5302411134
Hiena
Jl.Pahlawan
62125
5302411150
Fara
Jl.Panurukan
62312

Tabel Kode Pos
Kode_Pos
Kota
Provinsi
53165
Purwokerto
Jawa Tengah
73224
Pekalongan
Jawa Tengah
62125
Semarang
Jawa Tengah
62312
Semarang
Jawa Tengah

Dependency dalam Sistem Basis Data


Functional Dependency (FD) adalah ketergantungan antara atribut-atribut dalam relasi. Suatu atribut dikatakan FD pada yang lain jika dan hanya jika menggunakan harga atribut tersebut untuk menentukan harga atribut yang lain.
Notasi dari FD adalah à dibaca secara fungsional menentukan
Contoh :
A à B = harga atribut A secara fungsional menentukan harga atribut B, atau B tergantung pada A


 Tabel Penjualan
No_Barang
Nama_Pembeli
A01
April
A02
Lia

Ketergantungan fungsional dari tabel penjualan diatas adalah :
No_Barang à Nama_Pembeli

FULL DEPENDENCY
Jika terdapat A dan B dalam suatu relasi, dimana B memiliki ketergantungan fungsional secara penuh pada A, dan B bukan memiliki dependensi terhadap subset A.
NIM
Nama
IPK
ID_Ruang
Dosen
5302411111
Adrian
3,21
301
April N
5302411125
Beni
3,01
204
Andi S
5302411134
Hiena
3,41
308
Dina U
5302411150
Fara
3,32
224
Joko p

{NIM, Nama} à ID_Ruang relasi tersebut bukan Full Dependency
Jika nama dihilangkan maka,
NIM à ID_Ruang, bisa dikatakan Full Dependency

PARTIALLY DEPENDENCY
Merupakan ketergantungan fungsional, dimana beberapa atribut dapat dihilangkan dari A dengan ketergantungan tetap dipertahankan. B memiliki dependensi terhadap subset A.
NIM
Nama
IPK
ID_Ruang
Dosen
5302411111
Adrian
3,21
301
April N
5302411125
Beni
3,01
204
Andi S
5302411134
Hiena
3,41
308
Dina U
5302411150
Fara
3,32
224
Joko p

{NIM, Nama} à ID_Ruang, jika nama dihilangkan maka ketergantungan tetap ada.

TRANSITIVE DEPENDENCY
Merupakan tipe functional dependency, yaitu kondisi dimana A, B, C adalah atribut sebuah relasi dimana A à B dan B à C, maka C diakatan sebagai transitive dependency terhadap A melalui B
NIP
Nama
Jabatan
Gaji
Kd_Cabang
Alm_Cabang
10.001.1
April
Quality Control
1.500.000
01
Semarang
11.098.2
Lia
Supervisor
1.250.000
02
Purwokerto
11.032.1
Fara
Supervisor
1.250.000
01
Semarang
12.043.2
Dina
Quality Control
1.500.000
02
Purwokerto

NIP à {Nama, Jabatan, Gaji, Kd_Cabang, Alm_Cabang}
Kd_Cabang à Alm_Cabang