77 BAB 4 PERANCANGAN DAN IMPLEMENTAS I S IS TEM PADA PT. S ARI AROMA JANATA 4.1
Usulan Prosedur Baru Pemasalahan-permasalahan yang terjadi pada sistem yang sedang berjalan pada PT Sari Aroma Janata perlu segera diatasi. Salah satu cara untuk mengatasi hal tersebut adalah dengan membangun sistem berbasis data baru untuk penjualan, pembelian dan persediaan yang sesuai dengan kebutuhan PT Sari Aroma Janata. Hal ini ditujukan untuk menciptakan efisiensi pada proses operasional PT Sari Aroma Janata. Sistem baru yang diusulkan memiliki beberapa prosedur baru berupa: 1. Proses retur penjualan Pada sistem yang lama, proses retur penjualan menyatu dengan proses penjualan. Hal ini dikarenakan pada proses retur yang lama, Kasir akan memasukan data jumlah barang berjumlah negatif pada input penjualan. Proses retur penjualan yang baru akan dipisahkan dari proses penjualan. Pelanggan harus menyertakan bukti pembelian sebagai syarat utama retur penjualan. 2. Proses retur pembelian Pada sistem yang lama, proses retur pembelian menyatu dengan proses pembelian. Hal ini dikarenakan pada proses retur yang lama, Administrasi akan memasukan data jumlah barang berjumlah negatif pada proses input pembelian. Proses retur pembelian yang baru akan
78 dipisahkan dari proses pembelian. Administrasi harus melengkapi datadata pembelian terlebih dahulu sebelum dapat melakukan retur pembelian 3. Proses koreksi persediaan Pada proses koreksi persediaan, pihak PT Sari Aroma Janata dapat mengetahui langsung jumlah keuntungan dan kerugian yang muncul dari koreksi persediaan tersebut. 4. Pencetakan opname persediaan Proses pencetakan opname persediaan berbeda dengan pencetakan laporan persediaan. Pencetakan opname persediaan hanya akan mencetak laporan persediaan berdasarkan kode barang, nama barang dan jumlah persediaan barang sehingga tidak memboroskan pencetakan laporan opname. Selain
prosedur
baru,
sistem basis
data yang diusulkan
akan
menggunakan pemrograman visual pada desain tatap muka pengguna. Sistem yang diusulkan akan disesuaikan dengan sistem operasi yang digunakan pada PT Sari Aroma Janata. Selain itu penghapusan data pada sistem yang baru akan diminimalisasikan.
79 4.2
Diagram Aliran Data Data Flow Diagram (Diagram Arus Data) atau DFD adalah suatu gambaran grafis dari suatu sistem yang menggunakan sejumlah bentuk-bentuk simbol untuk menggambarkan bagaimana data mengalir melalui suatu proses yang saling berkaitan. Di bawah ini adalah rancangan Data Flow Diagram : 4.2.1
Data Flow Diagram Barang d iretur, kod e pemb elian
Pelanggan
Ba rang beli d itan ya Barang dibeli Pembayaran barang d ibe li
Informasi b arang dijual Faktur penjualan F aktur pembelian
Manajer
Laporan pe nju ala n, laporan pem belian, la pora n persed iaa n
Sistem Penjuala n, Pembe lian da n Persediaan PT . Saro ja
Laporan p ersediaan
In form asi ba rang beli ditanya Jum lah uang yang h arus dibayar sistem
Supplier
Pem bayaran barang dibeli Barang b eli ditanya Ba rang diretur
D ata barang h asil koreksi
Gambar 4.1 Diagram Konteks
Gudang
80
4.2.2
Diagram Nol
Gambar 4.2 Diagram Nol
81 4.2.3
Diagram Rinci
Gambar 4.3 Diagram Rinci Penjualan
82
Gambar 4.4 Diagram Rinci Pembelian
83
Gudang
Data laporan persediaan
3.1 Laporan persediaan untuk stok opname
Persediaan
Melakukan stok opname
Data koreksi barang
Koreksi persediaan
Data barang hasil koreksi
Data persediaan hasil koreksi
4.0 Pembuatan laporan penjualan, pembelian, persediaan
Laporan persediaan
Manajer
Gambar 4.5 Diagram Rinci Persediaan 4.3
Tahapan Perancangan Database Perancangan database akan dilakukan sesuai dengan kebutuhan informasi yang telah diidentifikasikan pada PT. Sari Aroma Janata. Perancangan database tersebut akan dibagi menjadi 3 langkah, yaitu : perancangan database konseptual, perancangan database logikal, dan perancangan database fisikal. 4.3.1
Perancangan Database Konseptual Berikut ini adalah tahap-tahap perancangan database konseptual : 4.3.1.1 Mengidentifikasi Tipe Entity Tahap pertama dalam perancangan database konseptual adalah dengan mengidentifikasi objek utama yang menjadi perhatian utama pengguna. Hal ini akan menjadi tipe entitas. Tabel identifikasi dari tipetipe entitas dapat dilihat pada tabel 4.1.
84 Tabel 4.1 Tabel Tipe Entity Nama Entity Cabang
Deskripsi M enjelaskan keterangan
Alias Kantor
umum mengenai cabang
Kejadian Perusahaan memiliki cabang
pada perusahaan Staff
M enjelaskan informasi
Karyawan
mengenai staf JenisStaff
Barang
Setiap staf berkerja pada satu cabang
M enjelaskan jenis staf,
Jenis
Setiap staf memiliki
fungsi kerja staf yang ada
Karyawan
satu jenis staf
M enjelaskan informasi
Barang
Barang dapat dibeli
penting mengenai barang
dan dijual oleh perusahaan
JenisBarang
Pengelompokan barang
Departemen
Setiap barang
menjadi kelompok yang
Barang
digolongkan dalam
sejenis HargaJualBarang Harga jual tiap barang pada
satu jenis barang Harga
periode tertentu
Setiap barang memiliki harga jual yang berbeda beda
Supplier
M enjelaskan informasi
Leveransir
mengenai supplier dari suatu
Barang dibeli dari supplier
barang Penjualan
Informasi penjualan barang yang terjadi
Jual
Penjualan dapat terdiri dari berbagai
85 barang dan barang dapat dijual berkalikali Pembelian
Informasi pembelian barang
Beli
yang terjadi
Pembelian dapat terdiri dari berbagai barang dan barang dapat dibeli berkalikali
KoreksiStok
Informasi mengenai
Koreksi
Kehilangan barang
kehilangan barang yang
Barang
terjadi tiap bulan dan banyak barang yang
terjadi
dapat hilang ReturPenjualan
ReturPembelian
Pembayaran
Informasi mengenai retur
Retur Jual
Pengembalian barang
penjualan barang yang
oleh pelanggan
terjadi
karena alasan tertentu
Informasi mengenai retur
Retur Beli
Pengembalian barang
pembelian barang yang
kepada supplier
terjadi
karena alasan tertentu
Informasi mengenai
Kredit
Pembayaran kredit
pembayaran kredit pada
kepada supplier
pembelian
karena pembelian barang
86 4.3.1.2 Mengidentifikasi Tipe Relationship Setelah mengidentifikasi tipe entitas, maka langkah berikutnya adalah mengidentifikasi semua relasi yang terjadi antara entitas- entitas tersebut. Hal ini bertujuan untuk mengetahui relasi antar entitas dan bagaimana entitas tersebut berhubungan. Tabel relasi antar entitas dapat dilihat pada tabel 4.2. Tabel 4.2 Tabel Relationship Nama Entity
Multiplicity
Relationship
Multiplicity
Nama Entity
Cabang
1
M emiliki
1..*
Staff
Staff
1..*
M emiliki
1
JenisStaff
Staff
1
M elakukan
0..*
Penjualan
Staff
1
M elakukan
0..*
Pembelian
Staff
1
M endata
0..*
KoreksiStok
Staff
1
M endata
0..*
ReturPenjualan
Staff
1
M endata
0..*
ReturPembelian
Barang
1..*
M emiliki
1
JenisBarang
Barang
1
M emiliki
1..*
HargaJualBarang
Penjualan
0..*
M emiliki
1..*
Barang
Penjualan
0..*
M enggunakan
1..*
HargaJualBarang
Pembelian
0..*
M emiliki
1..*
Barang
Pembelian
1..*
M emiliki
1
Supplier
KoreksiStok
0..*
M emiliki
1..*
Barang
ReturPenjualan
0..*
M emiliki
1..*
Barang
87 ReturPenjualan
0..1
M emiliki
1
Penjualan
ReturPembelian
0..*
M emiliki
1..*
Barang
ReturPembelian
0..*
M emiliki
1
Pembelian
Pembayaran
0..*
M emiliki
1
Pembelian
Gambar 4.6 ERD Konseptual Tanpa PK dan Atribut
88 4.3.1.3 Mengidentifikasi dan Menghubungkan Atribut dengan Entity dan Relationship Setelah mengidentifikasi entitas dan relasi, maka langkah selanjutnya adalah mengidentifikasi tipe entitas dan relasi yang dipilih untuk direpresentasikan di dalam database (dalam hal ini menjadi atribut). Tabel data atribut dapat dilihat pada tabel 4.3. Tabel 4.3 Tabel Atribut pada Entitas Nama Entity Cabang
Atribut
Deskripsi
Tipe Data Null Multivalued
KdCabang
Kode cabang
Char (5)
No
No
NamaCabang
Nama cabang
Char (30)
No
No
Alamat
Alamat
Text
No
No
Char (13)
No
No
cabang Telp
Telepon cabang
Fax
Fax cabang
Char (13)
Yes
No
NPWP
NPWP
Char (25)
No
No
TglCbg
Tanggal
Date
No
No
berdiri Staff
KdStaff
Kode staf
Char (3)
No
No
Nama
Nama staf
Char (30)
No
No
Sex
Jenis kelamin
Char (1)
No
No
TglLhr
Tanggal lahir
Date
No
No
Alamat
Alamat staf
Text
No
No
89
JenisStaff
Telp
Telepon staf
Char (13)
Yes
No
Jabatan
Jabatan staf
Char(2)
No
No
UserID
User name
Char(15)
No
No
Pass
Password
Char(8)
No
No
KdJnsStaff
Kode jenis
Char(2)
No
No
staf
Barang
JenisStaff
Posisi staf
Char(20)
No
No
KdBarang
Kode barang
Char (5)
No
No
NamaBarang
Nama Barang
Char (25)
No
No
Desk
Deskripsi
Text
Yes
No
Qty
Jumlah
Integer
No
No
Qtymin
Jumlah
Integer
No
No
minimum
JenisBarang
Dept
Depatemen
Char(2)
No
No
KdJnsBarang
Kode jenis
Char(2)
No
No
barang JnsBarang
Jenis barang
Char(30)
No
No
Desk
Deskripsi
Text
Yes
No
Kode harga
Char (8)
No
No
Harga
Harga
Decimal
No
No
Barang
Barang
Char (5)
No
No
TglIn
Tanggal
Date
No
No
HargaJualBarang KdHarga
mulai
90 TglOut
Tanggal
Date
Yes
No
selesai
Supplier
Status
Status harga
Char (1)
No
No
KdSupplier
Kode supplier
Char (3)
No
No
Nama
Nama
Char (30)
No
No
Char (50)
No
No
Char (13)
No
Yes
supplier Alamat
Alamat supplier
Telepon
Telepon supplier
Penjualan
Deskripsi
Deskripsi
Text
Yes
No
KdPenjualan
Kode
Char (12)
No
No
Date
No
No
Char (2)
No
No
Char (5)
No
Yes
Integer
No
Yes
penjualan TglPenjualan
Tanggal penjualan
Kasir
Kasir yang melayani
Barang
Barang yang dijual
Qty
Jumlah barang
Pembelian
Harga
Harga Barang
Decimal
No
Yes
KdPembelian
Kode
Char (12)
No
No
91 pembelian TglPembelian
Tanggal
Date
No
No
Char (3)
No
No
Char (30)
No
No
Char (6)
No
No
Date
Yes
No
Char (5)
No
Yes
Integer
No
Yes
Decimal
No
Yes
Char (12)
No
No
Date
No
No
Char (12)
No
No
pembelian Staff
Staf yang bertugas
Supplier
Nama supplier
JnsPembayaran
Jenis pembayaran
TglJatuhTempo
Tanggal jatuh temp
Barang
Barang yang dibeli
Qty
Jumlah barang
Harga
Harga beli barang
ReturPenjualan
KdRtrJual
Kode retur penjualan
TglRtrJual
Tanggal penjualan
FktrJual
Bukti penjualan
92 Staff
Staf yang
Char (3)
No
No
Char (5)
No
Yes
Integer
No
Yes
Char (12)
No
No
bertugas Barang
Barang yang dijual
Qty
Jumlah barang
ReturPembelian
KdRtrBeli
Kode retur pembelian
TglRetur
Tanggal retur
Date
No
No
FktrBeli
Nomor faktur
Char (12)
No
No
Char (3)
No
No
Char (5)
No
Yes
Integer
No
Yes
Char (12)
No
No
Date
No
No
Char (3)
No
No
Beli Staff
Staf yang bertugas
Barang
Barang yang diretur
Qty
Jumlah barang
KoreksiStok
KdKoreksi
Kode koreksi stok
Tgl
Tanggal kehilangan
Staff
Staf yang bertugas
93
Pembayaran
Barang
Barang hilang Char (5)
No
Yes
Qty
Jumlah hilang Integer
No
Yes
KdBayar
Kode
Char (12)
No
No
Date
No
No
Decimal
No
No
pembayaran kredit TglBayar
Tanggal terjadinya pembayaran
Pembayaran
Jumlah yang telah dibayar
4.3.1.4 Mengidentifikasi Atribut Domain Langkah berikutnya adalah mengidentifikasi atribut domain. Tujuan dari langkah ini adalah untuk menetapkan domain dari atributatribut yang ada pada model konseptual. Tabel untuk atribut domain dapat dilihat pada tabel 4.4. Tabel 4.4 Tabel Atribut Domain Nama Entity Cabang
Atribut KdCabang
Domain 5 karakter, 3 karakter pertama diawali string untuk menentukan lokasi cabang, dan karakter berikutnya merupakan angka.
NamaCabang
String bebas
Alamat
String bebas
94
Staff
Telp
M aksimum 13 karakter angka antara 0 – 9
Fax
M aksimum 13 karakter angka antara 0 – 9
NPWP
String bebas
TglCbg
Format tanggal
KdStaff
3 karakter yang merupakan angka dari 001 – 999
Nama
String bebas
Sex
1 karakter, yaitu “L“ untuk laki-laki dan “P“ untuk perempuan
JenisStaff
TglLhr
Format tanggal
Alamat
String bebas
Telp
M aksimum 13 karakter angka antara 0 – 9
Jabatan
String bebas
UserID
String bebas
Pass
String bebas
KdJnsStaff
3 karakter yang merupakan angka mulai dari 001999
Barang
JenisStaff
String bebas
KdBarang
5 karakter, 2 karakter awal merupakan kode jenis barang, dan karakter berikutnya merupakan angka mulai dari 001-999
NamaBarang
String bebas
Desk
String bebas
Qty
Angka, lebih besar dari 0
95
JenisBarang
Qtymin
Angka, lebih besar dari 0
Dept
String bebas
KdJnsBarang
2 karakter yang merupakan angka mulai dari 0199
JnsBarang
String bebas
Desk
String bebas
HargaJualBarang KdHarga
8 karakter yang merupakan angka mulai dari 00000001-99999999.
Supplier
Harga
Format harga
Barang
String bebas
TglIn
Format tanggal
TglOut
Format tanggal
Status
1 karakter yang merupakan angka
KdSupplier
3 karakter yang merupakan angka mulai dari 001999
Penjualan
Nama
String bebas
Alamat
String bebas
Telepon
M aksimum 13 karakter angka antara 0 – 9
Deskripsi
String bebas
KdPenjualan
12 karakter, 1 karakter pertama diawali string “J“, dan karakter berikutnya merupakan angka.
TglPenjualan
Format tanggal
Staff
3 karakter yang merupakan angka dari 001 – 999
96
Pembelian
Barang
String bebas
Qty
Angka, lebih besar dari 0
Harga
Format harga
KdPembelian
12 karakter, 1 karakter pertama diawali string “B“, dan karakter berikutnya merupakan angka.
TglPembelian
Format tanggal
Staff
3 karakter yang merupakan angka dari 001 – 999
Supplier
String bebas
JnsPembayaran
6 karakter, “cash” untuk pembayaran tunai, dan “credit” untuk pembayaran kredit
ReturPenjualan
TglJatuhTempo
Format tanggal
Barang
String bebas
Qty
Angka, lebih besar dari 0
Harga
Format harga
KdRtrJual
12 karakter, 2 karakter pertama diawali string “RJ“, dan karakter berikutnya merupakan angka.
ReturPembelian
TglRtrJual
Format tanggal
FktrJual
String bebas
Staff
3 karakter yang merupakan angka dari 001 – 999
Barang
String bebas
Qty
Angka, lebih besar dari 0
KdRtrBeli
12 karakter, 2 karakter pertama diawali string “RB“, dan karakter berikutnya merupakan angka.
97
KoreksiStok
TglRetur
Format tanggal
FktrBeli
String bebas
Staff
3 karakter yang merupakan angka dari 001 – 999
Barang
String bebas
Qty
Angka, lebih besar dari 0
KdKoreksi
12 karakter, 1 karakter pertama diawali string “K“, dan karakter berikutnya merupakan angka.
Pembayaran
Tgl
Format tanggal
Staff
3 karakter yang merupakan angka dari 001 – 999
Barang
String bebas
Qty
Angka, lebih besar dari 0
KdBayar
12 karakter yang merupakan angka
TglBayar
Format tanggal
Pembayaran
Format harga
98 Pembayaran
Cabang
KdBayar TglBayar Pembayaran
KdCabang NamaCabang Alamat Telp Fax NPWP TglCbg
1..1 Memili ki
0..* 1 ..*
KoreksiStok
0..*
1..1
Me ndata
Staff
JenisStaff
1..1 S upplier
KdKoreksi St aff Tgl I tem Qty
Pembelian
1 ..1 Memiliki
KdSupplier Nama Al amat Telp Deskripsi
0..*
1..1 KdJnsStaff JenisStaff
1..1
Mendata
0..*
ReturPenjualan
1..1 Penjualan
0..* KdRtrBeli Staff TglRet ur Fkt rBeli It em Qty
Barang
1..*
Memili ki
Melakukan
1..1
1..* 1..* 1..*
K dBarang NamaBarang Desk Qty Qtymi n Dept
1..*
1..1 Memili ki 0..1
K dRt rJual S taf f TglRetur FktrJual I tem Qty
ReturPembelian
KdJnsBarang JnsBarang Desk
1..*
1 ..1
1..1 Memi liki 0..*
JenisBarang
Me mil iki
0..* Me lakukan 1..1
KdPembelian Staff TglPembelian JnsPembayaran TglJatuhTempo Item Qt y Harga Penyalur
1..*
Memili ki
Memi liki
1..*
KdStaf f Nama Sex TglLhr Alamat Telp Cabang Jabatan USERID Pass
Memil iki
0..*
1..* Men ggunakan
KdPenjualan Tgl Penjualan Kasir It em Qty Harga
Mendata
1 ..* HargaJualBarang
0..*
0..* Memili ki Memi liki
1..1
0..*
1..*
K dHarga B arang Harga TglIn TglOut S tat us
Memi liki
1..*
Gambar 4.7 ERD Konseptual tanpa PK 4.3.1.5 Menentukan Atribut Primary Keys dan Candidate Key Langkah ini bertujuan untuk mengidentifikasi candidate key pada entitas, lalu kemudian memilih salah satu untuk menjadi sebuah primary key. Candidate key yang tidak terpilih disebut sebagai alternate key. Tabel primary key dan candidate key dapat dilihat pada tabel 4.5. Tabel 4.5 Tabel Primary key dan Candidate key Entity Cabang
Candidate Key KdCabang
Primary Key KdCabang
NamaCabang Staff
KdStaff
KdStaff
Telp JenisStaff
KdJnsStaff
KdJnsStaff
99 Barang
KdBarang
KdBarang
JenisBarang
KdJnsBarang
KdJnsBarang
HargaJualBarang
KdHarga
KdHarga
Supplier
KdSupplier
KdSupplier
Telepon Penjualan
KdPenjualan
KdPenjualan
Pembelian
KdPembelian
KdPembelian
ReturPenjualan
KdRtrJual
KdRtrJual
ReturPembelian
KdRtrBeli
KdRtrBeli
KoreksiStok
KdKoreksi
KdKoreksi
Pembayaran
KdBayar
KdBayar
100
Gambar 4.8 ERD Konseptual 4.3.1.6 Memeriksa Redudancy Model Langkah ini bertujuan memeriksa redundancy pada model, umumnya berupa: 1. One to one relationship
Retur
dan
penjualan
tidak
dapat
digabungkan
sebab
merupakan dua entity yang berebeda. Tidak ditemukan redundancy data sehingga tidak perlu perubahanan pada rancangan konseptual.
101 4.3.1.7 Memvalidasikan Model Konseptual Lokal dengan Transaksi User Langkah ini bertujuan untuk memastikan bahwa konseptual model yang telah dibuat dapat mendukung transaksi yang dibutuhkan. Gambar alur transaksi dapat dilihat pada gambar 4.9.
4.9 Gambar Alur Transaksi Konseptual Keterangan: (a) input data staff (b) memilih jenis staff pada staff (c) memilih jenis barang untuk barang (d) menambah jenis barang (e) memilih barang untuk ditentukan harga jualnya
102 (f) menambah supplier (g) staff memasukkan data penjualan (h) data barang dimasukkan dalam penjualan (i) harga dimasukkan dalam penjualan (j) staff memasukkan data pembelian (k) data barang dimasukkan dalam pembelian (l) staff memasukkan data retur penjualan (m) data barang dimasukkan dalam retur penjualan (n) staff memasukkan data retur pembelian (o) data barang dimasukkan dalam retur pembelian (p) staff memasukkan data koreksi persediaan (q) data barang dimasukkan dalam koreksi persediaan (r) mengubah data staf (s) mengubah data barang (t) mengubah data supplier (u) melakukan pembayaran dari pembelian (v) cabang mendaftarkan staff 4.3.2
Perancangan Database Logikal Berikut ini adalah langkah-langkah perancangan database logikal : 4.3.2.1 Membuat Relasi untuk Logical Data Model Langkah ini bertujuan untuk menciptakan relasi bagi data model logical agar dapat merepresentasikan entitas, relationship, dan atribut yang telah diidentifikasi.
103 1.
Tipe entity kuat Cabang (KdCabang, NamaCabang, Alamat, Telp, Fax, NPWP, TglCbg) Primary key : KdCabang S taff (KdStaff, Nama, Sex, T glLhr, Alamat, Telp, UserID, Pass, KdJnsStaff, KdCabang) Primary key : KdStaff JenisS taff (KdJnsStaff, JenisStaff) Primary key : KdJnsStaff Supplier (KdSupplier, Nama, Alamat, Deskripsi) Primary key : KdSupplier Barang
(KdBarang,
NamaBarang,
Deskripsi,
Qty,
QtyM in, KdJnsBarang) Primary key : KdBarang JenisBarang (KdJnsBarang, JenisBarang, Deskripsi) Primary key : KdJnsBarang Pembelian (KdBeli, TglPembelian, JenisPembayaran, TglJatuhTempo, Qty, Harga, KdStaff, KdSupplier, KdBarang) Primary key : KdBeli HargaJual (KdHarga, Harga, TglIn, T glOut, Status, KdBarang) Primary key : KdHarga
104 Penjualan
(KdJual,
TglPenjualan,
Qty,
KdStaff,
KdBarang, KdHarga) Primary key : KdJual ReturPembelian (KdRtrBeli, TglRetur, Qty, KdBeli, KdStaff, KdBarang) Primary key : KdRtrBeli ReturPenjualan (KdRtrJual, TglRetur, Qty, KdJual, KdStaff, KdBarang) Primary key : KdRtrJual KoreksiStok (KdKoreksi, Tgl, Qty, KdStaff, KdBarang) Primary key : KdKoreksi Pembayaran ( KdBayar, TglBayar, Pembayaran, KdBeli) Primary key : KdBayar 2.
Tipe entity lemah TelpS upplier ( NoTelp, ContactPerson, KdSupplier ) Primary key NoTelp
3.
One to many binary relationship Setiap relasi yang berelasi one to many dilakukan pembuatan foreign key pada entitas “Many side” dari primary key pada “One side”.
105 Mengirimkan KdCabang ke Staff dalam 1:* relasi Memiliki
Cabang (KdCabang, NamaCabang, Alamat, Telp, Fax, NPWP, TglCbg) Primary key KdCabang
Staff (KdStaff, Nama, Sex, TglLhr, Alamat, Tlp, KdCabang, Jabatan) Primary key KdStaff Foreign Key KdCabang references Cabang(KdCabang)
Mengirimkan KdJnsStaff ke Staff dalam 1:* relasi Memiliki
JenisStaff (KdJnsStaff, JenisStaff) Primary key KdJnsStaff
Staff (KdStaff, Nama, Sex, TglLhr, Alamat, Tlp, KdCabang, KdJnsStaff) Primary key KdStaff Foreign Key KdCabang references Cabang(KdCabang) Foreign Key KdJnsStaff references JenisStaff(KdJnsStaff)
Mengirimkan KdStaff ke Hilang dalam 1:* relasi Mendata
Staff (KdStaff, Nama, Sex, TglLhr, Alamat, Tlp, KdCabang, KdJnsStaff) Primary key KdStaff
KoreksiStok(KdKoreksi, KdStaff, Tgl, Barang, Qty) Primary key KdKoreksi Foreign Key KdStaff references Staff(KdStaff)
Mengirimkan KdStaff ke Pembelian dalam 1:* relasi Melakukan
Staff (KdStaff, Nama, Sex, TglLhr, Alamat, Tlp, KdCabang, KdJnsStaff) Primary key KdStaff
Pembelian(KdBeli, KdStaff, TglPembelian,JnsPembayaran, TglJatuhTempo, Barang, Qty, Harga, KdSupplier) Primary key KdBeli Foreign Key KdStaff references Staff(KdStaff) Foreign Key KdSupplier references Supplier(KdSupplier)
106 Mengirimkan KdStaff ke Penjualan dalam 1:* relasi Melakukan
Staff (KdStaff,Nama,Sex,TglLhr,Alamat,Tlp,K dCabang,KdJnsStaff) Primary key KdStaff
Penjualan(KdJual, KdStaff, TglPenjualan, Barang, Qty, KdHarga) Primary key KdJual Foreign Key KdStaff references Staff(KdStaff)
Mengirimkan KdStaff ke Returpenjualan dalam 1:* relasi Mendata
Staff (KdStaff,Nama,Sex,TglLhr,Alamat,Tlp,Kd Cabang,KdJnsStaff) Primary key KdStaff
ReturPenjualan(KdRtrJual, KdJual, KdStaff, TglRetur, FktrJual,Barang, Qty) Primary key KdRtrJual Foreign Key KdJual references Penjualan(KdJual) Foreign Key KdStaff references Staff(KdStaff)
Mengirimkan KdStaff ke Returpembelian dalam 1:* relasi Mendata
Staff (KdStaff,Nama,Sex,TglLhr,Alamat,Tlp,Kd Cabang,KdJnsStaff) Primary key KdStaff
ReturPembelian(KdRtrBeli, KdBeli, KdStaff, TglRetur, FktrBeli,Barang, Qty) Primary key KdRtrBeli Foreign Key KdBeli references Pembelian(KdBeli) Foreign Key KdStaff references Staff(KdStaff)
107
Mengirimkan KdJnsBarang ke Barang dalam 1:* relasi Memiliki
JenisBarang(KdJnsBarang, JnsBarang, Desk) Primary key KdJnsBarang
Barang (KdBarang, NamaBarang, Desk, Qty, Qtymin, KdJnsBarang) Primary key KdBarang Foreign Key KdJnsBarang references JenisBarang(KdJnsBarang)
Mengirimkan KdBarang ke HargaJual dalam 1:* relasi Memiliki
Barang (KdBarang, NamaBarang, Desk, Qty, Qtymin, KdJnsBarang) Primary key KdBarang
HargaJual (KdHarga, KdBarang, Harga, TglIn, TglOut, Status) Primary key KdHarga Foreign Key KdBarang references Barang(KdB arang)
Mengirimkan KdSupplier ke Pembelian dalam 1:* relasi Memiliki
Supplier (KdSupplier, Nama, Alamat, Deskripsi) Primary key KdSupplier
Pembelian(KdBeli, KdStaff, TglPembelian,JnsPembayaran,TglJa tuhTempo, Barang, Qty, Harga, KdSupplier) Primary key KdBeli Foreign Key KdStaff references Staff(KdStaff) Foreign Key KdSupplier references Supplier(KdSupplier)
Mengirimkan KdBeli ke Pembayaran dalam 1:* relasi Memiliki
Pembelian(KdBeli, KdStaff, TglPembelian,JnsPembayaran, Barang, Qty, Harga, KdSupplier)
Pembayaran(KdBayar, KdBeli, TglBayar,Pembayaran) Primary key KdBayar Foreign Key KdBeli references Pembelian(KdBeli)
108 4.
One to one binary relationship
Mengirimkan KdJual ke ReturPenjualan dalam 1:* relasi Memiliki
Penjualan(KdJual, KdStaff, TglPenjualan, Barang, Qty, Harga) Primary key KdJual
ReturPenjualan(KdRtrJual, KdJual, KdStaff, TglRetur, FktrJual,Barang, Qty) Primary key KdRtrJual Foreign Key KdJual references Penjualan(KdJual) Foreign Key KdStaff references Staff(KdStaff)
Mengirimkan KdBeli ke ReturPembelian dalam 1:* relasi Memiliki
Pembelian(KdBeli, KdStaff, TglPembelian,JnsPembayaran, TglJatuhTempo,Barang, Qty, Harga, KdSupplier) Primary key KdBeli
ReturPembelian(KdRtrBeli, KdBeli, KdStaff, TglRetur, FktrBeli,Barang, Qty) Primary key KdRtrBeli Foreign Key KdBeli references Pembelian(KdBeli) Foreign Key KdStaff references Staff(KdStaff)
Mengirimkan KdSupplier ke TeleponSupplier dalam 1:* relasi Memiliki
Supplier (KdSupplier, Nama, Alamat, Deskripsi) Primary key KdSupplier
TeleponSupplier(NoTelp, KdSupplier, CP) Primary key NoTelp Foreign Key KdSupplier references Supplier(KdSupplier) Foreign Key KdStaff references Staff(KdStaff)
109 5.
Penjualan(KdJual, KdStaff, TglPenjualan, Barang, Qty, KdHarga) Primary key KdJual Foreign Key KdStaff references Staff(KdStaff)
Many to many relationship
HargaJual (KdHarga, KdBarang, Harga, TglIn, TglOut, Status) Primary key KdHarga Foreign Key KdBarang references Barang(KdB arang)
Barang (KdBarang, NamaBarang, Desk, Qty, Qtymin, KdJnsBarang) Primary key KdBarang Foreign Key KdStaff references Staff(KdStaff)
PenjualanDetail ( KdJual,KdBarang, KdHarga, Qty) Primary key KdJual,KdBarang Foreign Key KdJual references Penjualan (KdJual) Foreign Key KdBarang references Barang (KdBarang) Foreign Key KdHarga references HargaJual (KdHarga)
Pembelian(KdBeli, KdStaff, TglPembelian,JnsPembayaran,TglJatuhT empo, Barang, Qty, Harga, KdSupplier) Primary key KdBeli Foreign Key KdStaff references Staff(KdStaff) Foreign Key KdSupplier references Supplier(KdSupplier)
Barang (KdBarang, NamaBarang, Desk, Qty, Qtymin, KdJnsBarang) Primary key KdBarang Foreign Key KdStaff references Staff(KdStaff)
PembelianDetail(KdBeli,KdBarang,Qty,Harga) Primary key KdBeli,KdBarang Foreign Key KdBeli references Pembelian (KdBeli) Foreign Key KdBarang references Barang (KdBarang)
110
KoreksiStok(KdKoreksi, KdStaff, Tgl, Barang, Qty) Primary key KdKoreksi
Barang (KdBarang, NamaBarang, Desk, Qty, Qtymin, KdJnsBarang) Primary key KdBarang Foreign Key KdStaff references Staff(KdStaff)
KoreksiStokDetail(KdKoreksi, Kdbarang, Qty) Primary key KdKoreksi,KdBarang Foreign Key KdKoreksi references Kehilangan(KdKoreksi) Foreign Key KdBarang references Barang(KdB arang)
ReturPenjualan(KdRtrJual, KdJual, KdStaff, TglRetur, FktrJual,Barang, Qty) Primary key KdRtrJual
Barang (KdBarang, NamaBarang, Desk, Qty, Qtymin, KdJnsBarang) Primary key KdBarang Foreign Key KdStaff references Staff(KdStaff)
ReturJualDetail(KdRtrJual, Kdbarang, Qty) Primary key KdRtrJual,KdBarang Foreign Key KdRtrJual references ReturPenjualan(KdRtrJual) Foreign Key KdBarang references Barang(KdB arang)
ReturPembelian(KdRtrBeli, KdBeli, KdStaff, TglRetur, FktrBeli,Barang, Qty) Primary key KdRtrBeli
Barang (KdBarang, NamaBarang, Desk, Qty, Qtymin, KdJnsBarang) Primary key KdBarang Foreign Key KdStaff references Staff(KdStaff)
ReturBeliDetail(KdRtrBeli, Kdbarang, Qty) Primary key KdRtrBeli,KdBarang Foreign Key KdRtrBeli references ReturPembelian(KdRtrBeli) Foreign Key KdBarang references Barang(KdB arang)
111 6.
Atribut multivalue
Mengirimkan KdSupplier ke TeleponSupplier
Supplier (KdSupplier, Nama, Alamat, Deskripsi) Primary key KdSupplier
TeleponSupplier(NoTelp, KdSupplier, CP) Primary key NoTelp Foreign Key KdSupplier references Supplier(KdSupplier)
4.3.2.2 Validasi Menggunakan Normalisasi Langkah berikutnya adalah dengan memvalidasikan relasi pada data model logical dengan menggunakan normalisasi. Tujuannya adalah untuk menghilangkan anomali data, antara lain redundancy, perhitungan, ketergantungan parsial, dan ketergantungan pada atribut non primary key. UNF: Penjualan : NamaCabang + TelpCabang + TglPenjualan + KdJual + NamaStaff + {KdBarang + NamaBarang + Qty + Price + Subtotal} + GrandTotal Pembelian : NamaCabang + TelpCabang + TglPembelian + KdBeli + NamaStaff + Jenis Staff + KdSupplier + NamaSupplier + TelpSupplier + JenisPembayaran + KdBayar + { KdBarang + NamaBarang + JenisBarang + Qty + Harga + Subtotal } + Grandtotal Persediaan : NamaCabang + TelpCabang + Tanggal + { KdBarang + Nama barang + JenisBarang + QtyJual + QtyBeli + QtySisa + Harga + Subtotal} + Grandtotal
112 KoreksiStok: KdKoreksi + NamaCabang + TelpCabang + Tanggal + NamaStaff + JenisStaff + { KdBarang + NamaBarang + JenisBarang + Qty + Harga + Subtotal } + Grandtotal ReturPenjualan : NamaCabang + TelpCabang + TglReturJual + KdReturJual + NamaStaff + JenisStaff + { KdBarang + NamaBarang + JenisBarang + Qty + Harga + Subtotal } + Grandtotal ReturPembelian : NamaCabang + TelpCabang + TglReturBeli + KdReturBeli + NamaStaff + JenisStaff + KdSupplier + NamaSupplier + TelpSupplier + { KdBarang + NamaBarang + JenisBarang + Qty + Harga + Subtotal } + Grandtotal NF1 : Tujuan dari tahap normalisasi ini adalah untuk menghilangkan redundancy dan perhitungan. Penjualan : @KdJual + TglPenjualan + KdCabang + NamaCabang + AlamatCabang + TelpCabang + Fax + NPWP + TglCabang + KdStaff + NamaStaff + JenisKelaminStaff + TglLhrStaff + AlamatStaff + TelpStaff + UserID + Pass + @ KdBarang + NamaBarang + Deskripsi + Qty + QtyM in + @ KdHarga + Harga + TglIn + TglOut + Status Pembelian : @KdBeli + TglPembelian
+ JenisPembayaran +
TglJatuhTempo + KdBayar + TglBayar + Pembayaran + KdCabang + NamaCabang + AlamatCabang + TelpCabang + Fax +
NPWP
+
TglCabang
+
KdStaff
+
NamaStaff
+
JenisKelaminStaff + TglLhrStaff + AlamatStaff + TelpStaff +
113 UserID + Pass NamaSupplier
+ KdJenis Staff + JenisStaff + KdSupplier + +
AlamatSupplier
+
DeskripsiSupplier
+
NoTelpSupplier + ContactPerson + @ KdBarang + NamaBarang + Deskripsi + Qty + QtyM in + @ KdHarga + Harga + TglIn + TglOut + Status KoreksiStok:
@KdKoreksi
+
TanggalHilang
+
KdCabang +
NamaCabang + AlamatCabang + TelpCabang + Fax + NPWP + TglCabang + KdStaff + NamaStaff + JenisKelaminStaff + TglLhrStaff + AlamatStaff + TelpStaff + UserID + Pass
+
KdJenis Staff + JenisStaff + @ KdBarang + NamaBarang + Deskripsi + Qty + QtyM in + @ KdHarga + Harga + TglIn + TglOut + Status ReturPenjualan : @KdReturJual + TglReturJual + KdCabang + NamaCabang + AlamatCabang + TelpCabang + Fax + NPWP + TglCabang + KdStaff + NamaStaff + JenisKelaminStaff + TglLhrStaff + AlamatStaff + TelpStaff + UserID + Pass
+
KdJenis Staff + JenisStaff + @ KdBarang + NamaBarang + Deskripsi + Qty + QtyM in + @ KdHarga + Harga + TglIn + TglOut + Status ReturPembelian : @KdReturBeli + TglReturBeli
+ KdCabang +
NamaCabang + AlamatCabang + TelpCabang + Fax + NPWP + TglCabang + KdStaff + NamaStaff + JenisKelaminStaff + TglLhrStaff + AlamatStaff + TelpStaff + UserID + Pass
+
KdJenis Staff + JenisStaff + KdSupplier + NamaSupplier +
114 AlamatSupplier
+
DeskripsiSupplier
+
NoTelpSupplier
+
ContactPerson + @ KdBarang + NamaBarang + Deskripsi + Qty + QtyM in + @ KdHarga + Harga + TglIn + TglOut + Status NF2 : Tujuan dari tahap normalisasi ini adalah untuk menghilangkan ketergantungan parsial. PenjualanHeader : @KdJual + TglPenjualan
+
KdCabang +
NamaCabang + AlamatCabang + TelpCabang + Fax + NPWP + TglCabang + KdStaff + NamaStaff + JenisKelaminStaff + TglLhrStaff + AlamatStaff + TelpStaff + UserID + Pass PenjualanDetail : @KdJual + @ KdBarang + @ KdHarga + Qty Barang : @ KdBarang + NamaBarang + Deskripsi + Qty + QtyM in Harga : @ KdHarga + Harga + TglIn + TglOut + Status PembelianHeader : @KdBeli + TglPembelian + JenisPembayaran + TglJatuhTempo + KdBayar + TglBayar + Pembayaran + KdCabang + NamaCabang + AlamatCabang + TelpCabang + Fax +
NPWP
+
TglCabang
+
KdStaff
+
NamaStaff
+
JenisKelaminStaff + TglLhrStaff + AlamatStaff + TelpStaff + UserID + Pass NamaSupplier
+ KdJenis Staff + JenisStaff + KdSupplier + +
AlamatSupplier
+
DeskripsiSupplier
+
NoTelpSupplier + ContactPerson PembelianDetail : @KodeBeli + @ KdBarang + Qty KoreksiStokHeader: @KdKoreksi + TanggalHilang + KdCabang + NamaCabang + AlamatCabang + TelpCabang + Fax + NPWP + TglCabang + KdStaff + NamaStaff + JenisKelaminStaff +
115 TglLhrStaff + AlamatStaff + TelpStaff + UserID + Pass
+
KdJenis Staff + JenisStaff KoreksiStokDetail : @KdKoreksi + @KdBarang + Qty ReturPenjualanHeader : @KdReturJual + TglReturJual + KdCabang + NamaCabang + AlamatCabang + TelpCabang + Fax + NPWP + TglCabang + KdStaff + NamaStaff + JenisKelaminStaff + TglLhrStaff + AlamatStaff + TelpStaff + UserID + Pass
+
KdJenis Staff + JenisStaff ReturPenjualanDetail : @KdReturJual + @KdBarang + Qty ReturPembelian : @KdReturBeli + TglReturBeli
+ KdCabang +
NamaCabang + AlamatCabang + TelpCabang + Fax + NPWP + TglCabang + KdStaff + NamaStaff + JenisKelaminStaff + TglLhrStaff + AlamatStaff + TelpStaff + UserID + Pass
+
KdJenis Staff + JenisStaff + KdSupplier + NamaSupplier + AlamatSupplier
+
DeskripsiSupplier
+
NoTelpSupplier
+
ContactPerson ReturPembelianDetail : @KdReturBeli + @KdBarang + Qty NF3 : Tujuan dari tahap normalisasi ini adalah untuk menghilangkan ketergantungan kepada atribut non primary key. PenjualanHeader : @KdJual + TglPenjualan + #KdStaff PenjualanDetail : @KdJual + @ KdBarang + @ KdHarga + Qty PembelianHeader : @KdBeli + TglPembelian + JenisPembayaran + TglJatuhTempo + #KdStaff + #KdSupplier PembelianDetail : @KdBeli + @ KdBarang + Qty
116 Pembayaran : @KdBayar + TglBayar + Pembayaran + #KdBeli KoreksiStokHeader: @KdKoreksi + TanggalHilang + #KdStaff KoreksiStokDetail : @KdKoreksi + @KdBarang + Qty ReturPenjualanHeader : @KdReturJual + TglReturJual + #KdJual + #KdStaff ReturPenjualanDetail : @KdReturJual + @KdBarang + Qty ReturPembelian : @KdReturBeli + TglReturBeli + #KdBeli + #KdStaff ReturPembelianDetail : @KdReturBeli + @KdBarang + Qty Cabang : @KdCabang + NamaCabang + AlamatCabang + TelpCabang + Fax + NPWP + TglCabang S taff : @KdStaff + NamaStaff + JenisKelaminStaff + TglLhrStaff + AlamatStaff + TelpStaff + UserID + Pass + #KdJenisStaff + #KdCabang Barang : @ KdBarang + NamaBarang + Deskripsi + Qty + QtyM in + #KdJenisBarang Harga : @ KdHarga + Harga + TglIn + TglOut + Status + #KdBarang JenisS taff : @KdJenis Staff + JenisStaff Supplier :
@KdSupplier + NamaSupplier + AlamatSupplier +
DeskripsiSupplier TelpS upplier : @NoTelpSupplier + ContactPerson + #KdSupplier
117 4.3.2.3 Memvalidasikan Relasi Terhadap Transaksi User Langkah ini bertujuan untuk memasrikan bahwa relasi pada data model logikal mendukung transaksi yang dibutuhkan. Gambar relasi terhadap transaksi user logikal dapat dilihat pada gambar 4.10.
Gambar 4.10 Gambar Alur Transaksi Logikal
118 (a) input data staff (b) memilih jenis staff pada staff (c) memilih jenis barang untuk barang (d) menambah jenis barang (e) memilih barang untuk ditentukan harga jualnya (f) menambah supplier (g) memasukkan telp supplier (h) staff memasukkan data penjualan (i) data barang dimasukkan dalam penjualan (j) harga dimasukkan dalam penjualan (k) staff memasukkan data pembelian (l) data barang dimasukkan dalam pembelian (m) staff memasukkan data retur penjualan (n) data barang dimasukkan dalam retur penjualan (o) staff memasukkan data retur pembelian (p) data barang dimasukkan dalam retur pembelian (q) staff memasukkan data koreksi persediaan (r) data barang dimasukkan dalam koreksi persediaan (s) mengubah data staf (t) mengubah data barang (u) mengubah data supplier (v) melakukan pembayaran dari pembelian (w) cabang mendaftarkan staff
119 4.3.2.4 Mendefinisikan Batasan Integritas Langkah ini bertujuan untuk memeriksa batasan integritas yang direpresentasikan pada data model logical. Ada lima buah batasan integritas yang didefinisikan, yaitu : 1.
Constraint required data telah diidentifikasi pada bagian 4.3.1.3
2.
Atribut domain constraint telah diidentifikasi pada tahap 4.3.1.4
3.
Multiplicity telah diidentifikasi pada step 4.3.1.2
4.
Entity integrity telah diidentifikasi pada step 4.3.1.5
5.
Referential integrity adalah seperti yang terlihat pada tabel berikut ini : Tabel 4.6 Tabel Referential Integrity
Cabang (KdCabang, NamaCabang, Alamat, Telp, Fax, NPWP, TglCbg) Primary key KdCabang S taff (KdStaff, Nama, Sex, T glLhr, Alamat, Telp, UserID, Pass, KdJnsStaff, KdCabang) Primary key KdStaff Foreign Key KdJnsStaff references JenisStaff (KdJnsStaff) ON UPDATE CASCADE ON DELETE CASCADE Foreign Key KdCabang references Cabang (KdCabang) ON UPDATE CASCADE ON DELETE CASCADE JenisS taff (KdJnsStaff, JenisStaff) Primary key KdJnsStaff Barang (KdBarang, NamaBarang, Deskripsi, Qty, QtyM in, KdJnsBarang) Primary key KdBarang
120 Foreign Key KdJnsBarang references JenisBarang (KdJnsBarang) ON UPDATE CASCADE ON DELETE CASCADE JenisBarang (KdJnsBarang, JenisBarang, Deskripsi) Primary key KdJnsBarang HargaJual (KdHarga, Harga, TglIn, TglOut, Status, KdBarang) Primary key KdHarga Foreign Key KdBarang references Barang (KdBarang) ON UPDATE CASCADE ON DELETE CASCADE Supplier (KdSupplier, Nama, Alamat, Deskripsi) Primary key KdSupplier TelpS upplier (NoTelp, ContactPerson, KdSupplier) Primary key NoTelp Foreign Key KdSupplier references Supplier (KdSupplier) ON UPDATE CASCADE ON DELETE CASCADE JualHeader (KdJual, TglPenjualan, KdStaff) Primary key KdJual Foreign Key KdStaff references Staff (KdStaff) ON UPDATE CASCADE ON DELETE CASCADE JualDetail (KdJual, Qty, KdBarang, KdHarga) Primary key KdJual, KdBarang Foreign Key KdJual references JualHeader (KdJual) ON UPDATE CASCADE ON DELETE CASCADE Foreign Key KdBarang references Barang (KdBarang) ON UPDATE CASCADE ON
121 DELETE CASCADE Foreign Key KdHarga references HargaJual (KdHarga) ON UPDATE CASCADE ON DELETE CASCADE BeliHeader (KdBeli, TglPembelian, JenisPembayaran, T glJatuhTempo, KdStaff, KdSupplier) Primary key KdBeli Foreign Key KdStaff references Staff (KdStaff) ON UPDATE CASCADE ON DELETE CASCADE Foreign Key KdSupplier references Supplier (KdSupplier) ON UPDATE CASCADE ON DELETE CASCADE BeliDetail (KdBeli, Qty, Harga, KdBarang) Primary key KdBeli, KdBarang Foreign Key KdBeli references BeliHeader (KdBeli) ON UPDATE CASCADE ON DELETE CASCADE Foreign Key KdBarang references Barang (KdBarang) ON UPDATE CASCADE ON DELETE CASCADE ReturJualHeader (KdRtrJual, TglRetur, KdJual, KdStaff) Primary key KdRtrJual Foreign Key KdJual references Penjualan (KdJual) ON UPDATE CASCADE ON DELETE CASCADE Foreign Key KdStaff references Staff (KdStaff) ON UPDATE CASCADE ON DELETE CASCADE ReturJualDetail (KdRtrJual, Qty, KdBarang)
122 Primary key KdRtrJual, KdBarang Foreign Key KdRtrJual references ReturJualHeader (KdRtrJual) ON UPDATE CASCADE ON DELETE CASCADE Foreign Key KdBarang references Barang (KdBarang) ON UPDATE CASCADE ON DELETE CASCADE ReturBeliHeader (KdRtrBeli, TglRetur, KdBeli, KdStaff) Primary key KdRtrBeli Foreign Key KdBeli references Pembelian (KdBeli) ON UPDATE CASCADE ON DELETE CASCADE Foreign Key KdStaff references Staff (KdStaff) ON UPDATE CASCADE ON DELETE CASCADE ReturBeliDetail (KdRtrBeli, Qty, KdBarang) Primary key KdRtrBeli, KdBarang Foreign Key KdRtrBeli references ReturBeliHeader (KdRtrBeli) ON UPDATE CASCADE ON DELETE CASCADE Foreign Key KdBarang references Barang (KdBarang) ON UPDATE CASCADE ON DELETE CASCADE KoreksiStokHeader (KdKoreksi, Tgl, KdStaff) Primary key KdKoreksi Foreign Key KdStaff references Staff (KdStaff) ON UPDATE CASCADE ON DELETE CASCADE KoreksiStokDetail (KdKoreksi, Qty, KdBarang) Primary key KdKoreksi, KdBarang
123 Foreign Key KdKoreksi references HilangHeader (KdKoreksi) ON UPDATE CASCADE ON DELETE CASCADE Foreign Key KdBarang references Barang (KdBarang) ON UPDATE CASCADE ON DELETE CASCADE Pembayaran (KdBayar, TglBayar, Pembayaran, KdBeli) Primary key KdBayar, KdBeli Foreign Key KdBeli references Pembelian (KdBeli) ON UPDATE CASCADE ON DELETE CASCADE
6.
General constraint : Retur Penjualan hanya dapat dilakukan maksimal 1 kali.
4.3.2.5 Model Data Logikal Global Langkah ini bertujuan untuk merepresentasikan semua penglihatan user pada database. Gambar model data logical dapat dilihat pada gambar 4.11.
124 Ms Cab an g PK
KdC ab an g Nam aCa ba ng Ala m at Te lp Fa x NPWP Tg lCbg
MsSt aff
mem iliki
1. .1
Kd J ns Sta ff
Kd Sta ff
1.. *
Je nis St aff
m emasukkan
F K1 F K2
1. .1
1. .*
Na ma Sex T glL hr Alam at T elp KdJ nsSta ff KdC aba ng Use rI d Pas s
1.. 1
m emiliki
1. .1
mem asukkan m elakukan
1.. 1 1.. 1
melakukan
1. .1
Ms Supp lier 1 Kd Sup p lie r
KdSta ff T gl
0. .*
1. .1 mem iliki m emili ki
1.. 1
k ds u pp lie r n o Tl p CP
T glPe njua lan KdSt aff
1. .1
PK
Kd Ba yar
F K1
T glBa yar Pem b aya ra n KdBe li
1.. 1
0. .* 0. .1
Tr Rtr BeliHe ad er PK
PK, FK 1 PK, FK 2
KdB eli KdB ar an g
F K1
1.. *
0.. *
Kd Rt rB eli
0. .* m em iliki
T rR trJu alHe ad er
PK, FK3 PK, FK2
F K1
Q ty Kd Har ga
Kd Rtr Ju al
FK2 FK1
KdJu al KdSta ff Tg lRet ur
0. .*
0. .*
1.. 1
1.. 1
menggunakan
PK ,FK 1 PK ,FK 2
KdR tr Bel i KdB ar an g Qty
M sBar an g Kd Bar a ng
F K1
Na ma Bara ng De sk Qt y Qt ymin KdJn sBr g
0.. *
PK
1..*
PK
K dJ ns Br g
0. .1
K dBa r an g K dJ ua l
Tr Rtr Be liDet ail
1. .1
mem iliki
Kd St aff T glRe tu r Kd Be li
1. .1
Qty Har ga
Qty
J nsBa ra ng D esk
F K2
mem iliki
KdK or ek si KdB ar an g
1.. 1
Kd Ju al
F K1
1. .1
T r Be liDet ail
T rKo re ksiDe tail
M sJns Ba ra ng
PK
T rJu alDe tail
1.. *
PK
0. .*
mem iliki
1. .*
1. .*
PK ,FK 1 PK ,FK 2
Kd Staff T glPe mb elia n Jn sPem b aya ran T glJ atu hT em po Kd Supp lier
mem iliki
PK,F K1 PK
Kd Be li
F K2
F K1
M sT lpSup plie r
1. .1
PK
1.. 1
1. .*
Pe mb ay ara n
T rBe liHea de r1
1.. 1 mem iliki 1. .*
Na ma Alam at De skrip si
memil iki
F K1
PK
memil iki
Kd Ko re ks i
T rJu alHe ad er
mem iliki
T rKor eks iHea de r1 PK
0. .*
melakukan
0.. *
1. .1
mem iliki
1.. 1
memi liki
1. .1
memi liki
0..*
mem iliki
PK
memil iki
PK
MsJ en isStaf f
1. .1
1.. 1
T rH rg Jua l1
1.. * PK
Kd Ha rg a
F K1
KdBa ra ng Ha rg a T glIn T glO ut Sta tus
1. .* 0. .*
mem iliki
T r RtrJ ua lDeta il PK,F K1 PK,F K2
Kd Rtr J ua l Kd Bar a ng Qt y
Gambar 4.11 ERD Logikal Global 4.3.3
Perancangan Database Fisikal Berikut ini adalah langkah – langkah perancangan database fisikal : 4.3.3.1 Merancang Relasi Dasar Langkah pertama pada perancangan fisikal adalah dengan merancang relasi dasar. Tujuannya adalah untuk memutuskan bagaimana
125 merepresentasikan relasi dasar yang telah diidentifikasi pada data model logikal ke database yang akan dibuat. 1. Cabang Domain KdCabang : variable length character string, length 5 Domain NamaCabang : variable length character string, length 30 Domain AlamatCabang : variable text Domain Telp : variable length character string, length 13 Domain Fax : variable length character string, length 13 Domain NPWP : variable length character string, length 25 Domain TglCbg : variable date Cabang ( KdCabang
KdCabang
NOT NULL,
NamaCabang
NamaCabang
NOT NULL,
Alamat
Alamat
NOT NULL,
Telp
Telp
NOT NULL,
Fax
Fax,
NPWP
NPWP
NOT NULL,
TglCabang
TglCabang
NOT NULL,
PRIMARY KEY (KdCabang) ); 2. S taf Domain KdStaff: variable length character string, length 3 Domain Nama : variable length character string, length 30 Domain Sex : variable length character string, length 1
126 Domain TglLhr : variable date Domain Alamat : variable text Domain Telp : variable length character string, length 13 Domain UserID : variable length character string, length 15 Domain Pass : variable length character string, length 8 Domain KdCabang : variable length character string, length 5 Domain KdJnsStaff : variable length character string, length 2 S taff ( KdStaff
KdStaff
NOT NULL,
Nama
Nama
NOT NULL,
Sex
JnsKelamin
NOT NULL,
TglLhr
TglLhr
NOT NULL,
Alamat
Alamat
NOT NULL,
Telp
Telp,
UserID
UserID
NOT NULL,
Pass
Pass
NOT NULL,
KdCabang
KdCabang
NOT NULL,
KdJnsStaff
KdJnsStaff
NOT NULL,
PRIMARY KEY (KdStaff), FOREIGN KEY (KdCabang) REFERENCES Cabang (KdCabang) ON UPDATE CASCADE ON DELETE CASCADE, FOREIGN KEY (KdJnsStaff) REFERENCES Jenis Staff (KdJnsStaff) ON UPDATE CASCADE ON DELETE CASCADE );
127 3. Jenis S taf Domain KdJnsStaff: variable length character string, length 2 Domain JenisStaff : variable length character string, length 20 JenisS taff ( KdJnsStaffKdJnsStaff
NOT NULL,
JenisStaff JenisStaff
NOT NULL,
PRIMARY KEY (KdJnsStaff) ); 4. Barang Domain KdBarang: variable length character string, length 5 Domain NamaBarang : variable length character string, length 25 Domain Deskripsi : variable text Domain Qty : integer Domain QtyM in : integer Domain KdJnsBarang : variable length character string, length 2 Barang ( KdBarang
KdBarang
NOT NULL,
NamaBarang
NamaBarang
NOT NULL,
Desk
Deskripsi,
Qty
Qty
NOT NULL,
QtyM in
QtyM in
NOT NULL,
KdJnsBarang
KdJnsBarang
NOT NULL,
PRIMARY KEY (KdBarang),
128 FOREIGN
KEY
(KdJnsBarang)
REFERENCES
JenisBarang
(KdJnsBarang) ON UPDATE CASCADE ON DELETE CASCADE ); 5. Jenis Barang Domain KdJnsBarang: variable length character string, length 2 Domain JenisBarang : variable length character string, length 30 Domain Deskripsi : variable text JenisBarang ( KdJnsBarang
KdJnsBarang
NOT NULL,
JenisBarang
JenisBarang
NOT NULL,
Desk
Deksripsi,
PRIMARY KEY ( KdJnsBarang) ); 6. Harga Jual Domain KdHarga: variable length character string, length 8 Domain Harga : decimal Domain TglIn : variable date Domain TglOut : variable date Domain Status : variable length character string, length 1 Domain KdBarang : variable length character string, length 5 HargaJual ( KdHarga
KdHarga
NOT NULL,
Harga
Harga
NOT NULL,
TglIn
TglIn
NOT NULL,
129 TglOut
TglOut ,
Status
Status
NOT NULL,
KdBarang
KdBarang
NOT NULL,
PRIMARY KEY (KdHarga), FOREIGN KEY (KdBarang) REFERENCES Barang (KdBarang) ON UPDATE CASCADE ON DELETE CASCADE ); 7. Supplier Domain KdSupplier: variable length character string, length 3 Domain Nama : variable length character string, length 30 Domain Alamat : variable text Domain Deskripsi : variable text Supplier ( KdSupplier
KdSupplier
NOT NULL,
Nama
Nama
NOT NULL,
Alamat
Alamat
NOT NULL,
Desk
Deksripsi,
PRIMARY KEY (KdSupplier) ); 8. Telepon S upplier Domain NoTelp: variable length character string, length 13 Domain ContactPerson : variable length character string, length 30 Domain KdSupplier : variable length character string, length 3
130 TelpS upplier ( NoTelp
NoTelp
NOT NULL,
CP
ContactPerson
NOT NULL,
KdSupplier
KdSupplier
NOT NULL,
PRIMARY KEY (NoTelp), FOREIGN KEY (KdSupplier) REFERENCES Supplier (KdSupplier) ON UPDATE CASCADE ON DELETE CASCADE ); 9. Jual Header Domain KdJual: variable length character string, length 12 Domain TglPenjualan : variable date Domain KdStaff : variable length character string, length 3 TrJualHeader ( KdJual
KdJual
NOT NULL,
TglPenjualan
TglPenjualan
NOT NULL,
KdStaff
KdStaff
NOT NULL,
PRIMARY KEY (KdJual), FOREIGN KEY (KdStaff) REFERENCES Staff (KdStaff) ON UPDATE CASCADE ON DELETE CASCADE ); 10. Jual Detail Domain KdJual: variable length character string, length 12 Domain KdBarang : variable length character string, length 5 Domain KdHarga : variable length character string, length 8
131 Domain Qty: integer TrJualDetail ( KdJual
KdJual
NOT NULL,
KdBarang
KdBarang NOT NULL,
KdHarga
KdHarga NOT NULL,
Qty
Qty
NOT NULL,
PRIMARY KEY (KdJual, KdBarang), FOREIGN KEY (KdJual) REFERENCES JualHeader (KdJual) ON UPDATE CASCADE ON DELETE CASCADE, FOREIGN KEY (KdBarang) REFERENCES Barang (KdBarang) ON UPDATE CASCADE ON DELETE CASCADE, FOREIGN KEY (KdHarga) REFERENCES Harga (KdHarga) ON UPDATE CASCADE ON DELETE CASCADE ); 11. Beli Header Domain KdBeli: variable length character string, length 12 Domain TglPembelian : variable date Domain JenisPembayaran: variable length character string, length 6 Domain TglJatuhTempo : variable date Domain KdStaff : variable length character string, length 3 Domain KdSupplier : variable length character string, length 3 TrBeliHeader ( KdBeli
KdBeli
NOT NULL,
TglPembelian
TglPembelian
NOT NULL,
132 JenisPembayaran
JenisPembayaran
NOT NULL,
TglJatuhTempo
TglJatuhTempo,
KdStaff
KdStaff
NOT NULL,
KdSupplier
KdSupplier
NOT NULL,
PRIMARY KEY (KdBeli), FOREIGN KEY (KdStaff) REFERENCES Staff (KdStaff) ON UPDATE CASCADE ON DELETE CASCADE, FOREIGN KEY (KdSupplier) REFERENCES Supplier (KdSupplier) ON UPDATE CASCADE ON DELETE CASCADE ); 12. Beli Detail Domain KdBeli: variable length character string, length 12 Domain KdBarang : variable length character string, length 5 Domain KdHarga : decimal Domain Qty: integer TrBeliDetail ( KdBeli
KdBeli
NOT NULL,
KdBarang
KdBarang
NOT NULL,
Harga
Harga NOT NULL,
Qty
Qty
NOT NULL,
PRIMARY KEY ( KdBeli, KdBarang), FOREIGN KEY ( KdBeli) REFERENCES BeliHeader ( KdBeli ) ON UPDATE CASCADE ON DELETE CASCADE,
133 FOREIGN KEY ( KdBarang ) REFERENCES Barang ( KdBarang ) ON UPDATE CASCADE ON DELETE CASCADE, ); 13. Retur Jual Header Domain KdReturJual: variable length character string, length 12 Domain TglReturJual : variable date Domain KdJual : variable length character string, length 12 Domain KdStaff : variable length character string, length 3 TrReturJualHeader ( KdReturJual
KdReturJual
NOT NULL,
TglReturJual
TglReturJual
NOT NULL,
KdJual
KdJual
NOT NULL,
KdStaff
KdStaff
NOT NULL,
PRIMARY KEY ( KdReturJual), FOREIGN KEY ( KdJual) REFERENCES JualHeader ( KdJual ) ON UPDATE CASCADE ON DELETE CASCADE, FOREIGN KEY ( KdStaff ) REFERENCES Staff ( KdStaff) ON UPDATE CASCADE ON DELETE CASCADE ); 14. Retur Jual Detail Domain KdReturJual: variable length character string, length 12 Domain KdBarang : variable length character string, length 5 Domain Qty: integer TrReturJualDetail (
134 KdReturJual
KdReturJual
NOT NULL,
KdBarang
KdBarang
NOT NULL,
Qty
Qty
NOT NULL,
PRIMARY KEY (KdReturJual, KdBarang), FOREIGN KEY (KdReturJual) REFERENCES ReturJualHeader (KdReturJual) ON UPDATE CASCADE ON DELETE CASCADE, FOREIGN KEY (KdBarang) REFERENCES Barang (KdBarang) ON UPDATE CASCADE ON DELETE CASCADE ); 15.
Retur Beli Header Domain KdReturBeli: variable length character string, length 12 Domain TglReturBeli : variable date Domain KdBeli: variable length character string, length 12 Domain KdStaff : variable length character string, length 3 TrReturBeliHeader ( KdReturBeli
KdReturBeli
NOT NULL,
TglReturBeli
TglReturBeli
NOT NULL,
KdBeli
KdBeli
NOT NULL,
KdStaff
KdStaff
NOT NULL,
PRIMARY KEY (KdReturBeli), FOREIGN KEY (KdBeli) REFERENCES BeliHeader (KdBeli) ON UPDATE CASCADE ON DELETE CASCADE, FOREIGN KEY (KdStaff) REFERENCES Staff (KdStaff) ON UPDATE CASCADE ON DELETE CASCADE
135 ); 16. Retur Beli Detail Domain KdReturBeli: variable length character string, length 12 Domain KdBarang : variable length character string, length 5 Domain Qty: integer TrReturBeliDetail ( KdReturBeli
KdReturBeli
NOT NULL,
KdBarang
KdBarang
NOT NULL,
Qty
Qty
NOT NULL,
PRIMARY KEY (KdReturBeli, KdBarang), FOREIGN KEY (KdReturBeli) REFERENCES ReturBeliHeader (KdReturBeli) ON UPDATE CASCADE ON DELETE CASCADE, FOREIGN KEY (KdBarang) REFERENCES Barang (KdBarang) ON UPDATE CASCADE ON DELETE CASCADE ); 17. Koreksi Stok Header Domain KdKoreksi: variable length character string, length 12 Domain TglHilang : variable date Domain KdStaff : variable length character string, length 3 TrKoreksiHeader( KdKoreksi
KdKoreksi
NOT NULL,
TglHilang
TglHilang
NOT NULL,
KdStaff
KdStaff
NOT NULL,
PRIMARY KEY (KdKoreksi),
136 FOREIGN KEY (KdStaff) REFERENCES Staff (KdStaff) ON UPDATE CASCADE ON DELETE CASCADE ); 18. Koreksi Stok Detail Domain KdKoreksi: variable length character string, length 12 Domain KdBarang : variable length character string, length 5 Domain Qty: integer TrkoreksiDetail ( KdKoreksi
KdKoreksi
NOT NULL,
KdBarang
KdBarang
NOT NULL,
Qty
Qty
NOT NULL,
PRIMARY KEY (KdKoreksi, KdBarang), FOREIGN
KEY
(KdKoreksi)
REFERENCES
HilangHeader
(KdKoreksi) ON UPDATE CASCADE ON DELETE CASCADE, FOREIGN KEY (KdBarang) REFERENCES Barang (KdBarang) ON UPDATE CASCADE ON DELETE CASCADE ); 19. Pembayaran Domain KdBayar: variable length character string, length 12 DomainTglBayar : variable date Domain Pembayaran : decimal Domain KdBeli : variable length character string, length 12 Pembayaran ( KdBayar
KdBayar
NOT NULL,
137 TglBayar
TglBayar
NOT NULL,
Pembayaran
Pembayaran
NOT NULL,
KdBeli
KdBeli
NOT NULL,
PRIMARY KEY (KdBayar), FOREIGN KEY (KdBeli) REFERENCES BeliHeader (KdBeli ON UPDATE CASCADE ON DELETE CASCADE ); 4.3.3.2 Merancang Representasi Derived Data M odel data yang ada tidak terdapat derived data. 4.3.3.3 Merancang Enterprise Constraints Dalam tahap ini dibuat code untuk mengimplementasikan constraint-constraint yang telah didefinisikan pada tahap logikal. Pada retur penjualan, perusahaan membatasi hanya satu transaksi retur penjualan per satu transaksi penjualan. CONSTRAINT cekretur CHECK ( NOT EXISTS (SELECT KdJual From TrReturJualHeader GROUp BY KdJual HAVING COUNT>1)) 4.3.3.4 Merancang Analisis Transaksi Langkah berikutnya adalah dengan merancang analisis transaksi. Tujuan dari langkah ini adalah untuk mengerti fungsionalitas dari transaksi yang akan berjalan pada database dan
138 untuk menganalisa transaksi-transaksi yang penting. Tabel analisis transaksi dapat dilihat pada tabel 4.7. a. M eng-input data staf b. M eng-input data barang c. M eng-input data jenis barang d. M eng-input data harga jual e. M eng-input data supplier
139 Tabel 4.7 Tabel Analisis Transaksi Transaksi
(A)
(B)
(C)
(D)
(E)
Relation
R U D I
R U D I
R U D I
R U D I
R U D I
Cabang
X
Staff
X
Supplier
X
Barang
X
X
BeliHeader BeliDetail JualHeader JualDetail ReturBeliHeader ReturBeliDetail ReturJualHeader ReturJualDetail KoreksiHeader KoreksiDetail Pembayaran JenisStaff JenisBarang HargaJual TelpSupplier
X X
X X X
140 f. M emasukkan data penjualan g. M emasukkan data pembelian h. M emasukkan data retur penjualan
Transaksi Relation
i.
M emasukkan data retur pembelian
j.
M emasukkan data koreksi persediaan (F)
(G)
(H)
(I)
(J)
R U D I
R U D I
R U D I
R U D I
R U D I
X
X
X
X
X
Cabang Staff Supplier Barang
X X
X
X
X
X
BeliHeader
X
X
BeliDetail
X
X
JualHeader
X
X
JualDetail
X
X
X
ReturBeliHeader
X
ReturBeliDetail
X
ReturJualHeader
X
ReturJualDetail
X
KoreksiHeader
X
KoreksiDetail
X
Pembayaran JenisStaff JenisBarang HargaJual TelpSupplier
X
X
141 k. M engubah data staf l.
M engubah data barang
m. M engubah data harga jual n. M engubah data supplier o. M emasukkan data pembayaran Transaksi Relation
(K)
(L)
(M)
(N)
(O)
R U D I
R U D I
R U D I
R U D I
R U D I
Cabang Staff
X X
X
Supplier Barang
X X X X
X
BeliHeader
X
BeliDetail JualHeader JualDetail ReturBeliHeader ReturBeliDetail ReturJualHeader ReturJualDetail KoreksiHeader KoreksiDetail Pembayaran
X
JenisStaff JenisBarang HargaJual TelpSupplier
X X
X X X
142 p. M elihat data barang q. M elihat atau mencetak stok opname r. M elihat atau mencetak laporan penjualan s. M elihat atau mencetak laporan pembelian t. M elihat atau mencetak laporan pembayaran Transaksi Relation
(P)
(Q)
(R)
(S )
(T)
R U D I
R U D I
R U D I
R U D I
R U D I
X
X
X
X
X
Cabang Staff Supplier Barang
X
X
X
X
BeliHeader
X
BeliDetail
X
JualHeader
X
JualDetail
X
X
ReturBeliHeader ReturBeliDetail ReturJualHeader ReturJualDetail KoreksiHeader KoreksiDetail Pembayaran
X
JenisStaff JenisBarang HargaJual TelpSupplier
X
X
X X
X
143 4.3.3.5 Pembuatan Index Setiap Entity Tidak dipergunakan pembuatan index untuk setiap entitas. 4.3.3.6 Memperkirakan Kebutuhan Kapasitas Penyimpanan Langkah ini bertujuan untuk memperkirakan jumlah dari disk space yang dibutuhkan oleh database. Tabel Penyimpanan Cabang Tabel 4.8 Tabel Estimasi Cabang Field
Tipe Data
Ukuran
KdCabang
Char
5
NamaCabang
Char
30
Alamat
Text
16
Telp
Char
13
Fax
Char
13
NPWP
Char
25
TglCbg
Datetime
8
Kapasitas dari Tabel Cabang adalah 110 bytes Diperkirakan dalam satu bulan tidak terjadi pertambahan Dalam satu tahun pertumbuhan tabel ini adalah : 0 Kbytes
144 Tabel Penyimpanan S taff Tabel 4.9 Tabel Estimasi Staf Field
Tipe Data
Ukuran
KdStaff
Char
3
Nama
Char
30
Sex
Char
1
TglLhr
Datetime
8
Alamat
Text
16
Telp
Char
13
UserID
Char
15
Pass
Char
8
KdCabang
Char
5
KdJnsStaff
Char
2
Kapasitas dari Tabel Staf adalah 101 bytes Diperkirakan dalam satu bulan bertambah 1 staf baru Dalam satu tahun pertumbuhan tabel ini adalah : 1*12*101 = 1.212 bytes atau 1,18 Kbytes.
Tabel Penyimpanan JenisS taff Tabel 4.10 Tabel Estimasi Jenis Staf Field
Tipe Data
Ukuran
KdJnsStaff
Char
2
JenisStaff
Char
20
Kapasitas dari Tabel JenisStaff adalah 22 bytes Diperkirakan dalam satu bulan tidak terjadi pertambahan Dalam satu tahun pertumbuhan tabel ini adalah : 0 Kbytes
145 Tabel Penyimpanan Barang Tabel 4.11 Tabel Estimasi Barang Field
Tipe Data
Ukuran
KdBarang
Char
5
NamaBarang
Char
25
Desk
Text
16
Qty
Integer
4
QtyM in
Integer
4
Char
2
KdJnsBarang
Kapasitas dari Tabel Barang adalah 56 bytes Diperkirakan dalam satu bulan bertambah 50 barang baru Dalam satu tahun pertumbuhan tabel ini adalah : 50*12*56 = 33.600 bytes atau 32,8 Kbytes.
Tabel Penyimpanan JenisBarang Tabel 4.12 Tabel Estimasi Jenis Barang Field
Tipe Data
Ukuran
KdJnsBarang
Char
2
JnsBarang
Char
30
Desk
Text
16
Kapasitas dari Tabel JenisBarang adalah 48 bytes Diperkirakan dalam satu bulan bertambah 2 jenis barang baru Dalam satu tahun pertumbuhan tabel ini adalah : 2*12*48 = 1.152 bytes atau 1,12 Kbytes.
146 Tabel Penyimpanan HargaJual Tabel 4.13 Tabel Estimasi Harga Jual Field
Tipe Data
Ukuran
Char
8
Harga
Decimal (precision 18)
9
TglIn
Datetime
8
TglOut
Datetime
8
Status
Char
1
KdBarang
Char
5
KdHarga
Kapasitas dari Tabel HargaJual adalah 39 bytes Diperkirakan dalam satu bulan bertambah 100 harga jual baru Dalam satu tahun pertumbuhan tabel ini adalah : 100*12*39 = 46.800 bytes atau 45,7 Kbytes.
Tabel Penyimpanan Supplier Tabel 4.14 Tabel Estimasi Supplier Field
Tipe Data
Ukuran
KdSupplier
Char
3
Nama
Char
30
Alamat
Text
16
Deskripsi
Text
16
Kapasitas dari Tabel Supplier adalah 65 bytes Diperkirakan dalam satu bulan bertambah 1 supplier baru Dalam satu tahun pertumbuhan tabel ini adalah : 1*12*65 = 780 bytes atau 0,76 Kbytes.
147 Tabel Penyimpanan TelpS upplier Tabel 4.15 Tabel Estimasi TelpSupplier Field
Tipe Data
Ukuran
NoTelp
Char
13
CP
Char
30
KdSupplier
Char
3
Kapasitas dari Tabel TelpSupplier adalah 46 bytes Diperkirakan dalam satu bulan bertambah 1 nomor telepon supplier baru Dalam satu tahun pertumbuhan tabel ini adalah : 1*12*46 = 552 bytes atau 0,54 Kbytes.
Tabel Penyimpanan JualHeader Tabel 4.16 Tabel Estimasi Jual Header Field KdJual TglPenjualan KdStaff
Tipe Data
Ukuran
Char
12
Datetime
8
Char
3
Kapasitas dari Tabel JualHeader adalah 23 bytes Diperkirakan dalam satu hari terjadi 800 transaksi penjualan Dalam satu tahun pertumbuhan tabel ini adalah : 800*12*23*30 = 6.624,.000 bytes atau 6.468,75 Kbytes.
148 Tabel Penyimpanan JualDetail Tabel 4.17 Tabel Estimasi Jual Detail Field
Tipe Data
Ukuran
KdJual
Char
12
KdBarang
Char
5
KdHarga
Char
8
Integer
4
Qty
Kapasitas dari Tabel JualDetail adalah 29 bytes Diperkirakan dalam satu hari terjadi 800 transaksi penjualan Diperkirakan dalam satu transaksi terdapat 5 barang Dalam satu tahun pertumbuhan tabel ini adalah : 800*5*12*29 *30= 41.760.000 bytes atau 40.781,25 Kbytes.
Tabel Penyimpanan BeliHeader Tabel 4.18 Tabel Estimasi Beli Header Field
Tipe Data
Ukuran
Char
12
Datetime
8
JnsPembayaran
Char
1
TglJatuhTempo
Datetime
8
KdStaff
Char
3
KdSupplier
Char
3
KdBeli TglPembelian
Kapasitas dari Tabel BeliHeader adalah 35 bytes Diperkirakan dalam satu bulan terjadi 5 transaksi pembelian Dalam satu tahun pertumbuhan tabel ini adalah : 5*12*35 = 2.100 bytes atau 2,05 Kbytes.
149 Tabel Penyimpanan BeliDetail Tabel 4.19 Tabel Estimasi Beli Detail Field
Tipe Data
Ukuran
KdBeli
Char
12
KdBarang
Char
5
Integer
4
Decimal ( precision 18 )
9
Qty Harga
Kapasitas dari Tabel BeliDetail adalah 30 bytes Diperkirakan dalam satu bulan terjadi 5 transaksi pembelian Diperkirakan dalam satu transaksi terdapat 400 barang Dalam satu tahun pertumbuhan tabel ini adalah : 5*400*12*30 = 720.000 bytes atau 703,1 Kbytes.
Tabel Penyimpanan ReturJualHeader Tabel 4.20 Tabel Estimasi Retur Jual Header Field
Tipe Data
Ukuran
Char
12
Datetime
8
KdStaff
Char
3
KdJual
Char
12
KdRtrJual TglReturJual
Kapasitas dari Tabel ReturJualHeader adalah 35 bytes Diperkirakan dalam satu bulan terjadi 10 transaksi retur penjualan Dalam satu tahun pertumbuhan tabel ini adalah : 10*12*35 = 4.200 bytes atau 4,1 Kbytes.
150 Tabel Penyimpanan ReturJualDetail Tabel 4.21 Tabel Estimasi Retur Jual Detail Field
Tipe Data
Ukuran
KdRtrJual
Char
12
KdBarang
Char
5
Integer
4
Qty
Kapasitas dari Tabel ReturJualDetail adalah 21 bytes Diperkirakan dalam satu bulan terjadi 10 transaksi retur penjualan Diperkirakan dalam satu transaksi terdapat 2 barang Dalam satu tahun pertumbuhan tabel ini adalah : 10*2*12*21 = 5.040 bytes atau 4,92 Kbytes.
Tabel Penyimpanan ReturBeliHeader Tabel 4.22 Tabel Estimasi Retur Beli Header Field
Tipe Data
Ukuran
Char
12
Datetime
8
KdStaff
Char
3
KdBeli
Char
12
KdRtrBeli TglReturBeli
Kapasitas dari Tabel ReturBeliHeader adalah 35 bytes Diperkirakan dalam satu bulan terjadi 1 transaksi retur pembelian Dalam satu tahun pertumbuhan tabel ini adalah : 1*12*35 = 420 bytes atau 0,41 Kbytes.
151 Tabel Penyimpanan ReturBeliDetail Tabel 4.23 Tabel Estimasi Retur Beli Detail Field
Tipe Data
Ukuran
KdRtrBeli
Char
12
KdBarang
Char
5
Integer
4
Qty
Kapasitas dari Tabel ReturBeliDetail adalah 21 bytes Diperkirakan dalam satu bulan terjadi 1 transaksi penjualan Diperkirakan dalam satu transaksi terdapat 250 barang Dalam satu tahun pertumbuhan tabel ini adalah : 1*250*12*21 = 63.000 bytes atau 61,52 Kbytes.
Tabel Penyimpanan KoreksiStokHeader Tabel 4.24 Tabel Estimasi KoreksiStokHeader Field
Tipe Data
Ukuran
KdKoreksi
Char
12
KdStaff
Char
3
Datetime
8
Tgl
Kapasitas dari Tabel KoreksiStokHeader adalah 23 bytes Diperkirakan dalam satu bulan terjadi 10 kehilangan Dalam satu tahun pertumbuhan tabel ini adalah : 10*12*23 = 2760 bytes atau 2,69 Kbytes.
152 Tabel Penyimpanan KoreksiStokDetail Tabel 4.25 Tabel Estimasi KoreksiStokDetail Field
Tipe Data
Ukuran
KdKoreksi
Char
12
KdBarang
Char
5
Integer
4
Qty
Kapasitas dari Tabel KoreksiStokDetail adalah 21 bytes Diperkirakan dalam satu bulan terjadi 10 kehilangan Diperkirakan dalam satu kehilangan terdapat 3 barang Dalam satu tahun pertumbuhan tabel ini adalah : 10*3*12*21 = 7560 bytes atau 7,38 Kbytes.
Tabel Penyimpanan Pembayaran Tabel 4.26 Tabel Estimasi Pembayaran Field
Tipe Data
Ukuran
KdBayar
Char
12
TglBayar
Datetime
8
Decimal (precision 18)
9
Char
12
Pembayaran KdBeli
Kapasitas dari Tabel Pembayaran adalah 41 bytes Diperkirakan dalam satu bulan terjadi 2 pembayaran kredit Dalam satu tahun pertumbuhan tabel ini adalah : 2*12*41 = 984 bytes atau 0,96 Kbytes.
153 Estimasi Disk Space Tabel 4.27 Tabel Estimasi Disk Space Nama Tabel
Kapasitas (Bulan)
Kapasitas (Tahun)
Cabang
110 bytes
0 Kbytes
Staff
101 bytes
1,18 Kbytes
JenisStaff
22 bytes
0 Kbytes
Barang
2798,9 bytes
32,8 Kbytes
Jenis Barang
95,6 bytes
1,12 Kbytes
HargaJual
3899,7 bytes
45,7 Kbytes
Supplier
65 bytes
0,76 Kbytes
TelpSupplier
46 bytes
0,54 Kbytes
JualHeader
552000 bytes
6.468,75 Kbytes
JualDetail
3480000 bytes
40.781,25 Kbytes
BeliHeader
174,9 bytes
2,05 Kbytes
BeliDetail
59997,87 bytes
703,1 Kbytes
ReturJualHeader
349,87 bytes
4,1 Kbytes
ReturJualDetail
419,84 bytes
4,92 Kbytes
ReturBeliHeader
35 bytes
0,41 Kbytes
ReturBeliDetail
5249,7 bytes
61,52 Kbytes
KoreksiStokHeader
229,55 bytes
2,69 Kbytes
KoreksiStokDetail
629,76 bytes
7,38 Kbytes
Pembayaran
81,92 bytes
0,96 Kbytes
Total
4010,07 Kbytes
48.119,23 Kbytes
154 4.3.3.7 Merancang User View Perancangan user view tidak dilakukan, namun digantikan dengan pembuatan Stored
Procedure untuk pembuatan
laporan. Stored
Procedured dilampirkan pada halaman lampiran 4.3.3.8 Merancang Mekanisme Keamanan Langkah ini bertujuan untuk mendesain mekanisme keamanan untuk database dengan menspesifikasi user sesuai tingkatannya atau dapat disebut dengan menspesifikasi hak akses user. Tabel mekanisme keamanan dapat dilihat pada tabel 4.28 Tabel 4.28 Tabel M ekanisme Keamanan User Relation
Manajer Umum
Bidang Pergudangan R U D
I
Bidang Pemasaran R U D
I
Bidang Keuangan
R U D
I
R U D
Cabang
X
X X
X
X
Staff
X X
X X
X
X
JenisStaff
X
X
X
X
Barang
X X
X X X
X
X
JenisBarang
X
X X
X
X
HargaJual
X X
X X X
X
X X
Supplier
X X
X X
X
TelpSupplier
X X
X X
X
JualHeader
X
X X
X
X X
JualDetail
X
X X
X
X X
BeliHeader
X
X X
X
BeliDetail
X
X X
X
I
155 ReturJualHeader
X
X X
X
X X
ReturJualDetail
X
X X
X
X X
ReturBeliHeader
X
X X
X
ReturBeliDetail
X
X X
X
KoreksiStokHeader
X
X X
X
X
KoreksiStokDetail
X
X X
X
X
Pembayaran
X
X
User
X
Administrasi
Sistem Administrator
R U D
I
R
U
D
I
Cabang
X
X X
X
X
X
Staff
X X
X X
X
X
X
JenisStaff
X
X
X
X
X
Barang
X X
X X
X
X
X
X
JenisBarang
X
X X
X
X
X
X
HargaJual
X X
X X
X
X
X
X
Supplier
X X
X X
X
X
X
TelpSupplier
X X
X X
X
X
X
JualHeader
X
X X
X
X
X
X
JualDetail
X
X X
X
X
X
X
BeliHeader
X
X X
X
X
X
BeliDetail
X
X X
X
X
X
ReturJualHeader
X
X X
X
X
X
ReturJualDetail
X
X X
X
X
X
ReturBeliHeader
X
X X
X
X
X
ReturBeliDetail
X
X X
X
X
X
Relation
Kasir R U D
I
X
156 KoreksiStokHeader
X
X X
X
X
X
KoreksiStokDetail
X
X X
X
X
X
Pembayaran
X
X X
X
X
X
4.3.3.9Pemilihan DBMS Berikut merupakan perbandingan fitur yang ditawarkan antara SQL Server 2000 dengan M ySQL 4.1 Fitur
MySQL 4.1
SQL Server Catatan 2000
SQL View Support
Tidak
Ada
System administrator bisa membuat desain database secara abstrak terpisah dari developer basis datanya.
Triggers
Tidak
Ada
Ketiadaan triggers membuat developer MySQL menambahkan logika tambahan sendiri.
Stored Procedures
Tidak
Ada
SP adalah mekanisme yang penting untuk keamanan dan rancangan abstrak basis data.
User Defined Functions
Tidak
Ada
UDF dapat menyederhanakan kode
157 yang kompleks menjadi interface sederhana yang callable. CURSOR Support
Tidak
Ada
Ketiadaan dukungan MySQL pada CURSOR meningkatkan traffic pada jaringan dan menurunkan waktu respon pada aplikasi
SQL SELECT
Ada
Ada
Ekspresi query biasa untuk menyaring informasi.
FULL JOIN
Ada
Ada
MySQL tidak mendukung FULL JOIN.
Full Text Support
Ada
Ada
-
XM L Support
Tidak
Ada
MySQL tidak mendukung XM L secara penuh
Setelah dibandingkan dengan DBMS lain, seperti MySQL, maka penulis memutuskan untuk memilih SQL Server 2000 sebagai DBMS yang akan digunakan. Hal ini disebabkan karena: a. Performa SQL Server 2000 lebih unggul dibandingkan dengan MySQL yang lain. b. M emiliki fitur-fitur yang lebih lengkap dibandingkan M ySQL, contohnya Stored Procedure, Triggers, View, dan lain-lain .
158 c. Pihak perusahaan lebih mengharapkan produk dari M icrosoft. 4.4
Perancangan Aplikasi 4.4.1
S truktur Menu Struktur menu dapat dilihat seperti gambar di bawah ini :
159 File Transaksi
Logout Exit Penjualan Pembelian Retur Penjualan Retur Pembelian
Harga Barang
Pembayaran Kredit Input Harga Penjualan Hitung Harga Rata - Rata
Persediaan
Lihat Stok Stok Opname Koreksi Stok
Login
Menu
Laporan
Laporan Penjualan Laporan Pembelian Laporan Persedi aan Laporan Pembayaran Laporan Kehilangan Input Data
Karyawan Supplier Barang Jenis Barang Cabang
Data
Ubah Data
Karyawan Supplier Barang
Maintenance
Help
About Cara Penggunaan
Gambar 4.12 Struktur M enu
160 4.4.2
State Transition Diagram (STD) State Transition Diagram merupakan penggambaran alur jalannya program yang dirancang untuk PT. Sari Aroma Janata. Di bawah ini adalah STD dari aplikasi yang dirancang : 1. State Transition Diagram untuk Login
Gambar 4.13 STD untuk Login
161 2. State Transition Diagram untuk M enu Ma suk ke Lo gin
Lo go ut
Kelua r dar i Pr og ram M en u File
Exit M as uk k e h ala ma n pem b elia n
Pe mb elia n
Ma su k ke ha lam an p en juala n Pen jua lan M a suk ke hala m an re tur p enju ala n M en u Tr an sak si
Ret ur Pen jua lan Ma su k ke ha lam an r etu r p em b elian Retu r Pem be lian
Ma su k ke ha lam an p em ba yar an kr ed it
Pe mb aya ra n Kred it
M asu k ke h alam a n in pu t h ar ga jua l Inp ut Har ga Pen jua lan Ma suk ke ha lam an hit ung h ar ga M en u Ha rg a Bara ng
Hitu ng Har ga Ra ta- Rat a Ma suk ke ha lam an liha t st ok
M em ilih m e nu
Lih at St ok
M en u M en u Pe rs edia an
Ma suk ke ha lam an sto k o pn am e
St ok O pn am e
Ma suk ke ha lam an ko re ksi st ok
Kor eksi Stok
La por an Pe njua lan
L ap or an Pen jua a l n
La po ra n Pe m be ila n
La po ra n Pe m be ila n
M en u L ap or an
L ap or an Per sed iaa n
Lap or an Per se diaa n
La po ra n Pe m bay ar an La po ran Pe mb aya ra n La po ra n Ke hila ng an L ap or an Keh ilan gan
M a suk ke hala m an inp ut kar yaw an
Kar yawa n
M asu k k e h ala ma n in pu t su pp lier
Su pp lier
In pu t Da ta
M a suk ke ha lam an inp ut ba ra ng
Ba ra ng
Jen is Ba ran g
Cab an g
M as uk ke h ala m an inp ut jenis ba ra ng
M as uk ke hala m an inp ut cab an g
M en u D ata Kar yawa n Ub ah Da ta Su pp lier
M as uk k e h ala ma n inpu t k ary awa n
M asu k k e h ala ma n in pu t s upp lier
Ma su k ke ha lam an in put ba ra ng Ba ra ng M asu k ke h ala ma n b ac kup da ta bas e Ma inte na nce
Ba ckup Da tab as e
M asu k ke h alam a n a bo ut H elp
Abo ut
Gambar 4.14 STD untuk M enu
162 3. State Transition Diagram untuk Penjualan
Gambar 4.15 STD untuk Penjualan
4. State Transition Diagram untuk Pembelian
Gambar 4.16 STD untuk Pembelian
163 5. State Transition Diagram untuk Retur Penjualan
Gambar 4.17 STD untuk Retur Penjualan
6. State Transition Diagram untuk Retur Pembelian
Gambar 4.18 STD untuk Retur Pembelian
164 7. State Transition Diagram untuk Koreksi Persediaan
Gambar 4.19 STD untuk Koreksi Persediaan
4.4.3
Perancangan Input dan Output 4.4.3.1 Perancangan Input 1. Layar Login
Username
Gambar
Password
OK
Gambar 4.20 Rancangan Layar Login
Cancel
165 2. Layar M enu Utama X
Judul Form M enu 1
M enu 2
M enu 3
M enu 4
T anggal dan Jam
Gambar 4.21 Rancangan Layar M enu Utama
166 3. Layar Kasir atau Penjualan X
Judul Form Tutup Kasir
Total Harga
Nama Kasir Kode Barang Jumlah
T anggal dan Jam
Gambar 4.22 Rancangan Layar Kasir atau Penjualan
Cetak
167 4. Rancangan Layar Pembelian X
Judul Form
Tanggal : dd- mm - yy Kode Pembelian Supplier
Cari
Jenis Pembelian
Kode Barang Nama Barang
Input Cari
Jumlah Barang Harga Beli Harga Satuan
Gambar 4.23 Rancangan Layar Pembelian
Reset
168 5. Layar Retur Pembelian X
Judul Form
Kode Retur Pembelian Kode Barang
M ax Qty
Nama Barang Jumlah Kembali Input
Reset
Kode Supplier Cari
Nama Supplier Kode Pembelian
Gambar 4.24 Rancangan Layar Retur Pembelian
169 6. Rancangan Layar Retur Penjualan X
Judul Form
Kode Retur Penjualan Kode Jual Tanggal Nama Barang
Cari
Jumlah Kembali
Tambah
Simpan
Ulang
Batal
Gambar 4.25 Rancangan Layar Retur Penjualan
170 7. Rancangan Layar Pembayaran Kredit X
Judul Form
Supplier
Jatuh Tempo
Kode Pembelian
Cari
Total Tagihan Sisa Pembayaran Bayar
Input
Batal
Gambar 4.26 Rancangan Layar Pembayaran Kredit
171 8. Rancangan Layar Input Harga Jual Barang X
Judul Form Kata Kunci
Kode Barang
Berdasar
Go
Kode Harga
Nama Barang Harga Jual
Input Harga
Gambar 4.27 Rancangan Layar Input Harga Jual Barang
Batal
172 9. Rancangan Layar Lihat Stok Barang X
Judul Form
Kata Kunci
Berdasar
Departemen Go
Gambar 4.28 Rancangan Layar Lihat Stok
173 10. Rancangan Layar Koreksi Barang X
Judul Form Kode Koreksi
Kode Barang Cari
Nama Barang Jumlah Barang pada Data Jumlah Barang Opname
Selisih
Input
Simpan
Reset
Batal
Gambar 4.29 Rancangan Layar Koreksi Barang
174 11. Rancangan Layar Input Data Karyawan X
Judul Form Data Karyawan Kode Karyawan User ID
Cari
Password Confirm Password Cabang Cari
Jenis Staff
Data Pribadi Nama Karyawan Jenis Kelamin Tanggal Lahir
Laki - Laki Bulan
Perempuan Tahun
Tanggal
Alamat Telepon Input
Reset
Gambar 4.30 Rancangan Layar Input Data Karyawan
175 12. Rancangan Layar Input Data Supplier X
Judul Form Data Supplier Kode Supplier Nama Supplier
Cari
Alamat Telepon
Informasi Tambahan ( Optional ) Catatan
Input
Reset
Gambar 4.31 Rancangan Layar Input Data Supplier
176 13. Rancangan Layar Input Data Barang X
Judul Form Data Barang Departemen Barang Kode Barang Nama Barang Deskripsi
Qty M inimum
Input
Reset
Gambar 4.32 Rancangan Layar Input Data Barang
177 14. Rancangan Layar Input Data Jenis Barang atau Departemen Barang X
Judul Form Data Departemen Barang Kode Departemen Nama Departemen Deskripsi
Input
Reset
Gambar 4.33 Rancangan Layar Input Data Jenis Barang
178 15.
Rancangan Layar Input Data Cabang X
Judul Form Data Cabang Kode Cabang Nama Cabang Alamat Telepon Fax NPWP Tanggal Berdiri
Bulan
Tahun
Input
Tanggal
Reset
Gambar 4.34 Rancangan Layar Input Data Cabang
179 16. Rancangan Layar Ubah Data Karyawan X
Judul Form Go
Cari Nama :
Data Karyawan Nama Karyawan
Kode Karyawan
Alamat Telepon Jenis Staff
Ubah
Batal
Gambar 4.35 Rancangan Layar Ubah Data Karyawan
180 17. Rancangan Layar Ubah Data Supplier X
Judul Form Go
Cari Nama :
Data Supplier Nama Supplier
Kode Supplier
Alamat Telepon
1
CP
2
CP
3
CP
Catatan ( Optional )
Ubah
Batal
Gambar 4.36 Rancangan Layar Ubah Data Supplier
181 18. Rancangan Layar Ubah Data Barang X
Judul Form Kata Kunci
Go
Berdasar
Data Barang Kode Barang Nama Barang Deskripsi
Ubah
Gambar 4.37 Rancangan Layar Ubah Data Barang
Batal
182 19. Rancangan Layar Backup Database X
Judul Form
Drive Backup Database dengan Nama
Backup Sekarang
Gambar 4.38 Rancangan Layar Backup Database
183 4.4.3.2 Perancangan Output 1. Rancangan Laporan Penjualan
Nama Perusahaan Kode Barang
Laporan Penjualan Periode
Nama Barang
Jumlah Jual
Harga Beli
Tanggal
Harga Jual
Total Jual
JenisBarang 1 <jumlah>