Kelompok Pengguna Linux Indonesia [KPLI], Area Klaten [PELIK] Homepages
Mengenal SQL
Tidak semua pegawai punya anak, sehingga penyiapan tiga kolom (field) merupakan pemborosan (terlepas dari metode yang digunakan database server dalam menyimpan data)
Dalam sebuah keluarga tidak mungkin nama anak sama. Struktur diatas memungkinkan seorang pegawai punya dua anak dengan nama sama.
Ketentuan maksimum tiga anak adalah sebuah ketentuan yang bisa saja berubah, Untuk mengantisipasi kebutuhan ke depan, jelas struktur tersebut kurang fleksible.
Untuk mengantisipasi tiga hal tersebut maka struktur tabel pegawai sebaiknya dipecah menjadi dua: tabel pegawai dan tabel anak dimana keduanya memiliki field penghubung. CREATE TABLE pegawai ( id INTEGER NOT NULL PRIMARY KEY, nama VARCHAR(30) NOT NULL);
CREATE TABLE anak( id_pegawai INTEGER NOT NULL, nama VARCHAR(30) NOT NULL, PRIMARY KEY (id_pegawai,nama)); Field penghubung yang dipilih adalah ID pegawai dan bukan nama pegawai. Mengapa? Jawabannya sangat mudah: karena ID pegawai bersifat
unik di tabel pegawai (tidak mungkin ID pegawai sama dalam suatu perusahaan). Jika nama pegawai yang digunakan sebagai penghubung maka bisa menimbulkan kerancuan dalam proses query nanti (query yang menggabungkan tabel pegawai dan tabel anak) karena dalam struktur tabel pegawai memungkinkan dua orang pegawai memiliki nama yang sama. Hal "baru" dalam struktur tabel anak adalah adanya PRIMARY KEY yang terdiri dari dua field. Hal ini untuk menjawab permasalahan nomor dua, yaitu untuk memastikan bahwa nama anak tidak ada yang sama dalam sebuah ID pegawai.