Cara/Metode/Logika/Teknik Pembuatan Struktur Table Database
Contoh pembuatan struktur table yang umum dilakukan adalah seperti ini:
Master_Barang
Transaksi_Beli_Detail
Transaksi_Beli_Detail
Dengan seperti ini maka query Report Detail Pembelian-nya berubah menjadi :
"SELECT A.*, B.Nama_Barang FROM Transaksi_Beli_Detail AS A JOIN Master_Barang AS B ON A.ID_Barang=B.ID_Barang"
Lalu apa bedanya? cuma memindahkan link field/column nya saja? nah, perbedaannya adalah performa/kecepatannya karena JOIN dengan antar data numeric lebih cepat dari pada sorted character maupun unsorted character. Lihatlah contoh data berikut ini :
Transaksi_Beli_Detail
Tetapi jika menggunakan model lama maka datanya akan seperti ini :
Transaksi_Beli_Detail
Master_Barang
Field Name | Data Type | PrimaryKey |
Kode_Barang | Varchar(10) | Yes |
Nama_Barang | Varchar(50) | No |
Transaksi_Beli_Detail
Field Name | Data Type | PrimaryKey |
Kode_Beli | Varchar(20) | Yes |
Kode_Barang | Varchar(10) | Yes |
Qty | Float | No |
Dan biasanya jika anda ingin menampikan Report Detail Pembelian menggunakan query seperti ini :
"SELECT A.*, B.Nama_Barang FROM Transaksi_Beli_Detail AS A JOIN Master_Barang AS B ON A.Kode_Barang=B.Kode_Barang"
Memang tidak ada yang salah dengan struktur seperti itu dan ini sudah mengikuti aturan NORMALISASI. Tapi baru baru ini saya menemukan konsep baru yaitu dengan tujuan agar performance table/database dalam melakukan proses SELECT data menjadi lebih cepat dan stabil. Caranya adalah dengan menambahkan ID pada setiap table, apa itu ID ?
ID dapat dikatakan No_Urut untuk setiap record/row pada table, anda bisa setting ID ini sebagai Auto-Increment maupun manual. jangan lupa ID ini harus anda setting menjadi PrimaryKey. Sehingga struktur tablenya menjadi sepeti ini :
Master_BarangID dapat dikatakan No_Urut untuk setiap record/row pada table, anda bisa setting ID ini sebagai Auto-Increment maupun manual. jangan lupa ID ini harus anda setting menjadi PrimaryKey. Sehingga struktur tablenya menjadi sepeti ini :
Field Name | Data Type | PrimaryKey |
ID_Barang | BigInt | Yes |
Kode_Barang | Varchar(10) | Yes |
Nama_Barang | Varchar(50) | No |
Transaksi_Beli_Detail
Field Name | Data Type | PrimaryKey |
ID_Beli | BigInt | Yes |
ID_Barang | BigInt | Yes |
Qty | Float | No |
Dengan seperti ini maka query Report Detail Pembelian-nya berubah menjadi :
"SELECT A.*, B.Nama_Barang FROM Transaksi_Beli_Detail AS A JOIN Master_Barang AS B ON A.ID_Barang=B.ID_Barang"
Lalu apa bedanya? cuma memindahkan link field/column nya saja? nah, perbedaannya adalah performa/kecepatannya karena JOIN dengan antar data numeric lebih cepat dari pada sorted character maupun unsorted character. Lihatlah contoh data berikut ini :
Transaksi_Beli_Detail
ID_Beli | ID_Barang | QTY |
1 | 1 | 100 |
1 | 3 | 50 |
2 | 1 | 500 |
3 | 4 | 49 |
Tetapi jika menggunakan model lama maka datanya akan seperti ini :
Transaksi_Beli_Detail
Kode_Trans | ID_Barang | QTY |
B120102-001 | BJU-XL001 | 100 |
B120102-001 | KRU-M010 | 50 |
B120102-002 | BJU-2L015 | 500 |
B120102-003 | CLP-L048 | 49 |
Nah disini kita bisa lihat, semakin simple data yang akan di JOIN maka akan semakin mudah dan cepat sql server engine dalam mem-proses-nya. Intinya perbedaan dari field ID dan KODE adalah :
1. ID hanya kita gunakan untuk proses JOIN dan proses pemrogramman2. KODE hanya digunakan untuk simbolitas (untuk user)
Memang jika yang belum terbiasa akan sedikit kaku/aneh, ini bukanlah sebuah keharusan maupun tehnik yang 100% benar, masing masing orang mempunyai gaya dan ciri khas dalam bekerja, semoga ilmu kita dapat lebih berambah luas lagi dengan saling berbagi. Terimakasih
Tags:
cara select data, contoh inner join di sql, perbedaan left outer join dan inner join biasa, cara membuat table yang baik, normalisasi pada table,cara agar loading select data cepat
Posting Komentar untuk "Cara/Metode/Logika/Teknik Pembuatan Struktur Table Database"