BAB 3
ANALISIS KEBUTUHAN
DAN PERANCANGAN BASIS DATA
3.1 Sejarah Perusahaan
PT. Flash Mobile adalah perusahaan yang bergerak di bidang jasa telekomunikasi selular nasional berbasis CDMA dengan menggunakan Jaringan Cellular CDMA dari PT. Mobile-8 Telecom. Perusahaan ini didirikan pada tanggal 24 Agustus 2004 oleh Bapak DR.Ir Agus Mulyanto, berlokasi di Jl. Yos Sudarso 55, Jakarta. PT. Flashmobile menawarkan total solusi komunikasi untuk memenuhi kebutuhan Pelanggan Korporat dengan keuntungan memberikan keleluasaan untuk dapat terhubung dengan jaringan data perusahaan dan penghematan dan pengendalian biaya komunikasi corporate.
Produk yang ditawarkan oleh PT. Flash Mobile antara lain Corporate Phone, Mobile Access Hunting, dan Data Communication (Mobile VPN). PT. Flash Mobile mempunyai visi untuk meningkatkan penjualan di tahun berikutnya, dengan memperbaiki sistem penjualan dan persediaan barang sehingga diharapkan dapat membantu dalam meningkatkan penjualan untuk tahun-tahun kedepan.
3.2 Struktur Organisasi
Struktur organisasi di PT. Flash Mobile adalah sebagai berikut:
Gambar 3.1 Struktur Organisasi Perusahaan Dewan Komisaris Presiden Direktur Dewan Penasehat PR & Legal Divisi
Pembelian Direktur Keuangan Direktur Operasional Direktur Bus & Dev
Direktur Penjualan Divisi Keuangan Divisi Akuntansi Divisi Budget Divisi Teknik Deputi Direktur Operasional Divisi Marketing Divisi CustService Divisi HRD & GS Deputi Direktur Bus & Dev
3.3 Wewenang dan Tanggung Jawab
Berikut ini adalah uraian tugas dan tanggung jawab dari masing-masing jabatan pada PT. Flash Mobile:
I. Dewan Komisaris
Tugas dari Dewan Komisaris meliputi :
a. Bertugas mengawasi perusahaan perseroan oleh direksi. b. Berhak menerima laporan dari Presiden Direktur
c. Setiap waktu rapat dewan komisaris berasarkan persetujuan lebih dari separuh jumlah anggota dewan ,dapat memutuskan untuk memberhentikan (sementara waktu atau lebih) anggota direksi dari jabatannya ,apabila melakukan tindakan yang bertentangan dengan anggaran dasar atau merugikan perseroan atau melalaikan kewajibannya .
d. Bertanggung jawab kepada pemegang saham atau pemilik perusahaan.
e. Dapat menempatkan orang lain yang merupakan orang keperjayaannya untuk menggantikan perannya
II. Presiden Direktur
Tugas Presiden direktur adalah:
a. Memimpin Perusahaan secara langsung b. Menerima laporan dari Direktur Departemen c. Mengambil keputusan-keputusan dalam perusahaan d. Membawahi semua departemen
Dibantu oleh
• Dewan Penasehat
Bertugas untuk mengamati jalannya perusahaan dan memberikan pendapat • Divisi pembelian
Bertugas mengatur pembelian barang yang akan disalurkan ke distributor dan memeriksa kualitas serta masa berlaku dari barang yang dibeli
• PR &Legal
a. Membuat kontrak kerja dengan pihak-pihak diluar perusahaan. b. Membuat perjanjian dengan pihak luar
c. Menghubungi pihak luar yang akan bekerja sama
III. Direktur Keuangan
Tugas Direktur Keuangan adalah:
a. Membawahi 3 Divisi (Divisi Keuangan, Akuntansi, Budget Control &Tax) b. Menerima dan memeriksa Laporan dari ketiga Divisi dibawahnya
c. Melaporkan kegiatan kepada Presiden Direktur
Divisi yang dibawahi Direktur Keuangan adalah: • Divisi Keuangan
Tugasnya adalah menyusun rencana kerja dan anggaran perusahaan, memperbendaharaan sesuai dengan kebijakan yang telah ditetapkan oleh perusahaan dan mengeluarkan biaya atas transaksi yang terjadi ,menghitung gaji dan bonus karyawan.
• Divisi Akuntansi
Bertugas menyusun laporan keuangan setiap bulan ,mencatat transaksi akuntansi perusahaan ,dan menjaga keamanan harta milik perusahaan melalui system akuntansi
• Divisi Budget Control &Tax
Membuat anggaran dengan mengacu pada hasil dari laporan keuangan, dengan cara menganalisi ,sehingga bisa mengaalokasikan anggaran ke depan,juga memperkirakan anggaran pajak
IV. Direktur Operasional
Tugas Direktur Operasional adalah:
a. Membawahi 4 Divisi (Divisi Teknik ,Marketing, Customer service, HRD & GS)
b. Menerima dan memeriksa Laporan dari keempat Divisi dibawahnya c. Melaporkan jalannya kegiatan kepada Presiden Direktur
Dalam menjalankan tugasnya, Direktur Operasional dibantu oleh Deputy of Operasional Direktur
Divisi yang dibawahi Direktur Operasional adalah: • Divisi Teknik
Tugasnya adalah :
a. Maintenance jaringan di perusahaan b. Mengatur Server untuk VPN
c. Mengatur PDSN
d. Bertanggug jawab atas jalannya semua program
e. Membuat system sesuai dengan kebutuhan yang diperlukan • Divisi Marketing
Tugasnya adalah :
a. Mengadakan perencanaan pemasaran b. Mengadakan promosi hasil produksi
c. Mengawasi pelaksanaan pemasaran hasil produksi
d. Mencari informasi mengenai pesaing dan kebutuhan pasar • Divisi Customer Service
Tugasnya adalah :
a. Melayani keluhan dan saran dari pelanggan b. Melayani pertayaan-pertanyaan pelanggan c. Melayani pertanyaan ada kebutuhan pelanggan • Divisi HRD&GS
Tugasnya adalah :
a. Mencari Tenaga kerja menurut kebutuhan bagian yang membutuhkannya b. Melakukan seleksi terhadap Calon tenaga kerja dan menyimpan arsip
data-data karyawan
V. Direktur Business dan Development
Tugas Direktur Business dan Development adalah :
a. Dalam pelaksanaannya dibantu oleh Deputy of Bus.Dev.Direktor b. Pengamatan dilapangan untuk setiap proses yang berjalan c. Lebih mengarah ke corporate sales
d. Memikirkan cara mengembangkan perusahaan e. Memikirkan ke bisnis korporasi
f. Memikirkan program baru
VI. Direktur Penjualan Tugasnya adalah :
a. Mengadakan penjualan barang.
b. Bertanggung jawab dalam segala kegiatan yang berhubungan dengan penjualan c. Mengawasi pelaksanaan penjualan hasil produksi di seluruh jawa
d. Menerima laporan hasil penjualan e. Lebih mengarah ke penjualan retail
3.4 Sistem yang Sedang Berjalan
Prosedur yang sedang berjalan pada PT. Flash Mobile adalah sebagai berikut:
¾ Prosedur Pembelian Barang
a. Bagian gudang mengajukan permintaan pembelian barang dan membuat surat permintaan pembelian sebanyak dua rangkap. Rangkap pertama untuk bagian pembelian, rangkap kedua untuk bagian gudang.
b. Bagian pembelian menerima informasi mengenai daftar barang dari pemasok melalui telepon atau fax.
c. Bagian pembelian menerima surat permintaan pembelian rangkap pertama dari bagian gudang.
d. Bagian pembelian akan memesan barang dari pemasok berdasarkan surat permintaan pembelian.
e. Bagian pembelian akan membuat surat order pembelian sebanyak empat rangkap. Rangkap pertama untuk pemasok, rangkap kedua untuk bagian gudang, rangkap ketiga untuk bagian akuntansi dan keuangan dan rangkap keempat untuk bagian pembelian.
¾ Prosedur Penerimaan Barang
a. Bagian gudang menerima surat order pembelian rangkap kedua.
b. Pada saat penerimaan barang dari pemasok, bagian gudang menerima faktur dan surat jalan dari pemasok.
c. Setelah bagian gudang memeriksa barang, bagian gudang akan menandatangani surat.jalan pemasok sebagai bukti penerimaan barang.
d. Surat order pembelian rangkap kedua akan diarsipkan di bagian gudang. e. Faktur dan surat jalan pemasok akan diberikan ke bagian pembelian. f. Berdasarkan faktur dan surat jalan pemasok yang diterima, bagian
pembelian akan mencatat transaksi pembelian yang terjadi.
g. Bagian pembelian akan membuat nota pembelian sebanyak dua rangkap. Rangkap pertama beserta faktur dan surat jalan pemasok untuk bagian akuntansi dan keuangan, rangkap kedua akan diarsipkan bagian pembelian.
h. Bagian akuntansi dan keuangan akan menerima nota pembelian rangkap pertama, faktur dan surat jalan pemasok
i. Bila pembelian dilakukan secara kredit, bagian akuntansi dan keuangan akan mencatatnya dalam buku hutang dagang.
j. Bila pembelian dilakukan secara tunai, bagian akuntansi dan keuangan akan mencatatnya dalam pengeluaran kas
k. Nota pembelian rangkap pertama, faktur dan surat jalan pemasok akan diarsipkan pada bagian akuntansi dan keuangan
¾ Prosedur Penjualan Barang
a. Bagian penjualan menerima pemesanan barang dari pelanggan yang mengidentifikasikan jenis dan kuantitas barang yang diminta
b. Bagian penjualan mengeluarkan surat order penjualan kemudian disampaikan ke bagian akuntansi dan keuangan untuk meminta persetujuan.
c. Berdasarkan surat order penjualan, bagian akuntansi dan keuangan akan memeriksa batas kredit pelanggan pada buku piutang dagang.dan memutuskan menerima atau menolak pesanan pelanggan.
d. Jika permintaan pesanan ditolak maka bagian penjualan akan mengkonfirmasikannya pada pelanggan dan pesanan batal.
e. Jika permintaan pesanan diterima maka bagian penjualan akan mengirimkan surat order penjualan ke bagian gudang.
f. Bagian gudang akan menandatangani surat order penjualan dan menyiapkan barang yang dipesan. Setelah itu, bagian gudang akan menyerahkan barang beserta surat order penjualan yang sudah ditandatangani ke bagian penjualan.
g. Bagian penjualan akan menerima kembali surat order penjualan beserta barang yang diminta.
h. Bagian penjualan akan memeriksa apakah barang sesuai dengan pesanan. i. Setelah itu bagian penjualan membuat surat jalan sebanyak dua rangkap
dan faktur penjualan sebanyak tiga rangkap.
j. Bagian penjualan mencatat transaksi penjualan yang terjadi.
k. Bila penjualan dilakukan secara kredit, faktur penjualan rangkap pertama dan surat jalan rangkap pertama akan diarsipkan sementara pada bagian akuntansi dan keuangan. Berdasarkan faktur penjualan, bagian akuntansi dan keuangan akan mencatatnya dalam buku piutang dagang.
l. Bila penjualan dilakukan secara tunai, faktur penjualan rangkap pertama dan surat jalan rangkap pertama beserta barang akan diserahkan pada pelanggan sementara bagian akuntansi dan keuangan akan menerima
surat jalan rangkap kedua dan faktu penjualan rangkap kedua beserta pembayaran dari pelanggan dan mencatatnya dalam buku penerimaan kas.
m. Bagian akuntansi dan keuangan akan memperbarui daftar stok barang.
¾ Prosedur Retur Pembelian
a. Saat terjadi retur pembelian, bagian pembelian akan membuat surat retur pembelian sebanyak tiga rangkap. Rangkap pertama dan ketiga untuk bagian gudang. Rangkap kedua untuk bagian akuntansi dan keuangan. b. Bagian gudang menerima surat retur pembelian rangkap pertama dan
ketiga.
c. Berdasarkan surat retur pembelian, bagian gudang akan menyiapkan barang yang akan diretur dan mengirimnya ke pemasok. Surat retur pembelian rangkap pertama dan ketiga ditandatangani oleh pemasok. d. Surat retur pembelian rangkap pertama beserta barang diserahkan ke
pemasok.
e. Surat retur pembelian rangkap ketiga diarsipkan bagian pembelian.
f. Bagian akuntansi dan keuangan menerima surat retur pembelian rangkap kedua dan mengarsipkannya.
g. Berdasarkan surat retur pembelian, bagian akuntansi dan keuangan akan memperbarui daftar stok barang.
¾ Prosedur Retur Penjualan
a. Saat terjadi retur penjualan, bagian penjualan akan membuat bukti retur penjualan sebanyak dua rangkap. Rangkap pertama untuk bagian akuntansi dan keuangan,. rangkap kedua untuk bagian gudang
b. Bagian gudang menerima bukti retur penjualan rangkap kedua.
c. Bagian gudang akan memeriksa barang yang akan diretur oleh pelanggan dan menandatangani bukti retur penjualan rangkap kedua.
d. Bukti retur penjualan rangkap kedua diarsipkan di bagian penjualan e. Bagian akuntansi dan keuangan menerima bukti retur penjualan rangkap
pertama dan mengarsipkannya.
f. Berdasarkan bukti retur penjualan, bagian akuntansi dan keuangan akan memperbarui daftar stok barang.
¾ Prosedur Pembayaran Hutang Dagang
a. Pemasok akan menagih hutang saat faktur pembelian jatuh tempo. Bagian akuntansi dan keuangan akan mencocokkan faktur pemasok dan melakukan pembayaran pada pemasok.
b. Bagian akuntansi dan keuangan akan memperbarui buku hutang dagang. c. Faktur dari pemasok akan diarsipkan oleh bagian akuntansi dan
¾ Prosedur Penerimaan Piutang Dagang
a. Bagian akuntansi dan keuangan akan menagih piutang pada pelanggan saat faktur penjualan jatuh tempo.
b. Bagian akuntansi dan keuangan akan mengirimkan faktur penjualan kepada pelanggan.
c. Setelah pelanggan melakukan pembayaran, bagian akuntansi dan keuangan akan menandai faktur penjualan tersebut telah dibayar.
d. Bagian akuntansi dan keuangan akan mencatat penerimaan kas yang terjadi.
e. Bagian akuntansi dan keuangan memperbarui buku piutang dagang.
f. Faktur penjualan yang telah lunas tersebut akan diarsipkan bagian akuntansi dan keuangan
3.5 Bagan Alir Dokumen
Untuk lebih jelas, prosedur yang berjalan dapat dilihat dari diagram alir sebagai berikut:
1. Prosedur Pembelian Barang
2. Prosedur Penerimaan Barang
3. Prosedur Penjualan Barang
4. Prosedur Retur Pembelian
5. Prosedur Retur Penjualan
6. Prosedur Pembayaran Hutang Dagang
7. Prosedur Penerimaan Piutang Dagang
3.6 Permasalahan yang Dihadapi
1. Kesulitan dalam membuat laporan penjualan dan mengetahui jumlah persediaan barang yang akurat setiap akhir bulan.
2. Pencarian data lama, karena harus mencari dari banyak berkas yang disimpan terpisah.
3. Keamanan data kurang terjamin karena data mengenai persediaan barang dan penjualan dapat dilihat semua pegawai.
3.7 Analisis Kebutuhan Informasi
Sebagai perusahaan yang bergerak di bidang jasa telekomunikasi selular nasional berbasis CDMA, pihak manajemen PT. Flash Mobile menyadari perlu adanya data dan informasi yang penting bagi pihak manajemen dalam pengambilan keputusan yang tepat, cepat dan akurat untuk kemajuan perusahaannya. Hasil analisis kebutuhan informasi yang ada adalah:
Stok Barang : Berisi informasi tentang persediaan barang di gudang Pelanggan : Berisi informasi tentang pelanggan
Pemasok : Berisi informasi tentang data pemasok Pegawai : Berisi informasi tentang data pegawai
Retur Penjualan : Berisi informasi tentang daftar barang yang dikembalikan oleh pelanggan
Retur Pembelian : Berisi informasi tentang daftar barang yang dikembalikan oleh perusahaan
Pembelian : Berisi informasi tentang pembelian barang dari pemasok Hutang : Berisi informasi tentang pembayaran terhadap pembelian yang
dilakukan perusahaan
Piutang : Berisi informasi tentang pembayaran terhadap penjualan yang dilakukan perusahaan
3.8 Usulan Pemecahan Masalah
1. Merancang basis data untuk penyediaan data penjualan dan data persediaan. Transaksi-transaksi yang telah terjadi dapat diketahui oleh perusahaan untuk mendapatkan laporan secara cepat dan akurat serta lebih mudah dalam mencari data yang diperlukan.
2. Merancang basis data yang dilengkapi dengan batasan hak akses.
3.9 Perancangan Basis Data
Merupakan suatu proses pembuatan sebuah basis data yang akan mendukung tujuan dan operasi suatu enterprise. Sistem basis data dirancang melalui tahap perancangan konseptual, perancangan logikal, dan perancangan fisikal.
3.9.1 Perancangan Konseptual
Proses pembentukan model dari informasi yang digunakan dalam enterprise, independen dari keseluruhan aspek fisik. Model data dibangun dengan menggunakan informasi dari spesifikasi kebutuhan user. Langkah penting yang dilakukan dalam perancangan basis data konseptual adalah:
3.9.1.1 Identifikasi Entiti
Tahap ini bertujuan untuk mengidentifikasi tipe entity yang akan digunakan.
No Nama Entity
Alias Deskripsi Kejadian
1 Stok Barang Barang Istilah umum yang menunjukkan cadangan benda berdasarkan hitungan fisik
Satu jenis barang dapat disuplai dari satu pemasok dan dapat dipesan oleh beberapa pelanggan
2 Pelanggan Customer Istilah umum yang menunjukkan seseorang atau perusahaan yang membeli barang
Pelanggan dapat mem-beli lebih dari satu jenis barang
3 Pemasok Supplier Istilah umum yang menunjukkan seseorang atau perusahaan yang menyuplai barang
Pemasok dapat me-nyuplai lebih dari satu jenis barang
4 Pegawai Staf Istilah umum yang menunjukkan orang yang bekerja pada suatu perusahaan
Setiap pegawai dapat menangani satu atau lebih transaksi pe-rusahaan
5 Penjualan Sale Istilah umum yang menunjukkan penge-luaran suatu barang dan memperoleh imbalan untuk pengeluaran itu
Setiap penjualan dapat dilakukan dengan dengan menjual satu atau lebih jenis barang
No Nama Entity
Alias Deskripsi Kejadian 6 Retur
Penjualan
Istilah umum yang menunjukkan pengem-balian suatu barang yang telah dijual
Setiap pengembalian barang yang terjadi dari penjualan barang dapat lebih dari satu barang
7 Pembelian Purchase Istilah umum yang menunjukkan per-olehan suatu barang dengan pengorbanan tertentu
Setiap pembelian dapat dilakukan dengan membelisatu atau lebih jenis barang
8 Retur Pembelian
Istilah umum yang menunjukkan pengem-balian suatu barang yang telah dibeli
Setiap pengembalian barang yang terjadi dari pembelian barang dapat lebih dari satu barang
9 Hutang Debet Istilah umum yang menunjukkan transaksi yang terjadi atas pembelian secara kredit
Setiap transaksi hutang mencatat hutang dari pembelian secara kredit
10 Piutang Kredit Istilah umum yang menunjukkan transaksi yang terjadi atas penjualan secara kredit
Setiap transaksi piutang mencatat piutang dari penjualan secara kredit
3.9.1.2 Identifikasi Tipe Relasi
Tahap ini bertujuan untuk mengidentifikasi relasi penting yang terdapat diantara tipe entity yang telah diidentifikasikan. Tipe relasi dapat diidentifikasi dengan beberapa tahap :
• Membuat ER diagram
• Menentukan multiplicity dari tipe relasional No Nama
Entity
Multiplicity Relationship Nama Entity Multiplicity 1 Pembelian 1..1 1..1 1..* 1..* Mempunyai Mempunyai Mempunyai Mempunyai Hutang ReturPembelian Pemasok Stok Barang 0..1 0..* 1..1 1..* 2 Penjualan 1..1 1..1 1..* 1..* Mempunyai Mempunyai Mempunyai Mempunyai Piutang ReturPenjualan Pelanggan Stok Barang 0..1 0..* 1..1 1..* 3 Pegawai 1..1 1..1 0..* Menangani Menangani Menangani Pembelian Penjualan Pegawai 1..* 1..* 0..* 4 Retur Pembelian
1..* Mempunyai Stok Barang 1..*
5 Retur Penjualan
1..* Mempunyai Stok Barang 1..*
Tabel 3.2 Identifikasi Tipe Entiti
Tahap ini bertujuan untuk mengidentifikasi tipe fakta tentang entity-entity dan relationship yang telah kita pilih
No Nama Entity
Atribut Deskripsi Panjang dan Tipe Data NULL Multi Value 1 Stok Barang KodeBrg NamaBrg JenisBrg JmlStok HargaBeli HargaJual StokMin Kode Barang Nama Barang Satuan Jumlah Stok Harga Beli Harga Jual Stok Minimum 7 char 30 char 15 varchar int money money int No No No No No No No No No No No No No No 2 Pelanggan KodePlg NamaPlg NamaKontak AlmtPlg KodePos TelpPlg FaxPLg Kota Kode Pelanggan Nama Pelanggan Nama Kontak Alamat Pelanggan Kode Pos Nomor Telepon Nomor Fax Nama Kota 7 char 30 char 30 char 50 char 5 char 15 char 15 char 30 char No No No No No No No No No No No No No Yes No No
No Nama Entity
Atribut Deskripsi Panjang dan Tipe Data NULL Multi Value 3 Pemasok KodePms NamaPms NamaKontak AlmtPms KodePos TelpPms FaxPms Kota Kode Pemasok Nama Pemasok Nama Kontak Alamat Pemasok Kode Pos Nomor Telepon Nomor Fax Nama Kota 7 char 30 char 30 char 50 char 5 char 15 char 15 char 30 char No No No No No No No No No No No No No Yes No No 4 Pegawai KodePgw NamaPgw JenisKel TglLahir AlmtPgw Jabatan Divisi Kode Pegawai Nama Pegawai Jenis Kelamin Tanggal Lahir Alamat Pegawai Jabatan Divisi 7 char 30 varchar 1char Datetime 50 char 20 char 20 char No No No No No No No No No No No No No No 5 Pembelian NoNotaBeli NoOrdBeli TglNotaBeli TglOrdBeli JnsPembelian KodePgw No Nota Beli No Order Beli Tgl Nota Beli Tgl Order Beli Jenis Pembelian Kode Pegawai 7 char 7 char Datetime Datetime 1char 7 varchar No No No No No No No No No No No No
No Nama Entity
Atribut Deskripsi Panjang dan Tipe Data NULL Multi Value KodePms KodeBrg Kuantitas HargaBeli TotalBeli Kode Pemasok Kode Barang Kuantitas Harga Satuan Total Beli 7 char 7 char 6 varchar Money Money No No No No No No Yes No Yes No 6 Penjualan NoFakJual NoOrdJual TglFakJual TglOrdJual JnsPenjualan KodePgw KodePlg KodeBrg Kuantitas HargaJual TotalJual No Faktur Jual No Order Jual Tgl Faktur Jual Tgl Order Jual Jenis Penjualan Kode Pegawai Kode Pelanggan Kode Barang Kuantitas Harga Satuan Total Jual 7 char 7 char Datetime Datetime 1 char 7 varchar 7 char 7 char 6 varchar Money Money No No No No No No No No No No No No No No No No No No Yes No Yes No 7. Retur Pembelian NoReturBeli NoNotaBeli TglReturBeli KodeBrg Kuantitas No Retur Beli No Nota Beli Tgl Retur Beli Kode Barang Kuantitas 7 char 7 char Datetime 7 char 6 varchar No No No No No No No No No No
Keterangan Keterangan 50 varchar No No 8 Retur Penjualan NoReturJual NoFakJual TglReturJual KodeBrg Kuantitas Keterangan No Retur Jual No Faktur Jual Tgl Retur Jual Kode Barang Kuantitas Keterangan 7 char 7 char Datetime 7 char 6 varchar 50 varchar No No No No No No No No No No No No 9 Hutang KodeHut NoNotaBeli TglJthTemp TotalHut Keterangan Kode Hutang No Nota Beli Jatuh Tempo Total Hutang Keterangan 7 char 7 char Datetime Money 50 varchar No No No No No No No No No No 10 Piutang KodePiut NoFakJual TglJthTemp TotalPiut StatusPiut Keterangan Kode Piutang No Faktur Jual Jatuh Tempo Total Piutang Status Piutang Keterangan 7 char 7 char Datetime Money I char 50 varchar No No No No No No No No No No No No
3.9.1.4 Menentukan Primary Key
Tahap ini bertujuan untuk menetukan candidat key untuk setiap tipe entitas, jika ada lebih dari satu candidat key, untuk memilih satu sebagai primary key. Berikut ini adalah table candidat dan primarykey:
Nama Entitas Candidate Key Primary key
Stok Barang KodeBrg NamaBrg KodeBrg Pelanggan KodePlg NamaPlg KodePlg Pemasok KodePms NamaPms KodePms Pegawai KodePgw NamaPgw KodePgw Penjualan NoFakJual TglFkJal NoFakJual Pembelian NoNotaBeli TglNotaBeli NoNotaBeli
Retur Penjualan NoReturJual TglReturJual
NoReturJual
Retur Pembelian NoReturBeli TglReturBeli
NoReturBeli
Piutang KodePiut NoFakJual
Nama Entitas Candidate Key Primary key Hutang KodeHut NoNotaBeli KodeHut Penjualan NoFakJual TglFkJal NoFakJual Pembelian NoNotaBeli TglNotaBeli NoNotaBeli
3.9.1.5 Validasi Transaksi
Tahap ini bertujuan untuk menvalidasi transaksi untuk meyakinkan bahwa model konseptual lokal mendukung transaksi yang dibutuhkan oleh tampilan. Transaksi yang terjadi adalah:
Data Entry
• Masukkan detail dari stok barang • Masukkan detail dari pelanggan • Masukkan detail dari pegawai • Masukkan detail dari pemasok • Masukkan detail dari penjualan • Masukkan detail dari pembelian • Masukkan detail dari hutang • Masukkan detail dari piutang
Data Update/Delete
• Update/delete detail dari stok barang • Update/delete detail dari pelanggan • Update/delete detail dari pegawai • Update/delete detail dari pemasok • Update/delete detail dari penjualan • Update/delete detail dari pembelian • Update/delete detail dari hutang • Update/delete detail dari piutang
Data Queries:
a. Menampilkan daftar pemesanan pembelian barang ke pemasok b. Menampilkan data hutang yang ada pada pemasok
c. Menampilkan data pembelian barang pada pemasok d. Menampilkan data retur penjualan barang
e. Menampilkan data piutang yang ada pada pelanggan f. Menampilkan data penjualan barang pada pelanggan
g. Menampilkan daftar pemesanan barang penjualan dari pelanggan h. Menampilkan data retur pembelian barang
i. Membuat surat order penjualan j. Membuat surat order pembelian k. Mencatat transaksi penjualan l. Mencatat transaksi pembelian m. Membuat surat retur penjualan n. Membuat surat retur pembelian o. Mencatat transaksi piutang p. Mencatat transaksi hutang
3.9.2 Perancangan Logikal
Perancangan basis data logical merupakan suatu prosers pembuatan model dengan menggunakan informasi yang diperoleh dari mperusahaan serta berdasarkan pada model data spesifik. Langkah penting yang dilakukan dalam merancang basis data logikal adalah:
3.9.2.1 Menghilangkan Fitur yang Tidak Kompatibel
Tahap ini bertujuan untuk membersihkan model data konseptual local untuk menghapus fitur yang tidak kompatibel dengan model relasi.
• Menghilangkan many-to-many Binary Relationship ~ Many-to-many antara Pembelian dengan StokBrg
Gambar 3.14 Relationship *:* antara Pembelian dan Stokbarang
~ Many-to-many antara Penjualan dengan StokBrg
Gambar 3.16 Relationship *:* antara Stokbarang dan Penjualan
Gambar 3.17 Dekomposisi relasi antara Penjualan dan Stokbarang
~ Many-to-many antara Pembelian dengan StokBrg
Gambar 3.18 Relationship *:* antara Stokbarang dan Retur Pembelian
~ Many-to-many antara Retur Penjualan dengan StokBrg
Gambar 3.20 Relationship *:* antara Stokbarang dan Retur Penjualan
Gambar 3.21 Dekomposisi relasi antara Retur Penjualan dan Stokbarang
• Menghilangkan many-to-many Rekursif Relationship
Gambar 3.22 Rekusif relationship pada Pegawai
Gambar 3.24 Rekusif relationship pada Pegawai
Gambar 3.25 Hilangnya Rekusif relationship pada Pegawai
• Menghilangkan Atribut Multivalue
Gambar 3.26 Atribut Multi Value pada Pelanggan
Gambar 3.28 Atribut Value pada Pemasok
Gambar 3.29 Hilangnya Atribut Value pada Pemasok
3.9.2.2 Menentukan Model Logikal Data Lokal
Tahap ini bertujuan untuk membuat relasi untuk model data logikal lokal untuk menggambarkan entity-entity, relationship-relationship, dan atribut-atribut yang diidentifikasi.
StokBarang (KodeBrg, NamaBrg, Satuan, HargaBeli, HargaJual, JmlStok, StokMin) Primary Key KodeBrg
Pelanggan ( KodePlg, NamaPlg, NamaKontak, AlmtPlg, KodePos, Telepon, Fax, Kota )
TeleponPlg ( KodePlg, TelpPlg) Primary Key TelpPlg
Foreign key KodePlg references Pelanggan (KodePlg) FaksPlg ( KodePlg, FaksPlg)
Primary Key FaksPlg
Foreign key KodePlg references Pelanggan (KodePlg)
Pemasok ( KodePms, NamaPms, NamaKontak, AlmtPms, KodePos, Telepon, Fax, Kota )
Primary Key KodePms
TeleponPms ( KodePms, TelpPms) Primary Key TelpPms
Foreign key KodePms references Pemasok (KodePms) FaksPms ( KodePms, FaksPms)
Primary Key FaksPms
Foreign key KodePms references Pemasok (KodePms)
Pegawai ( KodePgw, NamaPgw, JenisKel, TglLahir, AlmtPgw, Jabatan, Divisi ) Primary Key KodePgw
Pembelian (NoNotaBeli, NoOrdBeli, TglNotaBeli, TglOrdBeli, JnsPembelian, KodePgw, KodePms, TotalBeli )
Primary Key NoNotaBeli
PembelianDetil ( NoNotaBeli, KodeBrg, Kuantitas ) Primary Key NoNotaBeli, KodeBrg
Foreign Key NoNotaBeli references Pembelian ( NoNotaBeli ) Foreign Key KodeBrg references StokBrg ( KodeBrg )
Penjualan ( NoFakJual, NoOrdJual, TglFakJual, TglOrdJual, JnsPenjualan, KodePgw, KodePlg, TotalJual )
Primary Key NoFakJual
Foreign Key KodePlg references Pelanggan ( KodePlg ) PenjualanDetil ( NoFakJual, KodeBrg, Kuantitas ) Primary Key NoFakJual, KodeBrg
Foreign Key NoFakJual references Penjualan( NoFakJual ) Foreign Key KodeBrg references StokBrg ( KodeBrg ) ReturPembelian ( NoReturBeli, NoNotaBeli, TglReturBeli) Primary Key NoReturBeli
Foreign Key NoNotaBeli references Pembelian (NoNotaBeli )
ReturPembelianDetil ( NoReturBeli, KodeBrg, Kuantitas, Keterangan ) Primary Key NoReturBeli, KodeBrg
Foreign Key NoReturBeli references ReturPembelian (NoReturBeli) Foreign Key KodeBrg references StokBrg ( KodeBrg )
ReturPenjualan ( NoReturJual, NoFakJual, TglReturJual ) Primary Key NoReturJual
Foreign Key KodeBrg references StokBrg ( KodeBrg ) Foreign Key NoFakJual references Penjualan (NoFakJual )
Tabel 3.5 Model Logikal Data Lokal
3.9.2.3 Memvalidasikan Relasi dengan Menggunakan Normalisasi
Tahap ini bertujuan untuk memvalidasikan relasi-relasi dalam model data logikal lokal menggunakan teknik normalisasi.
Pembelian 1NF
Sudah terjadi saat melakukan tahap menghilangkan fitur yang tidak kompatibel
2NF
Pembelian ( NoNotaBeli, NoOrdBeli, TglNotaBeli, JnsPembelian)
Pembelian Detil ( NoNotaBeli, KodeBrg, HargaBeli, Kuantitas, TotalBeli) ReturPenjualanDetil ( NoReturJual, KodeBrg, Kuantitas, Keterangan ) Primary Key NoReturJual, KodeBrg
Foreign Key NoReturJual references ReturPenjualan (NoReturJual) Foreign Key KodeBrg references StokBrg ( KodeBrg )
Hutang ( KodeHut, NoNotaBeli, TglJthTemp, TotalHut, Keterangan ) Primary Key KodeHut
Foreign Key NoNotaBeli references Pembelian ( NoNotaBeli ) Piutang ( KodePiut, NoFakJual, TglJthTemp, TotalPiut, Keterangan ) Primary Key KodeHut
Order Pembelian ( NoOrdBeli, TglOrdBeli, KodePgw, KodePms) Order Pembelian Detil ( NoOrdBeli, KodeBrg, Kuantitas )
3NF
Pembelian ( NoNotaBeli, NoOrdBeli, TglNotaBeli, JnsPembelian)
Pembelian Detil ( NoNotaBeli, KodeBrg, HargaBeli, Kuantitas, TotalBeli) Order Pembelian ( NoOrdBeli, TglOrdBeli, KodePgw, KodePms )
Order Pembelian Detil ( NoOrdBeli, KodeBrg, Kuantitas )
Penjualan 1NF
Sudah terjadi saat melakukan tahap menghilangkan fitur yang tidak kompatibel 2NF
Penjualan : ( NoFakJual, NoOrdJual, TglFakJual, JnsPenjualan)
Penjualan Detil : ( NoFakJual, KodeBrg, HargaJual, Kuantitas , TotalJual) Order Penjualan ( NoOrdJual, TglOrdJual, KodePgw, KodePlg)
Order Penjualan Detil ( NoOrdJual, KodeBrg, Kuantitas ) 3NF
Penjualan : ( NoFakJual, NoOrdJual, TglFakJual, JnsPenjualan)
Penjualan Detil : ( NoFakJual, KodeBrg, HargaJual, Kuantitas, TotalJual) Order Penjualan ( NoOrdJual, TglOrdJual, KodePgw, KodePlg )
Stok Barang 1NF
StokBarang ( KodeBrg, NamaBrg, JenisBrg,HargaBeli, HargaJual, JmlStok, StokMin)
2NF
StokBarang ( KodeBrg, NamaBrg, JenisBrg,HargaBeli, HargaJual, JmlStok, StokMin)
3NF
StokBarang (KodeBrg, NamaBrg, JenisBrg,HargaBeli, HargaJual, JmlStok, StokMin)
Pelanggan 1NF
Pelanggan ( KodePlg, NamaPlg, NamaKontak, AlmtPlg, TlpPlg, FaksPlg, KodePos, Kota)
2NF
Pelanggan: ( KodePlg, NamaPlg, NamaKontak, AlmtPlg, KodePos, Kota) TeleponPlg (TlpPlg, KodePlg )
FaksPlg (FaksPlg, KodePlg ) 3NF
Pelanggan: ( KodePlg, NamaPlg, NamaKontak, AlmtPlg, KodePos, Kota) TeleponPlg (TlpPlg, KodePlg )
Pemasok 1NF
Pemasok: ( KodePms, NamaPms, NamaKontak, AlmtPms, TelpPms, FaksPms, KodePos, Kota}
2NF
Pemasok: ( KodePms, NamaPms, NamaKontak, AlmtPms, KodePos, Kota} TeleponPms (TlpPms, KodePms )
FaksPms (FaksPms, KodePms ) 3NF
Pemasok: ( KodePms, NamaPms, NamaKontak, AlmtPms, KodePos, Kota} TeleponPms (TlpPms, KodePms )
FaksPms (FaksPms, KodePms )
Pegawai 1NF
Pegawai: ( KodePgw, NamaPgw, JenisKel, TglLahir, AlmtPgw, Jabatan, Divisi) 2NF
Pegawai: ( KodePgw, NamaPgw, JenisKel, TglLahir, AlmtPgw, Jabatan, Divisi) 3NF
Pegawai: ( KodePgw, NamaPgw, JenisKel, TglLahir, AlmtPgw, Jabatan, Divisi)
Retur Pembelian 1NF
2Nf
ReturPembelian ( NoReturBeli, NonotaBeli, TglReturBeli )
ReturPembelianDetil ( NoReturBeli, KodeBrg, Kuantitas, Keterangan ) 3NF
ReturPembelian ( NoReturBeli, NonotaBeli, TglReturBeli )
ReturPembelianDetil ( NoReturBeli, KodeBrg, Kuantitas, Keterangan )
Retur Penjualan 1NF
Sudah terjadi saat melakukan tahap menghilangkan fitur yang tidak kompatibel 2NF
ReturPenjualan ( NoReturJual, NoFakJual, TglReturJual )
ReturPenjualanDetil ( NoReturJual, KodeBrg, Kuantitas, Keterangan ) 3NF
ReturPenjualan ( NoReturJual, NoFakJual, TglReturJual )
ReturPenjualanDetil ( NoReturJual, KodeBrg, Kuantitas, Keterangan ) Hutang
1NF
Hutang: ( KodeHut, NoNotaBeli, TglJthTemp, TotalHut, StatusHut, Keterangan) 2NF
Hutang: ( KodeHut, NoNotaBeli, TglJthTemp, TotalHut, StatusHut, Keterangan) 3NF
Piutang 1NF
Piutang: ( KodePiut, NoFakJual, TglJthTemp, TotalPiut, StatusPiut, Keterangan) 2NF
Piutang: ( KodePiut, NoFakJual, TglJthTemp, TotalPiut, Keterangan) 3NF
Piutang: ( KodePiut, NoFakJual, TglJthTemp, TotalPiut, Keterangan)
3.9.2.4 Memvalidasikan Relasi dengan Transaksi
Tahap ini bertujuan untuk memvalidasikan relasi-relasi dalam model data logikal lokal mampu mendukung transaksi yang diperlukan user
Transaksi yang terjadi adalah:
a. Menampilkan daftar pemesanan pembelian barang ke pemasok
Membaca atribut NamaPms dari entity Pemasok kemudian memasukkan data tersebut ke dalam entity OrdPembelian lalu di JOIN dengan entity OrdPembelianDetil. Data yang ditampilkan adalah NoOrdBeli, TglOrdBeli, KodePms, NamaPms, KodeBrg, Kuantitas
b. Menampilkan data hutang yang ada pada pemasok
Membaca atribut NamaPlg dari entity Pelanggan kemudian memasukkan data tersebut ke dalam entity Hutang yang di JOIN dengan entity Pembelian lalu di JOIN dengan OrdPembelian dan di JOIN dengan Pemasok. Data yang ditampilkan adalah KodeHut, NoNotaBeli, KodePms, NamaPms, TglJthTemp,
c. Menampilkan data pembelian barang pada pemasok
Membaca atribut NamaPms dari entity Pemasok kemudian memasukkan data tersebut ke dalam entity Pembelian yang di JOIN dengan entity PembelianDetil, di JOIN dengan OrdPembelian dan di JOIN dengan Pemasok. Data yang ditampilkan adalah NoNotaBeli, TglNotaBeli, KodePms, NamaPms, JnsPembelian, KodeBrg, Kuantitas, HargaBeli dan TotalBeli
d. Menampilkan data retur penjualan barang
Membaca atribut NamaBrg dari entity StokBrg kemudian memasukkan data tersebut ke dalam entity ReturPenj yang dijoin dengan ReturPenjDetil. Data yang ditampilkan adalah NoReturJual, NoFakJual, TglReturJual, KodeBrg, NamaBrg, Kuantitas dan Keterangan
e. Menampilkan data Piutang yang ada pada pelanggan
Membaca atribut NamaPlg dari entity Pelanggan kemudian memasukkan data tersebut ke dalam entity Piutang yang di JOIN dengan entity Penjualan lalu di JOIN dengan OrdPenjualan dan di JOIN dengan Pelanggan. Data yang ditampilkan adalah KodePiut, NoFakJual, KodePlg, NamaPlg, TglJthTemp, TotalPiut dan Keterangan
f. Menampilkan data penjualan barang pada pelanggan
Membaca atribut NamaPlg dari entity Pelanggan kemudian memasukkan data tersebut ke dalam entity Penjualan yang di JOIN dengan entity PenjualanDetil lalu di JOIN dengan OrdPenjualan dan di JOIN dengan Pelanggan. Data yang
ditampilkan adalah NoFakJual, TglFakJual, KodePlg, NamaPlg, JnsPenjualan, KodeBrg, Kuantitas, HargaJual dan TotalJual
g. Menampilkan daftar pemesanan barang penjualan dari pelanggan
Membaca atribut NamaPlg dari entity Pelanggan kemudian memasukkan data tersebut ke dalam entity OrdPenjualan lalu di JOIN dengan entity OrdPenjualanDetil. Data yang ditampilkan adalah NoOrdJual, TglOrdJual, KodePlg, NamaPlg, KodeBrg, Kuantitas
h. Menampilkan data retur pembelian barang
Membaca atribut NamaBrg dari entity StokBrg kemudian memasukkan data tersebut ke dalam entity ReturPemb yang dijoin dengan ReturPembDetil. Data yang ditampilkan adalah NoReturBeli, NoNotaBeli, TglReturBeli, KodeBrg, NamaBrg, Kuantitas dan Keterangan.
i. Membuat surat order penjualan
Data yang dimasukkan dalam entity order penjualan dan order penjualan detil adalah NoOrdJual, TglOrdJual, KodePgw, KodePlg, KodeBrg dan Kuantitas j. Membuat surat order pembelian
Data yang dimasukkan dalam entity order pembelian dan order pembelian detil adalah NoOrdBeli, TglOrdBeli, KodePgw, KodePms, KodeBrg dan Kuantitas k. Mencatat transaksi penjualan
Data yang dimasukkan dalam entity penjualan dan penjualan detil adalah NoFakJual, NoOrdJual, TglFakJual, JnsPenjualan, KodeBrg, HargaJual, Kuantitas dan TotalJual
l. Mencatat transaksi pembelian
Data yang dimasukkan dalam entity pembelian dan pembelian detil adalah NoNotaBeli, NoOrdBeli, TglNotaBeli, JnsPembelian, KodeBrg, HargaBeli, Kuantitas danTotalBeli
m. Membuat surat retur penjualan
Data yang dimasukkan dalam entity retur penjualan dan retur penjualan detil adalah NoReturJual, NoFakJual, TglReturJual, KodeBrg, Kuantitas dan Keterangan
n. Membuat surat retur pembelian
Data yang dimasukkan dalam entity retur pembelian dan retur pembelian detil adalah NoReturBeli, NonotaBeli, TglReturBeli, KodeBrg, Kuantitas dan Keterangan
o. Mencatat transaksi piutang
Data yang dimasukkan dalam entity piutang adalah KodePiut, NoFakJual, TglJthTemp, TotalPiut, StatusPiut dan Keterangan
p. Mencatat transaksi hutang
Data yang dimasukkan dalam entity hutang adalah KodeHut, NoNotaBeli, TglJthTemp, TotalHut, StatusHut dan Keterangan
3.9.2.5 Diagram ER untuk Menggambarkan Relasi Global
Tahap ini bertujuan untuk menggambarkan model logical global yang diperoleh pada tahap sebelumnya.. ER relasi global dapat dilihat pada gambar dibawah ini:
3.9.3 Perancangan Fisikal
Dalam tahap ini perancangan sudah memperhatikan software apa yang digunakan, security dan integrity sistem yang akan dibuat, memory yang dipergunakan dan juga memperhatikan index untuk mempercepat pencarian. Langkah-langkah penting yang dilakukan adalah:
3.9.3.1 Pemilihan DBMS
Pemilihan DBMS yang tepat untuk mendukung aplikasi database dapat dilakukan kapanpun sebelum menuju desain logical asalkan terdapat cukup informasi mengenai kebutuhan sistem.
Langkah-langkah utama dalam memilih DBMS:
• Mendefinisikan syarat-syarat yang akan menjadi acuan
Langkah ini bertujuan untuk mendeskripsikan kriteria kebutuhan user yang dibutuhkan dalam menentukan DBMS yang digunakan
Berikut ini adalah fitur yang diperlukan berdasarkan kebutuhan user adalah
o Keamanan
o Kemudahan organisasi file
o Kebutuhan memori
o Kapasitas penyimpanan
o Kemudahan Backup dan Recovery
o Strategi pemecahan deadlock
o Harga
o Kebutuhan Hardware
• Evaluasi produk DBMS Fitur Microsoft SQL Server Microsoft Access Oracle Keamanan 8 6 9
Kemudahan organisasi file 8 7 10
Kebutuhan memori 8 8 6
Kapasitas penyimpanan 8 6 8
Kemudahan Backup dan Recovery
8 7 9
Strategi pemecahan deadlock 7 5 9
Harga 9 9 5
Kebutuhan Hardware 8 8 6
Training dan User Support 7 8 5
Total 71 64 67
Tabel 3.6 Evaluasi Produk
• Merekomendasikan pilihan dan memproduksi laporan
Berdasarkan hasil evaluasi, kami memutuskan untuk menggunakan Microsoft SQL Server sebagai DBMS
3.9.3.2 Perancangan relational basis data
Tahap ini bertujuan untuk memutuskan bagaimana caranya menggambarkan identitas relasi dasar dalam model data logikal global dalam target DBMS. Hasil dari tahap ini adalah:
Stok Barang
Domain KodeBrg variabel length character string, length 7 Domain NamaBrg variabel length character string, length 30 Domain Satuan variabel length character string, length 6 Domain JmlStok int
Domain HargaBeli variabel money, length 8 Domain HargaJual variabel money, length 8 DomainStokMin int
StokBarang (
KodeBrg NOT NULL,
NamaBrg NOT NULL,
JenisBrg NOT NULL,
JmlStok NOT NULL,
HargaBeli NOT NULL,
Harga Jual NOT NULL,
StokMin NOT NULL,
Primary key (KodeBrg),
Pelanggan
Domain KodePlg variabel length character string, length 7 Domain NamaPlg variabel length character string, length 30 Domain NamaKontak variabel length character string, length 30 Domain AlmtPlg variabel length character string, length 50 Domain KodePos variabel length character string, length 5 Domain Kota variabel length character string, length 30 Pelanggan (
KodePlg NOT NULL,
NamaPlg NOT NULL,
NamaKontak NOT NULL,
AlmtPlg NOT NULL,
KodePos NOT NULL,
Kota NOT NULL,
Primary key (KodePlg)
)
TeleponPlg
Domain TelpPlg variabel length character string, length 15 Domain KodePlg variabel length character string, length 7 TeleponPlg(
TelpPlg NOT NULL
Foreign Key KodePlg references Pelanggan (KodePlg)
ON UPDATE CASCADE ON DELETE NO ACTION
)
FaksPlg
Domain FaksPlg variabel length character string, length 15 Domain KodePlg variabel length character string, length 7 FaksPlg(
FaksPlg NOT NULL
KodePlg NOT NULL,
Primary key (FaksPlg),
Foreign Key KodePlg references Pelanggan (KodePlg)
ON UPDATE CASCADE ON DELETE NO ACTION
)
Pemasok
Domain KodePms variabel length character string, length 7 Domain NamaPms variabel length character string, length 30 Domain NamaKontak variabel length character string, length 30 Domain AlmtPms variabel length character string, length 50 Domain KodePos variabel length character string, length 5 Domain Kota variabel length character string, length 30 Pemasok (
KodePms NOT NULL,
NamaKontak NOT NULL,
AlmtPms NOT NULL,
KodePos NOT NULL,
Kota NOT NULL,
Primary key (KodePms)
)
TeleponPms
Domain TelpPms variabel length character string, length 15 Domain KodePms variabel length character string, length 7 TeleponPlg(
TelpPms NOT NULL
KodePms NOT NULL,
Primary key (TelpPms),
Foreign Key KodePms references Pemasok (KodePms)
ON UPDATE CASCADE ON DELETE NO ACTION
)
FaksPms
Domain FaksPms variabel length character string, length 15 Domain KodePms variabel length character string, length 7 FakPms (
Primary key (FaksPms),
Foreign Key KodePms references Pemasok (KodePms)
ON UPDATE CASCADE ON DELETE NO ACTION)
Pegawai
Domain KodePgw variabel length character string, length 7 Domain NamaPgw variabel length character string, length 30 Domain JenisKel variabel length character string, length 1 Domain TglLahir variabel date, format short date
Domain AlmtPgw variabel length character string, length 50 Domain Jabatan variabel length character string, length 20 Domain Divisi variabel length character string, length 20 Pegawai (
KodePgw NOT NULL,
NamaPgw NOT NULL,
JenisKel NOT NULL,
TglLahir NOT NULL,
AlmtPgw NOT NULL,
Jabatan NOT NULL,
Divisi NOT NULL,
Primary key (KodePgw),
Pembelian
Domain NoNotaBeli variabel length character string, length 7 Domain NoOrdBeli variabel length character string, length 7 Domain TglNotaBeli variabel date, format short date
Domain JnsPembelian variabel length character string, length 1 Pembelian (
NoNotaBeli NOT NULL,
NoOrdBeli NOT NULL,
TglNotaBeli NOT NULL, JnsPembelian NOT NULL, Primary key (NoNotaBeli),
Foreign Key NoOrdBeli references OrdPembelian (NoOrdBeli ) ON UPDATE CASCADE ON DELETE NOACTION)
Penjualan
Domain NoFakJual variabel length character string, length 7 Domain NoOrdJual variabel length character string, length 7 Domain TglFakJual variabel date, format short date
Domain JnsPenjualan variabel length character string, length 1 Penjualan(
NoFakJual NOT NULL,
NoOrd Jual NOT NULL,
Primary key (NoFakJual),
Foreign Key NoOrdJual references OrdPenjualan (NoOrdJual ) ON UPDATE CASCADE ON DELETE NO ACTION
)
Pembelian Detil
Domain NoNotaBeli variabel length character string, length 7 Domain KodeBrg variabel length character string, length 7 Domain HargaBeli variabel money, length 8
Domain Kuantitas variabel length character string, length 6 Domain TotalBeli variabel money, length 8
Pembelian Detil (
NoNotaBeli NOT NULL,
KodeBrg NOT NULL,
HargaBeli NOT NULL,
Kuantitas NOT NULL,
TotalBeli NOT NULL,
Primary key (NoNotaBeli, KodeBrg),
Foreign Key NoNotaBeli references Pembelian ( NoNotaBeli ) ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key KodeBrg references StokBrg ( KodeBrg )
ON UPDATE CASCADE ON DELETE NO ACTION
Penjualan Detil
Domain NoFakJual variabel length character string, length 7 Domain KodeBrg variabel length character string, length 7 Domain HargaJual variabel money, length 8
Domain Kuantitas variabel length character string, length 6 Domain TotalJual variabel money, length 8
Penjualan Detil (
NoFakJual NOT NULL,
KodeBrg NOT NULL,
HargaJual NOT NULL,
Kuantitas NOT NULL,
TotalJual NOT NULL,
Primary key (NoFakJual, KodeBrg),
Foreign Key NoFakJual references Penjualan (NoFakJual)
ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key KodeBrg references StokBarang (KodeBrg)
ON UPDATE CASCADE ON DELETE NO ACTION
)
Retur Pembelian
Domain NoReturBeli variabel length character string, length 7 Domain NoNotaBeli variabel length character string, length 7 Domain TglReturBeli variabel date, format short date
NoReturBeli NOT NULL, NoNotaBeli NOT NULL, TglReturBeli NOT NULL, Primary key (NoReturBeli),
Foreign Key NoNotaBeli references Pembelian (NoNotaBeli ) ON UPDATE CASCADE ON DELETE NO ACTION
)
Retur Pembelian Detil
Domain NoReturBeli variabel length character string, length 7 Domain KodeBrg variabel length character string, length 7 Domain Kuantitas variabel length character string, length 6 Domain Keterangan variabel length character string, length 30 Retur Pembelian Detil (
NoReturBeli NOT NULL,
KodeBrg NOT NULL,
Kuantitas NOT NULL,
Keterangan NOT NULL, Primary key (NoReturBeli),
Foreign Key KodeBrg references StokBrg ( KodeBrg )
ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key NoReturBeli references Retur Pembelian (NoReturBeli )
Retur Penjualan
Domain NoReturJual variabel length character string, length 7 Domain NoFakturJual variabel length character string, length 7 Domain TglReturJual variabel date, format short date
Retur Penjualan (
NoReturJual NOT NULL, NoFakturJual NOT NULL, TglReturJual NOT NULL, Primary key (NoReturJuali),
Foreign Key NoFakJual references Penjualan (NoFakJual )
ON UPDATE CASCADE ON DELETE NO ACTION
)
Retur Penjualan Detil
Domain NoReturJual variabel length character string, length 7 Domain KodeBrg variabel length character string, length 7 Domain Kuantitas variabel length character string, length 6 Domain Keterangan variabel length character string, length 30 Retur Penjualan Detil(
NoReturJual NOT NULL,
KodeBrg NOT NULL,
Kuantitas NOT NULL,
Foreign Key KodeBrg references StokBrg ( KodeBrg )
ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key NoReturJual references Retur Penjualan (NoReturJual )
ON UPDATE CASCADE ON DELETE NO ACTION)
Hutang
Domain KodeHut variabel length character string, length 7 Domain NoNotaBeli variabel length character string, length 7 Domain TglJthTempo variabel date, format short date
Domain TotalHut variabel money, length 6
Domain Keterangan variabel length character string, length 50 Hutang (
KodeHut NOT NULL,
NoNotaBeli NOT NULL, TglJthTempo NOT NULL,
TotalHut NOT NULL,
Keterangan NOT NULL, Primary key (KodeHut),
Foreign Key NoNotaBeli references Pembelian ( NoNotaBeli ) ON UPDATE CASCADE ON DELETE NO ACTION
Piutang
Domain KodePiut variabel length character string, length 7 Domain NoFakJual variabel length character string, length 7 Domain TglJthTempo variabel date, format short date
Domain TotalPiut variabel money, length 6
Domain Keterangan variabel length character string, length 50 Piutang (
KodePiut NOT NULL,
NoFakJual NOT NULL,
TglJthTempo NOT NULL,
TotalPiut NOT NULL,
Keterangan NOT NULL, Primary key (KodePiut),
Foreign Key NoFakJual references Penjualan ( NoFakJual )
ON UPDATE CASCADE ON DELETE NO ACTION
)
OrdPembelian
Domain NoOrdBeli variabel length character string, length 7 Domain TglOrdBeli variabel date, format short date
Domain KodePgw variabel length character string, length 7 Domain KodePms variabel length character string, length 7 OrdPembelian (
TglOrdBeli NOT NULL,
KodePgw NOT NULL
KodePms NOT NULL,
Primary key (NoOrdBeli),
Foreign Key KodePms references Pemasok (KodePms)
ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key KodePgw references Pegawai (KodePgw)
ON UPDATE CASCADE ON DELETE NO ACTION
)
OrdPenjualan
Domain NoOrdJual variabel length character string, length 7 Domain TglOrdJual variabel date, format short date
Domain Kode Pgw variabel length character string, length 7 Domain KodePlg variabel length character string, length 7 OrdPenjualan (
NoOrdJual NOT NULL,
TglOrdJual NOT NULL,
KodePgw NOT NULL
KodePlg NOT NULL,
Primary key (NoOrdJual),
Foreign Key KodePlg references Pelanggan( KodePlg )
ON UPDATE CASCADE ON DELETE NO ACTION) Foreign Key KodePgw references Pegawai (KodePgw)
ON UPDATE CASCADE ON DELETE NO ACTION )
OrdPembelianDetil
Domain NoOrdBeli variabel length character string, length 7 Domain KodeBrg
Domain Kuantitas variabel length character string, length 7 OrdPembelian (
NoOrdBeli NOT NULL,
KodeBrg NOT NULL,
Kuantitas NOT NULL,
Primary key (NoOrdBeli, KodeBrg),
Foreign Key NoOrdBeli references OrderPembelian ( NoOrdBeli ) ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key KodeBrg references StokBrg ( KodeBrg )
ON UPDATE CASCADE ON DELETE NO ACTION )
OrdPenjualanDetil
Domain NoOrdJual variabel length character string, length 7 Domain KodeBrg variabel date, format short date
Domain Kuantitas variabel length character string, length 7 OrdPenjualan (
KodeBrg NOT NULL,
Kuantitas NOT NULL,
Primary key (NoOrdJual, KodeBrg),
Foreign Key NoOrdJual references OrderPenjualan ( NoOrdJual ) ON UPDATE CASCADE ON DELETE NO ACTION) Foreign Key KodeBrg references StokBrg ( KodeBrg )
ON UPDATE CASCADE ON DELETE NO ACTION) )
3.9.3.3 Analisa Transaksi
Analisa transaksi bertujuan untuk memeahami fungsionalitas dari transaksi yang akan berjalan pada basis data dan untuk menganalisa transaksi yang penting. Dalam menganalisa transaksi dicoba untuk mengidentifikasikan kriteria kinerja sebagai berikut:
Adapun analisis transaksi-transaksi yang ada adalah sebagai berikut:
Transaksi (a) Menampilkan daftar pemesanan pembelian barang ke pemasok CREATE VIEW VwOrdPemb
as
select a. NoOrdBeli, TglOrdBeli, a.KodePms, c.NamaPms, KodeBrg, Kuantitas from OrdPemb a join OrdPembDetil b
on a. NoOrdBeli = b. NoOrdBeli join pemasok c
Transaksi (b) Menampilkan data Hutang yang ada pada pemasok CREATE VIEW VwHutang
as
SELECT KodeHut, a.NoNotaBeli, c.KodePms, d.NamaPms, TglJthTemp, TotalHut, Keterangan
from Hutang a join Pembelian b on a. NoNotaBeli = b. NoNotaBeli
join OrdPemb c on b.NoOrdBeli = c.NoOrdBeli join Pemasok d on c.KodePms = d.KodePms
Transaksi (c) Menampilkan data pembelian barang pada pemasok CREATE VIEW VwPembelian
as
SELECT a.NoNotaBeli, TglNotaBeli, c.KodePms, d.NamaPms, JnsPembelian, KodeBrg, Kuantitas, HargaBeli, TotalBeli
from Pembelian a join PembelianDetil b
on a. NoNotaBeli = b. NoNotaBeli join OrdPemb c on a.NoOrdBeli = c.NoOrdBeli join Pemasok d on c.KodePms = d.KodePms
Transaksi (d) Menampilkan data retur penjualan barang CREATE VIEW VwRetPenj
SELECT a.NoReturJual, NoFakJual, TglReturJual, b.KodeBrg, NamaBrg, Kuantitas, Keterangan
from ReturPenj a join ReturPenjDetil b on a. NoReturJual = b. NoReturJual
join StokBrg c on b.KodeBrg = c.KodeBrg
Transaksi (e) Menampilkan data Piutang yang ada pada pelanggan CREATE VIEW VwPiutang
as
SELECT KodePiut, a.NoFakJual, c.KodePlg, d.NamaPlg, TglJthTemp, TotalPiut, Keterangan
from Piutang a join Penjualan b on a. NoFakJual = b. NoFakJual
join OrdPenj c on b.NoOrdJual = c.NoOrdJual join Pelanggan d on c.KodePlg = d.KodePlg
Transaksi (f) Menampilkan data penjualan barang pada pelanggan CREATE VIEW VwPenjualan
as
SELECT a.NoFakJual, TglFakJual, c.KodePlg, d.NamaPlg, JnsPenjualan, KodeBrg, Kuantitas, HargaJual, TotalJual
from Penjualan a join PenjualanDetil b
on a.NoOrdJual = c.NoOrdJual join Pelanggan d on c.KodePlg = d.KodePlg
Transaksi (g) Menampilkan daftar pemesanan barang penjualan dari pelanggan CREATE VIEW VwOrdPenj
as
select a. NoOrdJual, TglOrdJual, a.KodePlg, c.NamaPlg, KodeBrg, Kuantitas from OrdPenj a join OrdPenjDetil b
on a. NoOrdJual = b. NoOrdJual
join pelanggan c on a.KodePlg = c.KodePlg
Transaksi (h) Menampilkan data retur pembelian barang CREATE VIEW VwRetPemb
as
SELECT a.NoReturBeli,NoNotaBeli, TglReturBeli, b.KodeBrg, NamaBrg, Kuantitas, Keterangan
from ReturPemb ajoin ReturPembDetil b on a. NoReturBeli = b. NoReturBeli join StokBrg c on b.KodeBrg = c.KodeBrg
Transaksi (i) Membuat surat order penjualan create proc inputOrdPemb
as
insert into OrdPemb values(@NoOrdBeli, @TglOrdBeli ,@KodePms )
create proc inputOrdPembDetil
@NoOrdBeli char(7), @KodeBrg char (7), @Kuantitas int as
insert into OrdPembDetil values(@NoOrdBeli,@KodeBrg ,@Kuantitas )
Transaksi (j) Membuat surat order pembelian create proc inputOrdPenj
@NoOrdJual char(7), @TglOrdJual datetime, @KodePlg varchar(7) as insert into OrdPenj values(@NoOrdJual, @TglOrdJual ,@KodePlg )
create proc inputOrdPenjDetil
@NoOrdJual char(7), @KodeBrg char (7), @Kuantitas int
as insert into OrdPenjDetil values(@NoOrdJual ,@KodeBrg ,@Kuantitas )
Transaksi (k) Mencatat transaksi penjualan create proc inputPenj
@NoFakJual char(7), @NoOrdJual char(7), @TglFakJual Datetime, @JnsPembelian char(8)
as
@JnsPenjualan ) create proc inputPenjDetil
@NoFakJual char(7), @KodeBrg char(7), @HargaJual money, @Kuantitas char(6), @TotalJual money
as
insert into PenjualanDetil values(@NoFakJual ,@KodeBrg ,@HargaJual ,
@Kuantitas ,@TotalJual )
Transaksi (l) Mencatat transaksi pembelian create proc inputPemb
@NoNotaBeli char(7), @NoOrdBeli char(7), @TglNotaBeli Datetime, @JnsPembelian char(8)
as insert into Pembelian values(@NoNotaBeli ,@NoOrdBeli ,@TglNotaBeli , @JnsPembelian )
create proc inputPembDetil
@NoNotaBeli char(7), @KodeBrg char(7), @HargaBeli char(10), @Kuantitas char(6),
as insert into PembelianDetil values(@NoNotaBeli ,@KodeBrg ,@HargaBeli , @Kuantitas)
Transaksi (m) Membuat surat retur penjualan create proc inputReturPenj
@NoReturJual char(7), @NoFakJual char(7), @TglReturJual Datetime
as insert into ReturPenj values(@NoReturJual ,@NoFakJual ,@TglReturJual )
create proc inputReturPenjDetil
@NoReturJual char(7), @KodeBrg char(7), @Kuantitas char(6), @Keterangan char (30)
as insert into ReturPenjDetil values(@NoReturJual ,@KodeBrg ,@Kuantitas,
@Keterangan )
Transaksi (n) Membuat surat retur pembelian create proc inputReturPemb
@NoReturBeli char(7), @NoNotaBeli char(7), @TglReturBeli Datetime as
insert into ReturPemb values(@NoReturBeli ,@NoNotaBeli ,@TglReturBeli )
create proc inputReturPembDetil @NoReturBeli char(7),
@KodeBrg char(7), @Kuantitas char(6), @Keterangan char (30)
@Keterangan )
Transaksi (o) Mencatat transaksi piutang create proc inputPiutang
@KodePiut char(7), @NoFakJual char(7), @TglJthTemp Datetime, @TotalPiut money, @Keterangan char(30)
as
insert into Piutang values(@KodePiut ,@NoFakJual ,@TglJthTemp , @TotalPiut , @Keterangan )
Transaksi (p) Mencatat transaksi hutang create proc inputHutang
@KodeHut char(7), @NoNotaBeli char(7), @TglJthTemp Datetime, @TotalHut money, @Keterangan char(30)
as
insert into Hutang values(@KodeHut ,@NoNotaBeli ,@TglJthTemp ,
Secara jelasnya analisa transaksi untuk mengetahui tabel apa saja yang berhubungan jika suatu transaksi terjadi dapat dilihat pada tabel berikut:
Transaksi A B C D I R U D I R U D I R U D I R U D StokBarang X X X Pelanggan TelpPlg FaksPlg Pemasok X X X TelpPms FaksPms Pegawai Penjualan PenjualanDetil Pembelian X X X PembelianDetil X ReturPenjualan ReturPenjualanDetil ReturPembelian X ReturPembelianDetil X Hutang X Piutang OrdPenjualan OrdPembelian X X OrdPenjualanDetil OrdPembelianDetil X
Transaksi E F G H I R U D I R U D I R U D I R U D StokBarang X X X Pelanggan X X X TelpPlg FaksPlg Pemasok TelpPms FaksPms Pegawai Penjualan X X X PenjualanDetil X Pembelian PembelianDetil ReturPenjualan X ReturPenjualanDetil X ReturPembelian ReturPembelianDetil Hutang Piutang X OrdPenjualan X X OrdPembelian OrdPenjualanDetil X OrdPembelianDetil
Transaksi I J K L I R U D I R U D I R U D I R U D StokBarang X X X X Pelanggan X TelpPlg FaksPlg Pemasok X TelpPms FaksPms Pegawai X X Penjualan X PenjualanDetil X Pembelian X PembelianDetil X ReturPenjualan ReturPenjualanDetil ReturPembelian ReturPembelianDetil Hutang Piutang OrdPenjualan X X OrdPembelian X X OrdPenjualanDetil X X OrdPembelianDetil X X
Transaksi M N O P I R U D I R U D I R U D I R U D StokBarang X X Pelanggan TelpPlg FaksPlg Pemasok TelpPms FaksPms Pegawai Penjualan X X PenjualanDetil Pembelian X X PembelianDetil ReturPenjualan X ReturPenjualanDetil X ReturPembelian X ReturPembelianDetil X Hutang X Piutang X OrdPenjualan OrdPembelian OrdPenjualanDetil OrdPembelianDetil
3.9.3.4 Pemilihan Organisasi File
Tujuan dari pemilihan organisasi file adalah untuk menentukan subuah organisasi file yang efisien untuk setiap relasi dasar.
Dalam basis data persediaan dan penjualan ini digunakan organisasi file indeks clustered, karena record data dilakukan secara berurutan sesuai dengan urutan key-nya. Hal lain yang dipertimbangkan adalah organisasi file dengan indeks clustered akan sempurna apabila tidak banyak
3.9.3.5 Pemilihan Indeks
Langkah ini bertujuan untuk menentukan apakah penambahan indeks akan meningkatkan kinerja suatu sistem. Ada dua bentuk files indexes, yaitu clustered dan
non-clustered.
o Clustered : Mengatur baris-baris pada tabel kedalam urutan tertentu.
o Non-clustered : Memiliki struktur yang terpisah dari tabel. Urutan fisik dari
baris tabel tidak mengikuti ukuran dari file indeks.
Dalam hal ini pemilihan atribut untuk clustering suatu tuple harus diperhatikan beberapa syarat:
o Atribut yang sering digunakan untuk operasi join, dalam hal ini operasi join akan lebif efisien.
o Atribut yang sering digunakan untuk mengakses tuple dalam sebuah relasi dalam sebuah permintaan dari atribut tersebut.
Berikut ini adalah tabel dari pemilihan indeks:
Entity Nama Indeks Primary Key
StokBarang KodeBrgdex KodeBrg
Pelanggan KodePlgdex KodePlg
Pemasok KodePmsdex KodePms
Pegawai KodePgwdex KodePgw
Penjualan NoFakJualdex NoFakJual
PenjualanDetil NoFakJualdex2 NofakJual, KodeBrg Pembelian NoNotaBelidex NoNotaBeli PembelianDetil NoNotaBelidex2 NoNotaBeli, KodeBrg ReturPenjualan NoReturjualdex NoReturJual
ReturPembelian NoReturBelidex NoReturBeli
Hutang KodeHutdex KodeHut
Piutang KodePiutdex KodePiut
OrdPenjualan NoOrdJualdex NoOrdJual OrdPembelian NoOrdBelidex2 NoOrdBeli OrdPenjualanDetil NoOrdJualdex NoOrdJual, KodeBrg OrdPembelianDetil NoOrdBelidex2 NoOrdBeli, KodeBrg
Basis data persediaan dan penjualan dibuat indeksnya dengan menggunakan SQL Server 2000, yang dapat dilihat sebagai berikut:
CREATE UNIQUE INDEX KodeBrgdex ON StokBarang (KodeBrg) CREATE UNIQUE INDEX KodePlgdex ON Pelanggan (KodePlg) CREATE UNIQUE INDEX KodePmsdex ON Pemasok (KodePms) CREATE UNIQUE INDEX KodePgwdex ON Pegawai (KodePgw) CREATE UNIQUE INDEX NoFakJualdex ON Penjualan (NoFakJual) CREATE UNIQUE INDEX NoNotaBelidex ON Pembelian (NoNotaBeli) CREATE UNIQUE INDEX NoFakJualdex ON Penjualan (NoFakJual)
CREATE UNIQUE INDEX NoreturJualdex ON ReturPenjualan (NoReturJual) CREATE UNIQUE INDEX NoreturBelidex ON returPembelian (NoReturBeli) CREATE UNIQUE INDEX KodePiutdex ON Piutang (KodePiut)
CREATE UNIQUE INDEX KodeHutdex ON Hutang (KodeHut)
CREATE UNIQUE INDEX NoNotaBelidex2 ON PembelianDetil (NoNotaBeli, KodeBrg)
CREATE UNIQUE INDEX NoFakJualdex ON PenjualanDetil (NofakJual, KodeBrg) CREATE UNIQUE INDEX NoOrdBelidex ON OrdPembelian (NoOrdBeli)
CREATE UNIQUE INDEX NoOrdJualdex ON OrdPenjualan (NoOrdJual)
CREATE UNIQUE INDEX NoOrdBelidex2 ON OrdPembDetil (NoOrdBeli, KodeBrg)
3.9.3.6 Estimasi Disk Space
Perhitungan kapasitas penyimpanan yang dibutuhkan perusahaan dengan perkiraan yaitu:
Nama Field Tipe Ukuran
KodeBrg Char 7
NamaBrg Char 30
Satuan Varchar 6
JmlStok Integer 4
Harga Beli Money 8
Harga Jual Money 8
Tabel 3.9 Tabel StokBarang Kapasitas dari tabel StokBarang adalah 59bytes
Diperkirakan dalam 1 hari terjadi 10 transaksi
Dalam 1 tahun, pertumbuhan tabel ini adalah 10*26*12*59 = 184.080 bytes atau 179,77 Kbytes
Nama Field Tipe Ukuran
KodePlg Char 7 NamaPlg Char 30 NamaKontak Char 30 AlmtPlg Char 50 KodePos Char 5 Kota Char 30 Tabel 3.10 Pelanggan Kapasitas dari tabel Pelanggan adalah 152 bytes Diperkirakan dalam 1 hari terjadi 10 transaksi
Nama Field Tipe Ukuran
FaxPlg Char 15
KodePlg Char 7
Tabel 3.11 Telepon Pelanggan Kapasitas dari tabel Telepon Pelanggan adalah 22 bytes Diperkirakan dalam 1 hari terjadi 10 transaksi
Dalam 1 tahun, pertumbuhan tabel ini adalah 10*26*12*22 = 68640 bytes atau 66,49 Kbytes
Nama Field Tipe Ukuran
FaxPlg Char 15
KodePlg Char 7
Tabel 3.12 Faks Pelanggan Kapasitas dari tabel Faks Pelanggan adalah 22 bytes Diperkirakan dalam 1 hari terjadi 10 transaksi
Dalam 1 tahun, pertumbuhan tabel ini adalah 10*26*12*22 = 68640 bytes atau 66,49 Kbytes
Nama Field Tipe Ukuran KodePms Char 7 NamaPms Char 30 NamaKontak Char 30 AlmtPms Char 50 KodePos Char 5 Kota Char 30 Tabel 3.13 Pemasok
Kapasitas dari tabel Pemasok adalah 152 bytes Diperkirakan dalam 1 hari terjadi 10 transaksi
Dalam 1 tahun, pertumbuhan tabel ini adalah 10*26*12*152 = 474240 bytes atau 459,42 Kbytes
Nama Field Tipe Ukuran
TelpPms Char 15
KodePms Char 7
Tabel 3.14 Telepon Pemasok Kapasitas dari tabel Telepon Pemasok adalah 22 bytes Diperkirakan dalam 1 hari terjadi 10 transaksi
Dalam 1 tahun, pertumbuhan tabel ini adalah 10*26*12*22 = 68640 bytes atau 66,49 Kbytes
Nama Field Tipe Ukuran
FaksPms Char 15
KodePms Char 7
Tabel 3.15 Faks Pemasok Kapasitas dari tabel Telepon Pemasok adalah 22 bytes Diperkirakan dalam 1 hari terjadi 10 transaksi
Dalam 1 tahun, pertumbuhan tabel ini adalah 10*26*12*22 = 68640 bytes atau 66,49 Kbytes