Basis Data:
Rancangan basis data dibuat sesimpel mungkin agar memudahkan dalam pemahaman. Jangan sampai pusing duluan sebelum berperang. Untuk koneksinya nanti tinggal di-generate dari Netbeans, tapi sabar, satu-satu dulu. Setiap tabel harus memiliki kunci primer.
CREATE TABLE `pfm`.`item` ( `iditem` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Id primer dari item transaksi', `namaitem` varchar(20) NOT NULL COMMENT 'Nama item transaksi', `alurkas` tinyint(4) unsigned NOT NULL COMMENT 'Arah alur kas, masuk: 1, keluar: 0', PRIMARY KEY (`iditem`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='item transaksi';
CREATE TABLE `pfm`.`pengguna` ( `idpengguna` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID primer dari pengguna', `namalogin` varchar(10) NOT NULL COMMENT 'nama yang digunakan untuk masuk ke dalam sistem', `katasandi` char(32) NOT NULL COMMENT 'kata sandi untuk masuk ke dalam sistem, menggunakan md5 (32 karakter)', PRIMARY KEY (`idpengguna`), UNIQUE KEY `uniknamalogin` (`namalogin`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='data pengguna';
CREATE TABLE `pfm`.`transaksi` ( `idtransaksi` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID primer dari transaksi', `idpengguna` int(10) unsigned NOT NULL COMMENT 'kunci asing, ID pengguna', `iditem` int(10) unsigned NOT NULL COMMENT 'kunci asing, ID item', `nominal` int(10) unsigned NOT NULL COMMENT 'nominal transaksi', `tgltransaksi` date NOT NULL COMMENT 'tanggal transaksi', `keterangan` varchar(100) NOT NULL COMMENT 'keterangan transaksi', PRIMARY KEY (`idtransaksi`), KEY `fkpengguna` (`idpengguna`), KEY `fkitem` (`iditem`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='catatan transaksi keuangan';
View sangat bermanfaat dalam program yang akan dibuat karena tinggal dibuat viewnya, kemudian generate koneksinya dari Netbeans, beri @Id pada kunci primer-nya dan siap digunakan.
Peringatan:
Hindari join antar view (misal: view1 join view2) dan setiap view diharapkan memiliki nilai yang unik sebagai Id-nya (bisa diambil dari kunci primer diantara tabel-tabel yang digunakan).
Dari contoh di atas, digunakan idtransaksi sebagai Id-nya, yang diambil dari tabel transaksi, karena kolom ini yang paling unik diantara kolom yang lain.CREATE ALGORITHM=MERGE DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `pfm`.`v_rekap` AS select sql_cache `t`.`idtransaksi` AS `idtransaksi`,`t`.`idpengguna` AS `idpengguna`,`t`.`nominal` AS `nominal`,month(`t`.`tgltransaksi`) AS `bulan`,year(`t`.`tgltransaksi`) AS `tahun`,`i`.`namaitem` AS `namaitem`,`i`.`alurkas` AS `alurkas` from (`pfm`.`transaksi` `t` join `pfm`.`item` `i` on((`i`.`iditem` = `t`.`iditem`)));
Dan ini adalah contoh datanya:
insert into item values (1, 'gaji', 1);
insert into item values (2, 'non gaji', 1);
insert into item values (3, 'hutang', 1);
insert into item values (4, 'cicilan piutang', 1);
insert into item values (5, 'belanja', 0);
insert into item values (6, 'bayar tagihan', 0);
insert into item values (7, 'biaya pendidikan', 0);
insert into item values (8, 'piutang', 0);
insert into item values (9, 'cicilan hutang', 0);
insert into pengguna values (1, 'user', md5('user'));
Tidak ada komentar:
Posting Komentar