BAB 4 PERANCANGAN DATABAS E DAN APLIKAS I 4.1 Tahapan Perancangan Database Perancangan database dilakukan sesuai dengan kebutuhan informasi yang telah diidentifikasi pada PT. Cipta Selera Semesta. Perancangan database tersebut dibagi menjadi 3 langkah, yaitu perancangan konseptual, perancangan logical, dan perancangan fisikal. 4.1.1 Perancangan Database Konseptual Berikut ini adalah tahap-tahap perancangan database konseptual, yaitu : 4.1.1.1 Pengidentifikasian Entitas Table 4.1 : Tabel Pengidentifikasi Entitas No 1
Nama Entitas Barang
Deskripsi Alias M erupakan entitas yang product memberikan informasi mengenai data jenis barang
Kejadian Setiap jenis barang dapat dipasok oleh beberapa supplier
2
Supplier
3
Karyawan
M erupakan entitas yang Supplier memberikan informasi mengenai data supplier M erupakan entitas yang Staff memberikan informasi mengenai data karyawan
4
Order Pembelian
Satu supplier dapat memasok satu atau lebih jenis barang Setiap karyawan memiliki tugas dalam setiap transaksi pembelian dan penjualan Setiap Purchase Order dibuat oleh karyawan dan berisi banyak barang
M erupakan entitas yang Pembelian memberikan informasi mengenai barang-barang yang akan dibeli ke supplier dan telah disetujui oleh direktur 81
82 5.
Gudang
M erupakan entitas yang memberikan informasi mengenai data barang yang tersimpan dan jumlah yang tersedia
6
Order Penjualan
M erupakan entitas yang Penjualan memberikan informasi mengenai barang-barang yang dipesan oleh pelanggan
7
Bahan M entah
M erupakan entitas yang BM memberikan informasi data jenis BahanM entah yang akan dijual ke pihak pelanggan
8
Pelanggan
M erupakan entitas yang customer memberikan informasi mengenai data dari pelanggan
9
Status Karyawan
10
M asuk Gudang
M erupakan entitas yang memberikan informasi mengenai status karyawan M erupakan entitas yang memberikan informasi mengenai barang yang masuk ke dalam gudang
11
Keluar Gudang
M erupakan entitas yang memberikan informasi mengenai barang apa saja yang sudah terjual
Setiap transaksi pembelian, barang yang sudah dibeli akan dimasukkan ke dalam gudang. Setiap karyawan dapat menggunakan barang yang terdapat di gudang. Setiap DeliveryOrder dilakukan oleh satu agen dan banyak berisi barang Setiap jenis BahanM entah dihasilkan oleh perusahaan dan dapat dijual ke beberapa pelanggan Setiap pelanggan dapat membeli satu atau lebih jenis BahanM entah Setiap karyawan memiliki statusnya masing-masing Setiap barang yang kita beli akan dimasukkan ke dalam entitas masuk gudang Setiap barang yang sudah dijual akan masuk ke dalam entitas keluar gudang
83 4.1.1.2 Pengidentifikasian Relationship Table 4.2 : Tabel Pengidentifikasian Relationship
Nama Entitas
M ultiplicity
Relationship
Nama Entitas
M ultiplicity
Bahan M entah
1..*
Dipesan pada
Order Penjualan
0..*
Barang
1..*
Dipesan pada
Order Pembelian 0..*
1..*
Ditempatkan pada
Gudang
1..*
Pelanggan
1..*
M elakukan
Order Penjualan
1..1
Supplier
1..*
M emasok
Barang
1..*
Karyawan
1..1
M embuat
Order Pembelian 0..*
1..1
M enangani
Order Penjualan
0..*
1..1
mengurusi
Gudang
1..*
1..1
memiliki
StatusKaryawan
1..1
Pembelian
1...1
M empunyai
Surat Jalan
1..1
Status Karyawan
1..1
Dimiliki
Karyawan
1..1
M asuk Gudang
1..*
M empunyai
Order Pembelian
1..1
Keluar Gudang
1..*
Ditangani
Karyawan
1..*
1..*
M empunyai
Barang
1..*
84
Bahan Mentah
1..* dipesan pada 0..* Order Penjualan Pelanggan
MasukGudang
1..* melakuk an 1..1
1..* mempunyai 1..1 1..1 menangani 0..* 1..* mempunyai 1..* Order Pembelian
KeluarGudang
Karyawan 1..* ditangani 1..*
1..1 membuat 0..* 1..1 dipunyai 1..1 Status Karyawan
Gudang 1..1 mengurusi 1..*
Barang 1..* dipesan pada 0..*
1..* ditempatk an pada 1..* 1..* memas ok 1..*
Supplier
Gambar 4.1 ER konseptual tanpa primary key
85 4.1.1.3 Pengidentifikasian dan Penghubungan Atribut dengan Entitas Berikut ini adalah daftar tabel atribut pada model data konseptual 1. Tabel Entitas Order Pembelian Tabel 4.3 : Tabel Entitas Order Pembelian Atribut
Deskripsi
KdPO
Kode order pembelian
TglPembelian TotalHargaBarang
Tgl transaksi Datetime Jumlah nominal Decimal (12,2) pembelian yang dilakukan Status yang Numeric(1) menyatakan pembelian sudah diterima atau belum
StatusPembelian
Panjang data Int(12)
dan
tipe Null
M ulti-valued
No
No
No
No
No
No
2. Tabel Order Penjualan Tabel 4.4 : Tabel Entitas Order Penjualan Atribut
Deskripsi
Panjang dan Null tipe data
M ultivalued
kdDO
Kode order penjualan
int(11)
No
No
TanggalPenjualan
Tanggal dimana DO dikeluarkan Jumlah barang yang dijual Nama supir No plat mobil yang akan membawa bahan mentah
Datetime
No
No
Int(12)
No
No
Varchar(30) Varchar(20)
No No
No No
Jumlah namaSupir noPlat
3. Tabel Barang Tabel 4.5 : Tabel Entitas Barang Attribute
Deskripsi
kdBarang
Kode barang
Panjang dan Tipe Null Data Int (11) No
M ulti-valued No
86 NamaBarang Spesifikasi
namaBarang Spesifikasi barang
Varchar(30) Varchar(20)
No No
No No
4. Tabel Karyawan Tabel 4.6 : Tabel Entitas Karyawan Attribute
Deskripsi
kdKaryawan
Kode karyawan
Panjang dan tipe Null M ulti-valued data Int(12) No No
namaKaryawan
Nama karyawan
Varchar(30)
No
No
alamatKaryawan
Alamat karyawam
Varchar(50)
No
Yes
telpKaryawan
No telepon karyawan
Varchar(20)
No
No
5. Table Pelanggan Tabel 4.7 : Tabel Entitas Pelanggan Attribute
Deskripsi
Panjang data
kdPelanggan
Kode pelanggan Nama pelanggan Alamat pelanggan No telepon pelanggan Nama bank pelanggan No rekening pelanggan Jenis pelanggan Nilai deposit
Int(12)
No
No
Varchar(30)
No
No
Varchar(50)
No
Yes
Varchar(20)
No
No
Varchar(20)
No
No
Varchar(20)
No
No
Int(12)
No
No
Int(12)
No
No
namaPelanggan alamatPelanggan telpPelanggan BankPelanggan RekeningPelanggan Tipe pelanggan depositPelanggan
dan
tipe Null
M ultivalued
87 6. Tabel S upplier Tabel 4.8 : Tabel Entitas Supplier Attribute
Deskripsi
Panjang tipe data
kdSupplier
Kode supplier
Int(12)
No
No
namaSupplier
Nama supplier
Varchar(20)
No
No
alamatSupplier
Alamat Varchar(50) supplier No telepon Varchar(20) supplier
No
Yes
No
No
telpSupplier
dan Null
M ulti-valued
7. Tabel Bahan Mentah Tabel 4.9 : Tabel Entitas Bahan M entah Attribute
Deskripsi
Panjang tipe data
dan Null M ulti-valued
kdBM
Kode bahan mentah
Int(12)
No
No
namaBM
Nama bahan mentah
Varchar(20)
No
No
SpesifikasiBM
Spesifikasi mentah
bahan Varchar(20)
No
No
ukuranBM
Ukuran bahan mentah
No
No
Varchar(20)
8. Tabel Gudang Tabel 4.10 : Tabel Entitas Gudang Attribute
Deskripsi
Panjang dan tipe Null data
M ultivalued
kdGudang
Kode gudang
Int(12)
no
no
kdKaryawan
Kode karyawan
Int(12)
no
no
88 tglmasukGudang
Tanggal masuk Datetime barang ke gudang
no
no
tglkelGudang
Tanggal keluar Datetime barang dari gudang
no
no
9. Table S tatus Karyawan Table 4.11 : Tabel Status Karyawan Attribute
Deskripsi
Panjang dan tipe Null data
M ulti-valued
KdStatus
Kode status
Int (12)
No
No
NamaStatus
Status karyawan
Varchar(20)
No
No
10. Table Masuk Gudang Table 4.12 : Tabel M asuk Gudang
Attribute
Deskripsi
KdM asukGudang
Kode
Panjang dan Null tipe data
M ulti-valued
masuk Int(12)
No
No
order Int(12)
No
No
masuk Datetime
No
No
gudang KdPembelian
Kode pembelian
TglM asukGudang Tanggal gudang
89 11. Table Keluar Gudang Table 4.13 : Tabel Keluar Gudang Attribute
Deskripsi
KdKeluarGudang
Kode
Panjang dan Null tipe data keluar Int (12)
M ulti-valued
No
No
No
No
Yes
No
Yes
No
gudang KdKaryawan
Kode karyawan
TglKeluarGudang
Tanggal
Int (12)
keluar Datetime
gudang KdKaryawanPeminta Kode
karyawan Int (12)
peminta KdBarang
Kode barang
Int (12)
No
No
Jumlah
Jumlah barang
Int (12)
Yes
No
Keterangan
keterangan
Text
Yes
no
4.1.1.4 Penentuan Domain Atribut Berikut ini adalah daftar tabel domain atribut untuk masing-masing entitas pada model konseptual
90 1. Order Pembelian Tabel 4.14 : Tabel Domain Atribut Pembelian Attribute
Domain value
kdPembelian
Auto increment
tglPembelian
Range value : 0-9, ' / '
Jumlah
Range value : 0-9, ' , '
StatusPembelian
Range value : 0-1
2. Order Penjualan Tabel 4.15 : Tabel Domain Atribut Penjualan Attribute
Domain value
kdPenjualan
Auto increament
namaSupir
Range value : A-Z , a-z
noPlat
Range value : A-Z , a-z, 0-9,
Jumlah
Range value 0-9
tglPenjualan
Datetime
Tipe
Range value 0-9
3. Tabel Barang Tabel 4.16 : Tabel Domain Atribut Barang Attribute
Domain value
kdBarang
Range value : A-Z , a-z , 0-9, ‘ . ‘ , ‘ , ‘
namaBarang
Range value : A-Z , a-z , 0-9, ‘ . ‘ , ‘ , ‘
91 Spesifikasi
Range value : A-Z , a-z
4. Tabel Karyawan Tabel 4.17 : Tabel Domain Atribut Karyawan Attribute
Domain value
kdKaryawan
Range value : A-Z , a-z , 0-9, ' . ' , ' , '
namaKaryawan
Range value : A-Z , a-z , 0-9, ' . ' , ' , '
alamatKaryawan
Range value : A-Z , a-z , 0-9, ' . ' , ' , '
telpKaryawan
Range value : 0-9 , ' - '
5. Tabel Pelanggan Tabel 4.18 : Tabel Domain Atribut Pelanggan Attribute
Domain value
kdPelanggan
Range value : A-Z , a-z , 0-9, ' . ' , ' , '
namaPelanggan
Range value : A-Z , a-z , 0-9, ' . ' , ' , '
alamatPelanggan
Range value : A-Z , a-z , 0-9, ' . ' , ' , '
telpPelanggan
Range value : 0-9 , ' - '
bankPelanggan
Range value : A-Z , a-z
rekeningPelanggan
Range value : 0-9
tipePelanggan
Range value : A-Z , a-z
depositPelanggan
Range value : A-Z , a-z , 0-9, ' . ' , ' , '
92 6. Tabel S upplier Tabel 4.19 : Tabel Domain Atribut Supplier Attribute
Domain value
kdSupplier
Range value : A-Z , a-z , 0-9, ' . ' , ','
namaSupplier
Range value : A-Z , a-z , 0-9, ' . ' , ','
alamatSupplier
Range value : A-Z , a-z , 0-9, ' . ' , ','
telpSupplier
Range value : 0-9 , ' - '
7. Tabel Bahan Mentah Tabel 4.20 : Tabel Domain Atribut Bahan M entah Attribute
Domain value
kdBM
Range value : A-Z , a-z , 0-9, ' . ' , ' ,'
namaBM
Range value : A-Z , a-z , 0-9, ' . ' , ' ,'
SpesifikasiBM
Range value : A-Z , a-z , 0-9, ' . ' , ' ,'
ukuranBM
Range value : 0-100
8. Tabel Gudang Tabel 4.21 : Tabel Domain Atribut Gudang Attribute
Domain value
kdGudang
Range value : A-Z , a-z , 0-9, ' . ' , '
93 ,' kdKaryawan
Auto Increment
tglmasukGudang
Datetime
tglkelGudang
Datetime
9. Tabel S tatus Karyawan Tabel 4.22 : Tabel Domain Atribut Status Karyawan Attribute
Domain value
KdStatus
Range value 0-9
NamaStatus
Range value : A-Z , a-z
10. Tabel Masuk Gudang Tabel 4.23 : Tabel Domain Atribut M asuk Gudang
Attribute
Domain value
KdM asukGudang
Range value 0-9
TglM asukGudang
Datetime
11. Tabel Keluar Gudang Tabel 4.24 : Tabel Domain Atribut Keluar Gudang
Attribute
Domain value
94 KdKeluarGudang
Auto increment
TglKeluarGudang
Datetime
KdKaryawanPeminta
Auto Increment
Jumlah
Range value 0-9
Keterangan
Range value : A-Z , a-z
4.1.1.5 Penentuan Atribut Primary Key dan Candidate Key Tabel 4.25 :Tabel Primary Key dan Candidate Key No
Entitas
Candidate Key
Primary Key
1
Order Pembelian
kdPembelian
kdPembelian
kdSupplier kdKaryawan 2
Barang
kdBarang
kdBarang
3
Bahan M entah
kdBM
kdBM
4
Order Penjualan
kdPenjualan
kdPenjualan
kdBahanM entah kdPelanggan kdKaryawan 5
Supplier
kdSupplier
kdSupplier
alamatSupplier 6
Pelanggan
kdPelanggan
kdPelanggan
alamatPelanggan 7
Gudang
kdGudang
kdGudang
95 kdKaryawan 8
Karyawan
kdKaryawan
kdKaryawan
alamatKaryawan 9
Status Karyawan
KdStatus
KdStatus
NamaStatus 10
M asuk Gudang
KdM asukBarang
KdM asukGudang
KdPembelian TglM asukGudang 11
Keluar Gudang
KdKeluarGudang KdKaryawan KdKaryawanPeminta KdBarang TglKeluarGudang Jumlah Keterangan
KdKeluarGudang
96
Gambar 4.2 ER konseptual dengan primary key
97 4.1.1.6 Validasi Model Terhadap Adanya Perulangan Tujuan dari langkah ini adalah untuk mengecek apakah terdapat redundansi dalam model yang telah dibentuk. Terdapat dua langkah dalam melakukan pengecekan ini, yaitu: a. M engkaji kembali hubungan one-to-one (1:1) •
Hubungan entitas antara Status Karyawan dengan
Karyawan
Gambar 4.3 Hubungan one-to-one antara entitas S tatus Karyawan dengan Karyawan Entitas Status Karyawan dengan entitas Karyawan tidak sama, karena entitas Status Karyawan hanya berisikan
status
karyawan
yang bekerja di
perusahaan tersebut sedangkan entitas Karyawan mencatat biodata karyawan yang bekerja di perusahaan tersebut. b. M enghilangkan relasi yang redundan Tidak ada yang berelasi redundan
98 Gambar ERD setelah mengalami variasi model
Gambar 4.4 Entity Relationship Diagram dengan primary key setelah validasi model
99 4.1.1.7 Validasi Model Konseptual Lokal Terhadap Transaksi Pengguna Berikut adalah transaksi yang ada : a. Pelanggan melakukan Order Penjualan b. Supplier dapat memasok barang c. Barang dipesan kemudian dimasukkan ke dalam Order Pembelian d. Barang dimasukkan/disimpan ke dalam Gudang e. Bahan mentah yang dipesan kemudian dimasukkan ke dalam Order Penjualan f. Karyawan menangani Order Penjualan g. Karyawan membuat Order Pembelian h. Karyawan mengurusi Gudang
100
Gambar 4.5 Validasi model terhadap transaksi pengguna
101 4.1.2 Perancangan Database Logikal Berikut ini tahap-tahap perancangan database logikal yaitu : 4.1.2.1 Menghilangkan Fitur yang tidak Kompatibel dengan Model Relasional Berikut ini adalah tahap-tahap dalam menghilangkan fitur-fitur yang tidak sesuai dengan model relasional 1. Menghilangkan Many-To-Many (*:*) Binary Relationship a. Relasi many-to-many pada Entitas Order Pembelian dan Barang
akan menghasilkan entitas baru yaitu
DetailPembelian
b. Relasi many-to-many pada Entitas Order Penjualan dan BahanM entah akan menghasilkan entitas baru yaitu DetailPenjualan
102
c. Relasi many-to-many pada entitas Barang dan Gudang akan menghasilkan entitas baru yaitu DetailGudang
d. Relasi many-to-many pada
entitas
Barang dan
KeluarGudang akan menghasilkan entitas baru yaitu KeluarGudangDetail
e. Relasi many-to-many pada Supplier dan Barang akan menghasilkan entitas baru yaitu DetailBarangSupplier
103
2. Menghilangkan Many-To-Many (*:*) Recursive Relationship Tidak terdapat recursive relationship. 3. Menghilangkan Multi-Valued Atribut a. Atribut Multi-valued TelpSupplier pada entitas Supplier dihilangkan dengan menghasilkan sebuah entitas baru yaitu entitas Telp_Supplier
Supplier kdSupplier namaSupplier alamatSupplier telpSupplier
Supplier kdSupplier namaSupplier alamatSupplier telpSupplier b.
TelpSupplier mempunyai
Telp_Supplier
104 b.
Atribut Multi-valued TelpPelanggan pada entitas Pelanggan dihilangkan dengan menghasilkan sebuah entitas baru yaitu entitas Telp_Pelanggan
Pelanggan kdPelanggan namaPelanggan alamatPelanggan telpPelanggan
Pelanggan kdPelanggan namaPelanggan alamatPelanggan telpPelanggan c.
mempunyai
TelpPelanggan Telp_Pelanggan
m Atribut Multi-valued TelpKaryawan pada entitas Karyawan dihilangkan dengan menghasilkan sebuah entitas baru yaitu entitas TelpKaryawan Karyawan kdKaryawan namaKaryawan alamatKaryawan telpKaryawan
Karyawan kdKaryawan namaKaryawan alamatKaryawan telpKaryawan
mempunyai
TelpKaryawan Telp_Karyawan
105 4.1.2.2 Memperoleh Relasi bagi Model Data Logikal Lokal Berikut adalah tahap-tahap memperoleh relasi bagi model data logikal local 1. Mengidentifikasi Strong Entity Karyawan (kdKaryawan, alamatKaryawan) Primary Key : kdKaryawan
Bahan Mentah (kdBM , ukuranBM , spesifikasiBM , hargaBM , namaBM ) Primary Key : kdBM
Pelanggan (kdPelanggan, namaPelanggan, alamatPelanggan, telpPelanggan, bankPelanggan, rekeningPelanggan, depositPelanggan, tipePelanggan) Primary Key : kdPelanggan
Supplier (kdSupplier, namaSupplier, alamatSupplier, telpSupplier) Primary Key : kdSupplier
Order Pembelian (kdPO, kdKaryawan, kdBarang, kdSupplier, tglPembelian, Jumlah, StatusPembelian) Primary Key : kdPO
106 Order Penjualan (kdDO, kdPelanggan, NamaSupir, NomorPlat, kdBM , jumlah, tipe, KdKaryawan, tglPenjualan) Primary Key : kdDO
Barang (kdBarang, namaBarang, Spesifikiasi) Primary Key : kdBarang
Gudang (kdGudang, namaGudang) Primary Key : kdGudang
S tatus Karyawan (KdStatus, NamaStatus) Primary Key : KdStatus
Masuk Gudang (KdMasukGudang, TglMasukGudang) Primary Key : KdMasukGudang
Keluar Gudang (KdKeluarGudang, TglKeluarGudang, Jumlah,Keterangan) Primary Key : KdKeluarGudang
2. Mengidentifikasi Weak Entity Detail Pembelian (kdDetailPembelian, kdPO, kdBarang) Primary Key : kdDetailPembelian
107 Detail Penjualan (kdDetailPenjulan, kdDO, kdBM ) Primary Key : kdDetailPenjualan
Detail Gudang (kdDetailGudang, kdGudang, kdBarang, jumlah, posisi) Primary Key : kdGudang
Detail KeluarGudang (KdKeluarGudangDetail, KdBarang, Jumlah, KdKeluarGudang) Primary Key : KdKeluarGudangDetail
Detail Barang Supplier (KdDetailBarangSupplier, KdBarang, KdSupplier, Harga, LastUpadate) Primary Key : KdDetailBarangSupplier
Telp S upplier (telpSupplier) Primary Key : telpSupplier
Telp Karyawan (telpKaryawan) Primary Key : telpKaryawan
Telp Pelanggan (telpPelanggan) Primary Key : telpPelanggan
108 3. Mengidentifikasi Relasi One-To-many (1:*) a. Karyawan dengan OrderPembelian untuk relasi 1 : * Membuat
Karyawan (KdKaryawan,
OrderPembelian (
NamaKaryawan,
KdPO, KdBarang,
AlamatKaryawan,
KdSupplier,
TelpKaryawan)
TglPembelian,
Primary Key : KdKaryawan
KdKaryawan, Jumlah, StatusPembelian) Primary
Key
:
Key
:
KdPO Foreign
KdKaryawan Reference Karyawan
:
109
b. Karyawan dengan Order Penjualan untuk relasi 1 : * Membuat
Karyawan (KdKaryawan,
OrderPenjualan (
NamaKaryawan,
KdDO,
AlamatKaryawan,
KdPelanggan,
TelpKaryawan)
KdKaryawan,
Primary Key : KdKaryawan
TglPenjualan, Tipe, NamaSupir, KdBM ) Primary Key : KdDO Foreign Key : KdKaryawan Reference : Karyawan
c. Karyawan dengan Gudang untuk relasi 1 : * Mengurusi
Karyawan (kdKaryawan,
Gudang (kdGudang,
110 namaKaryawan,
namaGudang,
alamatKaryawan, telpKaryawan)
KdKaryawan, TglM asukGudang,
Primary Key : kdKaryawan
TglKeluarGudang) Primary
Key
:
Key
:
KdGudang Foreign
kdKaryawan Reference: Karyawan d. Karyawan dengan KeluarGudang untuk relasi 1 : * M enangani
Karyawan (kdKaryawan,
KeluarGudang (
namaKaryawan,
KdKeluarGudang,
alamatKaryawan, telpKaryawan)
KdKaryawan
Primary Key : kdKaryawan
TglKeluarGudang, KdKarayawan Peminta,
111 Keterangan) Primary
Key
:
KdKeluarGudang Foreign
Key
:
kdKaryawan Reference : Karyawan e. Supplier dengan Order Pembelian untuk relasi 1 : * Mengerjakan
Supplier ( kdSupplier,
OrderPembelian (
NamaSupplier,
KdPO, KdKaryawan,
AlamatSupplier,
KdSupplier,
TelpSupplier)
KdBarang,
Primary Key : KdSupplier
TglPembelian, Jumlah, StatusPembelian) Primary Key : KdPO ForeignKey : KdSupplier
112 Reference : Supplier
f. Supplier dengan Barang untuk relasi 1 : * Memasok
Supplier (KdSupplier,
Barang (KdBarang,
NamaSupplier,
NamaBarang,
AlamatSupplier,
Spesifikasi,
TelpSupplier)
KdSupplier)
Primary Key : KdSupplier
Primary Key : KdBarang Foreign Key : KdSupplier Reference : Supplier
g. Order Pembelian dengan MasukGudang untuk relasi 1 : * Mempunyai
113 Order Pembelian (KdPO,
MasukGudang (
KdKaryawan, KdBarang,
KdM asukGudang,
KdSupplier, TglPembelian,
KdPO,
Jumlah, StatusPembelian)
TglM asukGudang)
Primary Key : KdPO
Primary Key : KdM asukGudang Foreign Key : KdPO Reference : OrderPembelian
4. Mengidentifikasi Relasi One-to-one (1:1) a. S tatus Karyawan dengan Karyawan untuk relasi 1:1 menghasilkan
S tatus Karyawan (KdStatus,
Karyawan
NamaStatus)
(KdKaryawan, NamaKaryawan,
Primary Key : KdS tatus
AlamatKaryawan, telpKaryawan, KdStatus) Primary Key : KdKaryawan
114 Foreign Key : KdStatus Reference : Status Karyawan
5. Mengidentifikasi Relasi Many-to-Many (*:*) a. (OrderPembelian (kdPO,
Barang (kdbarang,
kdBarang, kdSupplier,
namaBarang,
tglPembelian,
Spesifikasi)
Jumlah, kdKaryawan)
Primary Key :
Primary Key : kdPembelian
KdBarang
kdPO dengan detailPembelian untuk model relasi * : * Memiliki kdBarang dengan detailPembelian untuk model relasi * : * Menambah
115
detailPembelian (kdDetailPembelian, KdPO, kdBarang, jumlah) Primary Key : KdDetailPembelian Foreign Key : kdPO referensi OrderPembelian kdBarang referensi Barang
b. OrderPenjualan ( kdDO,
BahanMentah ( kdBM ,
kdPelanggan ,
namaBM , hargaBM ,
NamaSupir, NomorPlat,
satuanBM ,
kdBahanM entah, jumlah, tipe,
Primary Key : kdBM
KdKaryawan, tglPenjualan) Primary Key: kdPenjualan
kdDO dengan detailPenjualan untuk model relasi * : * Memiliki kdBahanMentah dengan detailPenjualan untuk
116 model relasi * : * Menambah
detailPenjualan (kdDetailPenjualan, kdDO, kdBM , jumlah) Primary Key : kdDetailPenjualan, Foreign Key : kdPO referensi OrderPenjualan kdBM referensi BahanM entah
c. Gudang ( kdGudang,
Barang ( kdBarang,
namaGudang, kdKaryawan,
NamaBarang, Spesifikasi,
TglM asukGudang,
KdSupplier)
TglKeluarGudang)
Primary Key: kdBarang
Primary Key: kdGudang
kdGudang dengan detailGudang untuk model relasi * : * Memiliki relasi * : * Memiliki kdBarang dengan detailGudang untuk model relasi * : *
117 Menambah
detailGudang ( kdDetailGudang, kdGudang,kdBarang, posisi, jumlah) Primary Key : kdDetailGudang Foreign Key : kdGudang referensi Gudang kdBarang referensi Barang d. KeluarGudang ( kdKeluarGudang,
Barang (KdBarang,
TglKeluarGudang, KdKaryawan,
NamaBarang,
KdKaryawanPeminta, Keterangan,
Spesifikasi)
Jumlah)
Primary Key :
Primary Key: kdGudang
KdBarang
kdKeluarGudang dengan KeluarGudangDetail untuk model relasi * : * Memiliki relasi * : * Memiliki kdBarang dengan KeluarGudangDeta il untuk model relasi * : *
118 Menambah
KeluarGudangDetail (KdKeluarGudangDetail, ,kdBarang, posisi, jumlah) Primary Key : kdDetailGudang Foreign Key : kdKaryawan referensi Karyawan kdBarang referensi Barang e. Supplier (KdSupplier, NamaSupplier
Barang (KdBarang,
AlamatSupplier, TelpSupplier)
NamaBarang,
Primary Key : KdSupplier
Spesifikasi, KdSupplier)
KdS upplier dengan DetailBarangSupplier untuk model relasi * : * Memiliki relasi * : * Memiliki kdBarang dengan DetailBarangSuppl ier untuk model relasi * : * Menambah
119 DetailBarangSupplier (KdDetailBarangSupplier, ,kdBarang, KdSupplier) Primary Key : kdDetailBarangSupplier Foreign Key : kdSupplier referensi Supplier kdBarang referensi Barang
6. Mengidentifikasi Multi-Valued Atribut a. kdS upplier dengan TelpS upplier untuk model relasi multivalued Mempunyai
Supplier (KdSupplier,
TelpSupplier (
NamaSupplier,
TelpSupplier, KdSupplier)
AlamatSupplier, TelpSupplier)
Primary Key : TelpSupplier
Primary Key : KdSupplier
Foreign Key : KdSupplier Referensi : Supplier
b. kdPelanggan dengan TelpPelanggan untuk model relasi multivalued Mempunyai
Pelanggan ( kdPelanggan,
TelpPelanggan ( kdPelanggan,
namaPelanggan, telpPelanggan
telpPelanggan
120 Primary Key : kdPelanggan
Primary Key : kdPelanggan Foreign Key : kdPelanggan referensi : Pelanggan
c. kdKaryawan dengan TelpKaryawan untuk model relasi multivalued Mempunyai
Karyawan ( kdKaryawan,
TelpKaryawan ( kdKaryawan,
namaKaryawan, telpKaryawan
telpKaryawan)
Primary Key : kdKaryawan
Primary Key : kdKaryawan Foreign Key : kdKaryawan referensi : Karyawan
4.1.2.3 Memvalidasi Relasi Menggunakan Normalisasi a. Normalisasi Database sudah dalam bentuk normalisasi pertama dan normalisasi kedua karena
121 sudah ditentukan primary key-nya pada perancangan konseptual, juga telah dipecah antara tabel header dan tabel detail transaksi serta telah dihilangkan atribut multi-valued pada tahap menghapus fitur yang tidak kompatibel di dalam tahap perancangan logikal. M aka pada tahap selanjutnya adalah meghilangkan ketergantungan transitif ( transitive depedency ) sehingga memenuhi aturan 3NF. 1. UNF Order Pembelian (KdPO, KdBarang, KdSupplier, TglPembelian, Jumlah, KdKaryawan) Order Penjualan (KdDO, KdBM , KdPelanggan, NamaSupir, NoPlat, Tipe, KdKaryawan, TglPenjualan) Bahan M entah (KdBM , namaBM , hargaBM , SatuanBM ) Karyawan (KdKaryawan, NamaKaryawan, AlamatKaryawan, TelpKaryawan, KdStatus) Status Karyawan (KdStatus, NamaStatus) Pelanggan (KdPelanggan, NamaPelanggan, AlamatPelanggan, TelpPelanggan, BankPelanggan, RekeningPelanggan, TipePelanggan, DepositPelanggan) Supplier (KdSupplier, NamaSupplier, AlamatSupplier, TelpSupplier,KdBarang) Gudang (KdGudang, NamaGudang, KdKaryawan,TglM asukGudang,TglKeluarGudang) M asukGudang (KdM asukGudang, KdPO, TglM asukGudang) KeluarGudang (KdKeluarGudang, KdBarang, KdKaryawan, TglKeluarGudang, Keterangan, KdKaryawanPeminta, Jumlah) Barang (KdBarang, NamaBarang, Spesifikasi) 2. 1NF Order Pembelian (KdPO, KdBarang, KdSupplier, TglPembelian, KdKaryawan)
122 Order Penjualan (KdDO, KdBM , KdPelanggan, NamaSupir, NoPlat, Tipe, KdKaryawan, TglPenjualan) Bahan M entah (KdBM , namaBM , hargaBM , SatuanBM ) Karyawan (KdKaryawan, NamaKaryawan, AlamatKaryawan, TelpKaryawan, KdStatus) Status Karyawan (KdStatus, NamaStatus) Pelanggan (KdPelanggan, NamaPelanggan, AlamatPelanggan, TelpPelanggan, BankPelanggan, RekeningPelanggan, TipePelanggan, DepositPelanggan) Supplier (KdSupplier, NamaSupplier, AlamatSupplier, TelpSupplier,KdBarang) Gudang (KdGudang , NamaGudang, KdKaryawan,TglM asukGudang,TglKeluarGudang) M asukGudang (KdM asukGudang, KdPO, TglM asukGudang) KeluarGudang (KdKeluarGudang, KdBarang, KdKaryawan, TglKeluarGudang, Keterangan, KdKaryawanPeminta, Jumlah) Barang (KdBarang, NamaBarang, Spesifikasi) 3. 2NF Order Pembelian (KdPO, KdBarang, KdSupplier, TglPembelian, KdKaryawan) Order Penjualan (KdDO, KdBM , KdPelanggan, NamaSupir, NoPlat, Tipe, KdKaryawan, TglPenjualan) Bahan M entah (KdBM , namaBM , hargaBM , SatuanBM ) Karyawan (KdKaryawan, NamaKaryawan, AlamatKaryawan, TelpKaryawan, KdStatus) Status Karyawan (KdStatus, NamaStatus) Pelanggan (KdPelanggan, NamaPelanggan, AlamatPelanggan, TelpPelanggan, BankPelanggan, RekeningPelanggan, TipePelanggan, DepositPelanggan)
123 Supplier (KdSupplier, NamaSupplier, AlamatSupplier, TelpSupplier,KdBarang) Gudang (KdGudang , NamaGudang, KdKaryawan,TglM asukGudang,TglKeluarGudang) M asukGudang (KdM asukGudang, KdPO, TglM asukGudang) KeluarGudang (KdKeluarGudang, KdBarang, KdKaryawan, TglKeluarGudang, Keterangan, KdKaryawanPeminta, Jumlah) Barang (KdBarang, NamaBarang, Spesifikasi)
4. 3NF Order Pembelian (KdPO, KdBarang, KdSupplier, TglPembelian, KdKaryawan) Order Penjualan (KdDO, KdBM , KdPelanggan, NamaSupir, NoPlat, Tipe, KdKaryawan, TglPenjualan) Bahan M entah (KdBM , namaBM , hargaBM , SatuanBM ) Karyawan (KdKaryawan, NamaKaryawan, AlamatKaryawan, TelpKaryawan, KdStatus) Status Karyawan (KdStatus, NamaStatus) Pelanggan (KdPelanggan, NamaPelanggan, AlamatPelanggan, TelpPelanggan, BankPelanggan, RekeningPelanggan, TipePelanggan, DepositPelanggan) Supplier (KdSupplier, NamaSupplier, AlamatSupplier, TelpSupplier, KdBarang) Gudang (KdGudang , NamaGudang, KdKaryawan, TglM asukGudang, TglKeluarGudang) M asukGudang (KdM asukGudang, KdPO, TglM asukGudang) KeluarGudang (KdKeluarGudang, KdKaryawan, TglKeluarGudang, Keterangan, KdKaryawanPeminta) Barang (KdBarang, NamaBarang, Spesifikasi)
124 KeluarGudangDetail (KdKeluarGudangDetail, KdBarang, Jumlah) Detail Pembelian (KdDetailPembelian, KdPO, KdBarang, Jumlah) Detail Penjualan (KdDetailPenjualan, KdDO, KdBM , Jumlah) Detail Gudang(KdDetailGudang, KdGudang, KdBarang, Posisi, Jumlah) Detail BarangSuplier (KdDetailBarangSupplier, KdSupplier, KdBarang, Harga, LastUpdate) Telp Karyawan (KdKaryawan,TelpKaryawan) Telp Pelanggan (KdPelanggan, TelpPelanggan) Telp Supplier (KdSupplier, TelpSupplier)
Hasil Validasi Normalisasi • Order Pembelian (KdPO, KdBarang, KdSupplier, TglPembelian, KdKaryawan) Primary Key : KdPO Foreign Key : KdBarang references Barang (KdBarang) Foreign Key : KdSupplier reference Supplier (KdSupplier) • Order Penjualan (KdDO, KdBM , KdPelanggan, NamaSupir, NoPlat, Tipe, KdKaryawan, TglPenjualan) Primary Key : KdDO Foreign Key : KdBM references Bahan M entah (KdBarang) Foreign Key : KdPelanggan reference Pelanggan (KdPelanggan) Foreign Key : KdKaryawan reference Karyawan (KdKaryawan) • Karyawan (KdKaryawan, NamaKaryawan, AlamatKaryawan, TelpKaryawan, KdStatus) Primary Key : KdKaryawan
125 Foreign Key : KdStatus reference Status Karyawan (KdStatus) • Supplier (KdSupplier, NamaSupplier, AlamatSupplier, TelpSupplier,KdBarang) Primary Key : KdSupplier Foreign Key : KdBarang reference Barang (KdBarang) • Gudang (KdGudang , NamaGudang, KdKaryawan,TglM asukGudang,TglKeluarGudang) Primary Key : KdGudang Foreign Key : KdKaryawan reference Karyawan (KdKaryawan) • M asukGudang (KdM asukGudang, KdPO, TglM asukGudang) PrimaryKey : KdM asukGudang Foreign Key : KdPO reference OrderPembelian (KdPO) • KeluarGudang (KdKeluarGudang, KdKaryawan, TglKeluarGudang, Keterangan, KdKaryawanPeminta) Primary Key : KdKeluarGudang Foreign Key : KdKaryawan reference Karyawan (KdKaryawan) • KeluarGudangDetail (KdKeluarGudangDetail, KdBarang, Jumlah) Primary Key : KdKeluarGudangDetail Foreign Key : KdBarang reference Barang (KdBarang) • Detail Pembelian (KdDetailPembelian, KdPO, KdBarang, Jumlah) Primary Key : KdDetailPembelian, KdBarang Foreign Key : KdPO reference Order Pembelian (KdPO) Foreign Key : KdBarang reference Barang (KdBarang) • Detail Penjualan (KdDetailPenjualan, KdDO, KdBM , Jumlah) Primary Key : KdDetailPenjualan, KdBM
126 Foreign Key : KdDO reference Order Penjualan (KdDO) Foreign Key : KdBM reference Bahan M entah (KdBM ) • Detail Gudang(KdDetailGudang, KdGudang, KdBarang, Posisi, Jumlah) Primary Key : KdDetailGudang Foreign Key : KdBarang reference Barang (KdBarang) Foreign Key : KdGudang reference Gudang (KdKaryawan) • Detail BarangSuplier (KdDetailBarangSupplier, KdSupplier, KdBarang, Harga, LastUpdate) Primary Key : KdDetailBarangSupplier Foreign Key : KdSupplier reference Supplier (KdSupplier) Foeihgn Key : KdBarang reference Barang (KdBarang) • Telp Karyawan (KdKaryawan,TelpKaryawan) Primary Key : TelpKaryawan Foreign Key : KdKaryawan reference Karyawan (KdKaryawan) • Telp Pelanggan (KdPelanggan, TelpPelanggan) Primary Key : TelpPelanggan Foreign Key : KdPelanggan reference Pelanggan (KdPelanggan) • Telp Supplier (KdSupplier, TelpSupplier) Primary Key : TelpSupplier Foreign Key : KdSupplier reference Supplier (KdSupplier)
4.1.2.4 Mengecek Integrity Constraint • Bahan M entah (KdBM , namaBM , hargaBM , SatuanBM ) Primary Key : KdBM
127
• Status Karyawan (KdStatus, NamaStatus) Primary Key : KdStatus • Barang (KdBarang, NamaBarang, Spesifikasi) Primary Key : KdBarang • Supplier (KdSupplier, NamaSupplier, AlamatSupplier, TelpSupplier,KdBarang) Primary Key : KdSupplier Foreign Key : KdBarang references Barang (KdBarang) ON UPDATE CASCADE ON DELETE NO ACTION • Pelanggan (KdPelanggan, NamaPelanggan, AlamatPelanggan, TelpPelanggan, BankPelanggan, RekeningPelanggan, TipePelanggan, DepositPelanggan) Primary Key : KdPelanggan • Order Pembelian (KdPO, KdBarang, KdSupplier, TglPembelian, KdKaryawan) Primary Key : KdPO Foreign Key : KdBarang references Barang (KdBarang) ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key : KdSupplier reference Supplier (KdSupplier) ON UPDATE CASCADE ON DELETE NO ACTION
128 • Order Penjualan (KdDO, KdBM , KdPelanggan, NamaSupir, NoPlat, Tipe, KdKaryawan, TglPenjualan) Primary Key : KdDO Foreign Key : KdBM references Bahan M entah (KdBarang) ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key : KdPelanggan reference Pelanggan (KdPelanggan) ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key : KdKaryawan reference Karyawan (KdKaryawan) ON UPDATE CASCADE ON DELETE NO ACTION • Karyawan (KdKaryawan, NamaKaryawan, AlamatKaryawan, TelpKaryawan, KdStatus) Primary Key : KdKaryawan Foreign Key : KdStatus reference Status Karyawan (KdStatus) ON UPDATE CASCADE ON DELETE NO ACTION • Gudang (KdGudang , NamaGudang, KdKaryawan,TglKeluarBarang,TglM asukGudang) Primary Key : KdGudang Foreign Key : KdKaryawan reference Karyawan (KdKaryawan) ON UPDATE CASCADE ON DELETE NO ACTION • M asukGudang (KdM asukGudang, KdPO, TglM asukGudang) Primary Key : KdM asukGudang Foreign Key : KdPO reference OrderPembelian (KdPO) ON UPDATE CASCADE ON DELETE NO ACTION • KeluarGudang (KdKeluarGudang, KdKaryawan, TglKeluarGudang, Keterangan, KdKaryawanPeminta) Primary Key : KdKeluarGudang
129 Foreign Key : KdBarang reference Barang (KdBarang) ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key : KdKaryawah reference Karyawah (KdKaryawan) ON UPDATE CASCADE ON DELETE NO ACTION • KeluarGudangDetail (KdKeluarGudangDetail, KdBarang, Jumlah) Primary Key : KdKeluarGudangDetail Foreign Key : KdBarang reference Barang (KdBarang) ON UPDATE CASCADE ON DELETE NO ACTION • Detail Pembelian (KdDetailPembelian, KdPO, KdBarang, Jumlah) Primary Key : KdDetailPembelian, KdBarang Foreign Key : KdPO reference Order Pembelian (KdPO) ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key : KdBarang reference Barang (KdBarang) ON UPDATE CASCADE ON DELETE NO ACTION • Detail Penjualan (KdDetailPenjualan, KdDO, KdBM , Jumlah) Primary Key : KdDetailPenjualan, KdBM Foreign Key : KdDO reference Order Penjualan (KdDO) ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key : KdBM reference Bahan M entah (KdBM ) ON UPDATE CASCADE ON DELETE NO ACTION • Detail Gudang(KdDetailGudang, KdGudang, KdBarang, Posisi, Jumlah) Primary Key : KdDetailGudang Foreign Key : KdBarang reference Barang (KdBarang) ON UPDATE CASCADE ON DELETE NO ACTION
130 Foreign Key : KdGudang reference Gudang (KdGudang) ON UPDATE CASCADE ON DELETE NO ACTION • Detail BarangSuplier (KdDetailBarangSupplier, KdSupplier, KdBarang, Harga, LastUpdate) Foreign Key : KdBarang reference Barang (KdBarang) ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key : KdSupplier reference Supplier (KdSupplier) ON UPDATE CASCADE ON DELETE NO ACTION • Telp Karyawan (KdKaryawan,TelpKaryawan) Primary Key : TelpKaryawan Foreign Key : KdKaryawan reference Karyawan (KdKaryawan) ON UPDATE CASCADE ON DELETE NO ACTION • Telp Pelanggan (KdPelanggan, TelpPelanggan) Primary Key : TelpPelanggan Foreign Key : KdPelanggan reference Pelanggan (KdPelanggan) ON UPDATE CASCADE ON DELETE NO ACTION • Telp Supplier (KdSupplier, TelpSupplier) Primary Key : TelpSupplier Foreign Key : KdSupplier reference Supplier (KdSupplier) ON UPDATE CASCADE ON DELETE NO ACTION
131 4.1.2.5 Pembuatan Model Basis Data Logikal Global
OrderPe mbel ian
1..1 memua t 1..1
Orde rPenj ual an
Ba rang
PK
KdPO
FK1 FK2 FK3
Tg lPemb eli an KdSup pli er KdBara ng KdKarya wan
PK
K dB ara ng
FK1
N amaBa rang Sp esifika si Kd Supp lie r
1 ..1 beri sikan 0 ..*
1..1 b erisi kan 1..*
PK
K dD O
FK1 FK3
N amaSu pir N oPla t Tip e Tgl Penj ual an Kd Pela ngg an Kd Karyaw an
Bah anMen ta h PK
Na maBM Ha rgaBM Satua nBM
1 ..1 di paso k 1 ..*
Sup pli er
KdBM
1..1 beri sikan 1 ..*
1..1 me mili ki 1..*
D etail Pembel ian PK
K dSupplier N amaSu ppl ier Al amatSup pli er 1..1 terd apa t 1..* 1..1 me mili ki 1..* Tel pSup pli er
PK
KdDeta ilPem be lian
FK1 FK2
Jumla h KdPO KdBara ng
1..* ditan gan i 0..* 1..1 me mili ki 1..*
PK Tel pSup pli er PK
FK1
TelpSupplier
FK1
K dGuda ng
PK
1 ..1 di ta nga ni 1..*
N amaGud ang Kd Karyaw an Tgl MasukGud ang Tgl Kelu arGuda ng
KdDe tailPe njualan
KdKar yawan
FK1 FK2
Juml ah KdD O KdBM
1 ..* be risika n 1..1 Nama Karyaw an Alama tKa ryawa n Te lpKa ryawa n KdStatus
PK
Karya wan
1 ..1 di bua t ol eh 0..* 1 ..1 terdap at p ada 1 ..* 1 ..1 memp unya i 1..* Gud ang
FK1 1 ..1 memu at 1 ..*
1..1 me mili ki 1..1
KdSu ppl ier 1..1 mempu nyai 1..*
Masu kGu dan g PK
KdMas ukGuda ng
FK1
TglMa sukGu dan g KdBa rang
1..1 mempu nyai 1 ..1 1 ..1 memp unya i 1..*
Sta tu sKaryaw an PK
D etail Penj ual an PK
Pela ngg an KdPelanggan Nama Pela ngg an Alama tPe lan gga n Te lpPe lan gga n BankPe lan gga n Reke nin gPel ang gan Ti pePe lan gga n Dep ositPel ang gan
KdStatus 1..1 ditan gan i 1..* Nama Sta tu s
Detai lGuda ng
Telp Karyaw an
PK
KdDeta ilGudang
PK
TelpK ary awan
FK1
KdKa ryawa n
FK1 FK2
Posisi Jumla h KdGuda ng KdBara ng
1..1 mempu nyai 1 ..*
Kel uarGud ang Detai l PK
KdKe luar GudangD etail 1 ..1 memp unyai 1 ..*
FK2 FK1
Kelu arGuda ng PK
KdBa rang Juml ah KdKe lua rGu dan g
FK2
KdKe luar Gudang TglKe lua rGu dan g KdKa ryawa n KdKa ryawa nPemi nta Ketera nga n
De ta ilBa rang Suppl ier PK
KdDeta ilBa rangSupplier
FK1 FK2
Harg a LastUp date KdSup pli er KdBara ng
Gambar 4.6 Model basis data logikal global
Telp Pela ngg an PK
Te lpPelangga n
FK1
KdPel ang gan
132 4.1.3 Perancangan Database Physical 4.1.3.1 Menentukan DBMS Pemilihan DBM S ini merupakan hal yang dilakukan untuk menentukan DBM S apa yang nantinya akan digunakan oleh perusahaan. DBM S yang menjadi pertimbangan adalah : SQL Server2000, M ySQL 5.1.30 berikut adalah pertimbangan yang menjadi faktor dalam memilih DBM S : DBM S Keterangan
SQL Server2000
My SQL 5.1.30
Tipe DBM S
Transactional Database Server
Relational Database Server (Trancactional dengan driver InnoDB)
Biaya
$1,489-$4,999 (Profesional Edition)
$0 (lisensi atau $395 komersial)
umum) (lisensi
Kebutuhan Keras
Piranti Intel Pentium II atau Kebutuham minimum AM D k6-II processor yang diperlukan 64M B RAM, 380 M B system operasinya harddisk space
Kebutuhan Lunak
Piranti Windows 2000 Server atau Windows .NET Server 2003, Internet Explorer 5.0
Kelebihan
M endukung kehandala
Linux / Sistem operasi berbasis UNIX, MyODBC (untuk ODBC driver support), Connector / J (untuk JDBC driver support Pengaksesan database dapat dilakukan
133 n dan keamanan enterprise, dapat menjalankan database dalam satu server Kekurangan
Keterbatasan database
Pemenuhan ACID
dengan mudah dan lebih cepat, data tersimpan pada tabel yang terpisah, lebih stabil
Biaya cukup tinggi Tidak sepenuhnya memerlukan kompatibel dengan Windows 2000 Server SQL92 (yang menyebabkan masalah dengan aplikasi server yang membuat query SQLnya sendiri, versi yang Cuma-Cuma tidak mendapatkan bantuan teknis, tidak dapat mengunci obyek di bawah level table Terbatas mendekati Terbatas hingga 32 miliar obyek dalam index tiap database tabel, ukuran database terbatas hingga ukuran terbesar file dari sistem operasinya Ya Ya
Kehandalan
M endukung failover Pirate lunak cluster, pemulihan source point in time, dapat melakukan restart jika terhenti
Keamanan
M enggunakan authentifikasi dengan pilihan untuk menyatukan kemanan database dengan keamanan Windows 2000 Server
Standar
SQL99, ODBC, SQL
open
MySQL memiliki beberapa lapisan sekuritas seperti level subnetmask, nama host, dan izin akses user dengan sistem perizinan yang mendetail serta sandi terenkripsi. XM L, SQL92 Intermediate, JDBC, T- ODBC (memerlukan MyODBC, JDBC
134 Platform SQL Server 2000
My SQL 5.1.30
Windows-based (termasuk Windows 9x, Windows 2000, Windows NT dan Windows CE) Windows-based (termasuk Windows 9x, Windows 2000, Windows NT, Windows XP, dan Windows CE), Linux / Unix, M ac OS X, Solaris, Building ffrom source
Hardware Keterangan Processor
SQL Server 2000 Pentium 166 MHZ atau lebih
M emori
32M B RAM (minimal untuk desktop engine), 64M B(minimal untuk semua edisi) 270M B (full installation), 250M B(typical installation), 95M B(minimal), desktop engine : 44M B, analysis Service : minimal 50 dan 130M B, typical English Query : 80M B
Harddisk Space
My SQL 5.1.30 Untuk Windows : Pentium II 300 MHz (600 MHz recommended ) 64 M B RAM ( 128M B Recommended ) Typical installation minimal 140 M B
Data tersebut menggambarkan bahwa SQL Server 2000 memiliki kemampuan yang lebih baik dibandingkan dengan MySQL, namun biaya yang dikeluarkan cukup tinggi. Dengan pertimbangan masalah biaya, kemudahan teknis kapasitas DBM S dibandingkan dengan jumlah transaksinya maka disarankan M ySQL sebagai DBM S yang digunakan untuk mengimplementasikan rancangan database.
135 4.1.3.2 Menterjemahkan Global Logikal Data Model untuk Target DBMS Merancang base relations
Domain Kode_Pelanggan : Integer, length 12 Domain Nama_Pelanggan : Variable character, length 128 Domain Deposit_Pelanggan : Integer, length 12 Domain Alamat_Pelanggan : Variable character, length 128 Domain Telpon_Pelanggan : Variable character, length 128 Domain Bank_Pelanggan : Variable character, length 128 Domain Rekening_Pelanggan : Variable character, length 128 Domain Tipe_Pelanggan : Integer, length 12
Pelanggan ( Kd_Pelanggan Kode_Pelanggan NOT NULL, Nama_Pelanggan Nama_Pelanggan NOT NULL, Deposit_Pelanggan Deposit_Pelanggan NOT NULL, Alamat_Pelanggan Alamat_Pelanggan NOT NULL, Telp_Pelanggan Telpon_Pelanggan NOT NULL, Bank_Pelanggan Bank_Pelangan NOT NULL, Rekening_Pelanggan Rekening_Pelanggan NOT NULL, Tipe_Pelanggan Tipe_Pelanggan NOT NULL Primary Key (Kd_Pelanggan) );
136 Domain Kode_Supplier : Integer, length 12 Domain Nama_Supplier : Variable character, length 128 Domain Alamat_Supplier : Variable character, length 128 Domain Telpon_Supplier : Variable character, length 128
Supplier( Kd_Supplier Kd_Suplier NOT NULL, Nama_Supplier Nama_supplier NOT NULL, Deposit_Supplier Deposit_supplier NOT NULL, Alamat_Supplier Alamat_Supplier NOT NULL, Telp_Supplier Telepon_supplier NOT NULL, Primary Key (Kd_Supplier) ); Domain Kode_Detail_Barang_Supplier : Integer, length 12 Domain Kode_Supplier : Integer, length 12 Domain Kode_Barang : Integer, length 12 Domain Harga : Integer, length 12 Domain Last_Update : Datetime
DetailBarangSupplier ( Kd_Detail_Barang_Supplier Kode_Detail_Barang_Supplier NOTNULL Kd_Supplier Kode_Supplier NOTNULL Kd_Barang Kode_Barang NOTNULL Harga Harga NOTNULL
137 Last_Update Last_Update NOTNULL ); Domain Kode_Karyawan Integer, length 12 Domain Nama_Karyawan Variable character, length 128 Domain Alamat_Karyawan Variable character, length 128 Domain Telp_Karyawan Integer, length 12 Domain Kd_Status Integer, length 12
Karyawan ( Kd_Karyawan Kode_Karyawan NOT NULL, Nama_Karyawan Nama_Karyawan NOT NULL, Alamat_Karyawan Alamat_Karyawan NOT NULL, Telp_Karyawan Telp_Karyawan NOT NULL, Kd_Status Kd_Status NOT NULL Primary Key (Kd_Karyawan) );
Domain Kd_Status Integer, length 12 Domain Nama_Status Variable character, length 128
Status Karyawan ( Kd_Status Kd_Status NOT NULL, Nama_Status Nama_Status NOT NULL Primary Key (Kd_Status)
138 );
Domain Kode_BM : Integer, length 12 Domain Nama_BM : Variable character, length 128 Domain Ukuran_BM : Variable character, length 128 Domain Harga_BM : Variable character, length 128 Domain Satuan_BM : Variable character, length 128
Bahan M entah ( Kd_BM Kode_BM NOT NULL, Nama_BM Nama_BM NOT NULL, Ukuran_BM Ukuran_BM NOT NULL, Harga_BM Harga_BM NOT NULL, Satuan_BM Satuan_BM NOT NULL, Primary Key (Kd_BM ) );
Domain Kode_Barang : Integer, length 12 Domain Nama_Barang : Variable character, length 128 Domain Spesifikasi : Text
Barang ( Kd_Barang Kode_Barang NOT NULL, Nama_Barang Nama_Barang NOT NULL,
139 Spesifikasi Spesifikasi NOT NULL, Primary Key (Kd_Barang) );
Domain Kode_Gudang : Integer, length 12 Domain Kode_Barang : Integer, length 11 Domain Jumlah : Integer, length 11 Domain Posisi : Variable character, length 64
Detail Gudang ( Kd_Gudang Kode_Gudang NOT NULL, Kode_Barang Kode_Barang NOT NULL, Jumlah Jumlah NOT NULL, Posisi Posisi NOT NULL, Primary Key (Kd_Gudang, Posisi) ); Domain Kode_Gudang : Integer, length 11 Domain Nama_Gudang : Variable character, length 128 Domain Kode_Karyawan : Tiny integer, length 4
Gudang ( Kd_Gudang Kode_Gudang NOT NULL, Nama_Gudang Nama_Gudang NOT NULL, Kd_Karyawan Kode_Karyawan NOT NULL,
140 Primary Key (Kd_Gudang) );
Domain Kode_M asuk_Gudang : Integer, length 11 Domain Kode_Pembelian : Integer, length 11 Domain Tanggal_M asuk_Gudang : Datetime, length 8
M asuk_Gudang ( Kd_M asuk_Gudang Kode_M asuk_Gudang NOT NULL, Kd_Pembelian Kode_Pembelian NOT NULL, Tgl_M asuk_Gudang Tanggal_M asuk_Gudang NOT NULL, Primary Key (Kd_M asuk_Gudang) );
Domain Kode_Keluar_Gudang : Integer, length 11 Domain Kode_Karyawan : Integer, length 11 Domain Tanggal_Keluar_Gudang : Datetime, length 8 Domain Kode_Karyawan_Peminta : Integer, length 11 Domain Keterangan : Text
Keluar_Gudang ( Kd_Keluar_Gudang Kode_Keluar_Gudang NOT NULL, Kd_Karyawan Kode_Karyawan NOT NULL, Tgl_Keluar_Gudang Tanggal_Keluar_Gudang NOT NULL,
141 Keterangan Keterangan NULL Primary Key (Kd_Keluar_Gudang) );
Domain Kode_Keluar_Gudang : Integer, length 12 Domain Kode_Barang : Integer, length 12 Domain Jumlah : Integer, length 12
Keluar_Gudang_Detail ( Kd_Keluar_Gudang_Detail Kode_Keluar_Gudang_Detail NOT NULL, Kd_Barang Kode_Barang NOT NULL, Jumlah Jumlah NOT NULL, Primary Key (Kd_Keluar_Gudang, Kd_Barang) );
Domain Kode_Penjualan : Integer, length 12 Domain Kode_Pelanggan : Integer, length 12 Domain Nama_Pembeli : Variable character, length 128 Domain Nama_Supir : Variable character, length 128 Domain Nomor_Plat : Variable character, length 128 Domain Tipe : Integer, length 12 Domain Kode_Karyawan : Integer, length 12 Domain Tanggal_Penjualan : Datetime, length 8
142 PenjualanHeader ( Kd_Penjualan Kode_Penjualan NOT NULL, Kd_Pelanggan Kode_Pelanggan NOT NULL, Nama_Pembeli Nama_Pembeli NOT NULL, Nama_Supir Nama_Supir NOT NULL, Nomor_Plat Nomor_Plat NOT NULL, Jumlah Jumlah NOT NULL, Tipe Tipe NOT NULL, Kd_Karyawan Kode_Karyawan NOT NULL, Tgl_Penjualan Tanggal_Penjualan NOT NULL, Primary Key (Kd_PO) ); Domain Kode_Detail_Penjualan : Integer, length 12 Domain Kode_Penjualan : Integer, length 12 Domain Kode_BahanM entah: Integer, length 12 Domain Jumlah : Integer, length 12
Penjualan Detail ( Kd_Detail_Penjualan Kode_Detail_Penjualan NOTNULL, Kd_Penjualan Kode_Penjualan NOT NULL, Kd_BM Kode_Bahan_M entah NOTNULL Jumlah Jumlah NOTNULL ); Domain Kode_Pembelian : Integer, length 11
143 Domain Kode_Karyawan : Variable character, length 128 Domain Tanggal_Pembelian : Datetime, length 8 Domain Kode_Supplier : Integer, length 11
Pembelian_Header ( Kd_Pembelian Kode_Pembelian NOT NULL, Kd_Karyawan Kode_Karyawan NOT NULL, Tgl_Pembelian Tanggal_Pembelian NOT NULL, Kd_Supplier Kode_Supplier NOT NULL, Primary Key (Kd_Pembelian) );
Domain Kode_Pembelian : Integer, length 11 Domain Kode_Barang : Integer, length 11 Domain Jumlah: Integer, length 11
Pembelian_Detail ( Kd_Pembelian Kode_Pembelian NOT NULL, Kd_Barang Kode_Barang NOT NULL, Jumlah Jumlah NOT NULL, Primary Key (Kd_Pembelian, Kd_Barang) );
Domain Username Variable character, length 128
144 Domain Password Variable character, length 128 Domain Privillage Variable character, length 128 Domain Kode_Karyawan Integer, length 11
Login ( Username Username NOT NULL, Password Password NOT NULL, Privillage Privillage NOT NULL, Kd_Karyawan Kode_Karyawan NOT NULL, Primary Key (Username) );
4.1.3.3 Merancang Batasan Tujuan dari tahap ini adalah untuk merancang batasan yang tidak boleh dilanggar di dunia nyata, yang isinya antara lain: a. Karyawan tidak boleh memiliki lebih dari dua nomor telepon CONSTRAINT M axTelpKaryawan CHECK (NOT EXISTS (SELECT KdKaryawan FROM TeleponKaryawan GROUP BY KdKaryawan HAVING COUNT(*)>2)) b. Nomor telepon pelanggan tidak boleh lebih dari tiga CONSTRAINT M axTelpPelanggan CHECK (NOT EXISTS (SELECT KdPelanggan FROM TelpPelanggan GROUP BY KdPelanggan HAVING COUNT(*)>3))
145 4.1.3.4 Analisis Transaksi Langkah ini bertujuan untuk memahami fungsionalitas dari transaksi-transaksi yang akan berjalan pada basis data dan untuk menganalisa
transaksi-transaksi
yang
penting.
M atriks
menunjukkan transaksi yang dibutuhkan dan relasi yang diakses. Adapun matriks tersebut sebagai berikut : 1.
M elihat barang yang masih ada di Gudang
2.
M elihat bahan mentah yang masih ada di gudang
3.
M emasukkan barang baru dan bahan mentah baru
4.
M endapatkan informasi Pelanggan yang memesan Bahan M entah
5.
M endapatkan informasi mengenai Supplier
6. M engupdate data Pelanggan. 7.
M emasukkan data Pelanggan baru.
8.
M engupdate data Supplier
9.
M emasukkan Supplier baru
10. Karyawan membuat OrderPembelian. 11. M elihat OrderPembelian beserta siapa suppliernya 12. Karyawan membuat OrderPenjualan 13. M elihat daftar OrderPenjualan 14. M elihat daftar barang apa saja yang sudah masuk ke dalam gudang
146 15. M elihat daftar barang apa saja yang sudah keluar dari gudang 16. M elihat DetailPenjualan 17. M elihat DetailPembelian 18. M elihat DetailGudang
Tabel 4.26 Tabel Analisa Transaksi 1 Transaksi 1 Relasi
2
3
4
R U D I
R U D I
R U D I
R U D I
X
X
Karyawan Gudang DetailGudang Barang
X
X
X
Supplier TeleponKaryawan FakturPenjualan Pelanggan TeleponPelanggan TelpSupplier OrderPembelian DetailOrderPembelian TelpKaryawan StatusKaryawan
X
147 Transaksi 1 R U D I
Relasi BahanM entah
2
3
4
R U D I
R U D I
R U D I
X
X
X X
OrderPenjualan DetailOrderPenjualan KeluarGudangDetail M asukGudang KeluarGudang I=Insert ; R=Read ; U=Update ; D=Delete Tabel 4.27 Tabel Analisa Transaksi 2 Transaksi 5 Relasi
R U D I
6
7
8
R U D I
R U D I
R U D I
Karyawan Gudang DetailGudang Barang Supplier
X
X X
TeleponKaryawan Pelanggan
X X
X
TeleponPelanggan
X X
X
TelpSupplier OrderPembelian DetailOrderPembelian
X X
148 Transaksi 5 R U D I
Relasi
6
7
8
R U D I
R U D I
R U D I
TelpKaryawan StatusKaryawan BahanM entah OrderPenjualan DetailOrderPenjualan KeluarGudangDetail M asukGudang KeluarGudang I=Insert ; R=Read ; U=Update ; D=Delete Tabel 4.28 Tabel Analisa Transaksi 3 Transaksi 9 Relasi
R U D I
Karyawan
10
11
12
R U D I
R U D I
R U D I
X
X
Gudang DetailGudang Barang Supplier
X X
X
TeleponKaryawan Pelanggan
X
TeleponPelanggan TelpSupplier
X
149 Transaksi 9 R U D I
Relasi
10
11
12
R U D I
R U D I
R U D I
OrderPembelian
X
DetailOrderPembelian
X
TelpKaryawan StatusKaryawan BahanM entah
X
OrderPenjualan
X
DetailOrderPenjualan
X
KeluarGudangDetail M asukGudang KeluarGudang I=Insert ; R=Read ; U=Update ; D=Delete Tabel 4.29 Tabel Analisa Transaksi 4 Transaksi 13
14
15
16 R U D I
Relasi
R U D I
R U D I
R U D I
Karyawan
X
X
X
X
X
Gudang DetailGudang Barang
X
Supplier TeleponKaryawan Pelanggan
X
150 Transaksi 13 R U D I
Relasi
14
15
16
R U D I
R U D I
R U D I
TeleponPelanggan TelpSupplier OrderPembelian
X
DetailOrderPembelian TelpKaryawan StatusKaryawan
X
X
BahanM entah
X
X
OrderPenjualan
X
X
DetailOrderPenjualan
X
X
KeluarGudangDetail
X
M asukGudang
X
KeluarGudang
X
I=Insert ; R=Read ; U=Update ; D=Delete Tabel 4.30 Tabel Analisa Transaksi 5 Transaksi 17 Relasi
R U D I
18 R U D I
Karyawan Gudang
X
DetailGudang
X
Barang Supplier
X
X
151 Transaksi 17 R U D I
Relasi
18 R U D I
TeleponKaryawan Pelanggan TeleponPelanggan TelpSupplier OrderPembelian
X
DetailOrderPembelian
X
TelpKaryawan StatusKaryawan BahanM entah OrderPenjualan DetailOrderPenjualan KeluarGudangDetail M asukGudang KeluarGudang I=Insert ; R=Read ; U=Update ; D=Delete
4.1.3.5 Memilih Organisasi File Organisasi file yang dipilih pada perancangan basis data ini adalah B-Tree. B-Tree adalah sebuah balanced search tree yang
digunakan
dalam
basis
data
karena
strukturnya
memungkinkan data yang disimpan untuk disisipi, dihapus, dan diambil dengan jaminan proses dengan waktu terbaik. B-Tree
152 mendukung pengambilan data berdasarkan key yang tepat, pola yang tepat, kisaran nilai, dan bagian dari spesifikasi key. B-Tree index adalah dinamis yang berkembang sesuai dengan perkembangan relasi. Performa dari B-tree tidak terganggu saat ada relasi yang diupdate karena access key selalu dimaintain ketika ada file yang diupdate, sehingga penerimaan tuple dapat lebih efisien. 4.1.3.6 Memilih Index •
Karyawan CREATE CLUSTERED INDEX Id_KdKaryawan ON Karyawan (KdKaryawan) CREATE NONCLUSTERED INDEX Id_NamaKaryawan ON Karyawan (NamaKaryawan) CREATE INDEX
Id_KdStatus ON SatusKaryawan
(KdStatus) •
Status Karyawan CREATE
CLUSTERED
INDEX
Id_KdStatus
ON
StatusKaryawan (KdStatus) CREATE NONCLUSTERED INDEX Id_NamaStatus ON SttausKaryawan (NamaStatus) •
Pelanggan
153 CREATE CLUSTERED INDEX Id_KdPelanggan ON Pelanggan (KdPelanggan) •
Barang CREATE CLUSTERED
INDEX
Id_KdBarang ON
Barang (KdBarang) •
Supplier CREATE CLUSTERED INDEX Id_KdSupplier ON Supplier (KdSupplier)
•
Bahan M entah CREATE CLUSTERED INDEX Id_KdBM ON Bahan M entah (KdBM )
•
Telp Karyawan CREATE CLUSTERED INDEX Id_TelpKaryawan ON TelpKaryawan (TelpKaryawan)
•
Telp Supplier CREATE CLUSTERED INDEX Id_TelpSupplier ON TelpSupplier (TelpSupplier)
•
Telp Pelanggan
154 CREATE CLUSTERED INDEX Id_TelpPelanggan ON TelpPelanggan (TelpPelanggan) •
Gudang CREATE CLUSTERED INDEX Id_KdGudang ON Gudang (KdGudang) CREATE NONCLUSTERED INDEX Id_KdKaryawan ON Karyawan (KdKaryawan)
•
M asukGudang CREATE CLUSTERED INDEX Id_KdM asukGudang ON M asukGudang (KdM asukGudang)
•
KeluarGudang CREATE CLUSTERED INDEX Id_KdKeluarGudang ON KeluarGudang (KdKeluarGudang)
•
Detail Gudang CREATE CLUSTERED INDEX Id_KdDetailGudang ON DetailGudang (KdDetailGudang,KdGudang,KdBarang)
•
Detail Keluar Gudang
155 CREATE
CLUSTERED
Id_KdDetailKeluarGudang
ON
INDEX DetailKeluarGudang
(KdDetailKeluarGudang,KdGudang,KdBarang) •
Order Pembelian CREATE
CLUSTERED
INDEX
Id_KdPO
ON
OrderPembelian (KdPO) CREATE NONCLUSTERED INDEX Id_TglPembelian ON OrderPembelian (TglPembelian) •
Detail Order Pembelian CREATE CLUSTERED INDEX Id_KdDetailPembelian ON DetailPembelian (KdDetailPembelian, KdBarang)
•
Order Penjualan CREATE
CLUSTERED
INDEX
Id_KdDO
ON
OrderPenjualan (KdDO) CREATE NONCLUSTERED INDEX Id_TglPenjualan ON OrderPenjualan (TglPenjualan) •
Detail Penjualan CREATE CLUSTERED INDEX Id_KdDetailPenjualan ON DetailPenjualan (KdDetailPenjualan, KdBM )
156 •
Detail BarangSuplier CREATE
CLUSTERED
Id_KdDetailBarangSupplier
ON
INDEX DetailPenjualan
(KdDetailBarangSupplier, KdBarang) 4.1.3.7 Estimate disk space requirements Pelanggan Kd_Pelanggan
Int(12)
Nama_Pelanggan
Varchar(128)
Deposit_Pelanggan
Varchar(128)
Alamat_Pelanggan
Varchar(128)
Telp_Pelanggan
Varchar(128)
Bank_Pelanggan
Varchar(128)
Rekening_Pelanggan
Varchar(128)
Tipe_Pelanggan
Int(12)
Kapasitas dari Tabel Pelanggan adalah 673 bytes. Diperkirakan dalam satu hari terjadi 40 transaksi Dalam satu tahun pertumbuhan dari tabel ini adalah 40 transaksi * 7 hari kerja * 4 minggu * 12 bulan * 673 bytes = 9045120 bytes
Supplier Kd_Supplier
Int(12)
Nama_Supplier
Varchar(128)
157 Alamat_Supplier
Varchar(128)
Telp_Supplier
Varchar(128)
Kapasitas dari Tabel Supplier adalah 395 bytes. Diperkirakan dalam satu hari terjadi 10 transaksi Dalam satu tahun pertumbuhan dari tabel ini adalah 10 * 7 * 4 * 12 * 395 = 1327200 bytes
Detail_Barang_Supplier Kd_Supplier
Int(12)
Kd_Barang
Int(12)
Harga
Int(12)
Last_Update
Datetime(8)
Kapasitas dari Tabel DetailBarangSupplier adalah 41 bytes. Diperkirakan dalam satu hari terjadi 10 transaksi Dalam satu tahun pertumbuhan dari tabel ini adalah 10 * 7 * 4 * 12 * 41 = 137660 bytes
Karyawan Kd_Karayawan
Int(12)
Nama_Karyawan
Varchar(128)
Kapasitas dari Tabel Karyawan adalah 139 bytes.
158 Diperkirakan dalam satu hari terjadi 50 transaksi Dalam satu tahun pertumbuhan dari tabel ini adalah 50 * 7 * 4 * 12 * 139 = 2335200 bytes
Pembelian_Header Kd_Pembelian
Int(12)
Kd_Karyawan
Varchar(128)
Tgl_Pembelian
Datetime(8)
Kd_Supplier
Int(12)
Kapasitas dari Tabel PembelianHeader adalah 158 bytes. Diperkirakan dalam satu hari terjadi 1 transaksi Dalam satu tahun pertumbuhan dari tabel ini adalah 1 * 7 * 4 * 12 * 158 = 53088 bytes
Pembelian_Detail Kd_Pembelian
Int(12)
Kd_Barang
Int(12)
Jumlah
Int(12)
Kapasitas dari Tabel PembelianDetail adalah 33 bytes. Diperkirakan dalam satu hari terjadi 10 transaksi
159 Dalam satu tahun pertumbuhan dari tabel ini adalah 10 * 7 * 4 * 12 * 33 = 110880 bytes
Barang Kd_Barang
Int(12)
Nama_Barang
Varchar(128)
Spesifikasi
Text(300)
Kapasitas dari Tabel Barang adalah 439 bytes. Diperkirakan dalam satu hari terjadi 10 transaksi Dalam satu tahun pertumbuhan dari tabel ini adalah 10 * 7 * 4 * 12 * 439 = 1475040 bytes
Gudang Kd_Gudang
Int(12)
Nama_Gudang
Varchar(128)
Kd_Karyawan
Tiny Int(12)
Kapasitas dari Tabel Gudang adalah 143 bytes. Diperkirakan dalam satu hari terjadi 50 transaksi Dalam satu tahun pertumbuhan dari tabel ini adalah 50 * 7 * 4 * 12 * 143 = 2402400 bytes
Masuk_Gudang
160 Kd_M asuk_Gudang
Int(12)
Kd_Pembelian
Int(12)
Tgl_M asuk_Gudang
Datetime(8)
Kapasitas dari Tabel M asukGudang adalah 30 bytes. Diperkirakan dalam satu hari terjadi 10 transaksi Dalam satu tahun pertumbuhan dari tabel ini adalah 10 * 7 * 4 * 12 * 30 = 100800 bytes
Keluar_Gudang Kd_Keluar_Gudang
Int(12)
Kd_Karyawan
Int(12)
Tgl_Keluar_Gudang
Datetime(8)
Kd_Karyawan_Peminta
Int(12)
Keterangan
Text(300)
Kapasitas dari Tabel KeluarGudang adalah 341 bytes. Diperkirakan dalam satu hari terjadi 10 transaksi Dalam satu tahun pertumbuhan dari tabel ini adalah 10 * 7 * 4 * 12 * 341 = 1145760 bytes
161 Bahan_Mentah Kd_BM
Int(12)
Nama_BM
Varchar(128)
Ukuran_BM
Varchar(128)
Harga_BM
Varchar(128)
Satuan_BM
Varchar(128)
Kapasitas dari Tabel BahanM entah adalah 523 bytes. Diperkirakan dalam satu hari terjadi 100 transaksi Dalam satu tahun pertumbuhan dari tabel ini adalah 100 * 7 * 4 * 12 * 523 = 17572800 bytes
Penjualan Kd_Penjualan
Int(12)
Kd_Pelanggan
Int(12)
Nama_Pembeli
Varchar(128)
Nama_Supir
Varchar(128)
No_Plat
Int(12)
Kd_BM
Int(12)
Jumlah
Int(12)
Tipe
Int(12)
Kapasitas dari Tabel Penjualan adalah 458 bytes. Diperkirakan dalam satu hari terjadi 50 transaksi
162 Dalam satu tahun pertumbuhan dari tabel ini adalah 50 * 7 * 4 * 12 * 458 = 7694400 bytes
Nama Tabel
Kapasitas yang dibutuhkan dalam 1 tahun (Bytes)
Pelanggan
9045120
Supplier
1327200
Detail_Barang_Supplier
137660
Karyawan
2335200
Pembelian_Header
53088
Pembelian_Detail
110880
Barang
1475040
Stok_Barang
1629600
Gudang
2402400
M asuk_Gudang
100800
Keluar_Gudang
1145760
Keluar_Gudang_Detail
110880
Bahan_M entah
17572800
Penjualan
7694400
Total space yang dibutuhkan dalam 1 tahun : 45140828 Bytes atau 45140.828 Kbytes.
Total space yang dibutuhkan dalam 5 tahun adalah 225704.14 Kbytes
163 4.1.3.8 Desain user view Terdapat dua bagian yang berkaitan langsung dengan view yang diperlukan. User Operational Manager
View Barang View
Laporan Pembelian View
Administrasi dan Keuangan
Laporan Penjualan View
Tabel Penjualan
Field Tabel
KdPenjualan KdPelanggan NamaPembeli NamaSupir NoPlat KdBM Jumlah Tipe Barang KdBarang NamaBarang Spesifikasi Bahan M entah KdBM NamaBM UkuranBM HargaBM SatuanBM PembelianHeader KdPembelian KdKaryawan KdSupplier TanggalPembelian StatusPembelian PembelianDetail KdPembelian KdBarang Jumlah Penjualan KdPenjualan KdPelanggan NamaPembeli NamaSupir NoPlat KdBM Jumlah Tipe Pelanggan KdPelanggan NamaPelanggan DepositPelanggan AlamatPelanggan TelponPelanggan BankPelanggan RekeningPelanggan
164
Gudang View
Gudang
M asukGudang
KeluarGudang
Detail Gudang View
DetailGudang
TipePelanggan KdGudang NamaGudang KdKaryawan KdM asukGudang KdPembelian TanggalM asukGudang KdKeluarGudang TanggalKeluarGudang KdBarang KdGudang KdBarang Jumlah Posisi
4.1.3.9 Implementasi dan Evaluasi S pesifikasi Kebutuhan Hardware Perangakat keras sangat diperlukan dan sangat berpengaruh dalam kelancaran seluruh proses pengoperasian aplikasi sistem informasi PT. Cipta Selera Semesta. Spesifikasi hardware ini meliputi perangkat keras komputer pada server dan juga client. Representasi data perangkat keras yang diperlukan dapat dilihat pada tabel 4.31.
Tabel 4.31 Tabel spesifikasi perangkat keras yang diperlukan Hardware
Server
Client
Processor
Core 2 Duo 2.80 Ghz
Dual Core 2,50 Ghz
M ain M emory
PC 6400 2 GB
PC 6400 1 GB
M onitor
17”
15”
DVD Room
Ya
Ya
Floppy disk drive
Ya
Ya
165 Keyboard
Ya
Ya
M ouse
Ya
Ya
Printer
Ya
Ya
Harddisk
WDC 160GB
WDC 80GB
LAN Card
Network Interface Card
Network Interface Card
Jumlah
1 Ruang staff penjualan, ruang staff pembelian,
Letak
Ruang Kepala Bagian IT(Admin)
ruang staff gudang, ruang manajer pabrik, ruang manajer umum.
Dibutuhkan pula sebuah switch sebagai penghubung antara server dan client.
S pesifikasi Kebutuhan Software Selain piranti keras, juga diperlukan piranti lunaknya agar dapat menjalankan suatu aplikasi sistem informasi PT. Cipta Selera Semesta. Speisifikasi piranti lunak ini meliputi kebutuhan piranti lunak pada server dan client. Representasi data piranti lunak yang diperlukan dapat dilihat pada tabel 4.32.
166 Tabel 4.32 Tabel spesifikasi piranti lunak
Software
Server
Client
Adobe Dreamweaver CS3,
M ozilla Firefox
IIS (Internet Information Services), Xampp-win32-1.6.7 DBM S
My SQL 5.1.30
Sistem Operasi
M icrosoft Windows Server 2003
M icrosoft Windows XP Profesional Edition
Dalam penelitian ini memutuskan untuk menggunakan PHP dalam pembangunan aplikasinya. Hal ini dikarenakan penggunaan web based application ini lebih mudah diimplementasikan karena tidak perlu menginstall aplikasi pada setiap pengguna, dan jika ada perubahan maka hanya perlu mengubah dari sisi server.
S pesifikasi Kebutuhan Jaringan Setelah menentukan piranti keras maupun lunak dan besarnya kapasitas penyimpanan yang dibutuhkan, maka selanjutnya adalah tahap menentukan spesifikasi kebutuhan jaringan. Berikut ini merupakan spesifikasi kebutuhan jaringan yang diusulkan. Untuk dapat menjalankan sistem informasi yang dapat berhubungan dengan komputer lain dengan baik, maka dibutuhkan sebuah Network
167 Interface Card (NIC) : yang diletakkan pada setiap komputer client untuk dapat bisa saling berhubungan Kemudian dibutuhkan sebuah alat yang merupakan piranti untuk menyambungkan semua komputer tersebut, maka dibutuhkan Switch yang berfungsi untuk menghubungkan antara client dengan client dan juga dengan server. Penelitian ini mengusulkan agar menggunakan sistem jaringan Local Area Network (LAN). Aplikasi ini berbasiskan web dimana pertama kali browser akan berkoneksi ke jaringan internet lalu dari sana jaringan internet tersebut akan konek ke web server lalu ke applikasi server yang digunakan XAM PP, dari aplikasi server tersebut akan konek ke database server (M YSQL) untuk mendapatkan datanya. Setalah data didapatkan akan tampil ke halaman web. Berikut ini arsitektur jaringannya dapat dilihat pada gambar 4.7.
Gambar 4.7 Arsitekur Jaringan
168 Jadwal Implementasi Program aplikasi dan sistem basis data yang telah dibuat akan
diimplementasikan
menggantikan
ke
dalam
sistem yang lama.
perusahaan
Berikut
untuk
adalah
jadwal
implementasi yang direncanakan :
Jadwal Implementasi Program Aplikasi No
Kegiatan
M inggu 1
2
3
1
Pengadaan perangkat keras dan perangkat lunak
2
Instalasi Perangkat Keras
X
X
3
Instalasi Perangkat Lunak
X
X
4
Melakukan pengujian aplikasi program dan basis data
5
Mengadakan pelatihan bagi pengguna
6
Mengadakan evaluasi terhadap aplikasi program dan basis data
7
Operasi dan Maintenance
4
5
6
X
X
X
7
8
9
X
X
X
Pelatihan Pelatihan ini mencakup maintenance sistem basis data, cara penggunaan sistem, back up dan recovery data. Pelatihan cara penggunaan sistem dilakukan kepada operational manager dan bagian administrasi dan keuangan yang akan terlihat langsung
X X
169 dengan aplikasi. Pelatihan maintenance sistem basis data back up dan recovery data dilakukan kepada bagian administrasi dan keuangan yang berperan sebagai admin. Evaluasi User Tabel 4.33 Tabel Evaluasi User No 1
2
3
Nama M odul Pembelian
Sub M odul
Setuju / Tidak
Proses Pembelian Laporan Pembelian Cetak Laporan Pembelian
√ √
Proses Penjualan Laporan Penjualan Cetak Laporan Proses Penjualan Cetak Laporan Penjualan
√ √ √
Daftar M aterial Tambah M aterial
√
√
Penjualan
List M aterial
√
√ 4
5
Barang Daftar Barang M asuk Barang Keluar Barang Stok Barang
√ √ √
Daftar Supplier Tambah Supplier Tambah Barang Supplier
√ √
√
Supplier
√
Komentar Sistem baru yang ada sudah cukup mencerminkan dan membantu proses bisnis yang ada pada perusahaan. Sistem baru yang ada sudah cukup mencerminkan dan membantu proses bisnis yang ada pada perusahaan. Cukup membantu proses operasional yang berhubungan dengan material, mulai dari pendaftaran material dan pertambahan material baru. Cukup membantu proses operasional yang berhubungan dengan barang, mulai dari pendaftaran barang, barang keluar, masuk, sampai stok. Cukup membantu proses operasional yang berhubungan dengan supplier, mulai dari pendaftaran supplier, supplier baru, dan barang-baru dari supplier.
170 6
Pelanggan √ √
Daftar Pelanggan Tambah Pelanggan Tambah Deposit
√ 7
Gudang √
Daftar Gudang Tambah Gudang
√
Cukup membantu proses operasional yang berhubungan dengan pelanggan, mulai dari pendaftaran pelanggan, pelanggan baru, dan pendepositan barang oleh pelanggan. Cukup membantu proses operasional yang berhubungan dengan pergudangan, mulai dari pendaftaran gudang dan pertambahan gudang baru.
Setelah dilakukan evaluasi per masing-masing modul di dalam aplikasi yang sudah diimplementasikan, disepakati bahwa aplikasi sudah sesuai dengan proses bisnis anda. Dan aplikas i dapat dijalankan untuk mencapai tujuan dan manfaat yang sudah didefinisikan sebelumnya. Evaluasi Sistem Untuk evaluasi sistem ini, dilakukan pengujian terhadap Domain Integrity, Entity Integrity, References Integrity, dan Security pada basis data yang telah dirancang.
1. Domain Integrity Pengujian yang dilakukan adalah apakah nilai atribut yang dihasilkan
sesuai
dengan
domain
yang
telah
ditentukan
sebelumnya. Hal-hal yang diuji sebagai contoh adalah sebagai berikut :
171 • Domain atribut yang ditetapkan untuk notelpon pada tabel karyawan, supplier, dan pelanggan harus berisi angka. • Domain atribut yang ditetapkan untuk nama pada tabel karyawan, supplier, dan pelanggan harus berisi huruf/karakter dan tidak boleh lebih dari 20. • Pengujian juga dilakukan pada operasi yang diperbolehkan terjadi terhadap atribut yang ada hubungannya dengan atribut lain. Hasil eveluasi domain integrity menunjukkan bahwa seluruh tabel yang diuji telah memiliki domain integrity yang tepat.
2. Entity Integrity Pengujian yang dilakukan adalah menguji seluruh tabel dan memastikan bahwa tidak ada atribut dari suatu primary key yang bernilai ‘NULL’ dan tidak ada 2 record yang sama pada primary key pada suatu strong entity. Sebagai contoh adalah primary key pada tabel Karyawan (kdKaryawan) tidak boleh bernilai ‘NULL’ dan entity karyawan merupakan strong entity maka harus diuji bahwa tidak ada 2 record yang sama di dalam tabel tersebut. Hasil evaluasi entity integrity menunjukkan bahwa tabel yang ada telah memenuhi kriteria lulus uji.
3. References Integrity Hal yang diuji adalah setiap tabel telah berhubungan, terdapat foreign key dalam tabel yang terhubung tersebut dan nilai foreign
172 key harus sesuai dengan primary key pada tabel yang terhubung. Sebagai contoh adalah tabel Karyawan (kdKaryawan). Hasil evaluasi referential integrity membuktikan bahwa seluruh tabel telah terhubung dengan baik dimana terdapat foreign key dan nilai foreign key tersebut sesuai dengan primary key tabel yang terhubung.
4. Security Evaluasi security dimaksudkan untuk menguji apakah seluruh tabel memiliki keamanan berdasarkan mekanisme keamanan yang baik sehingga tidak terjadi penyimpangan atau penyalahgunaan data yang ada.Sebagai contoh adalah sebagai berikut : • Pengguna tidak diperbolehkan untuk mengakses dan melakukan perubahan atau transaksi pada data yang ada tanpa memasukkan username dan password dengan benar pada menu login. • Pengguna tidak dapat menyelesaikan transaksi yang dilakukan apabila terjadi ketidak sesuaian data ketika melakukan transaksi tersebut. Dalam hal ini, pengguna akan menerima pesan kesalahan sehingga perbaikan
dapat
dilakukan
dan
transaksi dapat
dilanjutkan. Hasil evaluasi security menunjukkan bahwa seluruh tabel dapat berjalan dengan benar mengikuti mekanisme keamanan yang baik.
173 5. Rencana back up dan recovery -
Rencana back up Untuk menjaga agar data tidak hilang, maka perlu
dilakukan back up secara rutin. Complete back up adalah back up yang dilakukan terhadap seluruh data yang terdapat di dalam sistem basis data. Complete back up akan dilakukan pertama kali pada saat basis data telah selesai diuji. Setelah itu complete back up akan dilakukan setiap bulan dan setiap tahun. Differential back up akan dilakukan pertama kali ketika complete back up telah selesai dibuat. Differential back up akan dilakukan seminggu sekali. Berikut tabel perencanaan back up yang akan dilakukan dan medianya: Waktu back up
Media penyimpanan
Mekanisme
M ingguan
Harddisk dan CD RW Back up (differential) secara otomatis oleh M YSQL dan manual pada CD RW
Bulanan
CD
Back up (full) secara M anual pada CD
Tahunan
DVD
Back up (full) secara M anual pada DVD
Tabel 4.34 Tabel Perencanaan back up
174 -
Rencana recovery Revovery dilakukan setelah terjadi kerusakan melalui media back up cadangan. Jika kerusakan harddisk terjadi, maka akan dilakukan recovery dari CD atau DVD dengan back up (full) dari minggu sebelumnya.
6.Performance Hasil dari evaluasi performance menunjukan bahwa sistem basis data dapat berjalan sesuai dengan rancangan dan dapat menghasilkan data dalam waktu singkat. 4.1.4.10 Prototype aplikasi Evaluasi aplikasi dilakukan dengan pihak perusahaan pada saat aplikasi telah dapat dioperasikan. Perusahaan mengevaluasi keakuratan data, kesesuaian aplikasi dengan kebutuhan perusahaan, dan performance dari aplikasi. Evaluasi aplikasi ditangani oleh operational manager dan karyawan bagian administrasi dan keuangan. Hasil evaluasi dari sistem basis data pembelian dan penjualan dari pihak perusahaan adalah: a.
Kelebihan
-
Sistem yang dihasilkan lebih mempermudah dan mempercepat proses pengumpulan, pemasukan, dan
175 peng-update-an
informasi
terhadap
proses
pembelian dan penjualan. -
Pembuatan
laporan
lebih
akurat
dan
dapat
dihasilkan dalam waktu yang lebih singkat. -
Aplikasi dapat memberikan
laporan transaksi
berdasarkan jangka waktu tertentu. -
Permasalahan yang mencakup keamanan telah dapat diatasi karena pembagian hak akses yang jelas.
-
Aplikasi dapat menampilkan dan memberikan laporan piutang pelanggan.
-
User interface sederhana dan mudah digunakan oleh pengguna.
b.
Kekurangan
-
Interface aplikasi web masih kurang menarik. Dari hasil evaluasi, secara keseluruhan aplikasi yang berbasiskan web sudah dapat memenuhi kebutuhan operasional perusahaan.