BAB 3 PERANCANGAN
3.1
Sejarah Perusahaan PT Cipta Asri Multi Presisi berdiri pada tanggal 25 November 1997. PT ini terletak di kabupaten Tangerang. Letak kantornya berada di ruko Gading Serpong. Maksud dan tujuan dari PT ini adalah berusaha dalam bidang pembangunan, pertambangan dan industri, angkutan, pertanian, perdagangan dan jasa. Kegiatan-kegiatan PT ini antara lain: 1. Mendirikan dan menjalankan usaha penambangan bahan galian golongan C. 2. Menjadi Kontraktor, pelaksana pemborongan pekerjaan pembuatan dan pemeliharaan pertamanan dan segala macam bangunan. 3. Menjalankan bidang perdagangan termasuk impor dan ekspor dan melakukan usaha-usaha sebagai grosir, leveransir, supplier, agen dan distributor segala macam barang yang dapat diperdagangkan 4. Menjalankan usaha di bidang pertanian, membuka lahan perkebunan dan mengolah hasil-hasilnya. 5. Menjalankan usaha dalam bidang industri 6. Menjalankan usaha pemberian jasa dan konsultasi pada umumnya.
36
37 3.2
Struktur Organisasi
Dewan Direksi
Direktur Utama
Project Manager
HRD
Pelaksana/Wakil Pelaksana
Logistik
Manager Accounting
Bagian Pembelian
Bagian Gudang Gambar 3.1 Gambar Struktur Organisasi
Bagian Piutang dan administrasi
Bagian Keuangan (Finance)
38 3.3
Wewenang dan Tanggung Jawab 1. Direksi •
Direksi bertanggung jawab penuh dalam melaksanakan tugasnya untuk kepentingan Perseroan dalam mencapai maksud dan tujuannya.
•
Pemegang Saham rapat umum.
•
Menerima Laporan Pertanggung jawaban dari direktur.
2. Direktur Utama •
Mengatur kinerja kerja perusahaan
•
Bertanggung jawab terhadap kredibilitas perusahaan.
•
Memeriksa laporan keuangan perusahaan
•
Bertanggung jawab terhadap dewan direksi
3. Project Manager •
Bertanggung jawab terhadap kinerja kerja proyek
•
Mengatur tugas dan bertanggung jawab pada pelaksanaan proyek
•
Bertanggung jawab kepada direktur atas untung atau ruginya pelaksanaan proyek.
4. Pelaksana •
Menjalankan tugas pelaksanaan lapangan yang diberikan oleh project manager
•
Menghitung kebutuhan proyek.
•
Menjaga keamanan pentaris (alat-alat, barang-barang dan mesin-mesin) kantor yang ada di lapangan
•
Bertanggung jawab terhadap pelaksanaan proyek sampai selesai
39 •
Membuat laporan progress kemajuan proyek
5. Logistik •
Membuat surat permintaaan kebutuhan (barang)
•
Menerima dan bertanggung jawab atas barang yang keluar dan masuk di gudang.
•
Membuat laporan persediaan atau stok gudang
6. HRD •
Menerima dan menyeleksi karyawan baru
•
Mengarsip laporan data-data karyawan
•
Menghitung gaji karyawan
7. Accounting •
Membuat laporan keuangan untuk diserahkan kepada direktur utama
•
Membuat laporan nilai persediaan gudang (proyek)
•
Membuat laporan biaya proyek
•
Memeriksa bagian pembelian, kasir, finance
8. Pembelian •
Negosiasi penawaran harga barang yang akan dibeli
•
Membuat surat permintaaan pembelian
•
Membuat laporan pembelian
9. Piutang dan Administrasi •
Menerima dan mengeluarkan kas
•
Mencatat laporan penerimaan dan pengeluaran kas
•
Membayar upah mandor
40 10. Finance •
Menerima dan mengeluarkan cek atau giro
•
Membuat laporan buku bank
•
Membayar utang perusahaan
11. Bagian Gudang •
Menerima, menyimpan dan mengeluarkan bahan baku
•
Menyimpan dan menyusun barang dengan baik dan mengeluarkan barang dari gudang bila ada proyek untuk dikerjakan.
3.4
•
Bertanggung jawab atas keamanan seluruh persediaan barang.
•
Melakukan perhitungan pada akhir tahun atas barang.
Analisa Sistem Informasi yang Berjalan Transaksi dan data yang ada pada PT Cipta Asri Multi Presisi ada yang disimpan di dalam komputer dan ada juga yang dicatat pada buku. Data yang masih dicatat ke buku antara lain adalah data pemasok, barang-barang yang dibeli, buku bank, buku pengeluaran kas, laporan biaya, dan buku pengeluaran cek dan giro. Sedangkan data yang sudah ada sistem informasinya antara lain tagihan, laporan piutang, neraca laba/rugi, laporan pajak penghasilan, purchase order, jurnal keuangan, dan surat-surat. Divisi yang menggunakan komputer antara lain divisi accounting, finance, piutang, dan adminsitrasi. Dan Aplikasi komputer yang digunakan adalah Microsoft Word dan Microsoft Excel 2000.
41 3.4.1
Prosedur Aliran Data Prosedur Proses Pembelian: Bagian pelaksana lapangan membuat perhitungan kebutuhan barang untuk proyek yang akan dilaksanakan. Hasil perhitungan tersebut diberikan ke bagian logistik. Kemudian bagian logistik membuat surat permintaan barang rangkap 2, yang asli untuk bagian pembelian yang satu lagi disimpan oleh bagian logistik sebagai arsip. Bagian pembelian menerima surat permintaaan barang dari bagian logistik. Kemudian bagian pembelian minta penawaran harga ke beberapa pemasok melalui telepon. Kemudian pemasok-pemasok tersebut membuat surat penawaran harga dan mengirim ke perusahaan lewat fax. Lalu bagian pembelian memilih mana diantara pemasok-pemasok tersebut yang paling bagus kualitas dan harganya paling murah. Setelah itu bagian pembelian melakukan negosiasi lewat telepon, kemudian setelah sepakat dengan harga yang ditawarkan antar kedua belah pihak maka bagian pembelian membuat purchase order untuk diberikan ke pemasok. Purchase order dibuat 3 rangkap, rangkap yang yang pertama yaitu yang asli diberikan ke pemasok, rangkap yang kedua diberikan ke logistik untuk mencocokan item barang yang tertera di surat jalan saat barang diterima, kemudian rangkap yang ketiga diberikan ke bagian accounting untuk mencocokan item barang saat akan menerima invoice. Pemasok mengirim barang dengan membawa surat jalan rangkap 2. Bagian logistik mengecek apakah item barang yang tertera di surat jalan
42 dan purchase order sesuai dengan kondisi barang. Setelah dinilai layak, bagian logistik menandatangani surat jalan yang dirangkap 2, yang asli dikembalikan ke pemasok, sedangkan yang satu lagi disimpan oleh bagian logistik sebagai arsip.
Prosedur Proses Pembayaran barang: Pemasok membuat surat tagihan (invoice) lengkap dengan berkas pendukung (faktur pajak, tanda terima barang, surat jalan barang, dan perhitungan nilai barang, dan lain-lain) yang diberikan ke bagian accounting. Kemudian bagian accounting membuat tanda terima tagihan untuk diberikan ke pemasok. Setelah itu bagian accounting mengecek apakah data pendukung sudah lengkap dan perhitungan sudah benar. Bila sudah lengkap dan perhitungan sesuai, maka bagian accounting membuat giro dan bukti kas lalu meminta direktur untuk menandatanganinya. Kemudian giro tersebut diserahkan ke pemasok bersama dengan bukti kas pada saat jatuh tempo pembayaran.
Prosedur Penerimaan barang: Barang yang dikirim oleh pemasok diterima oleh bagian logistik, berikut surat jalan barang. Kemudian bagian logistik mengecek apakah item barang yang tertera di surat jalan dan PO sudah sesuai dengan fisik barang atau tidak. Jika sudah sesuai kemudian bagian logistik membuat tanda terima barang. Jika barang tidak sesuai maka barang dikembalikan
43 untuk ditukar. Tanda terima dibuat rangkap 3. Rangkap pertama yaitu yang asli diberikan ke pemasok, rangkap kedua diberikan ke bagian gudang untuk dijadikan arsip gudang, kemudian rangkap yang ketiga diberikan ke bagian accounting.
Prosedur Retur barang: Jika barang yang diterima tidak sesuai dengan PO, maka pihak logistik menelepon pemasok memberitahu bahwa terjadi kesalahan pengiriman barang. Kemudian pemasok membuat faktur retur dan surat penarikan barang yang dirangkap 2, yang asli dipegang oleh pihak pemasok sedangkan rangkap satu lagi akan diberikan ke bagian logistik. Kemudian pemasok datang ke kantor untuk menukar/mengambil barang dan menyerahkan surat penarikan barang ke bagian logistik. Lalu setelah bagian logistik menerima surat penarikan barang dan faktur retur dari pemasok, bagian logistik membuat daftar tagihan baru yang berisikan nama pemasok dan besar tagihan berdasarkan faktur retur. Faktur retur dan daftar tagihan dikirim ke bagian accounting. Bagian accounting memeriksa kesesuaian daftar tagihan dan mengarsipkan faktur. Jika pembayaran pembelian sudah dilakukan sebagian maka hanya perlu membayar sisanya saja yang sudah dikurangi proses retur. Jika sudah lunas maka pembayaran yang lebih tersebut bisa dipakai untuk pembelian mendatang. Kemudian bagian accounting melakukan pembayaran yang
44 sudah dikurangi. Daftar tagihan diarsipkan dan pembayaran dicatat ke dalam buku kas.
45 3.4.2
Diagram Aliran Dokumen
Diagram aliran dokumen Pembelian barang Pelaksana Lapangan
Bagian Logistik
Bagian Pembelian
Bagian Accounting
Pemasok
Mulai
Membuat Perhitungan Kebutuhan Barang
2 1
Hasil Perhitungan Kebutuhan Barang
N
Hasil Perhitungan Kebutuhan Barang
Membuat Surat Permintaan Barang
2
SuratPermintaan Barang
1 Surat Permintaan Barang
N
Meminta Surat Penawaran harga Ke pemasok
Membuat Surat Penawaran Harga
2
Surat Penawaran Harga
1
Tabel 3.1 Tabel Diagram Aliran Dokumen Pembelian Barang
Surat Penawaran Harga
1
N
46
Pelaksana Lapangan
Bagian Logistik
Bagian Pembelian
Bagian Accounting
Pemasok
1
Pilih Pemasok dengan harga dan kualitas terbaik
Negosiasi dengan Pemasok
3 2
Purchase Order
N
Purchase Order
1
N
Mengirim barang dan Surat Jalan
N
2 1
Surat Jalan
Selesai
Tabel 3.2 Tabel Diagram Aliran Dokumen Pembelian Barang(2)
47 Diagram aliran dokumen Pembayaran barang Direktur
Bagian Accounting
Pemasok
Mulai
Membuat Surat Tagihan
Surat Tagihan (Invoice)
Surat Tagihan (Invoice)
Membuat Tanda Terima Tagihan
Tanda Terima Tagihan
Tanda Terima Tagihan
Mengecek Kelengkapan Invoice
Lengkap ?
Tidak
Invoice dikembalikan ke pemasok
Invoice
Ya Menandatangani giro dan bukti kas
Membuat giro dan bukti kas Bukti kas
Giro
Selesai
Tabel 3.3 Tabel Diagram Aliran Dokumen Pembayaran Barang
48 Diagram aliran dokumen Penerimaan barang
Bagian Logistik
Bagian Accounting
Pemasok
Bagian Gudang
Mulai
Mengirim barang dan surat jalan
Surat Jalan
Surat Jalan
Membuat Cek apakah Tidak Retur sesuai Pembelian dengan fisik barang
Ya
3
N
2 1
N
Tanda Terima Barang
Tanda terima barang
Selesai
Tabel 3.4 Tabel Diagram Aliran Dokumen Penerimaan Barang
49 Diagram aliran dokumen Retur barang Accounting
Bagian Logistik
Pemasok
Mulai
Membuat surat jalan retur pembelian
Surat jalan retur pembelian
Surat jalan retur pembelian
Membuat surat penarikan barang dan faktur retur
N
Surat penarikan 2 Barang
Membuat daftar tagihan baru
N Daftar Tagihan
Faktur retur 2 Daftar Tagihan
1
1
Faktur retur
Menukar/ mengambil barang
Memeriksa kesesuaian
Melakukan pembayaran yang sudah dikurangi
Selesai
Tabel 3.5 Tabel Diagram Aliran Dokumen Retur Barang
50 3.5
Kebutuhan Informasi 1. Informasi Pemesanan Memberikan informasi yang berhubungan dengan pemesanan, yaitu nomor pemesanan, tanggal pemesanan, nama barang yang dipesan, jumlah barang yang dipesan, dan nama pemasok yang dipesan. 2. Informasi Pembelian Memberikan informasi yang berhubungan dengan pembelian, yaitu nomor pembelian, tanggal pembelian, nama barang yang dibeli, total pembelian barang. 3. Informasi Retur Memberikan informasi yang berhubungan dengan retur, yaitu nomor retur, tanggal retur, nomor penerimaan dari barang yang telah diterima oleh perusahaan, nama barang yang diretur, dan alasan melakukan retur. 4. Informasi Pembayaran Memberikan informasi yang berhubungan dengan pembayaran, yaitu nomor pembayaran, tanggal pembayaran, status pembayaran untuk mengetahui sudah lunas atau belum lunas, jenis pembayaran yang dilakukan dengan cash, cek, atau dengan giro, nama pemasok yang dibayar, dan nama barang yang dibayar. 5. Informasi Penerimaan Memberikan informasi yang berhubungan dengan penerimaan, yaitu nomor penerimaan, tanggal penerimaan barang, nomor barang yang diterima, nama barang yang diterima, dan kondisi barang yang diterima.
51 6. Informasi Penawaran Memberikan informasi yang berhubungan dengan penawaran, yaitu nomor penawaran, tanggal penawaran, nama barang yang ditawarkan pemasok, harga per satuan barang, dan nama pemasok yang melakukan penawaran. 7. Informasi Divisi Memberikan informasi yang berhubungan dengan divisi, yaitu nomor divisi, nama divisi. 8. Informasi Karyawan Memberikan informasi yang berhubungan dengan karyawan, yaitu NIP, nama karyawan, jabatan, status, tanggal lahir, jenis kelamin, nomor telepon, dan nomor divisi tempat karyawan itu bekerja. 9. Informasi Barang Memberikan informasi yang berhubungan dengan barang, yaitu nomor barang, nama barang, jenis satuan barang, harga barang, jumlah barang per jenis satuan barang. 10. Informasi Pemasok Memberikan informasi yang berhubungan dengan pemasok, yaitu nomor pemasok, nama pemasok, nama barang, alamat pemasok, nomor telepon, contact person. 11. Informasi Faktur Pajak Memberikan informasi yang berhubungan dengan faktur pajak, yaitu nomor faktur, tanggal faktur, barang yang dikenakan pajak, jumlah PPN, dan jumlah PPH.
52 3.6
Permasalahan yang Dihadapi Permasalahan yang dihadapi dalam perusahaan ini antara lain: 1. Prosedur Pembelian Barang Pada bagian logistik dan bagian gudang mencatat dan menyimpan data barang sendiri-sendiri dan terpisah, jadi ada beberapa data barang yang redundan dan berbeda. Sehingga pada bagian logistik terkadang terjadi kesalahan dalam memprediksi kebutuhan barang mana yang masih kurang dan harus dibeli dengan barang yang masih tersedia di gudang. Hal ini mengakibatkan pada bagian pembelian pun salah menerima barang ke pemasok karena salah mendapat informasi dari bagian logistik. Kemudian selain itu, pada bagian pembelian kesulitan dalam melakukan pencarian data barang karena penyimpanannya tersebar (tidak pada satu tempat) dan terlalu banyak jenis barang, yaitu sekitar lebih dari 200. 2. Prosedur Pembayaran Barang Pada bagian keuangan setiap kali membuat laporan pembayaran dan penghitungannya masih dilakukan dengan menggunakan kalkulator, dan mencatat di buku dan dengan tulisan tangan sehingga harus melakukan penghitungan yang berulang-ulang agar tidak salah, pengecekannya pun juga berulang-ulang. Hal ini tentu membuat waktu pembuatannya jadi lebih lama dan waktu penyerahan laporan ke direktur pun lama. Hal ini dapat menghambat jalannya prosedur pembayaran yang lain.
53 3.7
Usulan Pemecahan Masalah Beberapa usulan pemecahan masalah yang dapat dilakukan adalah: 1. Prosedur Pembelian Barang Pada bagian logistik dan bagian gudang akan dibuatkan sistem penyimpanan data barang dalam 1 tempat yang akurat dan up-to-date. Sehingga Bagian logistik dan bagian gudang pun menyimpan data yang sama. Kemudian juga disediakan sistem yang mempermudah dalam pencarian data berdasarkan data yang dibutuhkan. 2. Prosedur Pembayaran Pada bagian keuangan dibuatkannya sistem pembuatan laporan dengan data yang terdapat dalam satu tempat juga dengan data lainnya sehingga data tidak redundan dan up-to-date. Sistem ini memudahkan bagian keuangan dalam membuat laporan pembayaran sehingga waktu untuk penyerahan laporan pun lebih cepat dan datanya akurat dibandingkan dengan cara menulis di buku. Berdasarkan pemecahan masalah diatas, usulan yang dapat diberikan untuk penyelesaian masalah ini dengan merancang suatu basis data yang terintegrasi untuk semua sistem, sehingga proses pembuatan, penyimpanan, pencarian, dan presentasi data menjadi mudah. Basis data yang akan dirancang untuk mendukung perolehan data yang akurat dan up-to-date.
54 3.8
Perancangan Basis Data Konseptual 3.8.1
Membangun Model Data Konseptual Lokal untuk Setiap User View Langkah-langkah yang dilakukan dalam membuat model data konseptual lokal, yaitu: 3.8.1.1 Identifikasi Tipe Entiti Tabel berikut ini merupakan tabel yang menjelaskan entitientiti yang menjadi kebutuhan perusahaan, yang didapatkan setelah proses analisis sistem yang berjalan dilakukan.
Entiti Karyawan
Deskripsi Istilah umum
Alias Pegawai
Kegiatan Setiap karyawan
untuk
bekerja pada
menjelaskan
departemen / divisi
seluruh karyawan
tertentu dan memiliki
yang bekerja di
tugas tertentu
perusahaan
Divisi
Bagian atau
Department
Setiap divisi memiliki
departemen
karyawan dan
khusus yang
pegawai
menangani masalah spesifik pada perusahaan
55 Barang
Istilah umum
Bahan baku
Barang yang
untuk
dibutuhkan untuk
menjelaskan
pengerjaan proyek.
semua barang yang ada di gudang Pembelian
Istilah umum
Pembelian barang
yang menjelaskan
dilakukan terhadap
transaksi
pemasok dengan
pembelian barang
harga yang murah
ke pemasok
dan berkualitas yang baik
Pemasok
Istilah umum
Supplier
Pemasok melakukan
untuk
penawaran harga
menjelaskan
barang.
semua pihak yang memasokkan barang ke perusahaan Penawaran
Istilah umum
Pemasok mengirim
untuk
daftar penawaran
menjelaskan
harga barang lewat
penawaran harga-
fax ke perusahaan
56 harga barang oleh pemasok Pemesanan
Istilah umum
Order
Pemesanan barang
untuk
dilakukan setelah
menjelaskan
meminta penawaran
transaksi
harga, bernegosiasi
pemesanan
dengan pemasok dan
barang ke
mendapat barang
pemasok
dengan harga yang murah dan kualitas yang baik
Penerimaan
Istilah umum
Setiap penerimaan
untuk
dilakukan oleh
menjelaskan
karyawan dan
penerimaan
didasarkan oleh
barang-barang
pembelian barang
dari pemasok Pembayaran
Istilah umum
Proses pembayaran
untuk
dilakukan setelah
menjelaskan
mengecek bahwa
transaksi
barang yang dikirim
pembayaran yang
sesuai dengan yang
dilakukan atas
diminta
57 pembelian barang Retur
Istilah yang
Pengembalian
Setiap penerimaan
menjelaskan
barang yang tidak
transaksi
sesuai maka
pengembalian
dilakukan retur
barang yang tidak
pembelian
sesuai atau rusak ke pemasok FakturPajak
Istilah yang
Setiap faktur pajak
menjelaskan
dikeluarkan oleh
faktur mengenai
pemasok
pajak barang yang dibeli Tabel 3.6 Tabel Identifikasi Tipe Entiti
3.8.1.2 Identifikasi Tipe Relasi Tujuan dari langkah ini adalah untuk mengindentifikasi relasi antara berbagai tipe entiti yang telah diidentifikasi sebelumnya.
58 Nama Entity
Multi-
Relasi
Nama Entity
plicity Karyawan
Multiplicity
1..1
Menangani
Pembayaran
0..*
1..1
Menangani
Penerimaan
0..*
1..1
Menangani
Pembelian
0..*
1..1
Menangani
Pemesanan
0..*
1..1
Menangani
Retur
0..*
1..1
Melakukan
Penawaran
1..*
1..1
Menerima
Pemesanan
0..*
1..1
Menerima
Pembayaran
1..*
1..1
Menimbulkan
Pembelian
1..1
1..1
Menimbulkan
Penerimaan
1..*
1..*
Menambah
Barang
1..*
Pembelian
1..*
membutuhkan
Barang
1..*
Penawaran
0..*
Mencantumkan
Barang
1..*
Penerimaan
1..1
Menimbulkan
Retur
0..1
0..*
Memperoleh
Barang
1..*
1..1
Berdasar pada
Penerimaan
1..*
0..*
Berdasarkan
FakturPajak
1..*
Retur
0..*
Mengembalikan
Barang
1..*
Divisi
1..1
Memiliki
Karyawan
1..*
Pemasok
Pemesanan
Pembayaran
Tabel 3.7 Tabel Identifikasi Tipe Relasi
59 Menangani Berdasarkan 1..* FakturPajak 0..*
0..*
0..*
M e n im b u lk a n
1..* Pemesanan 1..1
1..* Penerimaan 1..* BerdasarPada 1..1 Pembayaran 0..* 1..1 0..* Menangani
1..1
1..*
0..*
Menangani
Menerima Memperoleh
1..1 M enam bah
Menimbulkan
Menimbulkan
Pembelian 1..* 0..*
1..1 1..1 1..1 1..1 Karyawan 1..*
Menangani
Memiliki
1..1
Divisi
1..1 Membutuhkan Menangani
1..* 1..* 1..*
Barang
0..1 1..* Mengembalikan 0..*
1..*
Retur
0..*
Pemasok 1..1
Menerima
Mencantumkan
0..* Penawaran
1..*
1..1
1..1
Melakukan
Gambar 3.2 Gambar ERD Konseptual Awal
3.8.1.3 Identifikasi dan Menghubungkan Atribut dengan Entiti ataupun dengan Tipe Relasi Tabel dibawah ini menjelaskan setiap atribut yang dimiliki atau berhubungan dengan suatu tipe entiti.
60 Nama Entiti
Atribut
Deskripsi
Tipe data & Panjang
Karyawan
NIP
Nomor yang
Null Multis
valued
Char(10)
No
No
Varchar(20)
No
No
Varchar(20)
No
No
Varchar(10)
Yes
Yes
Varchar(10)
No
No
Varchar(10)
No
No
Date
Yes
No
Char(1)
No
No
mengidentifikasi karyawan secara unik Nama
Mengindentifikasi nama karyawan
Alamat
Mengidentifikasi alamat karyawan
NoTelp
Mengidentifikasi nomor telephone karyawan
Jabatan
Mengidentifikasi jabatan yang dijabat oleh karyawan
Status
Status karyawan apakah masih aktif bekerja atau tidak
TanggalLahir
Tanggal lahir karyawan
JenisKelamin
Jenis kelamin karyawan
61 Divisi
NoDiv
Nomor yang
Char(10)
No
No
Varchar(20)
No
No
Char(10)
No
No
Varchar(20)
No
No
Mengidentifikasi
Numeric
No
No
harga barang
(10,2)
JenisSatuanBar
Jenis satuan barang:
Varchar(6)
No
No
ang
sak, m3, buah,
Integer
No
No
Char(10)
No
No
mengidentifikasi NamaDivisi
divisi secara unik Nama dari divisi
Barang
NoBarang
Nomor yang mengidentifikasi barang secara unik
NamaBarang
Mengidentifikasi nama barang
Harga
lembar, dus, galon, batang, kg, peil, rim Jumlah
Mengidentifikasi jumlah barang berdasarkan satuan barang
Pembelian
NoPembelian
Nomor yang mengidentifikasi Pembelian secara unik
62 TanggalBeli
Tanggal pembelian
Date
No
No
TotalPembelian
Harga dari total
Numeric
No
No
pembelian
(10,2)
Keterangan tambahan
Varchar(50)
Yes
No
Char(10)
No
No
Date
No
No
Varchar(50)
Yes
No
Char(10)
No
No
Varchar(20)
No
No
Varchar(20)
No
No
Varchar(20)
No
No
Varchar(20)
No
No
Keterangan
bila ada Pemesanan
NoPemesanan
Nomor yang mengidentifikasi pemesanan secara unik
TglPemesanan
Tanggal pemesanan barang
Keterangan
Keterangan tambahan bila ada
Pemasok
NoPemasok
Nomor yang mengidentifikasi pemasok secara unik
NamaPemasok
Mengidentifikasi nama Pemasok
NamaBarang
Mengidentifikasi nama barang
AlamatPemasok Mengidentifikasi alamat pemasok ContactPerson
Mengidentifikasi
63 orang yang dapat dihubungi NoTelp
Mengidentifikasi
Varchar(10)
No
Yes
Char(10)
No
No
Date
No
No
Date
No
No
Varchar(50)
Yes
No
Char(10)
No
No
Date
No
No
Varchar(50)
Yes
No
nomor telepon pemasok Penawaran
NoPenawaran
Nomor yang mengidentifikasi penawaran secara unik
TglPenawaran
Tanggal dilakukan penawaran
BatasJatuhTem
Batas jangka waktu
po
pembayaran
Keterangan
Keterangan tambahan bila ada
Penerimaan
NoPenerimaan
Nomor yang mengidentifikasi penerimaan secara unik
TglPenerimaan
Tanggal dilakukan penerimaan
Keterangan
Keterangan tambahan bila ada
64 Pembayaran
NoPembayaran
Nomor yang
Char(10)
No
No
mengidentifikasi setiap transaksi pembayaran TanggalBayar
Tanggal pembayaran
Date
No
No
StatusBayar
Status Pembayaran:
Varchar(11)
No
No
Varchar(5)
No
No
Jumlah uang yang
Numeric
No
No
harus dibayar
(10,2)
Keterangan tambahan
Varchar(50)
Yes
No
Char(10)
No
No
sudah lunas atau belum lunas JenisBayar
Jenis Pembayaran: menggunakan giro, cek atau tunai
JumlahBayar
Keterangan
bila ada Retur
NoRetur
Nomor yang mengidentifikasi setiap transaksi retur barang
FakturPajak
TanggalRetur
Tanggal retur barang
Date
No
No
NoFaktur
Nomor yang
Char(10)
No
No
mengidentifikasi setiap faktur secara
65 unik TanggalFaktur
Tanggal pembuatan
Date
No
No
faktur NamaBarang
Nama barang
Varchar(20)
No
No
JumlahPPN
Jumlah pajak
Numeric
No
No
pertambahan nilai
(10,2)
Jumlah pajak
Numeric
No
No
penghasilan
(10,2)
Keterangan tambahan
Varchar(50)
Yes
No
JumlahPPH
Keterangan
bila ada Tabel 3.8 Tabel Identifikasi Atribut Suatu Entiti
3.8.1.4 Menentukan Domain Atribut Identifikasi domain dari atribut telah dilakukan pada langkah identifikasi atribut dari setiap relasi. Tabel dibawah ini menjelaskan batasan dari setiap atribut dari entiti, yaitu:
Entity Karyawan
Atribut
Domain Atribut
NIP
String dengan panjang 10 karakter
Nama
String dengan panjang 20 karakter
Alamat
String dengan panjang 20 karakter
NoTelp
String dengan panjang 10 digit dan digit berupa angka dari 0-9
66 Jabatan
String dengan panjang 10 karakter
Status
String dengan panjang 10 karakter
Tanggallahir
Tanggal dengan tipe format DD/MM/YYYY
Divisi
Jeniskelamin
Karakter tunggal bernilai L atau P
NoDiv
String karakter dengan panjang 10 karakter
Nama
String karakter dengan panjang 20 karakter
Barang
NoBarang
String dengan panjang 10 karakter
NamaBarang
String dengan panjang 20 karakter
Harga
Numeric dengan 10 digit didepan koma dan 2 digit dibelakang koma
Pembelian
JenisSatuanBarang
String dengan panjang 6 karakter
Jumlah
Integer
NoPembelian
String dengan panjang 10 karakter
TanggalBeli
Tanggal dengan tipe format DD/MM/YYYY
TotalPembelian
Numeric dengan 10 digit didepan koma dan 2 digit dibelakang koma
Keterangan
String dengan panjang 50 karakter
67 Pemesanan
NoPemesanan
String dengan panjang 10 karakter
TglPemesanan
Tanggal dengan tipe format DD/MM/YYYY
Pemasok
Keterangan
String dengan panjang 50 karakter
NoPemasok
String dengan panjang 10 karakter
NamaPemasok
String dengan panjang 20 karakter
NamaBarang
String dengan panjang 20 karakter
AlamatPemasok
String dengan panjang 20 karakter
ContactPerson
String dengan panjang 20 karakter
NoTelp
String dengan panjang 10 digit dan digit berupa angka dari 0-9
Penawaran
NoPenawaran
String dengan panjang 10 karakter
TglPenawaran
Tanggal dengan tipe format DD/MM/YYYY
BatasJatuhTempo
Tanggal dengan tipe format DD/MM/YYYY
Penerimaan
Keterangan
String dengan panjang 50 karakter
NoPenerimaan
String dengan panjang 10 karakter
TglPenerimaan
Tanggal dengan tipe format DD/MM/YYYY
Pembayaran
Keterangan
String dengan panjang 50 karakter
NoPembayaran
String dengan panjang 10 karakter
TanggalBayar
Tanggal dengan tipe format
68 DD/MM/YYYY StatusBayar
String dengan panjang 11 karakter
JenisBayar
String dengan panjang 5 karakter
JumlahBayar
Numeric dengan 10 digit didepan koma dan 2 digit dibelakang koma
Retur
Keterangan
String dengan panjang 50 karakter
NoRetur
String dengan panjang 10 karakter
TanggalRetur
Tanggal dengan tipe format DD/MM/YYYY
FakturPajak
NoFaktur
String dengan panjang 10 karakter
TanggalFaktur
Tanggal dengan tipe format DD/MM/YYYY
NamaBarang
String dengan panjang 20 karakter
JumlahPPN
Numeric dengan 10 digit didepan koma dan 2 digit dibelakang koma
JumlahPPH
Numeric dengan 10 digit didepan koma dan 2 digit dibelakang koma
Keterangan
String dengan panjang 50 karakter Tabel 3.9 Tabel Domain Atribut
69 3.8.1.5 Menentukan Atribut Candidate Key dan Primary Key Tabel dibawah ini menjelaskan atribut yang menjadi candidate key dan primary key dari setiap entiti.
Nama Entiti Karyawan
Candidate Key NIP
Primary Key NIP
Nama,NoTelp Nama,Alamat Divisi
NoDiv
NoDiv
NamaDivisi Barang
NoBarang
NoBarang
NamaBarang,Harga Pembelian
NoPembelian
NoPembelian
Pemesanan
NoPemesanan
NoPemesanan
Pemasok
NoPemasok
NoPemasok
NamaPemasok,NoTelp Penawaran
NoPenawaran
NoPenawaran
Penerimaan
NoPenerimaan
NoPenerimaan
Pembayaran
NoPembayaran
NoPembayaran
Retur
NoRetur
NoRetur
FakturPajak
NoFaktur
NoFaktur
Tabel 3.10 Tabel Candidate Key dan Primary Key
70
0..* Penerimaan
BerdasarPada
1..*
1..1
1..1 NoPenerimaan 1..*
Menimbulkan
0..*
Pembayaran NoPembayaran
Menangani
Menangani
0..* Berdasarkan
FakturPajak
1..*
NoFaktur
1..*
0..*
Menimbulkan
1..1 1..1 Divisi Karyawan 1..* Memiliki 1..1 0..* 1..1 Menangani NoDiv NoPemesanan NIP 1..1 1..1 1..1 0..* Menangani
Diskon JumlahBarang HargaSatuan
1..1 Pemesanan 1..*
Menerima
Menangani Menimbulkan
0..* 0..1
0..*
Retur
Pembelian
NoRetur
NoPembelian
0..*
1..1 1..*
1..1 1..1
Menerima
NoPemasok 1..1
Mengembalikan JumlahBarang Alasan Retur
Membutuhkan JumlahBarang HargaSatuan Keterangan
1..* Menambah
Memperoleh
1..* Barang
JumlahBarang HargaSatuan Kondisiterima
1..*
JumlahBarang HargaSatuan Keterangan
Melakukan
1..*
1..* NoBarang 1..*
Pemasok
Penawaran Mencantumkan
0..*
NoPenawaran
JumlahBarang HargaSatuan
Gambar 3.3 Gambar ERD Konseptual Dengan Primary Key
3.8.1.6 Mempertimbangkan Penggunaan Konsep Pemodelan yang Lebih Baik Dalam relasi ini tidak terdapat model enhanced, karena tidak terdapat satu atau lebih subclass atau superclass jika menggunakan pendekatan spesialisasi.
71 3.8.1.7 Memeriksa dengan Model Redundansi Proses pemeriksaan redundansi dilakukan dengan dua cara, yaitu: 1. Re-examine one-to-one (1:1) relationship Setelah diperiksa, tidak ditemukan entiti yang menggambarkan satu objek yang sama. 2. Remove Redundant Relationship 1. Hubungan Pemesanan-Barang-Pembelian Hubungan Pembelian membutuhkan barang seharusnya tidak diperlukan karena sudah ada hubungan Pemesanan menimbulkan Pembelian dengan multiplicity 1:1 dan Pemesanan menambah Barang. Dengan dua hubungan tersebut seharusnya sudah menggambarkan hubungan Pembelian membutuhkan Barang.
Pemesanan
Menimbulkan
1..1
1..1
NoPemesanan
Pembelian NoPembelian
1..*
1..*
Menambah
Membutuhkan
1..*
Barang
1..*
NoBarang
Gambar 3.4 Gambar Hubungan redundan Pemesanan-BarangPembelian
72 Maka
hubungan
Pembelian
membutuhkan
Barang
dihilangkan sehingga menjadi:
Pemesanan
Menimbulkan
1..1
NoPemesanan
1..1
Pembelian NoPembelian
1..* Menambah
1..*
Barang NoBarang
Gambar 3.5 Gambar Menghilangkan hubungan redundan Pemesanan-BarangPembelian
2. Hubungan Pembayaran-Penerimaan-Pemesanan-Pemasok Hubungan Pemasok menerima Pembayaran seharusnya tidak diperlukan karena sudah ada hubungan Pembayaran BerdasarPada
Penerimaan,
Pemesanan
menimbulkan
Penerimaan, dan Pemasok menerima Pemesanan. Dengan tiga hubungan tersebut seharusnya sudah menggambarkan hubungan Pemasok menerima Pembayaran.
73
Penerimaan
1..*
BerdasarPada
NoPenerimaan
1..1 Pembayaran NoPembayaran 1..*
1..*
Menerima
Menimbulkan 1..1 Pemesanan
1..1 0..*
Menerima
1..1
NoPemesanan
Pemasok NoPemasok
Gambar 3.6 Gambar Hubungan redundan Pembayaran-Penerimaan-PemesananPemasok
Maka
hubungan
Pemasok
menerima
Pembayaran
dihilangkan sehingga menjadi:
Penerimaan
1..*
BerdasarPada
NoPenerimaan
1..1 Pembayaran NoPembayaran
1..* Menimbulkan 1..1 Pemesanan
0..*
Menerima
NoPemesanan
1..1
Pemasok NoPemasok
Gambar 3.7 Gambar Menghilangkan redundan hubungan Pemasok menerima Pembayaran
74 Dari perubahan di atas maka ERD menjadi: 0..* Penerimaan
BerdasarPada
1..*
1..1
1..1 NoPenerimaan 1..*
Menimbulkan
0..*
Pembayaran
0..* Berdasarkan
Menangani
Menangani
NoFaktur
0..*
Menimbulkan
1..1 1..1 Karyawan 1..* 1..1 0..* Menangani NoPemesanan NIP
1..1 Pemesanan 1..* 0..*
FakturPajak
1..*
NoPembayaran
1..1
1..1 1..1
Diskon JumlahBarang HargaSatuan
Divisi
Memiliki 1..1
NoDiv
Menangani
Menangani Menimbulkan
0..* 0..1
0..*
Retur
Pembelian
NoRetur
NoPembelian
0..*
1..1 Menerima
1..1
Pemasok NoPemasok 1..1
Mengembalikan JumlahBarang Alasan Retur
Melakukan 1..* Menambah
Memperoleh
1..* Barang
1..* JumlahBarang HargaSatuan Kondisiterima
1..*
1..* NoBarang
JumlahBarang HargaSatuan Keterangan
Penawaran Mencantumkan
0..*
NoPenawaran
JumlahBarang HargaSatuan
Gambar 3.8 Gambar ERD Konseptual setelah dihilangkan hubungan redundan
3.8.1.8 Melakukan Validasi Model Data Konseptual Lokal terhadap Mendukung Transaksi yang Diperlukan Tujuan dari langkah ini adalah untuk memastikan bahwa perancangan konseptual yang sedang dibangun mendukung semua
75 transaksi yang dibutuhkan oleh pengguna, maka dilakukan dua hal, yaitu: 1. Mendeskripsikan transaksi 2. Menggambarkan transaksi dengan panah pada ER Diagram
Gambar 3.9 Gambar ERD dengan Transaksi Insert
Keterangan Transaksi: (a) Memasukkan detail karyawan berdasarkan divisinya
76 (b) Memasukkan detail pembayaran berdasarkan penerimaan tertentu (c) Memasukkan detail penerimaan berdasarkan pemesanan tertentu (d) Memasukkan detail retur berdasarkan penerimaan tertentu (e) Memasukkan detail pembelian berdasarkan pemesanan tertentu (f) Memasukkan detail pemesanan yang dilakukan kepada pemasok tertentu
Gambar 3.10 Gambar ERD dengan Transaksi Update atau Delete
77 Keterangan Transaksi: (a) Menghapus atau mengubah detail karyawan berdasarkan divisinya (b) Mengubah pembayaran berdasarkan penerimaan tertentu (c) Mengubah detail penerimaan berdasarkan pemesanan tertentu (d) Mengubah detail retur berdasarkan penerimaan tertentu (e) Mengubah detail pembelian berdasarkan pemesanan tertentu (f) Mengubah detail pemesanan yang dilakukan kepada pemasok tertentu
78
Gambar 3.11 Gambar ERD Dengan Transaksi Read
Keterangan Transaksi: (a) Membaca detail karyawan beserta divisinya (b) Membaca detail pembayaran berdasarkan penerimaan tertentu (c) Membaca detail penerimaan berdasarkan pemesanan tertentu (d) Membaca detail retur berdasarkan penerimaan tertentu (e) Membaca detail pembelian berdasarkan pemesanan tertentu
79 (f) Membaca detail pemesanan yang dilakukan kepada pemasok tertentu (g) Membaca detail penawaran yang dilakukan oleh pemasok tertentu
3.9
Meninjau Ulang Model Data Konseptual Lokal dengan User. Model data yang dihasilkan, merupakan representasi yang benar dari sudut pandang user.
3.10
Perancangan Basis Data Logikal 3.10.1 Membangun dan Memvalidasi Model Data Langkah-langkah
yang
dilakukan
dalam
membangun
dan
memvalidasi model data, yaitu: 3.10.1.1 Menghilangkan Bagian-Bagian yang Tidak Sesuai dengan Model Relasional (langkah opsional) 1. Menghilangkan hubungan many-to-many binary relationship types. • Relasi memperoleh (Penerimaan-Barang)
Penerimaan
0..*
Memperoleh
NoPenerimaan
1..*
Barang NoBarang
JumlahBarang HargaSatuan Kondisiterima
Gambar 3.12 Gambar Relasi many-to-many Penerimaan-Barang
80 Menjadi:
Penerimaan NoPenerimaan
1..* DetailPenerimaan 0..*
1..1 Memiliki
JumlahBarang HargaSatuan Kondisiterima
1..1 Memiliki
Barang NoBarang
Gambar 3.13 Gambar Dekomposisi relasi many-to-many Penerimaan -Barang
Dilakukan identifikasi entiti baru DetailPenerimaan sehingga relasi Memperoleh diganti dengan relasi one-to-many (1:*). Relasi many-to-many (*:*) Memperoleh direpresentasikan sebagai Penerimaan Memiliki DetailPenerimaan dan Barang Memiliki DetailPenerimaan.
• Relasi menambah (Pemesanan-Barang)
Pemesanan
0..*
Menambah
NoPemesanan
1..*
Barang NoBarang
JumlahBarang HargaSatuan Keterangan
Gambar 3.14 Gambar Relasi many-to-many Pemesanan-Barang
81 Menjadi:
Pemesanan
1..* DetailPemesanan 0..* 1..1 1..1 Barang Memiliki Memiliki NoPemesanan NoBarang JumlahBarang HargaSatuan Keterangan
Gambar 3.15 Gambar Dekomposisi relasi many-to-many PemesananBarang
Dilakukan
identifikasi
entiti
baru
DetailPemesanan
sehingga relasi Menambah diganti dengan relasi one-tomany (1:*). Relasi many-to-many (*:*) Menambah direpresentasikan
sebagai
Pemesanan
Memiliki
DetailPemesanan dan Barang Memiliki DetailPemesanan.
• Relasi mencantumkan (Penawaran-Barang)
Penawaran
0..*
Mencantumkan
NoPenawaran
1..*
Barang NoBarang
JumlahBarang HargaSatuan
Gambar 3.16 Gambar Relasi many-to-many Penawaran-Barang
82 Menjadi:
Penawaran NoPenawaran
1..1
1..* Memiliki
DetailPenawaran
0..*
1..1 Memiliki
JumlahBarang HargaSatuan
Barang NoBarang
Gambar 3.17 Gambar Dekomposisi relasi many-to-many Penawaran – Barang
Dilakukan
identifikasi
entiti
baru
DetailPenawaran
sehingga relasi Mencantumkan diganti dengan relasi oneto-many (1:*). Relasi many-to-many (*:*) Mencantumkan direpresentasikan
sebagai
Penawaran
Memiliki
DetailPenawaran dan Barang Memiliki DetailPenawaran.
• Relasi berdasarkan (Pembayaran-FakturPajak)
Pembayaran
0..*
Berdasarkan
NoPembayaran
1..*
FakturPajak NoFaktur
Diskon JumlahBarang HargaSatuan
Gambar 3.18 Gambar Relasi many-to-many Pembayaran-FakturPajak
83 Menjadi:
Pembayaran
1..1
1..* Memiliki
NoPembayaran
DetailPembayaran
0..*
1..1 Memiliki
Diskon JumlahBarang HargaSatuan
FakturPajak NoFaktur
Gambar 3.19 Gambar Dekomposisi relasi many-to-many PembayaranFakturPajak
Dilakukan
identifikasi
entiti
baru
DetailPembayaran
sehingga relasi Berdasarkan diganti dengan relasi one-tomany (1:*). Relasi many-to-many (*:*) Berdasarkan direpresentasikan
sebagai
DetailPembayaran
dan
Pembayaran FakturPajak
Memiliki Memiliki
DetailPembayaran.
• Relasi mengembalikan (Retur-Barang)
Retur
0..*
Mengembalikan
NoRetur
1..*
Barang NoBarang
JumlahBarang AlasanRetur
Gambar 3.20 Gambar Relasi many-to-many Retur-Barang
84 Menjadi:
Retur NoRetur
1..*
1..1 Memiliki
DetailRetur
1..1
0..*
JumlahBarang AlasanRetur
Memiliki
Barang NoBarang
Gambar 3.21 Gambar Dekomposisi relasi many-to-many Retur-Barang
Dilakukan identifikasi entiti baru DetailRetur sehingga relasi Mengembalikan diganti dengan relasi one-to-many (1:*). Relasi many-to-many (*:*) Mengembalikan direpresentasikan sebagai Retur Memiliki DetailRetur dan Barang Memiliki DetailRetur.
2. Menghilangkan hubungan many-to-many rekursif Dalam studi kasus ini tidak ditemukan adanya relasi rekursif many-to-many.
3. Menghilangkan hubungan relasi kompleks Dalam studi kasus ini tidak ditemukan adanya relasi kompleks.
4. Menghilangkan atribut multi-valued a. Dalam entity Pemasok ada satu atribut yang multi-valued, yaitu terdapat pada atribut NoTelp.
85 Pemasok NoPemasok NamaPemasok NamaBarang AlamatPemasok ContactPerson NoTelp [1..3]
Gambar 3.22 Gambar Entiti Pemasok dengan atribut multi-valued
Menjadi:
Pemasok NoPemasok NamaPemasok NamaBarang AlamatPemasok ContactPerson
1..1
Menyediakan
1..3
TeleponPemasok TelpPem {PK}
Gambar 3.23 Gambar Dekomposisi atribut NoTelp menjadi entiti TeleponPemasok
b. Dalam entity Karyawan ada satu atribut yang multivalued, yaitu terdapat pada atribut NoTelp. Karyawan NIP Nama Alamat NoTelp [1..3] Jabatan Status Tanggallahir JenisKelamin
Gambar 3.24 Gambar Entity Pemasok dengan atribut multi-valued
86 Menjadi:
Karyawan NIP Nama Alamat NoTelp [1..3] Jabatan Status Tanggallahir JenisKelamin
1..1
Menyediakan
1..3
TeleponKaryawan TelpKar {PK}
Gambar 3.25 Gambar Dekomposisi atribut NoTelp menjadi entity TeleponKaryawan
3.10.1.2 Menentukan Relasi untuk Model Data Logikal Lokal 1. Strong entity type a. Karyawan
(NIP,
Nama,
Alamat,
Jabatan,
Status,
Tanggallahir, Jeniskelamin) Primary key NIP b. Divisi (NoDiv, namaDivisi) Primary key NoDiv c. Barang
(NoBarang,
NamaBarang,
Harga,
JenisSatuanBarang, Jumlah) Primary key NoBarang d. Pembelian (NoPembelian, TanggalBeli, TotalPembelian, Keterangan) Primary Key NoPembelian
87 e. Pemasok (NoPemasok, NamaPemasok, NamaBarang, AlamatPemasok, ContactPerson, NoTelp) Primary Key NoPemasok f. Pemesanan (NoPemesanan, TglPemesanan, Keterangan) Primary key NoPemesanan g. Penawaran
(NoPenawaran,
TglPenawaran,
BatasJatuhTempo, Keterangan) Primary Key NoPenawaran h. Penerimaan (NoPenerimaan, TglPenerimaan, Keterangan) Primary key NoPenerimaan i. Pembayaran (NoPembayaran, TanggalBayar, StatusBayar, JenisBayar, JumlahBayar, Keterangan) Primary Key NoPembayaran j. Retur (NoRetur, TanggalRetur) Primary Key NoRetur k. FakturPajak (NoFaktur, TanggalFaktur, NamaBarang, JumlahPPN, JumlahPPH, Keterangan) Primary Key NoFaktur l. TeleponPemasok (TelpPem) Primary Key TelpPem m. TeleponKaryawan (TelpKar) Primary key TelpKar
88 2. Weak entity type a. DetailPenerimaan
(JumlahBarang,
HargaSatuan,
Kondisiterima) Primary Key belum ada (saat ini) b. DetailPemesanan
(JumlahBarang,
HargaSatuan,
Keterangan) Primary Key belum ada (saat ini) c. DetailPembayaran
(Diskon,
JumlahBarang,
HargaSatuan,) Primary Key belum ada (saat ini) d. DetailPenawaran (JumlahBarang, HargaSatuan) Primary Key belum ada (saat ini) e. DetailRetur (JumlahBarang, AlasanRetur) Primary Key belum ada (saat ini)
3. Tipe hubungan one-to-many a. Hubungan Karyawan menangani Pemesanan Kirim ke Pemesanan model 1..* relasi menangani
Karyawan (NIP, Nama, Alamat, Jabatan, Status, TglLahir, JenisKelamin) Primary Key NIP
Pemesanan (NoPemesanan, TglPemesanan, Keterangan, NIP) Primary Key NoPemesanan Foreign Key NIP references Karyawan (NIP)
Dalam hubungan one-to-many Karyawan menangani Pemesanan, atribut Primary Key Karyawan, yaitu NIP
89 dikirim ke Pemesanan menjadi atribut Foreign Key Pemesanan.
b. Hubungan Karyawan menangani Pembayaran Kirim NIP ke Pembayaran model 1..* relasi menangani
Karyawan (NIP, Nama, Alamat, Jabatan, Status, TglLahir, JenisKelamin) Primary Key NIP
Pembayaran (NoPembayaran, TanggalBayar, StatusBayar, JenisBayar, JumlahBayar, Keterangan, NIP) Primary Key NoPembayaran Foreign Key NIP references Karyawan (NIP)
Dalam hubungan one-to-many Karyawan menangani Pembayaran, atribut Primary Key Karyawan, yaitu NIP dikirim ke Pembayaran menjadi atribut Foreign Key Pembayaran.
c. Hubungan Karyawan menangani Penerimaan Kirim NIP ke Penerimaan model 1..* relasi menangani
Karyawan (NIP, Nama, Alamat, Jabatan, Status, TglLahir, JenisKelamin) Primary Key NIP
Penerimaan (NoPenerimaan, TglPenerimaan, Keterangan, NIP) Primary Key NoPenerimaan Foreign Key NIP references Karyawan (NIP)
Dalam hubungan one-to-many Karyawan menangani Penerimaan, atribut Primary Key Karyawan, yaitu NIP dikirim ke Penerimaan menjadi atribut Foreign Key Penerimaan.
90 d. Hubungan Karyawan menangani Pembelian Kirim NIP ke Pembelian model 1..* relasi menangani
Karyawan (NIP, Nama, Alamat, Jabatan, Status, TglLahir, JenisKelamin) Primary Key NIP
Pembelian (NoPembelian, TanggalBeli, TotalPembelian, Keterangan, NIP) Primary Key NIP Foreign Key NIP references Karyawan (NIP)
Dalam hubungan one-to-many Karyawan menangani Pembelian, atribut Primary Key Karyawan, yaitu NIP dikirim ke Pembelian menjadi atribut Foreign Key Pembelian.
e. Hubungan Karyawan menangani Retur Kirim ke Retur model 1..* relasi menangani
Karyawan (NIP, Nama, Alamat, Jabatan, Status, TglLahir, JenisKelamin) Primary Key NIP
Retur (NoRetur,TanggalRetur, NIP) Primary Key NoRetur Foreign Key NIP references Karyawan (NIP)
Dalam hubungan one-to-many Karyawan menangani Retur, atribut Primary Key Karyawan, yaitu NIP dikirim ke Retur menjadi atribut Foreign Key Retur.
91 f. Hubungan Divisi memiliki Karyawan Kirim NoDiv ke Karyawan model 1..* relasi memiliki
Divisi (NoDiv, NamaDivisi) Primary Key NoDiv
Karyawan (NIP, Nama, Alamat, Jabatan, Status, TglLahir, JenisKelamin, NoDiv) Primary Key NIP Foreign Key NoDiv references Divisi (NoDiv)
Dalam
one-to-many
hubungan
Karyawan, atribut primary key
Divisi
memiliki
Divisi, yaitu NoDiv
dikirim ke Karyawan menjadi atribut Foreign key Karyawan.
g. Hubungan Pemasok melakukan Penawaran Kirim NoPemasok ke Penawaran model 1..* relasi melakukan
Pemasok (NoPemasok, NamaPemasok, Namabarang, AlamatPemasok, ContactPerson) Primary Key NoPemasok
Penawaran (NoPenawaran, TglPenawaran, BatasJatuhTempo, Keterangan, NoPemasok) Primary Key NoPenawaran Foreign Key NoPemasok references Pemasok (NoPemasok)
Dalam hubungan one-to-many Pemasok melakukan Penawaran,
atribut
primary
key
Pemasok,
yaitu
NoPemasok dikirim ke Penawaran menjadi atribut Foreign key Penawaran.
92 h. Hubungan Pemasok menerima Pemesanan Kirim NoPemasok ke Pemesanan model 1..* relasi menerima
Pemasok (NoPemasok, NamaPemasok, Namabarang, AlamatPemasok, ContactPerson) Primary Key NoPemasok
Pemesanan (NoPemesanan, TglPemesanan, Keterangan, NIP, NoPemasok) Primary Key NoPemesanan Foreign Key NIP references Karyawan (NIP) Foreign Key NoPemasok references Pemasok (NoPemasok)
Dalam hubungan one-to-many Pemasok menerima Pemesanan,
atribut
primary
key
Pemasok,
yaitu
NoPemasok dikirim ke Pemesanan menjadi atribut Foreign key Pemesanan.
i. Hubungan Pembayaran Berdasar pada Penerimaan Kirim NoPembayaran ke Penerimaan model 1..* relasi berdasar pada
Pembayaran (NoPembayaran, TanggalBayar, StatusBayar, JenisBayar, JumlahBayar, Keterangan, NIP) Primary Key NoPembayaran Foreign Key NIP references Karyawan (NIP)
Penerimaan (NoPenerimaan, TglPenerimaan, NamaBarang, Qty, HargaSatuan, Keterangan, NIP, NoPembayaran) Primary Key NoPenerimaan Foreign Key NIP references Karyawan (NIP) Foreign Key NoPembayaran references Pembayaran
Dalam one-to-many hubungan Pembayaran Berdasar pada Penerimaan, atribut primary key Pembayaran, yaitu NoPembayaran dikirim ke Penerimaan menjadi atribut Foreign key Penerimaan.
93 j. Hubungan Pemesanan menimbulkan Penerimaan Kirim NoPemesanan ke Penerimaan model 1..* relasi menimbulkan
Pemesanan (NoPemesanan, TglPemesanan, Keterangan, NIP, NoPemasok) Primary Key NoPemesanan Foreign Key NIP references Karyawan (NIP) Foreign Key NoPemasok references Pemasok (NoPemasok)
Penerimaan (NoPenerimaan, TglPenerimaan, NamaBarang, Qty, HargaSatuan, Keterangan, NIP, NoPembayaran, NoPemesanan) Primary Key NoPenerimaan Foreign Key NIP references Karyawan (NIP) Foreign Key NoPembayaran references Pembayaran (NoPembayaran) Foreign Key NoPemesanan references Pemesanan (NoPemesanan)
Dalam hubungan one-to-many Pemesanan menimbulkan Penerimaan, atribut primary key Pemesanan, yaitu NoPemesanan dikirim ke Penerimaan menjadi atribut Foreign key Penerimaan.
4. Tipe hubungan one-to-one Hubungan one-to-one mandatory dua sisi dan satu sisi a. Hubungan Pemesanan menimbulkan Pembelian Dalam hubungan one-to-one Pemesanan menimbulkan Pembelian, entity Pemesanan dan Pembelian digabung menjadi satu entity menjadi entity Pembelian.
Pemesanan
1..1 Menimbulkan
NoPemesanan
1..1
Pembelian NoPembelian
Gambar 3.26 Gambar Hubungan one-to-one antara pemesanan dan pembelian
94 Menjadi:
Pembelian NoPembelian(PK)
Gambar 3.27 Gambar Entity Pembelian
Pembelian (NoPembelian, TanggalBeli, TotalPembelian, Keterangan, NIP, NoPemasok) Primary Key NoPembelian Foreign Key NIP references Karyawan (NIP) Foreign
Key
NoPemasok
references
Pemasok
(NoPemasok) Kemudian
DetailPemesanan
pun
menjadi
DetailPembelian DetailPembelian
(JumlahBarang,
Keterangan) Primary Key belum ada (saat ini)
HargaSatuan,
95 b. Hubungan Penerimaan menimbulkan Retur Kirim NoPenerimaan ke Retur melalui hubungan menimbulkan
Penerimaan (NoPenerimaan, TglPenerimaan, NamaBarang, Qty, HargaSatuan, Keterangan, NIP, NoPembayaran, NoPembelian) Primary Key NoPenerimaan Foreign Key NIP references Karyawan (NIP) Foreign Key NoPembayaran references Pembayaran (NoPembayaran) Foreign Key NoPembelian references Pembelian (NoPembelian)
Retur (NoRetur, TglRetur, NIP, NoPenerimaan) Primary Key NoRetur Foreign Key NIP references Karyawan (NIP) Foreign Key NoPenerimaan references Penerimaan (NoPenerimaan)
Dalam hubungan one-to-one Penerimaan menimbulkan Retur, atribut primary key Penerimaan, yaitu NoPenerimaan dikirim ke Retur menjadi atribut Foreign key Retur.
5. Tipe hubungan rekursif one-to-one Dalam studi kasus ini tidak terdapat hubungan rekursif oneto-one.
6. Tipe hubungan superclass/subclass Dalam
studi
kasus
ini
tidak
terdapat
hubungan
superclass/subclass.
7. Tipe hubungan binary many-to-many Hubungan many-to-many pada semua relasi dibawah ini diubah menjadi ditambah dengan entiti baru sesuai dengan
96 yang dilakukan pada langkah menghilangkan hubungan many-to-many binary relationship types.
a. Hubungan many-to-many Pembelian menambah Barang
Pembelian (NoPembelian, TanggalBeli, TotalPembelian, Keterangan, NIP, NoPemasok) Primary Key NoPembelian Foreign Key NIP references Karyawan (NIP) Foreign Key NoPemasok references Pemasok (NoPemasok)
Barang (NoBarang, NamaBarang, Harga, JenisSatuanBarang, Jumlah) Primary key NoBarang
DetailPembelian (NoPembelian, NoBarang, JumlahBarang, HargaSatuan, Keterangan) Primary Key NoPembelian, NoBarang Foreign Key NoPembelian references Pembelian (NoPembelian) Foreign Key NoBarang references Barang (NoBarang)
b. Hubungan many-to-many Penawaran mencantumkan Barang Penawaran (NoPenawaran, TglPenawaran, BatasJatuhTempo, Keterangan, NoPemasok) Primary key (NoPenawaran) Foreign Key NoPemasok references Pemasok (NoPemasok)
Barang (NoBarang, NamaBarang, Harga, JenisSatuanBarang, Jumlah) Primary key NoBarang
DetailPenawaran (NoPenawaran, NoBarang, JumlahBarang, HargaSatuan) Primary Key NoPenawaran, NoBarang Foreign Key NoPenawaran references Penawaran (NoPenawaran) Foreign Key NoBarang references Barang (NoBarang)
97 c. Hubungan many-to-many Retur mengembalikan Barang Retur (NoRetur,TglRetur, NIP,NoPenerimaan) Primary Key NoRetur Foreign Key NIP references Karyawan (NIP) Foreign Key NoPenerimaan references Penerimaan (NoPenerimaan)
Barang (NoBarang, NamaBarang, Harga, JenisSatuanBarang, Jumlah) Primary key NoBarang
DetailRetur (NoRetur, NoBarang, JumlahBarang, AlasanRetur) Primary Key NoRetur, NoBarang Foreign Key NoRetur references Retur (NoRetur) Foreign Key NoBarang references Barang (NoBarang)
d. Hubungan many-to-many Pembayaran Berdasarkan FakturPajak Pembayaran (NoPembayaran, TanggalBayar, StatusBayar, JenisBayar, JumlahBayar, Keterangan, NIP) Primary Key NoPembayaran Foreign Key NIP references Karyawan (NIP)
FakturPajak (NoFaktur, TanggalFaktur, NamaBarang, JumlahPPN, JumlahPPH, Keterangan) Primary key NoFaktur
Detail Pembayaran (NoPembayaran, NoFaktur, Diskon, JumlahBarang, HargaSatuan) Primary Key NoPembayaran, NoFaktur Foreign Key NoPembayaran references Pembayaran (NoPembayaran) Foreign Key NoFaktur references FakturPajak (NoFaktur)
98 e. Hubungan many-to-many Penerimaan Berdasarkan Barang Penerimaan (NoPenerimaan, TglPenerimaan, Keterangan, NIP, NoPembayaran, NoPembelian) Primary Key NoPenerimaan Foreign Key NIP references Karyawan (NIP) Foreign Key NoPembayaran references Pembayaran (NoPembayaran) Foreign Key NoPembelian references Pembelian (NoPembelian)
Barang (NoBarang, NamaBarang, Harga, JenisSatuanBarang, Jumlah) Primary key NoBarang
DetailPenerimaan (NoPenerimaan, NoBarang, JumlahBarang, HargaSatuan, Kondisiterima) Primary Key NoPenerimaan, NoBarang Foreign Key NoPenerimaan references Penerimaan (NoPenerimaan) Foreign Key NoBarang references Barang (NoBarang)
8. Tipe hubungan kompleks Dalam studi kasus ini tidak terdapat hubungan kompleks, karena tidak terdapat data yang mengkopi primary key dari entiti yang berpartisipasi pada hubungan kompleks ke hubungan yang baru.
99 9. Atribut multi-valued a. Atribut NoTelp pada entity Pemasok Kirim NoPemasok ke TeleponPemasok
Pemasok (NoPemasok, NamaPemasok, NamaBarang, AlamatPemasok, ContactPerson,) Primary Key NoPemasok
TeleponPemasok (TelpPem, NoPemasok) Primary Key TelpPem Foreign Key NoPemasok references Pemasok(NoPemasok)
Karena bernilai multi-valued, atribut NoTelp dibuat menjadi entiti baru, yaitu TeleponPemasok; dan primary key NoPemasok dari entiti pemasok dikirim ke entiti TeleponPemasok sebagai foreign key.
b. Atribut NoTelp pada entity Karyawan Kirim NIP ke TeleponKaryawan
Karyawan (NIP, Nama, Alamat, Jabatan, Tanggallahir, Jeniskelamin, NoDiv) Primary key NIP Foreign Key NoDiv references Divisi (NoDiv)
TeleponKaryawan (TelpKar, NIP) Primary Key TelpKar Foreign Key NoKaryawan references Karyawan(NIP)
Karena bernilai multi-valued, atribut NoTelp dibuat menjadi entiti baru, yaitu TeleponKaryawan; dan primary key NIP dari entiti Karyawan dikirim ke entiti TeleponKaryawan sebagai foreign key.
100 Dokumentasi relasi dan atribut foreign key Karyawan (NIP, Nama, Alamat,
Pembayaran (NoPembayaran,
Jabatan, Status, Tanggallahir,
TanggalBayar, StatusBayar, JenisBayar,
Jeniskelamin, NoDiv)
JumlahBayar, Keterangan, NIP)
Primary key NIP
Primary Key NoPembayaran
Foreign Key NoDiv references
Foreign Key NIP references Karyawan
Divisi (NoDiv)
(NIP)
Divisi (NoDiv, NamaDivisi)
Pembelian (NoPembelian, TanggalBeli,
Primary Key NoDiv
TotalPembelian, Keterangan, NIP, NoPemasok) Primary Key NoPembelian Foreign Key NIP references Karyawan (NIP) Foreign Key NoPemasok references Pemasok (NoPemasok)
Pemasok (NoPemasok,
Retur (NoRetur,TglRetur, NIP,
NamaPemasok, Namabarang,
NoPenerimaan)
AlamatPemasok, ContactPerson)
Primary Key NoRetur
Primary Key NoPemasok
Foreign Key NIP references Karyawan (NIP) Foreign Key NoPenerimaan references Penerimaan (NoPenerimaan)
101 Barang (NoBarang, NamaBarang,
Penawaran (NoPenawaran,
Harga, JenisSatuanBarang,
TglPenawaran, BatasJatuhTempo,
Jumlah)
Keterangan, NoPemasok)
Primary key NoBarang
Primary key (NoPenawaran) Foreign Key NoPemasok references Pemasok (NoPemasok)
TeleponPemasok (TelpPem,
Penerimaan (NoPenerimaan,
NoPemasok)
TglPenerimaan, Keterangan, NIP,
Primary Key TelpPem
NoPembayaran, NoPembelian)
Foreign Key NoPemasok
Primary Key NoPenerimaan
references Pemasok(NoPemasok)
Foreign Key NIP references Karyawan (NIP) Foreign Key NoPembayaran references Pembayaran (NoPembayaran) Foreign Key NoPembelian references Pembelian (NoPembelian)
TeleponKaryawan (TelpKar,
FakturPajak (NoFaktur,
NIP)
TanggalFaktur, NamaBarang,
Primary Key TelpKar
JumlahPPN, JumlahPPH, Keterangan)
Foreign Key NoKaryawan
Primary Key NoFaktur
references Karyawan(NIP)
102 DetailPembayaran
DetailPenawaran (NoPenawaran,
(NoPembayaran, NoFaktur,
NoBarang, JumlahBarang,
Diskon, JumlahBarang,
HargaSatuan)
HargaSatuan)
Primary Key NoPenawaran, NoBarang
Primary Key NoPembayaran,
Foreign Key NoPenawaran references
NoFaktur
Penawaran (NoPenawaran)
Foreign Key NoPembayaran
Foreign Key NoBarang references
references Pembayaran
Barang (NoBarang)
(NoPembayaran) Foreign Key NoFaktur references FakturPajak (NoFaktur) DetailRetur (NoRetur, NoBarang,
DetailPembelian (NoPembelian,
JumlahBarang, AlasanRetur)
NoBarang, JumlahBarang,
Primary Key NoRetur, NoBarang
HargaSatuan, Keterangan)
Foreign Key NoRetur references
Primary Key NoPembelian, NoBarang
Retur (NoRetur)
Foreign Key NoPembelian references
Foreign Key NoBarang
Pembelian (NoPembelian)
references Barang (NoBarang)
Foreign Key NoBarang references Barang (NoBarang) DetailPenerimaan (NoPenerimaan, NoBarang, JumlahBarang, HargaSatuan, Kondisiterima)
103 Primary Key NoPenerimaan, NoBarang Foreign Key NoPenerimaan references Penerimaan (NoPenerimaan) Foreign Key NoBarang references Barang (NoBarang) Tabel 3.11 Tabel Dokumentasi relasi dan atribut foreign key
3.10.1.3 Melakukan Validasi terhadap Relasi dengan Teknik Normalisasi 1. Validasi 1NF Ketentuan: a. Menghilangkan repeating group Dalam menghilangkan repeating group, yang harus dihilangkan adalah hubungan binary many to many, hubungan recursive many to many, hubungan kompleks dan
atribut
multi-valued.
Pada
langkah-langkah
sebelumnya, kami sudah melakukan hal itu semua, jadi relasi yang ada pasti sudah tidak ada repeating group lagi. b. Membuat Primary key Pembuatan Primary key sudah dilakuan di langkah 1.5.
104 2. Validasi 2NF Pada langkah ini, ketentuannya adalah atribut tidak bergantung fungsional terhadap primary key. Pada relasirelasi yang ada tidak terdapat adanya partial dependency maka langkah ini tidak perlu dilakukan.
3. Validasi 3NF Ketentuannya menghilangkan atribut yang bergantung transitif terhadap primary key. Pada relasi-relasi yang ada, tidak terdapat adanya transitive dependency maka langkah ini tidak perlu dilakukan.
3.10.1.4 Validasi Relasi terhadap Transaksi User Transaksi-transaksi yang ada dalam relasi ini adalah:
Pembayaran
Berdasar Pada
Penerimaan
Pembelian
Menimbulkan
Penerimaan
Penerimaan
Menimbulkan
Retur
Pembelian
Menambah
Barang
Penerimaan
Memperoleh
Barang
Retur
Mengembalikan
Barang
Penawaran
Mencantumkan
Barang
Pembayaran
Berdasarkan
FakturPajak
105 3.10.1.5 Memeriksa Integritas Data
Karyawan (NIP, Nama, Alamat, Jabatan, Status, Tanggallahir, Jeniskelamin, NoDiv) Primary key NIP Foreign Key NoDiv references Divisi (NoDiv) ON UPDATE CASCADE ON DELETE CASCADE Divisi (NoDiv, NamaDivisi) Primary Key NoDiv Pemasok (NoPemasok, NamaPemasok, Namabarang, AlamatPemasok, ContactPerson) Primary Key NoPemasok Barang (NoBarang, NamaBarang, Harga, JenisSatuanBarang, Jumlah) Primary key NoBarang FakturPajak (NoFaktur, TanggalFaktur, NamaBarang, JumlahPPN, JumlahPPH, Keterangan) Primary Key NoFaktur TeleponPemasok (TelpPem, NoPemasok) Primary Key TelpPem Foreign Key NoPemasok references Pemasok(NoPemasok) ON UPDATE CASCADE ON DELETE CASCADE TeleponKaryawan (TelpKar, NIP) Primary Key TelpKar
106 Foreign Key NoKaryawan references Karyawan(NIP) ON UPDATE CASCADE ON DELETE CASCADE Pembelian (NoPembelian, TanggalBeli, TotalPembelian, Keterangan, NIP, NoPemasok) Primary Key NoPembelian Foreign Key NIP references Karyawan (NIP) ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key NoPemasok references Pemasok (NoPemasok) ON UPDATE CASCADE ON DELETE NO ACTION Pembayaran (NoPembayaran, TanggalBayar, StatusBayar, JenisBayar, JumlahBayar, Keterangan, NIP) Primary Key NoPembayaran Foreign Key NIP references Karyawan (NIP) ON UPDATE CASCADE ON DELETE NO ACTION Retur (NoRetur,TglRetur, NIP, NoPenerimaan) Primary Key NoRetur Foreign Key NIP references Karyawan (NIP) ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key NoPenerimaan references Penerimaan (NoPenerimaan) ON UPDATE CASCADE ON DELETE NO ACTION Penawaran (NoPenawaran, TglPenawaran, BatasJatuhTempo, Keterangan, NoPemasok) Primary key (NoPenawaran)
107 Foreign Key NoPemasok references Pemasok (NoPemasok) ON UPDATE CASCADE ON DELETE NO ACTION Penerimaan (NoPenerimaan, TglPenerimaan, Keterangan, NIP, NoPembayaran, NoPembelian) Primary Key NoPenerimaan Foreign Key NIP references Karyawan (NIP) ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key NoPembayaran references Pembayaran (NoPembayaran) ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key NoPembelian references Pembelian (NoPembelian) ON UPDATE CASCADE ON DELETE NO ACTION DetailPembayaran (NoPembayaran, NoFaktur, Diskon, JumlahBarang, HargaSatuan) Primary Key NoPembayaran, NoFaktur Foreign Key NoPembayaran references Pembayaran (NoPembayaran) ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key NoFaktur references FakturPajak (NoFaktur) ON UPDATE CASCADE ON DELETE NO ACTION DetailRetur (NoRetur, NoBarang, JumlahBarang, AlasanRetur) Primary Key NoRetur, NoBarang Foreign Key NoRetur references Retur (NoRetur) ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key NoBarang references Barang (NoBarang) ON UPDATE
108 CASCADE ON DELETE NO ACTION DetailPenawaran (NoPenawaran, NoBarang, JumlahBarang, HargaSatuan) Primary Key NoPenawaran, NoBarang Foreign Key NoPenawaran references Penawaran (NoPenawaran) ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key NoBarang references Barang (NoBarang) ON UPDATE CASCADE ON DELETE NO ACTION DetailPembelian (NoPembelian, NoBarang, JumlahBarang, HargaSatuan, Keterangan) Primary Key NoPembelian, NoBarang Foreign Key NoPembelian references Pembelian (NoPembelian) ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key NoBarang references Barang (NoBarang) ON UPDATE CASCADE ON DELETE NO ACTION DetailPenerimaan (NoPenerimaan, NoBarang, JumlahBarang, HargaSatuan, Kondisiterima) Primary Key NoPenerimaan, NoBarang Foreign Key NoPenerimaan references Penerimaan (NoPenerimaan) ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key NoBarang references Barang (NoBarang) ON UPDATE CASCADE ON DELETE NO ACTION Tabel 3.12 Tabel integritas data
109 3.10.1.6 Mengkaji ulang model data logikal lokal dengan user Model data logikal lokal dan dokumentasi dari model data sesuai dengan kebutuhan user.
3.10.1.7 Menggabungkan Model Data Logikal Lokal menjadi Model Data Logikal Global Dalam
studi
kasus
ini
tidak
perlu
dilakukan
menggabungkan model data logikal lokal menjadi model data logikal
global,
karena
tidak
terdapat
dua
ERD
untuk
digabungkan untuk menjadi data logikal global.
3.10.1.8 Melakukan
Pemeriksaan
untuk
Kemungkinan
Pengembangan Basis Data Dimasa yang akan Datang Dalam studi kasus ini tidak perlu dilakukan karena kemungkinan sangat sulit sekali untuk mengakomodasikan perubahan dan perusahaan mungkin tidak mengetahui apa yang diinginkan dimasa yang akan datang.
110 3.11
Perancangan Basis Data Fisikal 3.11.1 Menterjemahkan Model Data Logikal Global untuk Target DBMS Berikut ini adalah tabel perbandingan antara DBMS Microsoft Excel 2000, SQL Server 2000 dengan Oracle 9i Standard.
Perbandingan
Microsoft Excel
SQL Server 2000
Oracle 9i
Relational File
Transactional
Transactional
Based
RDBMS
RDBMS
± $100
± $4.999
± $15.000
Mendukung
Platform
berjalan di sistem
platform Intel dan
independen karena
operasi Microsoft
Alpha dan hanya
dijalankan di atas
Windows.
dapat berjalan di
Java Virtual
sistem operasi
Machine.
2000 Tipe DBMS
Harga (per-PC)
Ketergantungan Hanya dapat Sistem
Microsoft Windows. Skalabilitas dan Pengamanan
Tidak ada
Mendukung
Merupakan model
perkembangan dari
yang secara
berbagai jenis
konsisten
permintaan website meminimize isi layaknya sisem suatu perusahaan besar. Mempunyai fasilitas Distributed Partitioned Views
dari data
111 dan Log Shipping untuk mendistribusikan penyimpanan data dan mengambil keuntungan dari adanya proses parallel pada hardware Pengamanan
Tidak ada
Proses Bisnis
Berbagai operasi
Basis data yang
dapat dilihat secara
paling efektif untuk
online dikarenakan
meminimalkan
server tetap dapat
waktu download
jalan Mempunyai
Oracle Database
Kegagalan
fasilitas Fail Over
Recovery
Sistem
untuk membuat
memberikan
fasilitas tetap
fasilitas kepada
berjalan walaupun
database
ada bencana
administrator untuk
Proteksi
Tidak ada
membuat level pengamanan data pada sistem untuk memastikan ketersediaan data sesuai kebutuhan bisnis Backup Basis Data
Tidak ada
Mempunyai
Mendukung hanya
fasilitas untuk
salah satu vendor
mendukung
dalam pembuatan
berbagai metode
backup data
112 backup yang berbeda Tabel 3.13 Tabel Perbandingan DBMS
Dari tabel di atas, penulis memutuskan untuk menggunakan DBMS SQL Server 2000 dengan pertimbangan-pertimbangan sebagai berikut : 1. Mempertimbangkan skala perusahaan yang masuk ke kategori menengah, DBMS SQL Server 2000 sudah sangat memadai untuk memenuhi kebutuhan perusahaan. Penggunaan DBMS Oracle 9i akan mubazir dan tidak diperlukan. Sedangkan penggunaan DBMS Excel 2000 kurang memadai dalam kebutuhan data. 2. Walaupun ukuran file mencapai TeraByte, performansi SQL Server masih tetap baik dalam hal kecepatan pencarian data.
3.11.1.1 Merancang Relasi Dasar. Membuat DBDL untuk setap entity 1. DBDL untuk relasi Karyawan Domain NIP;
variable length character string, length 10
Domain Nama;
variable length character string, length 20
Domain Alamat; variable length character string, length 20 Domain Jabatan; variable length character string, length 10
113 Domain Status;
variable length character string, length 10, must be one of ‘aktif’, ‘non aktif’
Domain Tanggallahir; date, in format dd/mm/yyyy Domain Jeniskelamin; single character, must be one of ‘P’, ‘L’ Domain NoDiv;
variable length character string, length 10
Karyawan( NIP
NomorIndukPegawai
NOT NULL,
Nama
NamaKaryawan
NOT NULL,
Alamat
AlamatKaryawan
NOT NULL,
Jabatan
JabatanKaryawan
NOT NULL,
Status
StatusKaryawan
NOT NULL,
Tanggallahir
Tanggallahir,
Jeniskelamin
JenisKelamin
NOT NULL,
NoDiv
NomorDivisi
NOT NULL,
Primary key (NIP), Foreign key (NoDiv) references Divisi (NoDiv) ON UPDATE CASCADE ON DELETE CASCADE);
2. DBDL untuk relasi Divisi Domain NoDiv;
variable length character string, length 10
114 Domain NamaDivisi; variable length character string, length 20 Divisi( NoDiv
NomorDivisi
NOT NULL,
NamaDivisi
NamaDivisi
NOT NULL,
Primary key (NoDiv));
3. DBDL untuk relasi Pemasok Domain NoPemasok;
variable length character string, length 10
Domain NamaPemasok; variable length character string, length 20 Domain Namabarang;
variable length character string, length 20
Domain AlamatPemasok; variable length character string, length 20 Domain ContactPerson; variable length character string, length 20 Pemasok( NoPemasok
NomorPemasok
NOT NULL,
NamaPemasok
NamaPemasok
NOT NULL,
NamaBarang
NamaBarang
NOT NULL,
AlamatPemasok
AlamatPemasok
NOT NULL,
115 ContactPerson
Contactperson
NOT NULL,
Primary Key (NoPemasok)); 4. DBDL untuk relasi Barang Domain NoBarang;
variable length character string, length 10
Domain NamaBarang;
variable length character string, length 20
Domain Harga;
numeric
Domain JenisSatuanBarang; variable length character string, length 6, must be one of ‘sak’, ’m3’, ’buah’, ’lembar’, ’dus’, ’galon’, ’batang’, ’kg’, ’peil’ ’rim’ Domain Jumlah;
integer, in the range 1-100
Barang( NoBarang
NomorBarang
NOT NULL,
NamaBarang
NamaBarang
NOT NULL,
Harga
Hargabarang
NOT NULL,
JenisSatuanBarang
Jenissatuanbarang
NOT NULL,
Jumlah
Jumlahbarang
NOT NULL,
Primary Key (NoBarang));
116 5. DBDL untuk relasi Pembayaran Domain NoPembayaran; variable length character string, length 10 Domain TanggalBayar;
date, in format dd/mm/yyyy
Domain StatusBayar;
variable length character string, length 11 must be one of ‘sudah lunas’ or ‘belum lunas’
Domain JenisBayar;
variable length character string, length 5 must be one of ‘cek’, ‘giro’, or ‘tunai’
Domain JumlahBayar;
numeric
Domain Keterangan;
variable length character string, length 50
Domain NIP;
variable length character string, length 10
Pembayaran( NoPembayaran
NomorPembayaran
NOT NULL,
TanggalBayar
TanggalPembayaran NOT NULL,
StatusBayar
StatusPembayaran
NOT NULL,
JenisBayar
JenisPembayaran
NOT NULL,
JumlahBayar
JumlahBayar
NOT NULL,
117 Keterangan
Keterangan,
NIP
NomorIndukPegawai NOT NULL,
Primary Key (NoPembayaran), Foreign Key NIP references Karyawan (NIP) ON UPDATE CASCADE ON DELETE NO ACTION,
6. DBDL untuk relasi Pembelian Domain NoPembelian;
variable length character string, length 10
Domain TanggalBeli;
date, in format dd/mm/yyyy
Domain TotalPembelian;
numeric
Domain Keterangan;
variable length character string, length 50
Domain NIP;
variable length character string, length 10
Domain NoPemasok;
variable length character string, length 10
Pembelian( NoPembelian
NomorPembelian
NOT NULL,
TanggalBeli
TanggalPembelian
NOT NULL,
TotalPembelian
TotalPembelian
NOT NULL,
Keterangan
Keterangan,
NIP
NomorIndukPegawai NOT NULL,
118 NoPemasok
NomorPemasok
NOT NULL,
Primary key (NoPembelian), Foreign Key NIP references Karyawan (NIP) ON UPDATE CASCADE
ON DELETE NO ACTION
Foreign Key NoPemasok references Pemasok (NoPemasok) ON UPDATE CASCADE ON DELETE NO ACTION);
7. DBDL untuk relasi Retur Domain NoRetur;
variable length character string, length 10
Domain TglRetur;
date, in format dd/mm/yyyy
Domain NIP;
variable length character string, length 10
Domain NoPenerimaan; variable length character string, length 10 Retur( NoRetur
Nomorretur
NOT NULL,
TglRetur
Tanggalretur
NOT NULL,
NIP
NomorIndukPegawai NOT NULL,
NoPenerimaan
NomorPenerimaan
NOT NULL,
Primary Key NoRetur, Foreign Key NIP references Karyawan (NIP) ON UPDATE CASCADE ON DELETE NO ACTION
119 Foreign Key NoPenerimaan references Penerimaan (NoPenerimaan) ON UPDATE CASCADE ON DELETE NO ACTION);
8. DBDL untuk relasi Penawaran Domain NoPenawaran;
variable length character string, length 10
Domain TglPenawaran;
date, in format dd/mm/yyyy
Domain BatasJatuhTempo; date, in format dd/mm/yyyy Domain Keterangan;
variable length character string, length 50
Domain NoPemasok;
variable length character string, length 10
Penawaran( NoPenawaran
NomorPenawaran
NOT NULL,
TglPenawaran
Tanggalpenawaran
NOT NULL,
BatasJatuhTempo
Batasjatuhtempo
NOT NULL,
Keterangan
Keterangan,
NoPemasok
NomorPemasok
NOT NULL,
Primary key (NoPenawaran), Foreign Key NoPemasok references Pemasok (NoPemasok) ON UPDATE CASCADE ON DELETE NO ACTION);
120 9. DBDL untuk relasi Penerimaan Domain NoPenerimaan;
variable length character string, length 10
Domain TglPenerimaan;
date, in format dd/mm/yyyy
Domain Keterangan;
variable length character string, length 50
Domain NIP;
variable length character string, length 10
Domain NoPembayaran;
variable length character string, length 10
Domain NoPembelian;
variable length character string, length 10
Penerimaan( NoPenerimaan
NomorPenerimaan
NOT NULL,
TglPenerimaan
TanggalPenerimaan
NOT NULL,
Keterangan
Keterangan,
NIP
NomorIndukPegawai NOT NULL,
NoPembayaran
NomorPembayaran
NOT NULL,
NoPembelian
NomorPembelian
NOT NULL,
Primary Key NoPenerimaan, Foreign Key NIP references Karyawan (NIP) ON UPDATE CASCADE ON DELETE NO ACTION,
121 Foreign Key NoPembayaran references Pembayaran (NoPembayaran) ON UPDATE CASCADE ON DELETE NO ACTION, Foreign Key NoPembelian references Pembelian (NoPembelian) ON UPDATE CASCADE ON DELETE NO ACTION);
10. DBDL untuk relasi FakturPajak Domain NoFaktur;
variable length character string, length 10
Domain TanggalFaktur;
date, in format dd/mm/yyyy
Domain NamaBarang;
variable length character string, length 20
Domain JumlahPPN;
numeric
Domain JumlahPPH;
numeric
Domain Keterangan;
variable length character string, length 50
FakturPajak( NoFaktur
NomorFaktur
NOT NULL,
TanggalFaktur
TanggalFaktur
NOT NULL,
NamaBarang
NamaBarang
NOT NULL,
JumlahPPN
JumlahPPN
NOT NULL,
JumlahPPH
JumlahPPH
NOT NULL,
122 Keterangan
Keterangan,
Primary Key (NoFaktur));
11. DBDL untuk relasi TeleponPemasok Domain TelpPem;
variable length character string, length 10
Domain NoPemasok;
variable length character string, length 10
TeleponPemasok( TelpPem
NomorTeleponPemasok
NOT NULL,
NoPemasok
NomorPemasok
NOT NULL,
Primary Key TelpPem, Foreign Key NoPemasok references Pemasok(NoPemasok) ON UPDATE CASCADE ON DELETE CASCADE);
12. DBDL untuk relasi TeleponKaryawan Domain TelpKar; variable length character string, length 10 Domain NIP;
variable length character string, length 10
TeleponKaryawan( TelpKar
NomorTeleponKaryawan
NOT NULL,
NIP
NomorIndukPegawai
NOT NULL,
Primary Key TelpKar,
123 Foreign Key NoKaryawan references Karyawan(NoKaryawan) ON UPDATE CASCADE ON DELETE CASCADE);
13. DBDL untuk relasi DetailPembayaran Domain NoPembayaran; variable length character string, length 10 Domain NoFaktur;
variable length character string, length 10
Domain Diskon;
numeric
Domain JumlahBarang; integer, in the range 1-100 Domain HargaSatuan;
numeric
DetailPenerimaan( NoPembayaran
NomorPembayaran
NOT NULL,
NoFaktur
NomorFaktur
NOT NULL,
Diskon
Diskon
NOT NULL,
JumlahBarang
JumlahBarang
NOT NULL,
HargaSatuan
HargaSatuan
NOT NULL,
Primary Key NoPembayaran, NoFaktur, Foreign Key NoPembayaran references Pembayaran (NoPembayaran) ON UPDATE CASCADE ON DELETE NO ACTION,
124 Foreign Key NoFaktur references FakturPajak (NoFaktur) ON UPDATE CASCADE ON DELETE NO ACTION);
14. DBDL untuk relasi DetailRetur Domain NoRetur;
variable length character string, length 10
Domain NoBarang;
variable length character string, length 10
Domain Jumlah;
integer, in the range 1-100
Domain AlasanRetur;
variable length character string, length 50
DetailRetur( NoRetur
NomorRetur
NOT NULL,
NoBarang
NomorBarang
NOT NULL,
Jumlah
JumlahBarang
NOT NULL,
AlasanRetur
AlasanRetur,
Primary Key NoRetur, NoBarang, Foreign Key NoRetur references Retur (NoRetur) ON UPDATE CASCADE ON DELETE NO ACTION, Foreign Key NoBarang references Barang (NoBarang) ON UPDATE CASCADE ON DELETE NO ACTION);
125 15. DBDL untuk relasi DetailPenawaran Domain NoPenawaran;
variable length character string, length 10
Domain NoBarang;
variable length character string, length 10
Domain JumlahBarang; integer, in the range 1-100 Domain HargaSatuan;
numeric
DetailPenawaran( NoPenawaran
NomorPenawaran
NOT NULL,
NoBarang
NomorBarang
NOT NULL,
JumlahBarang
JumlahBarang
NOT NULL,
HargaSatuan
HargaSatuan
NOT NULL,
Primary Key NoPenawaran, NoBarang, Foreign Key NoPenawaran references Penawaran (NoPenawaran) ON UPDATE CASCADE ON DELETE NO ACTION, Foreign Key NoBarang references Barang (NoBarang) ON UPDATE CASCADE ON DELETE NO ACTION);
16. DBDL untuk relasi DetailPembelian Domain NoPembelian;
variable length character string, length 10
126 Domain NoBarang;
variable length character string, length 10
Domain JumlahBarang; integer, in the range 1-100 Domain HargaSatuan;
numeric
Domain Keterangan;
variable length character string, length 50
DetailPembelian( NoPembelian
NomorPembelian
NOT NULL,
NoBarang
NomorBarang
NOT NULL,
JumlahBarang
JumlahBarang
NOT NULL,
HargaSatuan
HargaSatuan
NOT NULL,
Keterangan
Keterangan,
Primary Key NoPembelian, NoBarang, Foreign Key NoPembelian references Pembelian (NoPembelian) ON UPDATE CASCADE ON DELETE NO ACTION, Foreign Key NoBarang references Barang (NoBarang) ON UPDATE CASCADE ON DELETE NO ACTION);
17. DBDL untuk relasi DetailPenerimaan Domain NoPenerimaan; variable length character string, length 10
127 Domain NoBarang;
variable length character string, length 10
Domain JumlahBarang; integer,in the range 1-100 Domain HargaSatuan;
numeric
Domain KondisiTerima; variable length character string, length 50 DetailPenerimaan( NoPenerimaan
NomorPenerimaan
NOT NULL,
NoBarang
NomorBarang
NOT NULL,
JumlahBarang
JumlahBarang
NOT NULL,
HargaSatuan
HargaSatuan
NOT NULL,
KondisiTerima
KondisiTerima,
Primary Key NoPenerimaan, NoBarang, Foreign Key NoPenerimaan references Penerimaan (NoPenerimaan) ON UPDATE CASCADE ON DELETE NO ACTION, Foreign Key NoBarang references Barang (NoBarang) ON UPDATE CASCADE ON DELETE NO ACTION);
128 3.11.1.2 Merancang Representasi dari Derived Data (Data Turunan) Relasi yang memiliki data turunan adalah : 1. Relasi Pembelian Atribut turunannya adalah TotalPembelian : DetailPembelian.JumlahBarang * DetailPembelian.HargaSatuan 2. Relasi Pembayaran Atribut turunannya adalah JumlahBayar : (DetailPembayaran.JumlahBarang*DetailPembayaran.Harga Satuan*DetailPembayaran.Diskon/100) + (DetailPembayaran.JumlahBarang * FakturPajak.JumlahPPH) + (DetailPembayaran.JumlahBarang * FakturPajak. JumlahPPN) 3.11.1.3 Merancang Enterprise Constraints Pada kasus ini terdapat enterprise constrait yang dapat dilihat pada lampiran halaman L1. 3.11.2 Merancang Organisasi File dan Indeks Langkah-langkah yang dilakukan dalam merancang organisasi file dan indeks, yaitu:
129 3.11.2.1 Menganalisa Transaksi Pada langkah tipe hubungan one-to-one mandatory satu sisi dilakukan penggabungan antara entiti Pemesanan dan Pembelian menjadi entiti Pembelian, maka pada analisis transaksi berikut transaksi
dan
entiti
Pemesanan
berubah
menjadi
entiti
Pembelian.
Entry Data Transaksi/Relasi
(a) I
Karyawan Divisi
R
(b) U
D
I
R
(c) U
D
I
R
(d) U
D
I
R
X X
Pemasok Barang
X
FakturPajak
X
X
X
TeleponPemasok TeleponKaryawan Pembayaran
X
Pembelian
X
Retur
X
Penawaran Penerimaan DetailPembayaran
X
X
X
DetailRetur DetailPenerimaan DetailPembelian
X
X X
X X
X
U
D
130 DetailPenawaran
I = Insert; R = Read; U = Update; D = Delete Tabel 3.14 Tabel Transaction/relation cross-referenced matrix entry data transaksi (a) - (d)
Keterangan: (a) Memasukkan detail karyawan berdasarkan divisinya (b) Memasukkan detail pembayaran berdasarkan penerimaan tertentu (c) Memasukkan detail penerimaan berdasarkan pembelian tertentu (d) Memasukkan detail retur berdasarkan penerimaan tertentu
Transaksi/Relasi
(e) I
R
Karyawan Divisi Pemasok
X
Barang FakturPajak TeleponPemasok
X
TeleponKaryawan Pembayaran Pembelian Retur Penawaran Penerimaan
X
U
D
131 DetailPembayaran DetailRetur DetailPenerimaan DetailPembelian
X
DetailPenawaran
I = Insert; R = Read; U = Update; D = Delete Tabel 3.15 Tabel Transaction/relation cross-referenced matrix entry data transaksi (e)
Keterangan: (e) Memasukkan detail pembelian yang dilakukan kepada pemasok tertentu
Update/Delete Data Transaksi/Relasi
(a) I
(b)
R
U
D
Karyawan
X
X
X
Divisi
X
I
R
(c) U
D
I
R
(d) U
D
I
R
U
D
X
X
Pemasok Barang
X
FakturPajak
X
X
X
TeleponPemasok TeleponKaryawan Pembayaran
X
Pembelian
X
X X
Retur
X
Penawaran Penerimaan
X
X
X
X
X
132 DetailPembayaran
X
X
X
DetailRetur
X
DetailPenerimaan
X
X
DetailPembelian
X
X
X
X
X
DetailPenawaran
I = Insert; R = Read; U = Update; D = Delete Tabel 3.16 Tabel Transaction/relation cross-referenced matrix update/delete data transaksi (a) - (d)
Keterangan: (a) Menghapus atau mengubah detail karyawan berdasarkan divisinya (b) Mengubah pembayaran berdasarkan penerimaan tertentu (c) Mengubah detail penerimaan berdasarkan pembelian tertentu (d) Mengubah detail retur berdasarkan penerimaan tertentu
Transaksi/Relasi
(e) I
R
Karyawan Divisi Pemasok
X
Barang FakturPajak TeleponPemasok TeleponKaryawan Pembayaran
X
U
D
X
133 Pembelian
X
X
X
X
X
X
Retur Penawaran Penerimaan DetailPembayaran DetailRetur DetailPenerimaan DetailPembelian DetailPenawaran
I = Insert; R = Read; U = Update; D = Delete Tabel 3.17 Tabel Transaction/relation cross-referenced matrix update/delete data transaksi (e)
Keterangan: (e) Mengubah detail pembelian yang dilakukan kepada pemasok tertentu
Melihat Data Transaksi/Relasi
(a) I
R
Karyawan
X
Divisi
X
(b) U
D
I
R
(c) U
D
I
R
(d) U
D
I
R
Pemasok Barang
X
FakturPajak
X
TeleponPemasok TeleponKaryawan
X
X
U
D
134 Pembayaran
X
Pembelian
X
Retur
X
Penawaran Penerimaan
X
DetailPembayaran
X
X
X
DetailRetur
X
DetailPenerimaan
X
X
DetailPembelian
X
X
DetailPenawaran
I = Insert; R = Read; U = Update; D = Delete Tabel 3.18 Tabel Transaction/relation cross-referenced matrix melihat data transaksi (a) - (d)
Keterangan: (a) Membaca detail karyawan beserta divisinya (b) Membaca detail pembayaran berdasarkan penerimaan tertentu (c) Membaca detail penerimaan berdasarkan pembelian tertentu (d) Membaca detail retur berdasarkan penerimaan tertentu
Transaksi/Relasi
(e) I
R
(f) U
D
I
R
Karyawan Divisi Pemasok
X
X
U
D
135 Barang FakturPajak TeleponPemasok
X
X
TeleponKaryawan Pembayaran Pembelian
X
Retur Penawaran
X
Penerimaan DetailPembayaran DetailRetur DetailPenerimaan DetailPembelian
X
DetailPenawaran
X
I = Insert; R = Read; U = Update; D = Delete Tabel 3.19 Tabel Transaction/relation cross-referenced matrix melihat data transaksi (e) - (f) Keterangan: (e) Membaca detail pembelian yang dilakukan kepada pemasok tertentu (f) Membaca detail penawaran yang dilakukan oleh pemasok tertentu
136 Transaction Analysis Form
Transaksi
(b) Membaca detail pembayaran berdasarkan penerimaan tertentu
Volume Transaksi Average
8 per month
Peak
10 per month ( antara 10.00 dan 15.00 pada Senin – Sabtu )
Select a.* from Pembayaran a INNER JOIN
Predicate :
DetailPembayaran b ON a.NoPembayaran =
Join attribute: a.NoPembayaran=b.NoPembayaran
b.NoPembayaran INNER JOIN Penerimaan c ON a.NoPembayaran = c.NoPembayaran
a.NoPembayaran=c.NoPembayaran Ordering atribut : none Grouping atribut: none Built-in function: none Attributes updated: none
Transaction Usage Form
137
Access
Entity
Type of access
No. of references Per
Average Per
Transaction
Month
Peak Per month
1
DetailPenerimaan
R
46000
368000
460000
2
Penerimaan
R
10
80
100
3
Pembayaran
R
50-100
400-800
500-1000
4
DetailPembayaran
R
100-200
800-1600
1000-2000
46160-46310
369200-370480
461600-463100
Total References
Tabel 3.20 Tabel Transaction Analysis Form untuk transaksi query data (b)
Transaction Analysis Form
Transaksi
(c) Membaca detail penerimaan berdasarkan pembelian tertentu
Volume Transaksi Average
25 per month
Peak
35 per month ( antara 10.00 dan 15.00 pada Senin – Sabtu )
138 Select a.* from Penerimaan a INNER JOIN
Predicate :
DetailPenerimaan b ON a.NoPenerimaan =
Join attribute: a.NoPenerimaan=b.NoPenerimaan
b.NoPenerimaan INNER JOIN Pembelian c ON
a.NoPembelian = c.NoPembelian
a.NoPembelian = c.NoPembelian INNER JOIN
c.NoPembelian = d.NoPembelian
DetailPembelian d ON c.NoPembelian =
Ordering atribut : none
d.NoPembelian
Grouping atribut: none Built-in function: none Attributes updated: none
Transaction Usage Form
Access
Entity
Type of access
No. of references Per
Average
Peak Per
Transaction
Per Month
month
1
DetailPembelian
R
9200
230000
322000
2
Pembelian
R
5
75
175
3
Penerimaan
R
25-50
625-1250
875-1750
4
DetailPenerimaan
R
50-100
1250-2500
1750-3500
9280-9355
231950-
324800-
233825
327425
Total References
Tabel 3.21 Tabel Transaction Analysis Form untuk transaksi query data (c)
139 Transaction Analysis Form
Transaksi
(f) Membaca detail pembelian yang dilakukan kepada pemasok tertentu
Volume Transaksi Average
20 per month
Peak
30 per month ( antara 10.00 dan 15.00 pada Senin – Sabtu )
Select a.* from Pembelian a INNER JOIN
Predicate :
DetailPembelian b ON a.NoPembelian =
Join attribute: a.NoPembelian = b.NoPembelian
b.NoPembelian INNER JOIN Pemasok c ON
a.NoPemasok = c.NoPemasok
a.NoPemasok = c.NoPemasok
Ordering attribute : none Grouping attribute: none Built-in function: none Attributes updated: none
Transaction Usage Form Pemasok
1
Asumsikan 50 pemasok
NoPemasok 1..1 2 avg = 15 max = 20
Menerima
3
0..* Pembelian
Entity
1..* DetailPembelian
1..1
NoPembelian
Access
avg = 5 max = 10
Memiliki
JumlahBarang HargaSatuan Keterangan
Type of access
No. of references Per
Average Per
Peak Per
Transaction
Month
month
1
Pemasok
R
50
1000
1500
2
Pembelian
R
750-1000
15000-20000
22500-30000
3
DetailPembelian
R
250-500
5000-10000
7500-15000
1050-1550
21000-31000
31500-46500
Total References
Tabel 3.22 Tabel Transaction Analysis Form untuk transaksi query data (f)
140 3.11.2.2 Memilih Organisasi File Organisasi file yang digunakan dalam skripsi ini sesuai dengan RDBMS yang dipilih, dimana SQL Server menggunakan B-Tree. 3.11.2.3 Memilih Indeks Langkah
ini
bertujuan
untuk
menentukan
apakah
penambahan indeks dapat meningkatkan kinerja sistem.
Tabel Karyawan
Divisi
Nama Indeks
Field
KaryawanNIPInd (Primary Indeks)
NIP
KaryawanNamaInd (Secondary Indeks)
Nama
DivisiNoDivInd (Primary Indeks)
NoDiv
DivisiNamaDivisiInd
(Secondary NamaDivisi
Indeks) Pemasok
PemasokNoPemasokInd (Primary Key) PemasokNamaPemasokInd
NoPemasok
(Primary NamaPemasok
Indeks) Barang
BarangNoBarangInd (Primary Indeks) BarangNamaBarangInd
NoBarang
(Secondary NamaBarang
Indeks) TeleponPemasok
PemasokTelpPemInd (Primary Indeks) PemasokNoPemasokInd
TelpPem
(Secondary NoPemasok
141 Indeks) TeleponKaryawan
TeleponKaryawanTelpkarInd (Primary
TelpKar
Indeks) TeleponKaryawanNIPInd (Secoandry
NIP
Indeks) Pembayaran
PembayaranNoPembayaranInd (Primary
NoPembayaran
Indeks) PembayaranTglBayarInd
(Secondary TglBayar
Indeks) Pembelian
PembelianNoPembelianInd
(Primary NoPembelian
Indeks) PembelianTanggalBeliInd
(Secondary TanggalBeli
Indeks) Retur
Penawaran
ReturNoReturInd (Primary Indeks)
NoRetur
ReturTglReturInd (Secondary Indeks)
TglRetur
PenawaranNoPenawaranInd
(Primary NoPenawaran
Indeks) PenawaranTglPenawaranInd (Secondary TglPenawaran Indeks) Penerimaan
PenerimaanNoPenerimaanInd (Primary
NoPenerimaan
Indeks) PenerimaanTglPenerimaanInd (Secondary Indeks)
TglPenerimaan
142 FakturPajak
FakturPajakNoFakturInd
(Primary NoFaktur
Indeks) FakturPajakTanggalFakturInd
TanggalFaktur
(Secondary Indeks) DetailPembayaran
DetailPembayaranNoPembayaranNoFak NoPembayaran, turInd (Primary Indeks)
NoFaktur
DetailPembayaranNoPembayaranInd
NoPembayaran
(Secondary Indeks) DetailPembayaranNoFakturInd
NoFaktur
(Secondary Indeks) DetailRetur
DetailReturNoReturNoBarangInd
NoRetur,
(Primary Indeks)
NoBarang
DetailReturNoReturInd
(Secondary NoRetur
Indeks) DetailReturNoBarangInd
(Secondary NoBarang
Indeks) DetailPenerimaan
DetailPenerimaanNoPenerimaanNoBara
NoPenerimaan,
ngInd (Primary Indeks)
NoBarang
DetailPenerimaanNoPenerimaanInd
NoPenerimaan
(Secondary Indeks) DetailPenerimaanNoBarangInd (Secondary Indeks)
NoBarang
143 DetailPembelian
DetailPembelianNoPembelianNoBarang
NoPembelian,
Ind (Primary Indeks)
NoBarang
DetailPembelianNoPembelianInd
NoPembelian
(Secondary Indeks) DetailPembelianNoBarangInd
NoBarang
(Secondary Indeks) DetailPenawaran
DetailPenawaranNoPenawaranNoBaran
NoPenawaran,
gInd (Primary Indeks)
NoBarang
DetailPenawaranNoPenawaranInd
NoPenawaran
(Secondary Indeks) DetailPenawaranNoBarangInd (Secondary Indeks) Tabel 3.23 Tabel pemilihan indeks
NoBarang
144
3.11.2.4 Memperkirakan Kebutuhan Disk Space
a. Menghitung Space untuk Menyimpan Data Nama Tabel
Num_
Estimate_Record
Total record
Num_
dalam 3 tahun
(Num_Rows)
Cols
30
8
Rows Karyawan
20
10
Fixed_Data_
Num_Var_
Size (byte) 20
Cols 5
Max_Var_ Size (byte)
Null_
Var_Data_
Row_
Rows_
Fill_
Free_Rows_
Bitmap
Size
Size
Per_Page
Factor
Per_Pages
290
3.5
308
634.5
12.71956
0
12.71956
Num_Pages
Data_Space_
49.8838006
408648.1
Used (byte)
Divisi
5
0
5
2
10
1
40
3.5
46
102.5
77.47368
0
77.473684
1.32302989
10838.261
Pemasok
6
0
6
5
52
4
270
3.125
282
616.13
13.09767
0
13.097674
47.0407937
385358.18
Barang
100
300
400
5
66
2
60
3.125
72
208.13
38.52945
0
38.529447
5.40171265
44250.83
Telepon Pemasok
4
2
6
2
10
1
15
3.5
21
52.5
148.5505
0
148.55046
0.35341527
2881.659699
Telepon Karyawan
40
70
110
2
10
1
15
3.5
21
52.5
148.5505
0
148.55046
0.35341527
2895.178138
Pembayaran
20
120
140
5
40
0
0
3.375
12
60.375
129.7956
0
129.79559
0.46515447
3810.545664
Pembelian
50
5000
5050
8
49
0
0
3.625
18
78.625
100.4155
0
100.4155
0.78299662
6414.308147
Retur
7
30
37
4
52
0
0
3.375
10
69.375
113.4291
0
113.42907
0.61161569
5010.355814
Penawaran
50
250
300
6
73
0
0
3.75
14
96.75
81.98481
0
81.98481
1.18009665
9667.352166
Penerimaan
150
7000
7150
4
40
0
0
3.5
10
57.5
136.0672
0
136.06723
0.42258523
3461.817958
Faktur Pajak
100
300
400
7
66
0
0
3.375
16
92.375
85.78543
0
85.78543
1.07681455
8821.265203
Detail Pembayaran
600
15000
15600
5
32
0
0
3.875
12
52.875
147.5353
0
147.53531
0.35838879
2935.92105
Detail Retur
75
250
325
4
70
0
0
3.625
10
87.625
90.33194
0
90.331939
0.97003343
7946.513613
Detail Pembelian
600
15000
15600
8
70
0
0
3.5
18
99.5
79.76355
0
79.763547
1.24743701
10193.59724
Detail Penawaran
700
1000
1700
6
70
0
0
3.875
14
93.875
84.44329
0
84.443286
1.11169289
8915.997491
Tabel 3.24 Perhitungan space untuk menyimpan data
145
Keterangan: •
Num_Rows = jumlah baris
•
Total record (Num_Rows) dalam 3 tahun = jumlah baris 3 tahun mendatang
•
Num_Cols = jumlah kolom
•
Fixed_Data_Size = total byte semua fixed-length columns
•
Num_Variable_Cols = jumlah variable-length columns
•
Max_Var_Size = ukuran maksimum dari variable-length columns
•
Null_Bitmap = 2 + ((Num_Cols+7)/8)
•
Variable_Data_Size = 2 + ((Num_Variable_Cols x 2) + Max_Var_Size
•
Row_Size = Fixed_Data_Size + Variable_Data_Size + Null_Size + Null_Bitmap + 4
•
Rows_Per_page = 8096/(Row_Size + 2)
•
Fill Factor = factor besarnya data terisi tiap halaman
•
Free_Rows_Per_Page = 8096 x ((100 – Fill_Factor)/100)/(Row_Size+2)
•
Num_Pages = Row_Size/Rows_Per_Page
•
Data_Space_Used = 8192 x Num_Pages
146
b. Menghitung Space untuk Menyimpan Clustered Index Tabel index clustered
Karyawan
Num_CKey_
Fixed_
Num_Var_
Max_Var_
CIndex_
Var_CKey_
CIndex_
CIndex_Row_
Num_Pages_
Num_Pages_
Num_Cindex_
Clustered_
Cols
CKey_Size
CKey_Cols
CKey_Size
Null_Bitmap
Size
Row_Size
Per_Page
CLevel_0
CLevel_1
Pages
Index_Size
8
20
5
290
3.5
308
338.5
23.77679883
2
1
14.23656744
116625.96
Divisi
2
10
1
40
3.5
46
66.5
118.189781
1
0
0.562654397
4609.2648
Pemasok
5
52
4
270
3.125
282
344.125
23.39039364
2
1
14.71223637
120522.64
Barang
5
66
2
60
3.125
72
148.125
53.92839301
1
0
2.746697829
22500.949
Telepon Pemasok
2
10
1
15
3.5
21
41.5
186.1149425
1
0
0.222980484
1815.921
Telepon Karyawan
2
10
1
15
3.5
21
41.5
186.1149425
1
0
0.222980484
1826.6561
Pembayaran
5
40
0
0
3.375
12
62.375
125.7631068
1
0
0.495972162
4063.0039
Pembelian
8
49
0
0
3.625
18
77.625
101.6766091
1
0
0.763449929
6254.1818
Retur
4
52
0
0
3.375
10
72.375
108.8537815
1
0
0.664882735
5446.7194
Penawaran
6
73
0
0
3.75
14
97.75
81.16290727
1
0
1.204367898
9046.9818
Penerimaan
4
40
0
0
3.5
10
60.5
129.536
1
0
0.46705163
3826.087
Faktur Pajak
7
66
0
0
3.375
16
92.375
85.78543046
1
0
1.076814553
8821.2648
Detail Pembayaran
5
32
0
0
3.875
12
54.875
142.3472527
1
0
0.385500942
3158.0237
Detail Retur
4
70
0
0
3.625
10
90.625
87.40620783
1
0
1.03682567
8493.676
Detail Pembelian
8
70
0
0
3.5
18
98.5
80.55721393
1
0
1.222733449
9991.4783
Detail Penawaran
6
70
0
0
3.875
14
94.875
83.5716129
1
0
1.135253906
9300
Tabel 3.25 Perhitungan space untuk menyimpan Clustered Index
147
Keterangan: •
Num_CKey_Cols = jumlah kolom
•
Fixed_ CKey _Size = total byte semua fixed-length columns
•
Num_Var_ CKey _Cols = jumlah variable-length columns
•
Max_Var_ CKey _Size = ukuran maksimum dari variable-length columns
•
CIndex_Null_Bitmap = 2 + ((Num_Cols+7)/8)
•
Var_CKey_Size = 2 + ((Num_Variable_Cols x 2) + Max_Var_Size
•
CIndex_Row_Size = Fixed_ CKey _Size + Variable_CKey_Size + CIndex_Null_Bitmap + 1
•
CIndex_Row_Per_Page = 8096/( CIndex_Row_Size + 2)
•
Num_Pages_CLevel_0 = (Data_Space_Used/8192) / CIndex_Rows_Per_Page
•
Num_Pages_CLevel_1 = Num_Pages_CLevel_0 / CIndex_Rows_Per_Page
•
Num_CIndex_Pages=Num_Pages_CLevel_0+Num_Pages_CLevel_1+Num_Pages_CLevel_2+ …+Num_Pages_CLevel_n
•
Clustered index size = 8192 x Num_CIndex_Pages
148
c. Menghitung Space untuk Menyimpan Setiap NonClustered Index Tambahan Nama Index
Num_Leaf_
Fixed_
Num_Var_
Max_Var_
Var_Leaf_
Leaf_Null_
Leaf_Row_
Leaf_Row_
Num_
Num_Pages_
Num_Pages_
NonClustered
Cols
Leaf_Size
Leaf_Cols
Leaf_Size
Size
Bitmap
Size
Per_Pages
Rows
Level_0
Level_1
Index_Size(byte)
Karyawan
8
20
5
290
308
3.875
332.875
24.1761851
20
2
1
24576
Divisi
2
10
1
40
46
3.125
60.125
130.317907
5
1
0
8192
Pemasok
5
52
4
270
282
3.5
338.5
23.7767988
6
2
1
24576
Barang
5
66
2
60
72
3.5
142.5
56.0276817
100
1
0
8192
Telepon Pemasok Telepon Karyawan
2
10
1
15
21
3.125
35.125
218.074074
4
1
0
8192
2
10
1
15
21
3.125
35.125
218.074074
40
1
0
8192
Pembayaran
5
40
0
0
12
3.5
56.5
138.393162
20
1
0
8192
Pembelian
8
49
0
0
18
3.875
71.875
109.590525
50
1
0
8192
Retur
4
52
0
0
10
3.375
66.375
118.40585
7
1
0
8192
Penawaran
6
73
0
0
14
3.625
91.625
86.4726302
50
1
0
8192
Penerimaan
4
40
0
0
10
3.375
54.375
143.609756
150
1
0
8192
Faktur Pajak Detail Pembayaran
7
66
0
0
16
3.75
86.75
91.2225352
100
1
0
8192
5
32
0
0
12
3.5
48.5
160.316832
600
1
0
8192
Detail Retur
4
70
0
0
10
3.375
84.375
93.7308249
75
1
0
8192
Detail Pembelian
8
70
0
0
18
3.875
92.875
85.3333333
600
1
0
8192
Detail Penawaran
6
70
0
0
14
3.625
88.625
89.3351724
700
1
0
8192
Tabel 3.26 Perhitungan space untuk menyimpan setiap NonClustered Index
149
Keterangan: •
Num_Key_Cols = Num_Leaf_Cols = jumlah kolom
•
Fixed_ Key _Size = Fixed_ Leaf_Size = total byte semua fixed-length columns
•
Num_Var_ Key _Cols = Num_Var_ Leaf_Cols = jumlah variable-length columns
•
Max_Var_ Key _Size = Max_Var_ Leaf _Size = ukuran maksimum dari variable-length columns
•
2 + ((Num_Cols+7)/8)
•
Var_Leaf_Size = 2 + ((Num_Variable_Cols x 2) + Max_Var_Size
•
Leaf_Null_Bitmap = 2 + ((Num_Cols+7)/8)
•
Leaf_Row_Size = Fixed_ Leaf_Size + Var_Leaf_Size + Leaf_Null_Bitmap + 1
•
Leaf_Row_Per_Page = 8096/(Leaf_Row_Size + 2)
•
Num_Rows = jumlah baris
•
Num_Pages_Level_0 = (Data_Space_Used/8192) / CIndex_Rows_Per_Page
•
Num_Pages_Level_1 = Num_Pages_Level_0 / CIndex_Rows_Per_Page
•
Num_Leaf_Pages=Num_Pages_Level_0+Num_Pages_Level_1+Num_Pages_Level_2+ …+Num_Pages_Level_n
•
NonClustered index size = 8192 x Num_Leaf_Pages
150 d. Total ukuran seluruh tabel (bytes) = Σ Data_Space_Used + Σ Clustered Index Size + Σ NonClustered Index Size = 922049.8832 byte+336302.8 byte+163840 byte = 1422192.6832 byte = 1388.86 KB = 1.356 MB 3.11.3 Merancang User View
Data Karyawan
Divisi
Pemasok
Tipe akses
Keuangan
Direksi
HRD
Maintain
X
X
Query
X
X
Report
X
Maintain
X
X
Query
X
X
Report
X
Maintain
X
Query
X
Logistik
Pembelian
Gudang
X X
X
X X
Report Barang
Maintain
X
X
X
X
Query
X
X
X
X X
Report TeleponPemasok
TeleponKaryawan
Pembayaran
Maintain
X
Query
X
X X
X
X
Report
X
Maintain
X
X
Query
X
X
Report
X
Maintain
X
Query
X
X
X
151 X
Report Pembelian
X
Maintain Query
X
X
X
X X
Report Retur
Maintain Query
X
X
X
X
X
X X
Report Penawaran
X
Maintain Query Report
Penerimaan
X
Maintain Query
X
X
X X
X X
Report FakturPajak
Maintain
X
Query
X
Report DetailPembayaran
Maintain
X
Query
X
X
X
X
X
X
X
Report DetailRetur
Maintain Query
X
X
Report DetailPenerimaan
X
Maintain Query
X
X
X X
X
Report DetailPenawaran
X
Maintain Query Report
DetailPembelian
X
Maintain Query
X
X
X
X
152 Report Tabel 3.27 Rancangan User View
3.11.4 Merancang Mekanisme Keamanan Sekuriti SQL Server 2000 terdiri atas dua jenis, yaitu: 1. Login Merupakan mekanisme yang menentukan seorang user terautentikasi atau tidak pada SQL server. Proses validasi user oleh SQL Server dikenal sebagai autentikasi (authentication). Login ini dapat berupa autentikasi
Windows
(Windows
authentication
mode)
yang
menggunakan Windows accounts atau autentikasi SQL ServerWindows (mixed authentication mode) yang menggunakan windows dan SQL Server login account. Dengan menggunakan autentikasi SQL Server-Windows, user harus memasukkan SQL Server login account dan password. 2. User Merupakan mekanisme akses pada basis data. User harus dipetakan pada login server untuk menyediakan akses yang diperbolehkan (permission) terhadap basis data. Permission ini dapat diberikan langsung pada user atau melalui database roles. Database roles digunakan untuk menyediakan sejumlah permission untuk suatu kelompok user. Berikut ini nama tabel beserta database roles / user yang mempunyai hak untuk mengaksesnya.
153 Hak Akses NamaTabel
Karyawan
Divisi
Pemasok
User I
R
U
D
Direksi
X
X
X
X
HRD
X
X
X
X
Direksi
X
X
X
X
HRD
X
X
X
X
X
X
Keuangan
X
Logistik
X
Pembelian
Barang
TeleponPemasok
X
Gudang
X
Keuangan
X
Logistik
X
X
X
X
Pembelian
X
X
X
X
Gudang
X
X
X
X
X
X
Keuangan
X
Logistik
X
Pembelian
X
Gudang TeleponKaryawan
Pembayaran
X
X X
Direksi
X
X
X
X
HRD
X
X
X
X
Keuangan
X
X
X
X
Logistik
X
Pembelian
X
154 Pembelian
Keuangan
X
Logistik
X
Pembelian
Retur
X
X X
Keuangan
X
Logistik
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
Gudang
X
Penawaran
Pembelian
X
Penerimaan
Keuangan
X
Logistik
X
Pembelian Gudang FakturPajak
Keuangan
DetailPembayaran
Keuangan
X
X X
X
Pembelian
X
Keuangan
X
Logistik
X
X
X
X
X
X
X
X
X
X
Pembelian
DetailPenerimaan
X
Gudang
Pembelian
DetailRetur
X
X
Gudang
X
Keuangan
X
Logistik Pembelian
X
155 Gudang
X
X
DetailPenawaran
Pembelian
X
DetailPembelian
Keuangan
X
Logistik
X
Pembelian Gudang
X
X X
Tabel 3.28 Tabel mekanisme keamanan
X
X
X
X