LAMPIRAN
Lampiran 1 – Implementasi Tabel
CREATE TABLE [Klien] (
[KodeKlien] [char] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[NamaKlien] [varchar] (30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[Alamat] [varchar] (70) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[Telepon] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT [PK_Client] PRIMARY KEY CLUSTERED (
[KodeKlien] ) ON [PRIMARY] ) ON [PRIMARY]
CREATE TABLE [Karyawan] (
[KodeKaryawan] [char] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[NamaKaryawan] [varchar] (30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[Username] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[Password] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[Alamat] [varchar] (70) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[Telepon] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
CONSTRAINT [PK_Karyawan] PRIMARY KEY CLUSTERED (
[KodeKaryawan] ) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [Barang] (
[KodeBarang] [char] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[NamaBarang] [varchar] (30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[Merk] [varchar] (25) COLLATE
SQL_Latin1_General_CP1_CI_AS NOT NULL , [Type] [varchar] (20) COLLATE
SQL_Latin1_General_CP1_CI_AS NOT NULL , [Harga] [int] NOT NULL,
CONSTRAINT [PK_Barang] PRIMARY KEY CLUSTERED (
[KodeBarang] ) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [Barang_Gudang] (
[KodeBarang] [char] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[KodeGudang] [char] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[Qty] [int] NOT NULL,
CONSTRAINT [FK_BarangGudang_Barang] FOREIGN KEY (
[KodeBarang] ) REFERENCES [Barang] ( [KodeBarang] ),
CONSTRAINT [FK_BarangGudang_Gudang] FOREIGN KEY ( [KodeGudang] ) REFERENCES [Gudang] ( [KodeGudang] ) ) ON [PRIMARY]
CREATE TABLE [Barang_Pesanan] (
[KodeBarang] [char] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[KodePesan] [char] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[Qty] [int] NOT NULL,
CONSTRAINT [FK_Barang_Pesanan_Barang] FOREIGN KEY (
[KodeBarang] ) REFERENCES [Barang] ( [KodeBarang] ),
CONSTRAINT [FK_Barang_Pesanan_Purchase_Order] FOREIGN KEY
( [KodePesan] ) REFERENCES [Purchase_Order] ( [KodePesan] ) ) ON [PRIMARY]
CREATE TABLE [Barang_Spesifikasi] ( [KodeBarang] [char] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[KodeSpesifikasiTeknis] [char] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[Qty] [int] NOT NULL,
CONSTRAINT [FK_Barang_Spesifikasi_Barang] FOREIGN KEY ( [KodeBarang] ) REFERENCES [Barang] ( [KodeBarang] ), CONSTRAINT [FK_Barang_Spesifikasi_Spesifikasi_Teknis] FOREIGN KEY ( [KodeSpesifikasiTeknis] ) REFERENCES [Spesifikasi_Teknis] ( [KodeSpesifikasiTeknis] ) ) ON [PRIMARY]
CREATE TABLE [Gudang] (
[KodeGudang] [char] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[KodeKaryawan] [char] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[NamaGudang] [varchar] (30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[Alamat] [varchar] (70) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[Telepon] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT [PK_Gudang] PRIMARY KEY CLUSTERED (
[KodeGudang] ) ON [PRIMARY]
CREATE TABLE [Tender] (
[KodeTender] [char] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[KodeKaryawan] [char] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[KodeKlien] [char] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[NamaTender] [varchar] (30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[LokasiTender] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[TanggalTender] [datetime] NOT NULL,
CONSTRAINT [PK_Tender] PRIMARY KEY CLUSTERED (
[KodeTender] ) ON [PRIMARY] ,
CONSTRAINT [FK_Tender_Client] FOREIGN KEY (
[KodeKlien] ) REFERENCES [Klien] ( [KodeKlien]
) ON DELETE CASCADE ON UPDATE CASCADE , CONSTRAINT [FK_Tender_Karyawan] FOREIGN KEY (
[KodeKaryawan] ) REFERENCES [Karyawan] ( [KodeKaryawan]
) ON DELETE CASCADE ON UPDATE CASCADE , CONSTRAINT [FK_Tender_Klien] FOREIGN KEY ( [KodeKlien] ) REFERENCES [Klien] ( [KodeKlien] ) ) ON [PRIMARY]
CREATE TABLE [Spesifikasi_Teknis] (
[KodeSpesifikasiTeknis] [char] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[KodeKaryawan] [char] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[KodeTender] [char] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[Tanggal] [datetime] NOT NULL,
CONSTRAINT [PK_Spesifikasi_Teknis] PRIMARY KEY CLUSTERED (
[KodeSpesifikasiTeknis] ) ON [PRIMARY] ,
CONSTRAINT [FK_Spesifikasi_Teknis_Karyawan] FOREIGN KEY ( [KodeKaryawan] ) REFERENCES [Karyawan] ( [KodeKaryawan] ),
CONSTRAINT [FK_Spesifikasi_Teknis_Tender] FOREIGN KEY ( [KodeTender] ) REFERENCES [Tender] ( [KodeTender] ) ) ON [PRIMARY]
CREATE TABLE [Proyek] (
[KodeProyek] [char] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[KodeKaryawan] [char] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[KodeTender] [char] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[NamaProyek] [varchar] (30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[LokasiProyek] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[TanggalMulai] [datetime] NOT NULL , [TanggalSelesai] [datetime] NOT NULL, CONSTRAINT [PK_Proyek] PRIMARY KEY CLUSTERED (
[KodeProyek] ) ON [PRIMARY] ,
CONSTRAINT [FK_Proyek_Karyawan] FOREIGN KEY (
[KodeKaryawan] ) REFERENCES [Karyawan] ( [KodeKaryawan] ),
CONSTRAINT [FK_Proyek_Tender] FOREIGN KEY (
[KodeTender] ) REFERENCES [Tender] ( [KodeTender]
) ON DELETE CASCADE ON UPDATE CASCADE ) ON [PRIMARY]
CREATE TABLE [Supplier] (
[KodeSupplier] [char] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[NamaSupplier] [varchar] (30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[Alamat] [varchar] (70) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[Telepon] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT [PK_Supplier] PRIMARY KEY CLUSTERED (
[KodeSupplier] ) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [Purchase_Order] ( [KodePesan] [char] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[KodeSupplier] [char] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[KodeKaryawan] [char] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[TanggalPesan] [datetime] NOT NULL , [Status] [char] (13) COLLATE
SQL_Latin1_General_CP1_CI_AS NOT NULL,
CONSTRAINT [PK_Purchase_Order] PRIMARY KEY CLUSTERED (
[KodePesan] ) ON [PRIMARY] ,
CONSTRAINT [FK_Purchase_Order_Supplier] FOREIGN KEY ( [KodeSupplier] ) REFERENCES [Supplier] ( [KodeSupplier] ) ) ON [PRIMARY]
CREATE TABLE [Tr_Pengeluaran] (
[NoPengeluaran] [char] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [KodeKaryawan] [char] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[KodePesan] [char] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[Tanggal] [datetime] NOT NULL , [TotalHarga] [int] NOT NULL,
CONSTRAINT [PK_Laporan_Pengeluaran] PRIMARY KEY CLUSTERED (
[NoPengeluaran] ) ON [PRIMARY] ,
CONSTRAINT [FK_Tr_Pengeluaran_Karyawan] FOREIGN KEY (
[KodeKaryawan] ) REFERENCES [Karyawan] ( [KodeKaryawan]
) ON DELETE CASCADE ON UPDATE CASCADE ,
CONSTRAINT [FK_Tr_Pengeluaran_Purchase_Order] FOREIGN KEY ( [KodePesan] ) REFERENCES [Purchase_Order] ( [KodePesan] ) ) ON [PRIMARY]
CREATE TABLE [Bukti_Pembayaran] (
[NoBuktiPembayaran] [char] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[NoPengeluaran] [char] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[KodeGudang] [char] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[TotalHarga] [int] NOT NULL,
CONSTRAINT [PK_Bukti_Pembayaran] PRIMARY KEY CLUSTERED (
[NoBuktiPembayaran] ) ON [PRIMARY] ,
CONSTRAINT [FK_Bukti_Pembayaran_Gudang] FOREIGN KEY (
[KodeGudang] ) REFERENCES [Gudang] ( [KodeGudang] ),
CONSTRAINT [FK_Bukti_Pembayaran_Laporan_Pengeluaran] FOREIGN KEY ( [NoPengeluaran] ) REFERENCES [Tr_Pengeluaran] ( [NoPengeluaran] ) ) ON [PRIMARY]
Lampiran 2 – Implementasi Constraint
ALTER TABLE [Klien]
ADD CONSTRAINT Cek_[kodeC]
CHECK ([KodeKlien] like 'C[0-9][0-9][0-9][0-9][0-9]' and len([KodeKlien]) = 6)
ALTER TABLE [Karyawan] ADD CONSTRAINT [kodeK]
CHECK ([KodeKaryawan] like 'K[0-9][0-9][0-9][0-9][0-9]' and len([KodeKaryawan]) = 6)
ALTER TABLE [Barang] ADD CONSTRAINT [kodeB]
CHECK ([KodeBarang] like 'B[0-9][0-9][0-9][0-9][0-9]' and len([KodeKaryawan]) = 6)
ALTER TABLE [Gudang] ADD CONSTRAINT [kodeG]
CHECK ([KodeGudang] like 'G[0-9][0-9][0-9][0-9][0-9]' and len([KodeGudang]) = 6)
ALTER TABLE [Tender] ADD CONSTRAINT [kodeT]
CHECK ([KodeTender] like 'T[0-9][0-9][0-9][0-9][0-9]' and len([KodeTender]) = 6)
ALTER TABLE [Spesifikasi_Teknis] ADD CONSTRAINT [kodeST]
CHECK ([KodeSpesifikasiTeknis] like 'ST[0-9][0-9][0-9][0-9]' and len([KodeSpesifikasiTeknis]) = 6)
ALTER TABLE Proyek ADD CONSTRAINT [kodeP]
CHECK ([[KodeProyek] like 'P[0-9][0-9][0-9][0-9][0-9]' and len([KodeProyek]) = 6)
ALTER TABLE [Supplier] ADD CONSTRAINT [kodeS]
CHECK ([KodeSupplier] like 'SPL[0-9][0-9][0-9]' and len([KodeSupplier]) = 6)
ALTER TABLE [Purchase_Order] ADD CONSTRAINT [kodePO]
CHECK ([KodePesan] like 'PS[0-9][0-9][0-9][0-9]' and len([KodePesan]) = 6)
ALTER TABLE [Tr_Pengeluaran] ADD CONSTRAINT [kodeTR]
CHECK ([NoPengeluaran] like 'LP[0-9][0-9][0-9][0-9]' and len([NoPengeluaran]) = 6)
ALTER TABLE [Bukti_Pembayaran] ADD CONSTRAINT [kodeBP]
CHECK ([NoBuktiPembayaran] like 'BP[0-9][0-9][0-9][0-9]' and len([NoBuktiPembayaran] = 6)
Lampiran 3 – Estimasi Disk Space
Menghitung ukuran tabel
1. Number of rows in the table = Num_Rows 2. Number of columns = Num_Cols
Sum of bytes in all fixed-length columns = Fixed_Data_Size
Number of variable-length columns = Num_Variable_Cols
Maximum size of all variable-length columns = Max_Var_Size
3. Null Bitmap (Null_Bitmap) = 2 + (( Num_Cols + 7) / 8 ), dibulatkan ke bawah. 4. Total size of variable-length columns (Variable_Data_Size) = 2 +
(Num_Variable_Cols x 2) + Max_Var_Size
Jika tidak ada variable-length columns, nilai Variable_Data_Size adalah 0. 5. Menghitung row size:
Total row size (Row_Size) = Fixed_Data_Size + Variable_Data_Size + Null_Bitmap +4
Penambahan 4 di belakang adalah untuk row header.
6. Menghitung number of rows per page (8096 free bytes per page): Number of rows per page (Rows_Per_Page) = ( 8096 ) / (Row_Size + 2) Menggunakan pembulatan ke bawah.
7. Number of free rows per page (Free_Rows_Per_Page) = 8096 x ((100 - Fill_Factor) / 100) / (Row_Size + 2)
Nilai Fill_Factor secara default adalah 100. 8. Menghitung jumlah page yang dibutuhkan:
Number of pages (Num_Pages) = Num_Rows / (Rows_Per_Page - Free_Rows_Per_Page)
Dilakukan pembulatan ke atas.
9. Menghitung jumlah byte yang dibutuhkan (8192 total bytes per page): Table size (bytes) = 8192 x Num_Pages
Lampiran 4 – Hasil Wawancara
Wawancara dengan Bapak Arifin Teguh selaku Wakil Direktur Teknik PT. Deva Adhines.
T: Bagaimana perusahaan ini mendapatkan proyek?
J: Perusahaan mendapatkan tawaran tender dari client, kemudian perusahaan menawarkan spesifikasi teknis kepada client untuk dilihat dan dipelajari, client yang berhak menilai, tentunya setelah mempelajari profile perusahaan, dan ketika client menyetujui spesifikasi teknis yang perusahaan ajukan, maka itu yang disebut dengan menang tender, secara sederhana kalu dijelaskan begitu. Bisa juga terjadi penunjukkan perusahaan secara langsung oleh client, biasanya itu dari client yang sudah mengenal perusahaan dengan baik.
T: Setelah itu?
J : Bersamaan waktunya ketika proyek ditangani, Direktur utama mengeluarkan surat perintah kerja agar Project manager memulai proyek. Project manager
bertugas mengecek dahulu spesifikasi teknis yang dikeluarkan sebelumnya dengan ketersediaan barang di gudang. Barang yang belum ada langsung di beli dari supplier.
T: Ketika proyek berlangsung apakah mungkin terjadi kekurangan barang? J : Perusahaan juga membeli dan memesan barang yang kurang selama proyek
berjalan.
T: Berapa gudang yang dimiliki perusahaan?
J : Perusahaan mempunyai tiga gudang, dua gudang tetap. Satu lainnya tergantung dari lokasi proyek.
T: Kalau supplier?
J : Sejak beberapa tahun terkahir ini perusahaan memiliki supplier yang tetap. T: Apakah mungkin mengerjakan lebih dari satu proyek dalam waktu bersamaan? J : Kalau proyeknya kecil mungkin saja, misal pembuatan rumah. Tetapi satu
proyek untuk satu tender.
T: Kalau pembayaran pemesanan barang dan proyek?
J: Setiap transaksi harus ada bukti pembayaran yang diterbitkan perusahaan.
Bapak Arifin Teguh a Wakil Direktur Teknik PT. Deva Adhines
Lampiran 5 – Pseudocode
1. Form Login AWAL
Tampilkan Form Login
User diminta memasukkan Username dan Password JIKA tombol Submit diklik MAKA
JIKA Username belum diisi MAKA tampilkan pesan kesalahan “Fill in your Username first!”
SELAIN ITU JIKA Password belum diisi MAKA tampilkan pesan kesalahan “Fill in your Password first!”
SELAIN ITU JIKA Username dan Password salah MAKA tampilkan pesan kesalahan “Username or Password is incorrect!”
SELAIN ITU tampil menu utama
AKHIR JIKA
AKHIR JIKA
2. Form Menu AWAL
Tampilkan Menu Utama JIKA user mengklik menu
File Tender maka akan tampil menu Form Tender File Proyek maka akan tampil menu Form Proyek
File Purchase Order maka akan tampil menu Purchase Order File Gudang maka akan tampil menu Form Gudang
File Exit maka akan keluar dari aplikasi AKHIR JIKA
JIKA user mengklik cetak laporan
Laporan Spesifikasi Teknis maka akan tampil Laporan Spesifikasi Teknis Laporan Purchase Order maka akan tampil Laporan Purchase Order Laporan Gudang maka akan tampil Laporan Gudang
AKHIR JIKA
AKHIR
3. Form Tender AWAL
JIKA user mengklik tombol
ADD maka akan diisi data tender baru AKHIR JIKA
JIKA user mengklik tombol
CANCEL maka akan dikosongkan semua tampilan AKHIR JIKA
JIKA user mengklik tombol
UPDATE maka akan diupdate data tender AKHIR JIKA
JIKA user mengklik tombol
DELETE maka akan dihapus data tender AKHIR JIKA
JIKA user mengklik tombol
SPESIFIKASI TEKNIS maka akan tampil Form Spesifikasi Teknis AKHIR JIKA
AKHIR
4. Form Spesifikasi Teknis AWAL
JIKA user mengklik tombol
ADD maka akan diisi data spesifikasi teknis baru AKHIR JIKA
JIKA user mengklik tombol
CANCEL maka akan dikosongkan semua tampilan AKHIR JIKA
JIKA user mengklik tombol
UPDATE maka akan diupdate data spesifikasi teknis AKHIR JIKA
JIKA user mengklik tombol
DELETE maka akan dihapus data spesifikasi teknis AKHIR JIKA
JIKA user mengklik tombol
AKHIR JIKA
JIKA user mengklik tombol
PRINT maka akan tampil Laporan Spesifikasi Teknis AKHIR
5. Form Cek Barang AWAL
JIKA user mengklik tombol
PURCHASE ORDER maka akan tampil Form Purchase Order AKHIR JIKA
AKHIR
6. Form Proyek AWAL
JIKA user mengklik tombol
ADD maka akan diisi data proyek baru AKHIR JIKA
JIKA user mengklik tombol
CANCEL maka akan dikosongkan semua tampilan AKHIR JIKA
JIKA user mengklik tombol
UPDATE maka akan diupdate data proyek AKHIR JIKA
JIKA user mengklik tombol
DELETE maka akan dihapus data proyek AKHIR JIKA
JIKA user mengklik tombol
PURCHASE ORDER maka akan tampil Form Purchase order AKHIR JIKA
AKHIR
7. Form Purchase Order AWAL
JIKA user mengklik tombol
ADD maka akan diisi data purchase order baru AKHIR JIKA
JIKA user mengklik tombol
CANCEL maka akan dikosongkan semua tampilan AKHIR JIKA
JIKA user mengklik tombol
UPDATE maka akan diupdate data purchase order AKHIR JIKA
JIKA user mengklik tombol
DELETE maka akan dihapus data purchase order AKHIR JIKA
JIKA user mengklik tombol
SUBMIT maka akan tampil Form Laporan Pengeluaran AKHIR JIKA
AKHIR
8. Form Laporan Pengeluaran AWAL
SUBMIT maka data akan disimpan ke database dan tampil Form Bukti Pembayaran
AKHIR JIKA AKHIR
9. Form Bukti Pembayaran AWAL
JIKA user mengklik tombol
SUBMIT maka data akan disimpan ke database dan tampil Laporan Pengeluaran
AKHIR JIKA AKHIR
10. Form Gudang AWAL
JIKA user mengklik tombol
PILIH GUDANG maka akan tampil data di gudang AKHIR JIKA