Total Tayangan Halaman

Sabtu, 02 April 2011

MVC, duet: Ubuntu, MySQL, Java, Netbeans, Tomcat, ZK, iReport (Bagian 1)

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).
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`)));
Dari contoh di atas, digunakan idtransaksi sebagai Id-nya, yang diambil dari tabel transaksi, karena kolom ini yang paling unik diantara kolom yang lain.


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: