Pada bentuk normal ketiga ini, sebuah tabel harus memenuhi syarat bentuk normal kedua dan semua field yang diperoleh dari data yang berasal dari field lain dari sebuah tabel atau tabel lain dari database harus dieliminasi atau dihapus. Sebagai gantinya, kita hanya menggunakan field yang murni merupakan data mentah (bukan hasil perhitungan) atau field yang menjadi referensi atau primary key dari sebuah tabel. Untuk menampilkan data yang berasal dari field lain, kita menggunakan query.
Beberapa macam contoh berikut ini dapat memberikan gambaran seperti apa bentuk normal ketiga itu:
Contohnya, pada tblBPJS yang ada di Gambar 1, kolom JHTTotal adalah hasil perhitungan penjumlahan dari kolom JHTPerusahaan dan JHTPegawai yang diperoleh dengan menggunakan tipe data Calculated pada tabel itu (JHT=Jaminan Hari Tua, ada dua pihak: dibayarkan oleh perusahaan dan dibayarkan oleh pegawai). Cara seperti ini tidak salah, tetapi, untuk lebih meningkatkan efisiensi data, kita bisa menghilangkan kolom JHTTotal dan menempatkannya saat membuat query untuk menghitung JHTTotal ini. Jadi, formula tidak dihitung dalam sebuah tabel, tetapi dihitung saat berada di query.
Contoh lain, Gambar 2 berisi dua tabel. Tabel bagian atas, tblPTKP , digunakan sebagai tempat untuk menyimpan data PTKP (PTKP=Penghasilan Tidak Kena Pajak) menurut Undang-Undang atau Peraturan Pemerintah di bidang Perpajakan. Tabel ini terdiri dari tiga kolom, yaitu Kode PTKP, Keterangan, dan Jumlah Setahun (dalam Rupiah).
Pada tabel bagian bawah, tblBioDataSebelum3NF mempunyai kolom P T K P dan P T K P (Keterangan). Kolom P T K P (Keterangan) adalah penjelasan dari kolom P T K P. Tabel semacam ini biasanya dibuat di aplikasi MS Excel. Tujuannya, untuk memudahkan pengguna melihat secara langsung keterangan dari PTKP.
Bila tabel tblBioDataSebelum3NF ini disimpan dalam sebuah database, maka terjadi pengulangan yang tidak perlu dengan adanya kolom P T K P (Keterangan). Tabel tblBioDataSebelum3NF yang berisi kolom N I P, Nama Lengkap, Nama Panggilan dan P T K P telah memenuhi syarat bentuk normal kedua.
Kolom Nama Lengkap, Nama Panggilan dan P T K P tergantung pada kolom N I P sebagai primary key tabel. Di sisi lain, kalau melihat dan mengacu tabel tblPTKP, kolom P T K P (Keterangan) pada tblBioDataSebelum3NF secara faktual tergantung pada Kode PTKP sebagai primary key tabel di tblPTKP. Dengan kata lain, kolom P T K P (Keterangan) tidak ada hubungannya dengan N I P. Dalam hal ini, kolom P T K P (Keterangan) disebut tergantung sementara atau transitive dependence pada N I P. Nah, kolom P T K P (Keterangan) inilah yang harus dihilangkan karena tidak diperlukan. Dengan mengeliminasi kolom P T K P (Keterangan), tabel tblBioDataSebelum3NF telah memenuhi syarat bentuk normal ketiga.
Sama seperti bentuk normal kedua, pada situasi tertentu, kita mungkin tidak ingin melakukan bentuk normal ketiga karena berbagai macam pertimbangan. Pada contoh kasus tblBPJS di atas, karena hasil penjumlahan JHTPerusahaan dan JHTPegawai dapat dilakukan dengan mudah, tentu saja, kolom JHTTotal bisa dihilangkan (artinya, kita melakukan bentuk normal ketiga). Dengan demikian, kita bisa meminimalkan ukuran database. Tetapi, pada kolom yang memerlukan proses perhitungan yang rumit, cara seperti ini biasanya dihindarkan. Misalnya, menghitung pajak pegawai.
Untuk menghitung pajak pegawai, atau istilah perpajakannya PPH21 atas pegawai tetap, kita menggunakan banyak sekali variabel, mulai dari berapa lama si pegawai bekerja dalam satu tahun pajak, sampai dengan berapa jumlah total penghasilan kena pajak yang digunakan sebagai dasar perhitungan pajak. Bila hasil perhitungan pajak ini tidak disimpan dalam sebuah field pada tabel, maka proses pembuatan slip gaji, laporan gaji bulanan, laporan gaji tahunan, dan lain-lain yang berhubungan dengan perpajakan akan memakan banyak waktu. Waktu yang dibutuhkan untuk memproses akan semakin lama bila jumlah record (dalam hal ini jumlah pegawai) juga semakin banyak. Dengan demikian menyimpan hasil perhitungan pajak setiap pegawai ke dalam tabel adalah solusi terbaik.
Biasanya, cara menyimpan data hasil perhitungan dilakukan saat kita memasukkan data satu per satu. Atau, bisa juga dilakukan secara bersamaan dengan menggunakan cara batch, biasanya berdasarkan sekelompok record berdasarkan satu periode waktu tertentu.
Beberapa macam contoh berikut ini dapat memberikan gambaran seperti apa bentuk normal ketiga itu:
Gambar 1. Melakukan bentuk normal ketiga pada tblBPJS, kolom JHTTotal |
Contohnya, pada tblBPJS yang ada di Gambar 1, kolom JHTTotal adalah hasil perhitungan penjumlahan dari kolom JHTPerusahaan dan JHTPegawai yang diperoleh dengan menggunakan tipe data Calculated pada tabel itu (JHT=Jaminan Hari Tua, ada dua pihak: dibayarkan oleh perusahaan dan dibayarkan oleh pegawai). Cara seperti ini tidak salah, tetapi, untuk lebih meningkatkan efisiensi data, kita bisa menghilangkan kolom JHTTotal dan menempatkannya saat membuat query untuk menghitung JHTTotal ini. Jadi, formula tidak dihitung dalam sebuah tabel, tetapi dihitung saat berada di query.
Gambar 2. Melakukan bentuk normal ketiga pada tblBioDataSebelum3NF, kolom PTKP (Keterangan) |
Contoh lain, Gambar 2 berisi dua tabel. Tabel bagian atas, tblPTKP , digunakan sebagai tempat untuk menyimpan data PTKP (PTKP=Penghasilan Tidak Kena Pajak) menurut Undang-Undang atau Peraturan Pemerintah di bidang Perpajakan. Tabel ini terdiri dari tiga kolom, yaitu Kode PTKP, Keterangan, dan Jumlah Setahun (dalam Rupiah).
Pada tabel bagian bawah, tblBioDataSebelum3NF mempunyai kolom P T K P dan P T K P (Keterangan). Kolom P T K P (Keterangan) adalah penjelasan dari kolom P T K P. Tabel semacam ini biasanya dibuat di aplikasi MS Excel. Tujuannya, untuk memudahkan pengguna melihat secara langsung keterangan dari PTKP.
Bila tabel tblBioDataSebelum3NF ini disimpan dalam sebuah database, maka terjadi pengulangan yang tidak perlu dengan adanya kolom P T K P (Keterangan). Tabel tblBioDataSebelum3NF yang berisi kolom N I P, Nama Lengkap, Nama Panggilan dan P T K P telah memenuhi syarat bentuk normal kedua.
Kolom Nama Lengkap, Nama Panggilan dan P T K P tergantung pada kolom N I P sebagai primary key tabel. Di sisi lain, kalau melihat dan mengacu tabel tblPTKP, kolom P T K P (Keterangan) pada tblBioDataSebelum3NF secara faktual tergantung pada Kode PTKP sebagai primary key tabel di tblPTKP. Dengan kata lain, kolom P T K P (Keterangan) tidak ada hubungannya dengan N I P. Dalam hal ini, kolom P T K P (Keterangan) disebut tergantung sementara atau transitive dependence pada N I P. Nah, kolom P T K P (Keterangan) inilah yang harus dihilangkan karena tidak diperlukan. Dengan mengeliminasi kolom P T K P (Keterangan), tabel tblBioDataSebelum3NF telah memenuhi syarat bentuk normal ketiga.
Bilamana sebuah tabel dapat mengabaikan 3NF
Sama seperti bentuk normal kedua, pada situasi tertentu, kita mungkin tidak ingin melakukan bentuk normal ketiga karena berbagai macam pertimbangan. Pada contoh kasus tblBPJS di atas, karena hasil penjumlahan JHTPerusahaan dan JHTPegawai dapat dilakukan dengan mudah, tentu saja, kolom JHTTotal bisa dihilangkan (artinya, kita melakukan bentuk normal ketiga). Dengan demikian, kita bisa meminimalkan ukuran database. Tetapi, pada kolom yang memerlukan proses perhitungan yang rumit, cara seperti ini biasanya dihindarkan. Misalnya, menghitung pajak pegawai.
Untuk menghitung pajak pegawai, atau istilah perpajakannya PPH21 atas pegawai tetap, kita menggunakan banyak sekali variabel, mulai dari berapa lama si pegawai bekerja dalam satu tahun pajak, sampai dengan berapa jumlah total penghasilan kena pajak yang digunakan sebagai dasar perhitungan pajak. Bila hasil perhitungan pajak ini tidak disimpan dalam sebuah field pada tabel, maka proses pembuatan slip gaji, laporan gaji bulanan, laporan gaji tahunan, dan lain-lain yang berhubungan dengan perpajakan akan memakan banyak waktu. Waktu yang dibutuhkan untuk memproses akan semakin lama bila jumlah record (dalam hal ini jumlah pegawai) juga semakin banyak. Dengan demikian menyimpan hasil perhitungan pajak setiap pegawai ke dalam tabel adalah solusi terbaik.
Biasanya, cara menyimpan data hasil perhitungan dilakukan saat kita memasukkan data satu per satu. Atau, bisa juga dilakukan secara bersamaan dengan menggunakan cara batch, biasanya berdasarkan sekelompok record berdasarkan satu periode waktu tertentu.
Comments
Post a Comment