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
dipisahkan dari proses pembelian. Administrasi harus melengkapi data-data 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.
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
Sistem Penjuala n, Pembe lian da n Persediaan
PT . Saro ja
Pelanggan Manajer
Supplier Gudang
Faktur penjualan
Ba rang beli d itan ya
Bar ang b eli ditanya
F aktur pembelian Lapor an p ersediaan
Lapor an pe nju ala n, lapor an pem belian, la pora n per sed iaa n
D ata bar ang h asil koreksi Pembayar an bar ang d ibe li
Infor masi b arang dijual
In form asi ba rang beli ditanya Jum lah uang yang h arus dibayar sistem
Pem bayaran bar ang dibeli Bar ang dibeli Bar ang d ir etur , kod e pemb elian
Ba rang dir etur
4.2.2 Diagram Nol
4.2.3 Diagram Rinci
3.1 Melakukan stok
opname Gudang Data laporan persediaan
Persediaan Laporan persediaan
untuk stok opname
Data persediaan hasil koreksi Dat a barang hasil koreksi Manajer Laporan persediaan 4.0 Pembuatan laporan penjualan, pembelian, persediaan Koreksi persediaan Dat a koreksi barang
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 tipe-tipe entitas dapat dilihat pada tabel 4.1.
Tabel 4.1 Tabel Tipe Entity
Nama Entity Deskripsi Alias Kejadian
Cabang M enjelaskan keterangan umum mengenai cabang
pada perusahaan
Kantor Perusahaan memiliki cabang
Staff M enjelaskan informasi mengenai staf
Karyawan Setiap staf berkerja pada satu cabang JenisStaff M enjelaskan jenis staf,
fungsi kerja staf yang ada
Jenis Karyawan
Setiap staf memiliki satu jenis staf Barang M enjelaskan informasi
penting mengenai barang
Barang Barang dapat dibeli dan dijual oleh perusahaan JenisBarang Pengelompokan barang
menjadi kelompok yang sejenis
Departemen Barang
Setiap barang digolongkan dalam satu jenis barang HargaJualBarang Harga jual tiap barang pada
periode tertentu
Harga Setiap barang memiliki harga jual yang berbeda beda Supplier M enjelaskan informasi
mengenai supplier dari suatu barang
Leveransir Barang dibeli dari
supplier
Penjualan Informasi penjualan barang yang terjadi
Jual Penjualan dapat terdiri dari berbagai
barang dan barang dapat dijual berkali-kali
Pembelian Informasi pembelian barang yang terjadi
Beli Pembelian dapat terdiri dari berbagai
barang dan barang dapat dibeli berkali-kali
KoreksiStok Informasi mengenai kehilangan barang yang terjadi
Koreksi Barang
Kehilangan barang terjadi tiap bulan dan banyak barang yang dapat hilang
ReturPenjualan Informasi mengenai retur penjualan barang yang terjadi
Retur Jual Pengembalian barang oleh pelanggan karena alasan tertentu ReturPembelian Informasi mengenai retur
pembelian barang yang terjadi
Retur Beli Pengembalian barang kepada supplier
karena alasan tertentu Pembayaran Informasi mengenai
pembayaran kredit pada pembelian
Kredit Pembayaran kredit kepada supplier
karena pembelian barang
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..1 M emiliki 1 Penjualan
ReturPembelian 0..* M emiliki 1..* Barang
ReturPembelian 0..* M emiliki 1 Pembelian
Pembayaran 0..* M emiliki 1 Pembelian
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 Atribut Deskripsi Tipe Data Null Multivalued
KdCabang Kode cabang Char (5) No No NamaCabang Nama cabang Char (30) No No Alamat Alamat cabang Text No No Telp Telepon cabang Char (13) No No
Fax Fax cabang Char (13) Yes No NPWP NPWP Char (25) No No Cabang
TglCbg Tanggal berdiri
Date No No
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 Staff
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 staf
Char(2) No No JenisStaff
JenisStaff Posisi staf Char(20) No No KdBarang Kode barang Char (5) No No NamaBarang Nama Barang Char (25) No No Barang
Desk Deskripsi Text Yes No
Qty Jumlah Integer No No
Qtymin Jumlah minimum
Integer No No
Dept Depatemen Char(2) No No
KdJnsBarang Kode jenis barang
Char(2) No No
JnsBarang Jenis barang Char(30) No No JenisBarang
Desk Deskripsi Text Yes No
KdHarga Kode harga Char (8) No No
Harga Harga Decimal No No
Barang Barang Char (5) No No HargaJualBarang
TglIn Tanggal mulai
TglOut Tanggal selesai
Date Yes No
Status Status harga Char (1) No No KdSupplier Kode supplier Char (3) No No Nama Nama supplier Char (30) No No Alamat Alamat supplier Char (50) No No Telepon Telepon supplier Char (13) No Yes Supplier
Deskripsi Deskripsi Text Yes No KdPenjualan Kode penjualan Char (12) No No TglPenjualan Tanggal penjualan Date No No
Kasir Kasir yang
melayani
Char (2) No No
Barang Barang yang
dijual Char (5) No Yes Qty Jumlah barang Integer No Yes Penjualan
Harga Harga Barang Decimal No Yes Pembelian KdPembelian Kode Char (12) No No
pembelian TglPembelian Tanggal
pembelian
Date No No
Staff Staf yang
bertugas Char (3) No No Supplier Nama supplier Char (30) No No JnsPembayaran Jenis pembayaran Char (6) No No
TglJatuhTempo Tanggal jatuh temp
Date Yes No
Barang Barang yang
dibeli
Char (5) No Yes
Qty Jumlah barang
Integer No Yes
Harga Harga beli
barang
Decimal No Yes
KdRtrJual Kode retur penjualan Char (12) No No TglRtrJual Tanggal penjualan Date No No ReturPenjualan FktrJual Bukti penjualan Char (12) No No
Staff Staf yang bertugas
Char (3) No No
Barang Barang yang
dijual
Char (5) No Yes
Qty Jumlah barang
Integer No Yes
KdRtrBeli Kode retur pembelian
Char (12) No No
TglRetur Tanggal retur Date No No FktrBeli Nomor faktur
Beli
Char (12) No No
Staff Staf yang
bertugas
Char (3) No No
Barang Barang yang
diretur Char (5) No Yes ReturPembelian Qty Jumlah barang Integer No Yes
KdKoreksi Kode koreksi stok Char (12) No No Tgl Tanggal kehilangan Date No No KoreksiStok
Staff Staf yang bertugas
Barang Barang hilang Char (5) No Yes Qty Jumlah hilang Integer No Yes KdBayar Kode pembayaran kredit Char (12) No No TglBayar Tanggal terjadinya pembayaran Date No No Pembayaran
Pembayaran Jumlah yang telah dibayar
Decimal No No
4.3.1.4 Mengidentifikasi Atribut Domain
Langkah berikutnya adalah mengidentifikasi atribut domain. Tujuan dari langkah ini adalah untuk menetapkan domain dari atribut-atribut yang ada pada model konseptual. Tabel untuk atribut-atribut domain dapat dilihat pada tabel 4.4.
Tabel 4.4 Tabel Atribut Domain
Nama Entity Atribut Domain
KdCabang 5 karakter, 3 karakter pertama diawali string
untuk menentukan lokasi cabang, dan karakter berikutnya merupakan angka.
NamaCabang String bebas Cabang
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
TglLhr Format tanggal Alamat String bebas
Telp M aksimum 13 karakter angka antara 0 – 9 Jabatan String bebas
UserID String bebas Staff
Pass String bebas
KdJnsStaff 3 karakter yang merupakan angka mulai dari 001-999
JenisStaff
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 Barang
Qtymin Angka, lebih besar dari 0 Dept String bebas
KdJnsBarang 2 karakter yang merupakan angka mulai dari 01-99
JnsBarang String bebas JenisBarang
Desk String bebas
KdHarga 8 karakter yang merupakan angka mulai dari 00000001-99999999.
Harga Format harga
Barang String bebas
TglIn Format tanggal
TglOut Format tanggal HargaJualBarang
Status 1 karakter yang merupakan angka
KdSupplier 3 karakter yang merupakan angka mulai dari 001-999
Nama String bebas Alamat String bebas
Telepon M aksimum 13 karakter angka antara 0 – 9 Supplier
Deskripsi String bebas
KdPenjualan 12 karakter, 1 karakter pertama diawali string
“J“, dan karakter berikutnya merupakan angka. TglPenjualan Format tanggal
Penjualan
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
TglJatuhTempo Format tanggal Barang String bebas
Qty Angka, lebih besar dari 0 Pembelian
Harga Format harga
KdRtrJual 12 karakter, 2 karakter pertama diawali string
“RJ“, dan karakter berikutnya merupakan angka. TglRtrJual Format tanggal
FktrJual String bebas
Staff 3 karakter yang merupakan angka dari 001 – 999 Barang String bebas
ReturPenjualan
Qty Angka, lebih besar dari 0
ReturPembelian KdRtrBeli 12 karakter, 2 karakter pertama diawali string
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.
Tgl Format tanggal
Staff 3 karakter yang merupakan angka dari 001 – 999 Barang String bebas
KoreksiStok
Qty Angka, lebih besar dari 0
KdBayar 12 karakter yang merupakan angka TglBayar Format tanggal
Pembayaran
Cabang KdCabang NamaCabang Alamat Telp Fax NPWP TglCbg Staff KdStaf f Nama Sex TglLhr Alamat Telp Cabang Jabatan USERID Pass JenisStaff KdJns Staff Jenis Staff Barang K dBarang NamaBarang Des k Qty Qty mi n Dept HargaJualBarang K dHarga B arang Harga TglIn TglOut S tat us S upplier KdSupplier Nama Al amat Telp Des kripsi Penjualan KdPenjualan Tgl Penjualan Kasir It em Qty Harga Pembelian KdPembelian Staff TglPembelian JnsPembayaran TglJatuhTempo Item Qt y Harga Penyalur ReturPenjualan K dRt rJ ual S taf f TglRetur Fk trJ ual I tem Qty ReturPembelian KdRtrBeli Staff TglRet ur Fkt rBeli It em Qty Korek siStok KdKoreksi St aff Tgl I tem Qty 0..* 0..* 1 ..* 1..1 1..1 1..* 1..* 1 ..1 0..* 1..1 1..1 1..1 1..1 1 ..1 1..1 0..* 0..1 0..* 1..* 1..* 1..* 0..* 1..* 1..* 0..* 1..1 1..* 1..* 0..* 1..1 1..* 1 ..* 0..* 0..* Memili ki Memili ki Melakukan Me lakukan Me ndata Mendata Mendata Memi liki JenisBarang KdJns Barang JnsBarang Desk 1..* 1..1
Me mil iki Men ggunakan
Memili ki Memili ki Memil iki Memi liki Memi liki Memili ki Memiliki Memi liki Pembayaran KdBayar TglBay ar Pembayaran 0..* 1..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 primarykey dan candidatekey dapat dilihat pada tabel 4.5.
Tabel 4.5 Tabel Primary key dan Candidate key
Entity Candidate Key Primary Key
Cabang KdCabang NamaCabang KdCabang Staff KdStaff Telp KdStaff
Barang KdBarang KdBarang
JenisBarang KdJnsBarang KdJnsBarang
HargaJualBarang KdHarga KdHarga
Supplier KdSupplier Telepon
KdSupplier
Penjualan KdPenjualan KdPenjualan
Pembelian KdPembelian KdPembelian
ReturPenjualan KdRtrJual KdRtrJual
ReturPembelian KdRtrBeli KdRtrBeli
KoreksiStok KdKoreksi KdKoreksi
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.
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
(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.
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)
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
JenisStaff (KdJnsStaff, JenisStaff)
Primary key KdJnsStaff
Staff (KdStaff, Nama, Sex, TglLhr, Alamat,
Tlp, KdCabang, KdJnsStaff)
Primary key KdStaff
Foreign Key KdCabang references
Cabang(KdCab ang)
Foreign Key KdJnsStaff references
JenisStaff(KdJnsStaff) Mengirimkan KdJnsStaff 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(KdCab ang) Mengirimkan KdCabang ke Staff dalam 1:* relasi Memiliki
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)
Mengirimkan KdStaff ke Pembelian dalam 1:* relasi Melakukan
Staff (KdStaff, Nama, Sex, TglLhr,
Alamat, Tlp, KdCabang, KdJnsStaff)
Primary key KdStaff
Staff (KdStaff, Nama, Sex, TglLhr, Alamat, Tlp,
KdCabang, KdJnsStaff)
Primary key KdStaff
Mengirimkan KdStaff ke Hilang dalam 1:* relasi Mendata
KoreksiStok(KdKoreksi, KdStaff, Tgl,
Barang, Qty)
Primary key KdKoreksi
Foreign Key KdStaff references
Staff
(KdStaff,Nama,Sex,TglLhr,Alamat,Tlp,Kd Cabang,KdJnsStaff)
Primary key KdStaff
Mengirimkan KdStaff ke Returpenjualan dalam 1:* relasi Mendata
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)
Penjualan(KdJual, KdStaff,
TglPenjualan, Barang, Qty, KdHarga)
Primary key KdJual
Foreign Key KdStaff references
Staff(KdStaff)
Staff
(KdStaff,Nama,Sex,TglLhr,Alamat,Tlp,K dCabang,KdJnsStaff)
Primary key KdStaff
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
referencesSupplier(KdSupplier)
Mengirimkan KdBeli ke Pembayaran dalam 1:* relasi Memiliki
Pembelian(KdBeli, KdStaff,
TglPembelian,JnsPembayaran, Barang,
Qty, Harga, KdSupplier)
Pembayaran(KdBay ar, KdBeli,
TglBayar,Pembayaran)
Primary key KdBayar
Foreign Key KdBeli references
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
5. Many to many relationship
Barang (KdBarang,
NamaBarang, Desk, Qty, Qtymin, KdJnsBarang)
Primary key KdBarang
Foreign Key KdStaff
references Staff(KdStaff)
PenjualanDetail ( KdJual,KdBarang,
KdHarg a, Qty)
Primary key KdJual,KdBarang
Foreign Key KdJual references Penjualan
(KdJual)
Foreign Key KdBarang references Barang
(KdBarang )
Foreign Key KdHarga references HargaJu al
(KdHarga)
Penjualan(KdJual,
KdStaff, TglPenjualan, Barang, Qty, KdHarga)
Primary key KdJual
Foreign Key KdStaff
references Staff(KdStaff)
HargaJual (KdHarga,
KdBarang, Harg a, 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)
PembelianDetail(KdBeli,KdBarang,Qty,Harg a)
Primary key KdBeli,KdBarang
Foreign Key KdBeli references Pembelian
(KdBeli)
Foreign Key KdBarang references Barang
(KdBarang )
Pembelian(KdBeli, KdStaff,
TglPembelian,JnsPembayaran,TglJatuhT empo, Barang,
Qty, Harga, KdSupplier)
Primary key KdBeli
Foreign Key KdStaff references
Staff(KdStaff)
Foreign Key KdSupplier references
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(Kd Koreksi, 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(KdRtrJu al, 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
6. Atribut multivalue
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 nonprimarykey. 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
Mengirimkan KdSupplier ke TeleponSupplier
Supplier (KdSupplier, Nama, Alamat,
Deskripsi)
Primary key KdSupplier TeleponSupplier(NoTelp, KdSupplier, CP)
Primary key NoTelp
Foreign Key KdSupplier references
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 +
UserID + Pass + KdJenis Staff + JenisStaff + KdSupplier + NamaSupplier + 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 +
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 + KdJenis Staff + JenisStaff + KdSupplier + NamaSupplier + AlamatSupplier + DeskripsiSupplier + NoTelpSupplier + ContactPerson
PembelianDetail : @KodeBeli + @ KdBarang + Qty
KoreksiStokHeader: @KdKoreksi + TanggalHilang + KdCabang + NamaCabang + AlamatCabang + TelpCabang + Fax + NPWP + TglCabang + KdStaff + NamaStaff + JenisKelaminStaff +
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 primarykey.
PenjualanHeader : @KdJual + TglPenjualan + #KdStaff
PenjualanDetail : @KdJual + @ KdBarang + @ KdHarga + Qty
PembelianHeader : @KdBeli + TglPembelian + JenisPembayaran + TglJatuhTempo + #KdStaff + #KdSupplier
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
4.3.2.3Memvalidasikan 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.
(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
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. Atributdomain constraint telah diidentifikasi pada tahap 4.3.1.4 3. Multiplicity telah diidentifikasi pada step 4.3.1.2
4. Entityintegrity 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)
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
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
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)
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.
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 PK Kd Sta ff Na ma Sex T glL hr Alam at T elp F K1 KdJ nsSta ff F K2 KdC aba ng Use rI d Pas s MsJ en isStaf f PK Kd J ns Sta ff Je nis St aff M sBar an g PK Kd Bar a ng Na ma Bara ng De sk Qt y Qt ymin F K1 KdJn sBr g T rH rg Jua l1 PK Kd Ha rg a F K1 KdBa ra ng Ha rg a T glIn T glO ut Sta tus Ms Supp lier 1 PK Kd Sup p lie r Na ma Alam at De skrip si T rJu alHe ad er PK Kd Ju al
T glPe njua lan F K1 KdSt aff T rBe liHea de r1
PK Kd Be li F K2 Kd Staff
T glPe mb elia n Jn sPem b aya ran T glJ atu hT em po F K1 Kd Supp lier T rR trJu alHe ad er PK Kd Rtr Ju al FK2 KdJu al FK1 KdSta ff Tg lRet ur Tr Rtr BeliHe ad er PK Kd Rt rB eli F K2 Kd St aff T glRe tu r F K1 Kd Be li T rKor eks iHea de r1
PK Kd Ko re ks i F K1 KdSta ff
T gl
T rJu alDe tail PK, FK3 K dBa r an g PK, FK2 K dJ ua l Q ty F K1 Kd Har ga T r Be liDet ail PK, FK 1 KdB eli PK, FK 2 KdB ar an g Qty Har ga T r RtrJ ua lDeta il PK,F K1 Kd Rtr J ua l PK,F K2 Kd Bar a ng Qt y Tr Rtr Be liDet ail PK ,FK 1 KdR tr Bel i PK ,FK 2 KdB ar an g Qty T rKo re ksiDe tail
PK ,FK 1 KdK or ek si PK ,FK 2 KdB ar an g Qty M sJns Ba ra ng PK K dJ ns Br g J nsBa ra ng D esk M sT lpSup plie r PK,F K1 k ds u pp lie r PK n o Tl p CP 1. .1 1.. * 1. .* 1.. 1 0. .* 1.. 1 0. .* 1. .1 1.. 1 0. .* 0. .1 1. .1 0. .1 1.. 1 1. .1 1.. * 0. .* 1. .1 1.. * 1. .1 1.. 1 1. .1 0..* 0. .* 0.. * 1. .1 0.. * 1. .1 1. .1 1.. * 1. .* 1.. 1 1. .* 1.. 1 1. .1 1.. 1 0.. * 1.. 1 0. .* 1.. 1 1. .* 1.. 1 1. .* 0. .*
mem ilik i m emilik i
mem ilik i mem ilik i mem ilik i memi lik i memi lik i mem ilik i m e m ilik i m e m ilik i 1.. 1 1. .* m e m ilik i m e m ili ki m em ilik i m emas uk k an melak ukan m elakuk an mem as uk kan me la k u ka n me mi li ki me mi li ki m e m ilik i m enggunak an me mi li ki 1..* 1. .1 m e m ilik i Pe mb ay ara n PK Kd Ba yar T glBa yar Pem b aya ra n F K1 KdBe li 1. .1 0. .* mem ilik i
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
merepresentasikan relasi dasar yang telah diidentifikasi pada data model logikal ke database yang akan dibuat.
1. Cabang
Domain KdCabang : variablelength characterstring, length 5 Domain NamaCabang : variable length characterstring, length 30 Domain AlamatCabang : variabletext
Domain Telp : variablelengthcharacterstring, length 13 Domain Fax : variablelengthcharacterstring, length 13 Domain NPWP : variablelength characterstring, length 25 Domain TglCbg : variabledate
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: variablelengthcharacterstring, length 3 Domain Nama : variablelengthcharacterstring, length 30 Domain Sex : variablelengthcharacterstring, length 1
Domain TglLhr : variabledate
Domain Alamat : variabletext
Domain Telp : variablelengthcharacterstring, length 13 Domain UserID : variablelengthcharacterstring, length 15 Domain Pass : variablelength characterstring, length 8 Domain KdCabang : variable length characterstring, length 5 Domain KdJnsStaff : variablelength characterstring, 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
3. Jenis S taf
Domain KdJnsStaff: variablelength characterstring, length 2 Domain JenisStaff : variable length characterstring, length 20 JenisS taff (
KdJnsStaff KdJnsStaff NOT NULL, JenisStaff JenisStaff NOT NULL,
PRIMARY KEY (KdJnsStaff) );
4. Barang
Domain KdBarang: variable lengthcharacterstring, length 5 Domain NamaBarang : variable length characterstring, length 25 Domain Deskripsi : variabletext
Domain Qty : integer
Domain QtyM in : integer
Domain KdJnsBarang : variablelengthcharacterstring, 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,
FOREIGN KEY (KdJnsBarang) REFERENCES JenisBarang (KdJnsBarang) ON UPDATE CASCADE ON DELETE CASCADE
);
5. Jenis Barang
Domain KdJnsBarang: variablelengthcharacterstring, length 2 Domain JenisBarang : variablelengthcharacterstring, length 30 Domain Deskripsi : variabletext
JenisBarang (
KdJnsBarang KdJnsBarang NOT NULL, JenisBarang JenisBarang NOT NULL, Desk Deksripsi,
PRIMARY KEY ( KdJnsBarang) );
6. Harga Jual
Domain KdHarga: variablelengthcharacterstring, length 8 Domain Harga : decimal
Domain TglIn : variabledate
Domain TglOut : variabledate
Domain Status : variablelength characterstring, length 1 Domain KdBarang : variable length characterstring, length 5 HargaJual (
KdHarga KdHarga NOT NULL,
Harga Harga NOT NULL,
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: variablelengthcharacterstring, length 3 Domain Nama : variablelengthcharacterstring, length 30 Domain Alamat : variabletext
Domain Deskripsi : variabletext
Supplier (
KdSupplier KdSupplier NOT NULL,
Nama Nama NOT NULL,
Alamat Alamat NOT NULL,
Desk Deksripsi,
PRIMARY KEY (KdSupplier) );
8. Telepon S upplier
Domain NoTelp: variablelengthcharacterstring, length 13 Domain ContactPerson : variablelengthcharacterstring,
length 30
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: variablelengthcharacterstring, length 12 Domain TglPenjualan : variabledate
Domain KdStaff : variablelengthcharacterstring, 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: variablelengthcharacter string, length 12 Domain KdBarang : variablelength characterstring, length 5 Domain KdHarga : variablelengthcharacterstring, length 8
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: variablelengthcharacterstring, length 12 Domain TglPembelian : variabledate
Domain JenisPembayaran: variable lengthcharacterstring, length 6 Domain TglJatuhTempo : variabledate
Domain KdStaff : variablelengthcharacterstring, length 3 Domain KdSupplier : variablelength characterstring, length 3 TrBeliHeader (
KdBeli KdBeli NOT NULL,
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: variablelengthcharacterstring, length 12 Domain KdBarang : variablelength characterstring, 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,
FOREIGN KEY ( KdBarang ) REFERENCES Barang ( KdBarang )
ON UPDATE CASCADE ON DELETE CASCADE, );
13. Retur Jual Header
Domain KdReturJual: variablelengthcharacterstring, length 12 Domain TglReturJual : variabledate
Domain KdJual : variablelengthcharacterstring, length 12 Domain KdStaff : variablelengthcharacterstring, 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: variablelengthcharacterstring, length 12 Domain KdBarang : variable lengthcharacterstring, length 5 Domain Qty: integer
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 lengthcharacterstring, length 12 Domain TglReturBeli : variabledate
Domain KdBeli: variablelengthcharacterstring, length 12 Domain KdStaff : variablelengthcharacterstring, 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
);
16. Retur Beli Detail
Domain KdReturBeli: variable lengthcharacterstring, length 12 Domain KdBarang : variable length characterstring, 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: variablelengthcharacterstring, length 12 Domain TglHilang : variabledate
Domain KdStaff : variablelengthcharacterstring, length 3 TrKoreksiHeader(
KdKoreksi KdKoreksi NOT NULL, TglHilang TglHilang NOT NULL, KdStaff KdStaff NOT NULL,
FOREIGN KEY (KdStaff) REFERENCES Staff (KdStaff) ON UPDATE CASCADE ON DELETE CASCADE
);
18. Koreksi Stok Detail
Domain KdKoreksi: variablelengthcharacterstring, length 12 Domain KdBarang : variable length characterstring, 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: variablelengthcharacterstring, length 12 DomainTglBayar : variabledate
Domain Pembayaran : decimal
Domain KdBeli : variablelengthcharacterstring, length 12 Pembayaran (
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
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
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 X JenisBarang X X HargaJual X TelpSupplier X
f. M emasukkan data penjualan g. M emasukkan data pembelian h. M emasukkan data retur penjualan i. M emasukkan data retur pembelian j. M emasukkan data koreksi persediaan
Transaksi (F) (G) (H) (I) (J) Relation 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 X X Supplier X X Barang X X X X X BeliHeader X X BeliDetail X X JualHeader X X JualDetail X X ReturBeliHeader X ReturBeliDetail X ReturJualHeader X ReturJualDetail X KoreksiHeader X KoreksiDetail X Pembayaran JenisStaff JenisBarang HargaJual X X TelpSupplier
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 (K) (L) (M) (N) (O) Relation 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 X X Barang X X X BeliHeader X BeliDetail JualHeader JualDetail ReturBeliHeader ReturBeliDetail ReturJualHeader ReturJualDetail KoreksiHeader KoreksiDetail Pembayaran X JenisStaff JenisBarang X HargaJual X X TelpSupplier X X
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 (P) (Q) (R) (S ) (T) Relation R U D I R U D I R U D I R U D I R U D I Cabang X X X Staff Supplier X X Barang X X X X BeliHeader X X BeliDetail X JualHeader X JualDetail X ReturBeliHeader ReturBeliDetail ReturJualHeader ReturJualDetail KoreksiHeader KoreksiDetail Pembayaran X JenisStaff JenisBarang X X X X HargaJual X TelpSupplier
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
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
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 KdJnsBarang Char 2
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
Tabel Penyimpanan HargaJual
Tabel 4.13 Tabel Estimasi Harga Jual
Field Tipe Data Ukuran
KdHarga Char 8
Harga Decimal (precision
18) 9 TglIn Datetime 8 TglOut Datetime 8 Status Char 1 KdBarang Char 5
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