Normalisasi database dilakukan untuk menghilangkan anomali dan redundansi data. Tahapan normalisasi dimulai dari bentuk normal pertama (1NF) hingga bentuk normal kelima (5NF). Normalisasi database bertujuan untuk menghasilkan struktur tabel yang lebih baik dan efisien.
2. Dekomposisi
• Dekomposisi : memecah relasi/tabel menjadi relasi/tabel yang
lebih kecil untuk mendapatkan skema yang tidak mengandung
anomali dan redundansi.
3. • Kumpulan atribut yang nilainya :
– Setiap atribut harus berharga tunggal.
– Semua harga pada suatu atribut harus mempunyai tipe
yang sama
– Setiap atribut harus mempunyai nama yang unik
– Urutan atribut tidak penting
– Tidak ada dua baris (tuple) dalam relasi yang isinya identik
– Urutan baris (tuple) tidak penting
Relasi (review)
4. Proses Rancangan Database (review)
• Mengumpulkan kebutuhan user/business
• Mengembangkan E-R Model berdasarkan kebutuhan
user/business
• Konversikan E-R Model ke himpunan relasi (tabel)
• Normalisasikan relasi untuk menghilangkan anomali
• Implementasikan ke database dengan membuat tabel untuk
setiap relasi yang sudah ternormalisasi
5. Normalisasi database (1)
• Normalisasi adalah proses pembentukan struktur database
sehingga sebagian besar ambiguity bisa dihilangkan.
• Tahap Normalisasi dimulai dari tahap paling ringan (1NF) hingga
paling ketat (5NF)
• Biasanya hanya sampai pada tingkat 3NF atau BCNF karena sudah
cukup memadai untuk menghasilkan tabel-tabel yang berkualitas
baik.
6. Normalisasi database (2)
• Mengapa dilakukan normalisasi ?
– Optimalisasi struktur tabel
– Meningkatkan kecepatan
– Menghilangkan pemasukan data yang sama
– Mengurangi redundansi
– Lebih efisien dalam penggunaan media penyimpanan
– Menghindari anomali (insertion anomalies, deletion
anomalies, update anomalies).
– Integritas data yang ditingkatkan
7. Normalisasi database (3)
• Sebuah tabel dikatakan baik (efisien) atau normal jika
memenuhi 3 kriteria sbb:
1. Jika ada dekomposisi (penguraian) tabel, maka dekomposisinya harus dijamin
aman (Lossless-Join Decomposition). Artinya, setelah tabel tersebut diuraikan /
didekomposisi menjadi tabel-tabel baru, tabel baru bisa menghasilkan tabel
semula dengan sama persis.
2. Terpeliharanya ketergantungan fungsional pada saat perubahan data
(Dependency Preservation).
3. Tidak melanggar Boyce-Code Normal Form (BCNF)
• Jika kriteria ketiga tidak dapat terpenuhi, maka paling tidak
tabel tersebut tidak melanggar Bentuk Normal tahap ketiga
(3rd Normal Form / 3NF).
8. Dependency / Ketergantungan
• Dependency merupakan konsep yang mendasari normalisasi.
Dependensi menjelaskan hubungan antar atribut, atau secara
lebih khusus menjelaskan nilai suatu atribut yang menentukan
nilai atribut lainnya.
• Ada beberapa jenis Dependency / Ketergantungan:
1. Ketergantungan Fungsional / Functionally Dependency (FD)
2. Ketergantungan Fungsional Penuh / Full Functionally
Dependency (FFD)
3. Ketergantungan Transitif / Transitive Dependency (TDF)
4. Ketergantungan Total /Total Dependency (TD)
9. 1. Ketergantungan Fungsional
• Ketergantungan Fungsional menggambarkan hubungan
atribut dalam sebuah relasi.
• Suatu atribut dikatakan Ketergantungan Fungsional pada
yang lain, jika menggunakan harga atribut tersebut untuk
menentukan harga atribut yang lain.
• Simbol yang digunakan adalah (dibaca secara fungsional
menentukan )
10. Lanjut..
• Notasi: X Y
X dan Y adalah atribut dari sebuah tabel. Berarti X secara fungsional
menentukan Y atau Y tergantung pada X, jika dan hanya jika ada dua baris
data dengan nilai X yang sama, maka nilai Y juga sama
• Notasi: X Y
Adalah kebalikan dari notasi sebelumnya.
11. • Relasi Pembeli
No_Pembeli Nama_Pembeli
P01 Imam_x
P02 Yazix
P03 Hana
Ketergantungan fungsional dari relasi Pembeli adalah :
No_Pem → Nama_Pembeli
Contoh 1
Bagian sebelah kiri panah disebut penentu (determinan) dan sebelah
kanan panah disebut yang tergantung (dependen).
Tanda { } biasa digunakan kalau ada lebih dari satu atribut, baik pada
penentu maupun yang tergantung.
12. Contoh 2
Functional Dependency:
• NRP Nama
• {Mata_Kuliah, NRP} Nilai
Non Functional Dependency:
• Mata_Kuliah NRP
• NRP Nilai
13. Kode_Jual Kota Kode_Brg Jumlah
P1 Yogya B1 10
P1 Yogya B2 5
P2 Solo B1 7
P2 Solo B2 6
P2 Solo B3 6
P3 Klaten B3 7
P3 Klaten B4 6
Contoh 3
Pesan_Jual
• Pada contoh ini, Kode_Jual secara fungsional menentukan Kota, sebab
terlihat bahwa untuk Kode_Jual yang sama, Kota-nya juga sama.
• Dengan demikian:
Kode_Jual Kota
contoh lain:
{Kode_Jual,Kode_Brg} Jumlah
{Kode_Jual,Kode_Brg} Kota
{Kode_Jual,Kode_Brg} {Jumlah, Kota}
14. 2. Ketergantungan Fungsional Penuh
• Suatu atribut Y mempunyai ketergantungan fungsional penuh
terhadap atribut X, jika
– Y mempunyai ketergantungan funsional terhadap X
– Y tidak memiliki ketergantungan terhadap bagian dari X
– Notasi : X Y
15. Contoh
contoh , terdapat relasi pelanggan:
Pelanggan ( KODE_PELANGGAN, NAMA, KOTA, NOMOR_FAX )
Pada relasi ini:
1.{KODE_PELANGGAN, KOTA} NOMOR_FAX
2.KODE_PELANGGAN NOMOR_FAX
KET:
Pada (1) Nomor_Fax bergantung pada {KODE_PELANGGAN, KOTA}
dan bergantung pada KODE_PELANGGAN (pada 2) yang tidak lain
adalah bagian dari {KODE_PELANGGAN, KOTA}, maka Nomor_Fax
hanya mempunyai dependensi fungsional sepenuhnya terhadap
KODE_PELANGGAN
16. Contoh : Pembeli → Kota
{Pembeli, Barang} → Kota
Kota mempunyai depedensi fungsional terhadap
Pembeli atau {Pembeli, Barang} tapi kota
mempunyai depedensi fungsional sepenuhnya
terhadap pembeli bukan barang.
17. contoh
Kebergantungan fungsional berikut:
(1) IDPegawai -> tglLahir
maka benar juga menyatakan:
(2) IDPegawai, namaPegawai -> tglLahir
Pada (2) sebenarnya namaPegawai tidak diperlukan untuk memperoleh
tglLahir. IDPegawai sudah mencukupi untuk memperoleh nilai tglLahir.
Jadi:
(1) merupakan kebergantungan fungsional penuh
(2) bukan kebergantungan fungsional penuh
18. 3. Ketergantungan Transitif
– Atribut Z mempunyai dependensi transitif terhadap X bila
apabila Y tergantung pada X dan Z tergantung pada Y
• X → Y → Z
19. Definisi :
Atribut Z pada relasi R dikatakan tergantung transitif pada atribut X,
jika atribut Y tergantung pada atribut X pada relasi R dan atribut Z
tergantung pada atribut Y pada relasi R. ( X Y, Y Z, maka X Z )
Contoh :
Contoh
Ketergantungan transitif :
No-pem Kode-kota
Kode-kota Kota , maka
No-pem Kota
20. NIP Nama Gol_gaji Gaji_pokok
0001 Ian III A 600000
0002 Saputra III B 650000
0003 Rohim III A 600000
0004 Fani III B 650000
• Gol_gaji fungsional dependency pada NIP dan Gaji_pokok Fungsional
Dependency pada Gol_gaji.
• NIP sebagai X, Gol_gaji sebagai Y, dan Gaji_pokok sebagai Z
• Jadi nilai-nilai rinci data pada atribut Gaji_pokok (Z) bergantung
transitif terhadap NIP
• X Y Z
NIP Gol_gaji Gaji_pokok
Lanjut..
21.
22.
23.
24. 4. Ketergantungan Total
• Suatu atribut Y mempunyai ketergantungan total pada atribut
X jika:
– Y memiliki ketergantungan fungsi terhadap X
– X memiliki ketergantungan fungsi terhadap Y
– Notasi : X Y
26. BENTUK NORMAL PERTAMA (First Normal Form - 1NF)
• Bentuk normal 1NF terpenuhi jika sebuah tabel tidak memiliki
atribut bernilai banyak (multivalued attribute), atribut
composite atau kombinasinya dalam domain data yang sama.
• Data dibentuk dalam satu record demi record dan nilai field
adalah atomic value.
• Tidak ada set atribut yang berulang / bernilai ganda)
27. • Suatu relasi berada dalam bentuk normal pertama jika relasi
tidak mengandung atribut yang bernilai ganda
• Contoh :
Atribut bernilai
ganda
Lanjut..
28. Pemecahannya
• Buang atribut berganda
• Caranya: Atur setiap kolom berisi satu nilai.
- Bila isi suatu kolom untuk suatu baris berisi n nilai, maka
pecahlah baris menjadi n baris Sekarang atribut
berniali tunggal
Lanjut..
32. BENTUK NORMAL KEDUA (Second Normal Form - 2NF)
• Bentuk normal 2NF terpenuhi dalam sebuah tabel jika telah memenuhi bentuk
1NF.
• Normalisasi 2NF: setiap atribut bukan kunci bergantung penuh pada kunci
primer (primary key). Sehingga tidak ada atribut bukan kunci yang bergantung
pada sebagian (parsial) kunci primer (primary key)
• Jika terdapat atribut yang tidak memiliki ketergantungan terhadap primary key,
maka atribut tersebut harus dipindah atau dihilangkan.
33. SYARAT 2NF
• Memenuhi kriteria tabel 1NF
• Di dalam tabel tersebut tidak ada redudansi / pengulangan data dan Null
Value
• Field-field yang bukan PK (primary key) adalah Fully Functional
Dependency (bergantung penuh) pada PK.
34. • Perhatikan tabel di bawah ini. Atribut mana yang bisa menjadi primary
key, dan bagaimana ketergantungan fungsional semua atribut?
Contoh
35. lanjut
• Jika No dan Kursus dijadikan composite primary key,
maka nama tidak tergantung fungsional penuh
terhadap PK, perlu dipisahkan dari tabel.
39. BENTUK NORMAL KETIGA (Third Normal Form - 3NF)
• Bentuk normal 3NF terpenuhi jika telah memenuhi bentuk 2NF.
• Jika tidak ada atribut non primary key yang memiliki
ketergantungan terhadap atribut non primary key yang lainnya
(ketergantungan transitif).
40. Contoh (1)
• Tabel mahasis berikut ini memenuhi syarat 2NF, tetapi tidak
memenuhi 3NF
• Karena masih terdapat atribut non primary key (yakni Kota dan
Provinsi) yang memiliki ketergantungan terhadap atribut non
primary key yang lain (yakni KodePos) :
KodePos {Kota, Provinsi}
41. Contoh (2)
• Sehingga tabel tersebut perlu didekomposisi menjadi :
– Mahasiswa (NIM, NamaMhs, Jalan, KodePos)
– KodePos (KodePos, Provinsi, Kota)
43. Boyce-Codd Normal Form (BCNF)
• Bentuk BCNF terpenuhi dalam sebuah tabel, jika untuk setiap
functional dependency terhadap setiap atribut atau gabungan
atribut dalam bentuk: X Y maka X adalah super key.
• Tabel tersebut harus di-dekomposisi berdasarkan functional
dependency yang ada, sehingga X menjadi super key dari tabel-
tabel hasil dekomposisi.
• Setiap tabel dalam BCNF merupakan 3NF. Akan tetapi setiap 3NF
belum tentu termasuk BCNF . Perbedaannya, untuk functional
dependency X A, BCNF tidak membolehkan A sebagai bagian
dari primary key.
44. BentukNormal TahapKeempat(4th
Normal Form /4NF)
• Bentuk normal 4NF terpenuhi dalam sebuah tabel jika telah
memenuhi bentuk BCNF, dan tabel tersebut tidak boleh
memiliki lebih dari sebuah multivalued atribute.
• Untuk setiap multivalued dependencies (MVD) juga harus
merupakan functional dependencies.
45.
46. BentukNormal TahapKeempat(5th
Normal Form /5NF)
• Bentuk normal 5NF terpenuhi jika tidak dapat memiliki
sebuah loss less decomposition menjadi tabel-tabel yg lebih
kecil.
• Jika 4 bentuk normal sebelumnya dibentuk berdasarkan
functional dependency, 5NF dibentuk berdasarkan konsep join
dependence. Yakni apabila sebuah tabel telah di-dekomposisi
menjadi tabel-tabel lebih kecil, harus bisa digabungkan lagi
(join) untuk membentuk tabel semula
47.
48. Unnormalisasi
• Langkah pertama dalam melakukan normalisasi data adalah
dengan membentuk contoh data tersebut diatas dengan
membentuk unnormalisasi data.
49. Normal Pertama (1 NF)
• Bentuklah menjadi bentuk normal pertama dengan memisah-
misahkan data pada atribut atribut yang tepat dan bernilai
atomik, juga seluruh record / baris harus lengkap adanya.
• Bentuk relasi adalah flat file. Dengan normal pertama kita
dapat membuat satu tabel yang terdiri dari 11 Atribut yaitu
(No_Faktur, Kode_Supp, Nama_Supp, Kode_Brg, Nama_Brg,
Tanggal, Jatuh_Tempo, Qty, Harga, Jumlah, Total ).
50. Pada normal pertama tersebut masih terjadi banyak kelemahan, terutama pada proses ANOMALI
insert, update dan delete berikut ini:
a). Inserting / Penyisipan
Kita tidak dapat memasukkan kode dan nama supplier saja tanpa adanya transaksi pembelian,
sehingga supplier baru bisa dimasukkan kalau ada transaksi pembelian.
b). Deleting / Penghapusan
Bila satu record / baris di atas dihapus, misal nomor faktur 779, maka berakibat pada penghapusan
data supplier S02 (Waras Sejati) padahal data tersebut masih diperlukan.
c). Updating / Pengubahan
Kode dan nama supplier terlihat ditulis berkali-kali, bila nama supplier berubah, maka di setiap baris
yang ada harus dirubah, bila tidak menjadi tidak konsisten.
Atribut jumlah seharusnya tidak perlu, karena setiap harga dikali kuantitas akan menghasilkan
jumlah, sehingga hasilnya akan menjadi lebih konsisten.
Normal Pertama (1 NF)
A02
51. Normal Kedua (2 NF)
• Bentuk normal kedua dengan melakukan dekomposisi relasi
diatas menjadi beberapa relasi dan mencari kunci primer dari
tiap-tiap relasi tersebut dan atribut kunci haruslah unik.
• Melihat permasalahan faktur di atas, maka dapat diambil
beberapa kunci kandidat : ( No_Faktur, Kode_Supp, dan
Kode_Brg ).
• Kunci kandidat tersebut nantinya bisa menjadi kunci primer
pada relasi hasil dekomposisi.
52. Normal Kedua (2 NF)
Kode_Supp Nama_Supp
S02 Waras Sejati
G01 Medika jaya
Kode_Brg Nama_Brg Harga
R01 Mixagripi 5000
A01 Sanaflux 5000
A02 Bodrexno 6000
No_Faktur Kode_Brg Kode_Supp Tanggal Jatuh Tempo Qty
779 R01 S02 02/02/2001 09/03/2001 10
998 A01 G01 07/02/2001 09/03/2001 10
998 A02 G01 07/02/2001 09/03/2001 10
Relasi Supplier Relasi Barang
Relasi Faktur
53. Normal Kedua (2 NF)
Pada bentuk normal kedua tersebut masih terjadi permasalahan
yaitu pada relasi Faktur, yaitu :
1. Atribut Qty pada relasi Faktur, tidak tergantung pada kunci
utama, atribut tersebut bergantung fungsi pada Kode Brg
dan no_faktur, hal ini dinamakan ketergatungan transitif
dan haruslah dipilah menjadi dua relasi.
2. Masih terdapat pengulangan, yaitu setiap kali satu faktur
yang terdiri dari 3 macam barang maka 3 kali juga dituliskan
no_faktur, tanggal, dan jatuh_tempo. Hal ini harus
dipisahkan bila terjadi penggandaan tulisan berulang-ulang.
54. 4. Bentuk Normal Ketiga (3 NF)
• 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).
• Untuk memenuhi bentuk normal ketiga (3 NF), maka pada
relasi faktur harus didekomposisi (dipecah) lagi menjadi dua
relasi yaitu relasi faktur dan relasi transaksi barang, sehingga
hasilnya adalah sebagai berikut ini:
59. 2 NF
• {No-pem,Kode-Kota } kota
• No-pem Kota
• No-Pem, No-bar Jumlah
Sudah memenuhi 1 NF tetapi belum memenuhi 2 NF karena atribut
Bukan kunci belum sepenuhnya tergantung pada primary key
60. 2 NF
• No-pem, No-bar Jumlah
• No-pem Kode-Kota
• No-pem Kota
• Kode-Kota Kota
Tabel 1 Tabel 2
Tabel1 didekomposisi menjadi dua tabel yaitu tabel2 dan tabel3,sehingga
atribut non primary key bergantung penuh pada primary key dan terpenuhi
2NF
61. 3 NF
• No-pem Kode-Kota
• Kode-Kota Kota
Tabel 3
Ada ketergantungan transitif di tabel3, maka perlu di pisah menjadi tabel lebih
kecil
Ketergantungan
transitif
62. 3 NF
• No-pem Kode-kota • Kode-ota Kota
Tabel4
No
1
2
3
4
5
63.
64.
65.
66. No Nama Alamat No
Buku1
Judul
Buku1
Pengarang
1
No Buku2 Judul
Buku2
Pengarang2 No
Buku3
Judul
Buku3
Pengara
ng3
Jml Pjm Tgl Pinjam
A001 Rahayu Kemuning
117
B001 Msword Ahmad 1 26/1/2000
A002 Iwan Kamboja 29 B001 Msword Ahmad B002 Foxpro Pramono B005 Acces Anton 3 1/2/2000
A003 Tuti Nangka 20 B002 Foxpro Pramono 1 7/2/2000
A004 Riyanto Kenanga 21 B001 Msword Ahmad B005 Acces Anton 2 11/2/2000
A005 Kiki Merdeka 10 B002 Foxpro Pramono B006 Ws Pramono 2 11/2/2000
Atribut Bernilai Ganda /
Berulang
• Merupakan kumpulan data yang akan direkam, tidak ada keharusan mengikuti suatu
format tertentu, dapat saja data tidak lengkap atau terduplikasi.
• Data dikumpulkan apa adanya tanpa format tertentu. Data dapat tidak lengkap atau
terduplikasi
• Tabel Perpustakaan ini masih bersifat universal
Perpustakaan
Contoh 1. Bentuk Tidak Normal ( Unnormalized Form)
67. • Setiap data dibentuk dalam flat file( file datar / rata )
• Data dibentuk dalam satu record demi record dan nilai field adalah atomic value
• Tidak ada set atribut yang berulang2 / bernilai ganda )
Perpustakaan
•Bentuk Normal Kesatu ( 1 NF / First Normal Form )
No Nama Alamat No Buku Judul Buku Pengarang Jml Pinjam Tgl Pinjam
A001 Rahayu Kemuning 117 B001 Msword Ahmad 1 26/1/2000
A002 Iwan Kamboja 29 B001 Msword Ahmad 3 1/2/2000
A002 Iwan Kamboja 29 B002 Foxpro Pramono 3 1/2/2000
A002 Iwan Kamboja 29 B005 Acces Anton 3 1/2/2000
A003 Tuti Nangka 20 B002 Foxpro Pramono 1 7/2/2000
A004 Riyanto Kenanga 21 B001 Msword Ahmad 2 11/2/2000
A004 Riyanto Kenanga 21 B005 Acces Anton 2 11/2/2000
A005 Kiki Merdeka 10 B002 Foxpro Pramono 2 11/2/2000
A005 Kiki Merdeka 10 B006 WS Pramono 2 11/2/2000
Data Duplikat belum ada field kunci
yang unik
Perpustakaan
No anggota
Nama
Alamat
NoBuku
JudulBuku
Pengarang
JumlahPinjam
TglPinjam
68. • Telah Menenuhi kriteria Bentuk Normal 1 NF
• Atribut Bukan Kunci Haruslah Bergantung Secara Fungsi Pada Primary Key
• Primary Key Harus Sudah Ditentukan Dan Bersifat Unik, Serta Dapat Mewakili Atribut
Lain Yang Menjadi Anggotanya
Data Duplikat
belum ada field
kunci yang unik
•Bentuk Kedua ( 2 NF / Second Normal Form )
Noanggota Nama Alamat
A001 Rahayu Kemuning 117
A002 Iwan Kamboja 29
A003 Tuti Nangka 20
A004 Riyanto Kenanga 21
A005 Kiki Merdeka 10
No anggota Nobuku Jumlahpinjam tglpinjam
A001 B001 1 26/1/2000
A002 B001 3 1/2/2000
A002 B002 3 1/2/2000
A002 B002 3 1/2/2000
A003 B002 1 7/2/2000
A004 B001 2 11/2/2000
A004 B005 2 11/2/2000
A005 B002 2 11/2/2000
A005 B006 2 11/2/2000
Nobuku Judulbuku Pengarang
B001 Msword Ahmad
B002 Foxpro Pramono
B005 Acces Anton
B006 Ws pramono
Anggota
Pinjam
Buku
69. • Telah Memenuhi kriteria Bentuk 2 NF
• Semau Atribut Bukan Primer Tidak Mempunyai Hubungan / Ketergantungan Transitif
• Atribut bukan kunci harus bergantung hanya pada primary key
Bentuk Normal Kedua ( 3 NF / Third Normal Form )
Noanggota Nama Alamat
A001 Rahayu Kemuning 117
A002 Iwan Kamboja 29
A003 Tuti Nangka 20
A004 Riyanto Kenanga 21
A005 Kiki Merdeka 10
Anggota
Pinjam
Noanggota Nobuku
A001 B001
A002 B001
A002 B002
A002 B005
A003 B002
A004 B001
A004 B005
A005 B002
A005 B006
Noanggota Jumlahpinjam Tglpinjam
A001 1 26/1/2000
A002 3 1/2/2000
A003 1 7/2/2000
A004 2 11/2/2000
A005 2 11/2/2000
Peminjaman
Nobuku Judulbuku Pengarang
B001 Msword Ahmad
B002 Foxpro Pramono
B005 Acces Anton
B006 Ws Pramono
Buku
Editor's Notes
Anomali
Anomali adalah proses pada basis data yang memberikan efek samping yang tidak diharapkan ( misalnya menyebabkan ketidakonsistenan data atau membuat suatu data menjadi hilang ketika data lain dihapus)
am.bi.gu[a] bermakna lebih dr satu (sehingga kadang-kadang menimbulkan keraguan, kekaburan, ketidakjelasan, dsb); bermakna ganda; taksaReferensi: http://kamusbahasaindonesia.org/ambiguKamusBahasaIndonesia.org
Ambiguity adalah, sesuatu yang memiliki makna lebih dari satu, barangkali karena memiliki suatu cerita/latar belakang historis, kategoris, kontraris, sosial, linguistik, moralistik, religius, litigius, prestisius, saintifik, heuristik, naturalistik, supernatural, ultranatural, eksistensial, biologis, deontologis, geologis, methodologis, nominalistik, deterministik, psikologis, diabolis, metaphoristik, patriotis, dialektik, ekletik, abnormal, paranormal, semi-formal atau tidak; atau barangkali campuran dari faktor2 diatas.
SELECT..INNER JOIN..ON dengan nama kolom ini, MySQL akan mengeluarkan error:
mysql> SELECT nama_matkul,jumlah_SKS,nama_dosen FROM mata_kuliah
INNER JOIN daftar_dosen ON mata_kuliah.NIP_dosen=daftar_dosen.NIP_dosen;
mysql> SELECT nama_matkul,jumlah_SKS,nama_dosen FROM mata_kuliah
INNER JOIN daftar_dosen ON NIP_dosen=NIP_dosen;
ERROR 1052 (23000): Column 'NIP_dosen' in on clause is ambiguous
Dari pesan error yang terjadi, sebenarnya MySQL ‘bingung’ dalam memilih kolom. Query ON NIP_dosen=NIP_dosen menjadi ambigu karena kedua tabel kita memiliki nama kolom yang sama.
Untuk mengatasi ambiguitas ini, MySQL mengharuskan kita secara eksplisit menyebutkan nama tabelnya. Cara penulisan ini menggunakan tanda titik sebagai pemisah:
Nama_Tabel.Nama_Kolom
Misalkan untuk merujuk pada kolom NIP_dosen pada tabel mata_kuliah, maka penulisannya menjadi:
Mata_kuliah.NIP_dosen
Sehingga query SELECT..INNER JOIN..ON yang benar menjadi:
-------------------+------------+---------------+
| nama_matkul | jumlah_SKS | nama_dosen |
+-------------------+------------+---------------+
| Database | 4 | Susi Indriani |
| Fisika Dasar | 2 | Tia Santrini |
| Jaringan Komputer | 3 | Rubin Hadi |
| Matematika Dasar | 4 | Sabrina Sari |
| Mikro Prosesor | 2 | Tia Santrini |
| Sistem Operasi | 2 | Sabrina Sari |
| Teknik Kompilasi | 2 | Tia Santrini |
+-------------------+------------+---------------+
7 rows in set (0.00 sec)
mysql> SELECT nama_matkul,jumlah_SKS,nama_dosen FROM mata_kuliah
INNER JOIN daftar_dosen ON mata_kuliah.NIP_dosen=daftar_dosen.NIP_dosen;