Aplikasi Inventory Sederhana - Analisa dan Desain Database

Aplikasi Inventory Sederhana - Analisa dan Desain Database

<p><strong>Design Database</strong> adalah salah satu hal penting yang perlu diperhatikan dalam membuat aplikasi perkantoran. Dalam membuat design database, ikutilah kaidah-kaidah yang pernah kita dapatkan semasa kuliah, terutama Normalisasi, minimal sampai dengan bentuk 3NF.&nbsp;Kesalahan dalam membuat design database dapat berakibat fatal, misalnya sulit membuat coding dan men-generate report yang kita inginkan. Dan jika sampai harus mengubah design database maka akan banyak waktu terbuang karena kita harus menyesuaikan kembali coding yang sudah dibuat sebelumnya. Oleh karena itu <strong>sediakanlah waktu dan pikiran yang cukup dalam men-design database</strong> ini.</p>
<!--break-->
<blockquote>
<p>Artikel ini adalah bagian dari artikel berseri tentang&nbsp;<strong><a href="http://pojokprogrammer.net/content/aplikasi-inventory-sederhana">Tutorial Membuat Aplikasi Inventory Sederhana Menggunakan VB.net dan Database MySQL</a></strong>.&nbsp;</p>
</blockquote>
<p>Dalam membuat design database Aplikasi Inventory atau Aplikasi Stok Barang&nbsp;ini, kami juga menyengajakan diri untuk membuat design database menggunakan bahasa inggris, tujuannya selain melatih skill bahasa inggris kita, juga untuk melatih diri kita, siapa tahu aplikasi ini akan di-publish menjadi open source, atau kita berkesempatan berkontribusi dalam project open source lain.</p>
<p>Berdasarkan analisa dan design aplikasi yang tertuang dalam&nbsp;<a href="http://pojokprogrammer.net/content/aplikasi-inventory-sederhana-analisa…">artikel sebelumnya</a>, maka kita memerlukan sejumlah table untuk menyimpan data-data Barang dan Transaksi Keluar Masuk Barang. Untuk itu, sejumlah table yang diperlukan antara lain:</p>
<h3>Tabel Barang</h3>
<p>Table untuk menampung data master barang ini akan kita beri nama <strong>items</strong>. Data dictionary lengkapnya adalah sebagai berikut:</p>
<table border="0" cellpadding="0" cellspacing="0">
<thead>
<tr>
<th scope="col">No.</th>
<th scope="col">Nama Field</th>
<th scope="col">Tipe Data</th>
<th scope="col">Keterangan</th>
</tr>
</thead>
<tbody>
<tr>
<th>1.</th>
<td>id</td>
<td>integer</td>
<td>Primary Key, Auto Increment</td>
</tr>
<tr>
<th>2.</th>
<td>code</td>
<td>varchar(20)</td>
<td>Kode barang berupa text bebas maksimal 20 karakter, bisa digunakan sebagai barcode</td>
</tr>
<tr>
<th>3.</th>
<td>name</td>
<td>varchar(100)</td>
<td>Nama barang maksimal 100 karakter</td>
</tr>
<tr>
<th>4.</th>
<td>quantity_on_hand</td>
<td>decimal(10,2)</td>
<td>Quantity barang terakhir yang saat ini ada di gudang</td>
</tr>
<tr>
<th>5.</th>
<td>remarks</td>
<td>text</td>
<td>Keterangan lebih lengkap tentang barang bersangkutan</td>
</tr>
</tbody>
</table>
<h3>Tabel Jenis Transaksi</h3>
<p>Tabel ini akan berisi kode untuk menentukan jenis transaksi dan kita beri nama <strong>transaction_types</strong>. Untuk aplikasi ini akan ada 2 (dua) jenis transaksi yaitu <strong>Transaksi Barang Masuk</strong> (kita beri kode <strong>BM</strong>) dan <strong>Transaksi Barang Keluar</strong> (kita beri kode <strong>BK</strong>). Data dictionary lengkapnya adalah sebagai berikut:</p>
<table border="0" cellpadding="0" cellspacing="0">
<thead>
<tr>
<th scope="col">No.</th>
<th scope="col">Nama Field</th>
<th scope="col">Tipe Data</th>
<th scope="col">Keterangan</th>
</tr>
</thead>
<tbody>
<tr>
<th>1.</th>
<td>id</td>
<td>integer</td>
<td>Primary Key, Auto Increment</td>
</tr>
<tr>
<th>2.</th>
<td>code</td>
<td>varchar(20)</td>
<td>Kode jenis transaksi berupa text bebas maksimal 20 karakter</td>
</tr>
<tr>
<th>3.</th>
<td>name</td>
<td>varchar(100)</td>
<td>Nama panjang yang lebih deskriptif, maksimal 100 karakter</td>
</tr>
</tbody>
</table>
<h3>Tabel Transaksi</h3>
<p>Tabel ini akan berisi seluruh transaksi inventory dari aplikasi yang akan kita buat. Untuk membedakan&nbsp;<strong>Transaksi Barang Masuk</strong>&nbsp;dengan&nbsp;<strong>Transaksi Barang Keluar</strong>&nbsp;kita sediakan field <em><strong>type_id</strong></em> yang merupakan Foreign Key yang me-refer ke&nbsp;. Data dictionary lengkapnya adalah sebagai berikut:</p>
<table border="0" cellpadding="0" cellspacing="0">
<thead>
<tr>
<th scope="col">No.</th>
<th scope="col">Nama Field</th>
<th scope="col">Tipe Data</th>
<th scope="col">Keterangan</th>
</tr>
</thead>
<tbody>
<tr>
<th>1.</th>
<td>id</td>
<td>integer</td>
<td>Primary Key, Auto Increment</td>
</tr>
<tr>
<th>2.</th>
<td>type_id</td>
<td>integer</td>
<td>Foreign Key refer ke tabel transaction_types, untuk membedakan Transaksi Barang Masuk atau Keluar</td>
</tr>
<tr>
<th>3.</th>
<td>trans_code</td>
<td>varchar(100)</td>
<td>Nama panjang yang lebih deskriptif, maksimal 100 karakter</td>
</tr>
<tr>
<th>4.</th>
<td>trans_date</td>
<td>date</td>
<td>Tanggal transaksi</td>
</tr>
<tr>
<th>5.</th>
<td>remarks</td>
<td>text</td>
<td>Teks bebas untuk keterangan, silakan mengarang di field ini juga boleh</td>
</tr>
</tbody>
</table>
<h3>Tabel Detil Transaksi</h3>
<p>Tabel ini akan berisi seluruh transaksi inventory dari aplikasi yang akan kita buat. Untuk membedakan&nbsp;<strong>Transaksi Barang Masuk</strong>&nbsp;dengan&nbsp;<strong>Transaksi Barang Keluar</strong>&nbsp;kita sediakan field&nbsp;<em><strong>type_id</strong></em>&nbsp;yang merupakan Foreign Key yang me-refer ke&nbsp;. Data dictionary lengkapnya adalah sebagai berikut:</p>
<table border="0" cellpadding="0" cellspacing="0">
<thead>
<tr>
<th scope="col">No.</th>
<th scope="col">Nama Field</th>
<th scope="col">Tipe Data</th>
<th scope="col">Keterangan</th>
</tr>
</thead>
<tbody>
<tr>
<th>1.</th>
<td>id</td>
<td>integer</td>
<td>Primary Key, Auto Increment</td>
</tr>
<tr>
<th>2.</th>
<td>trans_id</td>
<td>integer</td>
<td>Foreign Key refer ke tabel transactions, untuk record detil transaksi ini milik transaksi yang mana</td>
</tr>
<tr>
<th>3.</th>
<td>item_id</td>
<td>integer</td>
<td>Foreign Key refer ke tabel items, untuk menentukan barang mana yang harus diubah status stock-nya</td>
</tr>
<tr>
<th>4.</th>
<td>quantity</td>
<td>decimal(10,2)</td>
<td>Jumlah barang yang masuk atau keluar</td>
</tr>
<tr>
<th>5.</th>
<td>remarks</td>
<td>text</td>
<td>Teks bebas untuk keterangan, silakan mengarang di field ini juga boleh</td>
</tr>
</tbody>
</table>
<h3>Diagram ER</h3>
<p>Diagram ER menggunakan notasi IDEF1X dari desain database untuk aplikasi inventory sederhana ini adalah sebagai berikut.</p>
<p><img alt="Design Database Aplikasi Inventiry Sederhana Menggunakan VB.net" src="/images/tutorial/inventory/database-design.png" style="width:600px" /></p>
<h3>Script Database</h3>
<p>Sedangkan script sql create table-nya adalah sebagai berikut.</p>
<pre>
create table items (
id int auto_increment primary key,
code varchar(20) not null,
name varchar(100) not null,
quantity_on_hand decimal(10,2) not null default 0,
remarks text null
) ;

create table transaction_types (
id int auto_increment primary key,
code varchar(20) not null,
name varchar(100) not null
) ;

create table transactions (
id int auto_increment primary key,
type_id int not null,
trans_code varchar(20) not null,
trans_date varchar(100) not null,
remarks text null,
foreign key(type_id) references transaction_types(id)
) ;

create table transaction_details (
id int auto_increment primary key,
trans_id int not null,
item_id int not null,
quantity decimal(10,2) not null default 0,
remarks text null,
foreign key (trans_id) references transactions(id),
foreign key (item_id) references items(id)
) ;
</pre>
<h3>Simpulan</h3>
<p>Dengan demikian selesailah sudah proses analisa dan desain kita. Dengan tersedianya <a href="http://pojokprogrammer.net/content/aplikasi-inventory-sederhana-analisa…">Design Aplikasi</a> dan <a href="http://pojokprogrammer.net/content/aplikasi-inventory-sederhana-analisa…">Design Database</a>, maka langkah selanjutnya kita bisa membuat Aplikasi-nya dengan lebih mudah dan terarah.</p>
<p>^_^</p>