BAB 4
PERANCANGAN DAN IMPLEMENTAS I
4.1 Perancangan Basis Data
Perancangan basis data dilakukan sesuai dengan kebutuhan dari PT. Nabatindah Sejahtera. Proses perancangan basis data ini memiliki tiga tahapan, yaitu:
1. Perancangan basis data konseptual 2. Perancangan basis data logikal 3. Perancangan basis data fisikal 4.1.1 Perancangan Basis Data Konseptual
Pada tahap ini, perancangan dipusatkan pada proses pembuatan suatu model dari informasi yang akan digunakan oleh perusahaan. Semua hal tersebut terlepas dari segala pertimbangan fisik.
Tahapan ini menggunakan langkah-langkah berikut: 1. M engidentifikasi tipe entiti
2. M engidentifikasi tipe relationship
3. M engidentifikasi dan menghubungkan atribut dengan entiti atau tipe relationship
4. M enentukan atribut candidate dan primary key
4.1.1.1 Mengidentifikasi tipe entiti
Pada tahapan ini tabel identifikasi entiti yang menjadi kebutuhan dari perusahaan setelah melalui proses analisis sistem yang telah berjalan.
Table 4.1 Tabel tipe entiti dan detailnya Nama
Entiti
Keterangan Alias
Kejadian
Karyawan
M enjelaskan tentang data karyawan Karyawan Karyawan yang bekerja di PT. Nabatindah Sejahtera. Konsumen M enjelaskan tentang pelanggan yang menggunakan jasa kontraktor Pelanggan Setiap perusahaan yang memberikan permintaan proyek ke PT. Nabatindah Sejahtera Rental
M enjelaskan tentang data suplier peralatan untuk peminjaman
Rental
Setiap perusahaan penyewaan peralatan tempat meminjam peralatan berat untuk pengerjaan proyek.
Peralatan
M enjelaskan tentang data peralatan berat yang dipinjam dari rental
Peralatan
Setiap peralatan berat yang dipinjam dari rental yang digunakan
untuk pengerjaan proyek. Barang M enjelaskan informasi data barang Barang
Setiap barang yang dibeli dari suplier untuk digunakan dalam pengerjaan proyek.
Suplier
M enjelaskan tentang data suplier
Pemasok
Setiap perusahaan penyedia material barang dasar proyek.
Proyek
M enjelaskan tentang data proyek perusahaan
Proyek
Setiap proyek yang dikerjakan pada PT. Nabatindah Sejahtera Peminjaman M enjelaskan tentang transaksi peminjaman peralatan Peminjaman Setiap transaksi peminjaman peralatan berat yang dilakukan oleh PT. Nabatindah Sejahtera Pembelian M enjelaskan tentang transaksi pembelian Pembelian Setiap transaksi
pembelian barang yang dilakukan oleh PT. Nabatindah Sejahtera
Penawaran
M enjelaskan tentang transaksi penawaran jasa
Penawaran
Setiap transaksi penawaran jasa yang dilakukan oleh PT. Nabatindah Sejahtera
Pembayaran
M enjelaskan tentang transaksi pembayaran utang oleh pelanggan
Pembayaran Setiap transaksi pembayaran yang dilakukan konsumen kepada PT. Nabatindah Sejahtera.
4.1.1.2 Mengidentifikasi Tipe Relationship
Pada tahapan ini ditentukan relasi antar tiap entiti yang telah diidentifikasi pada tahap sebelumnya. Tahapan ini menggunakan langkah-langkah sebagai berikut:
1. M enentukan multiplicity dari tiap relasi
2. M enggunakan Entity Relationship Diagram (ERD) 4.1.1.2.1 Menentukan Multiplicity Tiap Entiti
Tabel 4.2 Tabel relasi tiap entiti
Nama Entiti Multiplicity Relasi Nama Entity Multiplicity
Suplier 1..1 menerima Pembelian 1..*
Karyawan 1..1 melakukan Pembelian 1..*
1..1 menawarkan Penawaran Jasa 0..*
1..1 melakukan Peminjaman 0..* 1..1 menangani Proyek 0..*
1..* memiliki Karyawan 1..1
1..1 memiliki Karyawan 0..1
Konsumen 1..* menerima Penawaran 0..1
1..* melakukan Pembayaran 1..*
Rental 1..1 menerima Peminjaman 1..*
Proyek 0..* ditangani Karyawan 1..1
Barang 1..* dihasilkan Pembelian 1..*
1..* digunakan dalam
Penawaran 0..*
Peralatan 1..* dihasilkan Peminjaman 1..* 1..* digunakan dalam Penawaran 0..* Jasa 1..* digunakan dalam Penawaran 0..*
Pembelian 1..* diterima Suplier 1..1
1..* dilakukan Karyawan 1..1
1..* menghasilkan Barang 1..*
Penawaran 0..* ditawarkan Karyawan 1..1
0..1 diterima Konsumen 1..*
0..* menggunakan Barang 1..*
0..* menggunakan Jasa 1..*
Pembayaran 0..* dilayani Karyawan 1..1
0..* dilakukan Konsumen 1..*
Peminjaman 0..* dilakukan Karyawan 1..1 1..* diterima Rental 1..1 1..* menghasilkan Peralatan 1..*
4.1.1.2.2 Menggunakan ERD (Entity Relationship
Diagram)
Berikut ini adalah ERD konseptual yang memuat nama entiti, relasi serta multiplicity-nya:
Supp lier Karyawan Pembelian Peralatan Peminjaman Pr oyek Ko nsumen Penawaran Pembayar an dit erim a 1. .1 1.. * 1. .1 1. .* M elakukan 1.. 1 0. .* m enawarkan 1.. 1 0. .* menangani 1.. 1 1. .1 0.. * dilakukan mel ayani 0.. 1 Mel akukan dit eri ma 1.. * 1. .* 1. .* 0. . * menerim a 1. .* 0.. * Barang 1. .* 1.. * m enghasi lkan
Rental 1. .1 1.. * m enghasi lkan
1. .1 1. .* m em iliki 1. .1 0.. 1 mem il iki Jasa di gunakan dalam 0.. * 1.. * digunakan dalam 0. .* 1.. * digunakan dalam 1. .* 0.. *
4.1.1.3 Mengidentifikasi dan Menghubungkan Atribut dengan Entiti atau Tipe Relationship, Domain Atribut, Candidate Key dan
Primary Key
4.1.1.3.1 Identifikasi Atribut Tiap Entiti Tabel 4.3 Tabel identifikasi atribut Suplier
Nama entiti Atribut Deskripsi Tipe data Nullable Multivalue
Suplier KdSuplier id suplier char(5) tidak tidak nama_suplier nama suplier varchar(20) tidak tidak alamat_suplier alamat suplier varchar(30) tidak tidak kota kota suplier varchar(20) tidak tidak telp_suplier telepon suplier numeric tidak ya
Tabel 4.4 Tabel identifikasi atribut Karyawan
Nama entiti Atribut Deskripsi Tipe data Nullable Multivalue
Karyawan KdKaryawan id
karyawan
char(5) tidak tidak
KdJabatan id jabatan char(5) tidak tidak Jabatan nama
jabatan
varchar(50) tidak tidak
alamat_karyawan alamat karyawan
varchar(30) tidak tidak
kota kota karyawan
telp_karyawan telepon karyawan
numeric tidak ya
nama_karyawan nama karyawan
varchar(20) tidak tidak
UserID username karyawan
char(20) tidak tidak
password password karyawan
varchar(35) tidak tidak
Tabel 4.5 Tabel identifikasi atribut Barang
Nama entiti Atribut Deskripsi Tipe data Nullable Multivalue
Barang KdBarang id barang char(5) tidak tidak nama_barang nama barang varchar(20) tidak tidak
Harga_beli harga beli barang
money tidak tidak
stok persediaan barang
integer tidak tidak
Satuan satuan barang
integer tidak tidak
Tabel 4.6 Tabel identifikasi atribut Konsumen
Nama entiti Atribut Deskripsi Tipe data Nullable Multivalue
konsumen nama_konsumen nama
konsumen
varchar(30) tidak tidak
alamat_konsumen alamat konsumen
varchar(30) tidak tidak
kota kota konsumen
varchar(20) tidak tidak
telp_konsumen telepon konsumen
numeric tidak ya
Tabel 4.7 Tabel identifikasi atribut Proyek
Nama entiti Atribut Deskripsi Tipe data Nullable Multivalue
Proyek KdProyek id proyek char(5) tidak tidak nama_proyek nama
proyek
varchar(20) tidak tidak
Alamat_proyek alamat proyek
varchar(30) tidak tidak
kota kota proyek varchar(20) tidak tidak tgl_mulai Tanggal
mulai proyek
datetime tidak tidak
tgl_selesai Tanggal selesai
proyek
harga_proyek Nilai proyek money tidak tidak
Tabel 4.8 Tabel identifikasi atribut Rental
Nama entiti Atribut Deskripsi Tipe data Nullable Multivalue
Rental KdRental id rental char(5) tidak tidak nama_rental nama rental varchar(20) tidak tidak Alamat_rental Alamat
rental
varchar(30) tidak tidak
kota kota rental varchar(20) tidak tidak telp_rental Telepon
rental
numeric tidak ya
Tabel 4.9 Tabel identifikasi atribut Pembelian
Nama entiti Atribut Deskripsi Tipe data Nullable Multivalue
Pembelian KdPembelian id pembelian
char(5) tidak tidak
Kdsuplier id suplier char(5) tidak tidak KdBarang id barang char(5) tidak tidak KdKaryawan id karyawan char(5) tidak tidak
qty_barang jumlah barang yang
dibeli
hrg_barang Harga barang yang
dibeli
money tidak tidak
tgl_pembelian tanggal pembelian
barang
datetime tidak tidak
Tabel 4.10 Tabel identifikasi atribut Pembayaran
Nama entiti Atribut Deskripsi Tipe data Nullable Multivalue
Pembayaran KdPembayaran id pembayaran
char(5) tidak tidak
jml_pembayaran Jumlah pembayaran
money tidak tidak
KdKaryawan id karyawan char(5) tidak tidak KdProyek id proyek char(5) tidak tidak KdKonsumen id konsumen char(5) tidak tidak tgl_pembayaran Tanggal
pemabayaran
datetime tidak tidak
tgl_pelunasan Tanggal pelunasan
datetime tidak tidak
Tabel 4.11 Tabel identifikasi atribut Peminjaman
Nama entiti Atribut Deskripsi Tipe data Nullable Multivalue
peminjaman
KdPeralatan id peralatan char(5) tidak tidak KdRental id rental char(5) tidak tidak tgl_pinjam Tanggal
peminjaman
datetime tidak tidak
tgl_kembali Tanggal kembali
datetime tidak tidak
qty_pinjam jumlah peralatan
yang dipinjam
integer tidak tidak
harga_sewa Harga penyewaan
money tidak Tidak
KdKaryawan id karyawan char(5) tidak tidak
Tabel 4.12 Tabel identifikasi atribut Penawaran
Nama entiti Atribut Deskripsi Tipe data Nullable Multivalue
Penawaran KdPenawaran id penawaran
char(5) tidak tidak
nama_penawaran Nama penawaran
varchar(20) tidak tidak
tgl_penawaran Tanggal penawaran
jml_penawaran Jumlah penawaran
money tidak tidak
KdKaryawan id karyawan char(5) tidak tidak KdKonsumen id
konsumen
char(5) tidak tidak
Kdbarang id barang char(5) tidak tidak qty_barang Jumlah
barang yang digunakan
integer tidak tidak
KdPeralatan id peralatan char(5) tidak tidak qty_peralatan Jumlah
peralatan yang digunakan
integer tidak tidak
KdJasa id jasa char(5) tidak tidak Status status
penawaran
varchar(10) tidak tidak
Tabel 4.13 Tabel identifikasi atribut Peralatan
Nama entiti Atribut Deskripsi Tipe data Nullable Multivalue
Peralatan KdPeralatan id peralatan char(5) tidak tidak nama_peralatan Nama
peralatan
qty jumlah peralatan
integer tidak tidak
Tabel 4.14 Tabel identifikasi atribut Jasa
Nama entiti Atribut Deskripsi Tipe data Nullable Multivalue
Jasa KdJasa id Jasa char(5) tidak tidak Jasa Nama Jasa varchar(20) tidak tidak Biaya Harga integer tidak tidak
4.1.1.3.2 Domain Atribut Tabel Table 4.15 Table domain atribut
Field Domain Atribut
KdSuplier char (5) Dua karakter pertama diisi dengan SP, tiga karakter berikutnya berupa angka
KdBarang char (5) Dua karakter pertama diisi dengan BR, tiga karakter berikutnya berupa angka
KdKonsumen char (5) Dua karakter pertama diisi dengan KS, tiga karakter berikutnya berupa angka
KdProyek char (5) Dua karakter pertama diisi dengan PR, tiga karakter berikutnya berupa angka
KdRental char (5) Dua karakter pertama diisi dengan RE, tiga karakter berikutnya berupa angka
berikutnya berupa angka
KdKaryawan char (5) Dua karakter pertama diisi dengan KY, tiga karakter berikutnya berupa angka
KdJasa char (5) Dua karakter pertama diisi dengan JS, tiga karakter berikutnya berupa angka
KdPembelian char (5) Dua karakter pertama diisi dengan BL, tiga karakter berikutnya berupa angka
KdPembayaran char (5) Dua karakter pertama diisi dengan BY, tiga karakter berikutnya berupa angka
KdPeminjaman char (5) Dua karakter pertama diisi dengan PJ, tiga karakter berikutnya berupa angka
KdPenawaran char (5) Dua karakter pertama diisi dengan PN, tiga karakter berikutnya berupa angka
Nama varchar (20) Dua puluh karakter dapat diisi dengan huruf dan kata ataupun dikombinasi
Alamat varchar (30) Tiga puluh karakter dapat diisi dengan huruf dan kata ataupun dikombinasi
Kota varchar (20) Dua puluh karakter dapat diisi dengan huruf dan kata ataupun dikombinasi
Telp numeric Karakter yang digunakan sesuai dengan kebutuhannya dan semua dalam bentuk angka
Jabatan varchar (50) Lima puluh karakter dapat diisi dengan huruf dan kata ataupun dikombinasi
userID varchar (20) Dua puluh karakter dapat diisi dengan huruf dan kata ataupun dikombinasi
password varchar (35) Tiga puluh lima karakter dapat diisi dengan huruf dan kata ataupun dikombinasi
harga money Semua karakter diisi sesuai dengan mata uang yang digunakan
stok integer Semua karakter hanya dapat diisi dengan angka yang bernilai positif
tanggal datetime Semua karakter berbentuk tanggal dengan batasan 1 januari hingga 31 desember, batasan tahun dari sekarang. Format yang digunakan dd-mm-yyyy
qty integer Semua karakter diisi dengan angka yang bernilai positif
4.1.1.3.3 Menentukan Atribut Candidate dan Primary Key Tabel 4.16 Tabel candidate key dan primary key tiap entiti
Nama entiti Candidate key Primary key
Karyawan KdKaryawan, nama_karyawan KdKaryawan Konsumen KdKonsumen, nama_konsumen KdKonsumen Suplier KdSuplier, nama_suplier KdSuplier
Barang KdBarang, nama_barang KdBarang
Jasa KdJasa, Jasa KdJasa
Pembelian KdPembelian KdPembelian Penawaran KdPenawaran,nama_penawaran KdPenawaran
Pembayaran KdPembayaran KdPembayaran
Peminjaman KdPeminjaman KdPeminjaman
Peralatan KdPeralatan, nama_peralatan KdPeralatan Rental kdRental , nama_rental KdRental
Proyek KdProyek , nama_proyek KdProyek
diterima 1..* 1..* 1..1 1..* Melakukan 1..1 0..* menawarkan 1..1 1..1 menangani 0..* 1..1 0..* dilakukan melayani 0..* Melakukan diterima 1..1 1..* 0..* 1..* menerima 1..* 0..1 1..* 1..1 menghasil kan menghasilkan 1..* 1..* Supplier PK KdSup llier Barang PK KdBarang Pembeli an PK Kd Pembelian Proyek PK KdProyek Peralatan PK KdPeralatan Rental PK KdRental Peminj aman PK KdPeminjaman Karyawan PK KdKaryawan Penawaran PK KdPenawaran Konsumen PK Kd Ko nsumen Pembayaran PK KdPemb ayaran 1..1 1..* memi liki 1..1 0..1 memil iki Jasa PK KdJasa 0..* 1..* digunakan dal am 0..* 1..* digunakan dal am di gunakan dalam 1..* 0..*
4.1.1.4 Mempertimbangkan Penggunaan Konsep Pemodelan
Enchanced
Sistem yang dibuat pada perusahaan ini tidak menggunakan model enchanced karena entiti yang ada tidak memungkinkan model enchanced seperti spesialisasi dan generalisasi.
4.1.1.5 Mengecek Redudansi Model
Dari model konseptual yang telah dibuat tidak ditemukan dua entiti yang merepresentasikan objek yang sama dan tidak ada redudansi pada setiap relasionship-nya.
4.1.1.6 Memvalidasi Transaksi
Tahapan ini bertujuan untuk memastikan model konseptual untuk mendukung transaksi yang dibutuhkan oleh view dengan menggunakan jalur arah transaksi (pathways) yang digambarkan dalam Entity Relationship.
Transaksi yang terjadi adalah sebagai berikut: 1. Transaksi pembelian barang
2. Transaksi penawaran jasa
3. Transaksi pelayanan pembayaran konsumen 4. Transaksi peminjaman peralatan
diterima 1..* 1..* 1..1 1..* Melakukan 1..1 0..* menawarkan 1..1 1..1 menangani 0..* 1..1 0..* di lakukan melayani 0..* Melakukan diterima 1..1 1..* 0..* 1..* menerima 1..* 0..1 1..* 1..1 menghasilkan menghasil kan 1..* 1..* Supplier PK KdSup llier Barang PK KdBarang Pembelian PK KdPembelian Proyek PK KdProyek Peral atan PK Kd Peralatan Rental PK KdRental Peminjaman PK KdPemin jaman Karyawan PK KdKaryaw an Penawaran PK KdPen awaran Konsumen PK Kd Ko nsumen Pembayaran PK KdPembayaran 1..1 1..* memiliki 1..1 0..1 memiliki Jasa PK KdJasa 0..* 1..* digunakan dalam 0..* 1..* digunakan dalam di gunakan dalam 1..* 0..*
Gambar 4.3 Entity Relationship Diagram (ERD) konseptual yang mendukung transaksi user dengan menggunakan pathways
4.1.2 Perancangan Basis Data Logikal
M embuat sebuah model data logikal lokal dari sebuah model data konseptual lokal yang menggambarkan fakta-fakta perusahaan dan memvalidasikan untuk meyakinkan struktur itu benar dan mendukung permintaan transaksi. Keseluruhan proses dari pengembangan tahap pada tahap ini adalah penggunaan teknik normalisasi untuk menguji kebenaran
model data logikal, kemudian dari model data logikal lokal akan dikombinasikan menjadi model data logikal tunggal.
4.1.2.1 Menghilangkan Fitur-Fitur yang Tidak Sesuai Model Relasional
Tujuan dari langkah ini adalah untuk memperbaiki model data konseptual lokal dengan menghilangkan fitur yang tidak sesuai dengan model relasional.
4.1.2.1.1 Menghilangkan Tipe Relasi Biner Many-to-many Relasi antara entiti Pembelian dengan entiti Barang membentuk suatu entiti baru yaitu entiti detail pembelian.
pembelian kdp embe lian {PK} kdsupp lier kdkaryawan tgl_pembelia n
de tail pemb elian kdpembelia n {PK } kdbarang {PK} qty barang kdb aran g {PK} nama_ bara ng harga stok 1.. 1 1..* dalam 1..1 t erdiri dari 1..* pembelian kdp embe lian {PK} kdsupp lier kdb aran g kdkaryawan tgl_pembelia n qty barang kdba rang {PK} na ma_ba rang ha rga stok me nghasilkan 1..* 1.. * ko ndisi awal kondisi akh ir
Gambar 4.4 M enghilangkan relasi many-to-many antara entiti Pembelian dengan entiti Barang
Relasi antara entiti peminjaman dengan entiti peralatan membentuk suatu entiti baru yaitu entiti detail peminjaman. peminjaman kdp eminjama n {PK} kdkaryawan kdrental tgl_pinjam tgl_kembali
detail peminja man kdpeminjaman {PK} kdperalatan {PK} qt y peralatan kdp eralata n {PK} nama harga _sewa stok
kond isi akhir
1. .1 1 ..* dalam 1..1 terdiri dari 1. .* peminjaman kdp eminjama n {PK} kdkaryawan kdrental kdp eralata n tgl_pinjam tgl_kembali qty p eralata n kdperala tan {PK} nama_peralatan harga_sewa st ok mengha silkan 1. .* 1. .* kondisi awal
Gambar 4.5 M enghilangkan relasi many-to-many antara entiti Peminjaman dengan entiti Peralatan
Relasi antara entiti pembayaran dengan entiti konsumen membentuk suatu entiti baru yaitu entiti detail pembayaran.
pemba yaran kdpembayaran {PK} kdkaryawa n kdkonsumen kdproyek jml_pe mbayaran tg l_p embayaran tg l_p elun asan konsumen kd kon sumen {PK} nama_ konsumen alamat_konsume n ko ta telpkonsumen melakukan 1..* 0..* kondisi awal pemba yaran kdpembayaran {PK} kdkaryawa n kdproyek tg l_p elun asan konsumen kdkonsumen {PK} nama_konsumen alamat _ko nsumen kota
telpkonsumen detail pembaya ran
kdpe mbayara n {PK} kdkonsumen {PK} jml_ pembayaran t gl_ pembayaran 1. .1 1 ..* dalam 1..1 terdiri dari 1..*
kon disi akhir
Gambar 4.6 M enghilangkan relasi many-to-many antara entiti Pembayaran dengan entiti Konsumen
4.1.2.1.2 Menghilangkan Tipe Relasi kompleks
Relasi antara entiti penawaran dengan entiti barang, peralatan, dan jasa masing-masing merupakan relasi yang identik sehingga dapat digabung membentuk suatu entiti baru yaitu entiti detail penawaran.
penawaran kdpenawaran (PK) kdkonsum en kdkaryawan kdproyek kdperalatan kdbarang kdjasa nam a_penawaran tg l_penawaran qt y_barang qt y_peralat an jasa barang kdbarang {PK} nam a_barang harga stok peralatan kdperalatan {PK} nam a_peralatan harga_sewa stok kondisi awal digunakan dalam digunakan dalam digunakan dalam 1..* 1..* 1..* 0..* 0..* 0..* detail penawaran kdpenawaran {PK} kdbarang {PK} kdperalatan {PK} kdjasa {PK} qty_barang qty_peralatan penawaran kdpenawaran (PK) kdkonsum en kdkaryawan kdproyek nam a_penawaran tg l_penawaran barang kdbarang {PK} nam a_barang harga stok peralatan kdperalatan {PK} nam a_peralatan harga_sewa stok 1..1 1..* dalam 1..1 1.. * dalam 1..1 1..* dalam 1..1 terdiri dari 1..* kondisi akhir jasa kdjasa {PK} jasa Biaya jasa kdjasa {PK} jasa Biaya
Gambar 4.7 M enghilangkan relasi kompleks antara entiti Penawaran dengan entiti Barang, Peralatan, dan Jasa
4.1.2.1.3 Menghilangkan Tipe Relasi Rekursif One-to-many Relasi antara entiti Karyawan dengan entiti Karyawan membentuk suatu entiti baru yaitu entiti Jabatan.
1..1
1..*
memiliki
Kondisi Awal Kondisi Akhir
1..1 1..* memiliki Karyawan Kdkaryawan {PK} Karyawan Kdkaryawan {PK} Jabatan KdJabatan {PK} Jabatan
Gambar 4.8 M enghilangkan relasi rekursif one-to-many pada entiti Karyawan
4.1.2.1.4 Menghilangkan Tipe Relasi Rekursif One-to-one
Relasi antara entiti Karyawan dengan entiti Karyawan membentuk suatu entiti baru yaitu entiti User.
0..1
1..1
memiliki
Kondisi Awal Kondisi Akhir
0..1 1..* memiliki Karyawan Kdkaryawan {PK} Karyawan Kdkaryawan {PK} userID UserID {PK} password Status
Gambar 4.9 M enghilangkan relasi rekursif one-to-one pada entiti Karyawan
4.1.2.1.5 Menghilangkan Atribut Multivalues
Karyawan memiliki satu atribut multivalues yaitu telp_karyawan sehingga membentuk suatu entiti baru yaitu entiti TelpKaryawan.
Kondisi Awal Kondisi Akhir
1..1 memiliki 1..* Kar yawan KdKaryawan { PK} KdJabatan Jabatan nama_karyawan alamat_k ary awan telp_k ary awan KdPengguna Password Karyawan KdKar yawan {PK} KdJabatan Jabatan nama_k ary awan alamat_karyawan KdPengguna Password
TelpKaryawan NoTelpKaryawan
Gambar 4.10 M enghilangkan atribut multivalues pada entiti Karyawan
Suplier memiliki satu atribut multivalues yaitu telp_suplier sehingga membentuk suatu entiti baru yaitu entiti TelpSuplier. Supplier KdSupplier { PK} nama_supplier alamat_supplier telp_supplier Supplier KdSupplier { PK} nama_supplier alamat_supplier 1..1 memiliki 1..*
Kondisi Awal Kondisi Akhir
TelpSupplier NoT elpSupplier
Gambar 4.11 M enghilangkan atribut multivalues pada entiti Suplier
Rental memiliki satu atribut multivalues yaitu telp_rental sehingga membentuk suatu entiti baru yaitu entiti TelpRental.
Rental KdRental {PK} nama_rental alamat_rental telp_rental Rental KdRental {PK} nama_rental alamat_rental 1..1 memiliki 1..*
Kondisi Awal Kondisi Akhir
TelpRental NoTelpRental
Gambar 4.12 M enghilangkan atribut multivalues pada entiti Rental
Konsumen memiliki dua atribut multivalues yaitu telp_konsumen sehingga membentuk suatu entiti baru yaitu entiti TelpKonsumen.
Konsumen KdKonsumen {PK} nama_konsumen alamat_konsumen telp_konsumen email_konsumen Konsumen KdKonsumen {PK} nama_konsumen alamat_konsumen memiliki 1..* 1..1
Kondisi Awal Kondisi Akhir
TelpKonsumen NoTelpKonsumen
Gambar 4.13 M enghilangkan atribut multivalues pada entiti Konsumen
4.1.2.2 Mendapatkan Relasi untuk Model Data Logikal 4.1.2.2.1 Strong & Weak Entity
1. Strong Entity
Suplier (KdSuplier, nama_suplier, alamat_suplier)
Karyawan (KdKaryawan, Kdjabatan, UserID, nama_karyawan, Jabatan,
alamat_karyawan, password)
Primary Key KdKaryawan
Foreign Key KdJabatan References
Jabatan (KdJabatan)
Foreign Key UserID References User
(UserID)
Barang (KdBarang, nama_barang, harga_beli, stok)
Primary Key KdBarang
Konsumen (KdKonsumen, nama_konsumen, alamat_konsumen)
Primary Key KdKonsumen
Proyek (KdProyek, nama_proyek, tempat_proyek, tgl_mulai, tgl_selesai, harga_proyek)
Primary Key KdProyek
Rental (KdRental, nama_rental, alamat_proyek)
Peralatan (KdPeralatan, nama_peralatan, qty)
Primary Key KdPeralatan
Jabatan (KdJabatan, Jabatan)
Primary Key KdJabatan
User (UserID, password) Primary Key UserID
Jasa (KdJasa, Jasa, biaya)
Primary key KdJasa
Pembelian (KdPembelian, kdsuplier, kdkaryawan, tgl_pembelian)
Primary Key KdPembelian
Foreign Key kdsuplier References suplier
(KdSuplier)
Foreign Key kdkaryawan References
karyawan (KdKaryawan)
Detail Pembelian (KdPembelian, KdBarang, Qty)
Primary Key KdPembelian, KdBarang Foreign Key KdPembelian References
Foreign Key KdBarang References
barang (KdBarang)
Pembayaran (KdPembayaran, KdKaryawan, KdProyek, tgl_pelunasan)
Primary Key KdPembayaran
Foreign Key KdKaryawan References
karyawan (KdKaryawan)
Foreign Key KdProyek References
proyek (KdProyek)
Detail Pembayaran (KdPembayaran, KdKonsumen, tgl_pembayaran, jml_pembayaran)
Primary Key KdPembayaran,
KdKonsumen
Foreign Key KdPembayaran References
pembayaran (KdPembayaran)
Foreign Key KdKonsumen References
konsumen (KdKonsumen)
Peminjaman (KdPeminjaman, KdKaryawan, KdRental, tgl_pinjam, tgl_kembali)
Foreign Key KdKaryawan References
karyawan (KdKaryawan)
Foreign Key KdRental References rental
(KdRental)
Detail Peminjaman (KdPeminjaman, KdPeralatan, Qty)
Primary Key KdPeminjaman,
KdPeralatan
Foreign Key KdPeminjaman References
peminjaman (KdPeminjaman)
Foreign Key KdPeralatan References
peralatan (KdPeralatan)
Penawaran (KdPenawaran, KdKonsumen,
KdKaryawan, KdProyek,
nama_penawaran, tgl_penawaran)
Primary Key KdPenawaran
Foreign Key KdKonsumen References
konsumen (KdKonsumen)
Foreign Key KdKaryawan References
karyawan (KdKaryawan)
Foreign Key KdProyek References
Detail Penawaran (KdPenawaran, KdBarang, KdPeralatan, KdJasa, qty_barang, qty_peralatan)
Primary Key KdPenawaran, KdBarang,
KdPeralatan, KdJasa
Foreign Key KdPenawaran References
penawaran (KdPenawaran)
Foreign Key KdBarang References
barang (KdBarang)
Foreign Key KdPeralatan References
peralatan (KdPeralatan)
Foreign Key KdJasa References jasa
(KdJasa)
2. Weak Entity
TelpKaryawan (NoTelpKaryawan)
Primary Key belum teridentifikasi
TelpS upplier (NoTelpSupplier)
Primary Key belum teridentifikasi
TelpRental (NoTelpRental)
TelpKonsumen (NoTelpKonsumen)
Primary Key belum teridentifikasi
4.1.2.2.2 Tipe Relasi Biner One-to-many
Hubungan antara entiti Suplier dengan entiti Pembelian.
Supplie r (Kd Su pplier, nama_su pplier, ala ma t_ su pplier)
Menempa tkan Kd Su pplier ke dalam Pe mb elian untuk Model one-to-man y mene rima
Primary Ke y Kd Supplie r
Pembelian (KdPembe lian, Kd Su pplier, qty_ bara ng,
ha rga_ baran g, tgl_pembe lia n)
Prima ry Key KdPembelia n
Foreign Key KdSup plier refer enc es Supp lie r (Kd Su pplier)
Hubungan antara entiti Karyawan dengan entiti Pembelian
Karyawan (KdKaryawan, nama_karyawan,
alamat_karyawan, jabatan, password)
Menempatkan KdKaryawan ke dalam Pembelian untuk Model one- to-many melakukan
Primary Key KdKaryawan
Pembelian (KdPembelian, KdSupplier, KdBarang, KdKaryawan,
qty_barang, harga_barang, tgl_pembelian)
Primary Key KdPembelian
Foreign Key KdKaryawan references Karyawan (KdKaryawan)
Hubungan antara entiti Karyawan dengan entiti Penawaran
Karyawan (KdKaryawan, nama_karyawan,
alamat_karyawan, jabatan, password)
Menempatkan KdKaryawan ke dalam Penawaran untuk Model one- to-many melakukan
Primary Key KdKaryawan
Penawaran (KdPenawaran, KdKaryawan, nama_penawaran,
jml_penawaran, tgl_penawaran)
Primary Key KdPenawaran
Hubungan antara entiti Karyawan dengan entiti Pembayaran
Karyawan (KdKaryawan, nama_karyawan,
alamat_karyawan, jabatan, password)
Menempatkan KdKaryawan ke dalam Pembayaran untuk Model one-to-many melayani
Primary Key KdKaryawan
Pembayaran (KdPembayaran, KdKaryawan, jml_penawaran,
tgl_pembayaran, tgl_pelunasan)
Primary Key KdPembayaran
Foreign Key KdKaryawan references Karyawan (KdKaryawan)
Hubungan antara entiti Karyawan dengan entiti Peminjaman
Karyawan (KdKaryawan, nama_karyawan,
alamat_karyawan, jabatan, password)
Menempatkan KdKaryawan ke dalam Peminjaman untuk Model one-to-many melakukan
Primary Key KdKaryawan
Peminjaman (KdPeminjaman, KdKaryawan, har ga_sewa,
qty_pinjam, tgl_pinjam, tgl_kembali)
Primary Key KdPeminjaman
Foreign Key KdKaryawan references Karyawan (KdKaryawan)
Hubungan antara entiti Jabatan dengan entiti Karyawan
Karyawan (KdKaryawan, KdJabatan, nama_karyawan,
alamat_karyawan, password) Menempatkan KdJabatan ke dalam Karyawan untuk
Model one-to-many dimiliki
Primary Key KdKaryawan Jabatan (KdJabatan, Jabatan)
Primary Key KdJabatan
Hubungan antara entiti User dengan entiti Karyawan
Karyawan (KdKaryawan, UserID, KdJabatan, nama_k aryawan,
alamat_karyawan, password) Menempatkan UserID ke dalam Karyawan untuk Model
one-to-many dimiliki
Primary Key KdKaryawan User (UserID, password,status)
Primary Key UserID
Foreign Key KdJabatan references Jabatan (KdJabatan) Foreign Key UserID references User (UserID)
Hubungan antara entiti Rental dengan Entiti Peminjaman
Rental (KdRental, nama_rental, alamat_rental)
Menempatkan KdRental ke dalam Peminjaman untuk Model one-to-many dalam
Primary Key KdRental
Foreign Key KdRental references Rental (KdRental) Peminjaman (KdPeminjaman, KdKaryawan, KdRental,
KdPeralatan, harga_sewa, qty_pinjam, tgl_pinjam, tgl_kembali)
Primary Key KdPeminjaman
Hubungan antara entiti Konsumen dengan Entiti Penawaran
Konsumen (KdKonsumen, nama_Konsumen,
alamat_konsumen)
Menempatkan KdKonsumen ke dalam Penawaran untuk Model one-to-many menerima
Primary Key KdKonsumen
Penawaran ( KdPenawaran, KdKaryawan, KdKonsumen,
KdPeralatan, KdBarang, nama_penawaran, jml_penawaran, tgl_penawaran)
Primary Key KdPenawaran
Foreign Key KdKonsumen references Konsumen
Hubungan antara entiti Proyek dengan entiti Pembayaran
Menempatkan KdPr oyek ke dalam Pembayaran untuk Model one-to-many dalam
Pembayaran (KdPembayaran, KdKaryawan, KdProyek,
KdKonsumen, jml_penawar an, tgl_pembayaran, tgl_pelunasan)
Primary Key KdPembayaran
Foreign Key KdProyek references Proyek (KdProyek ) Proyek (KdProyek, nama_Proyek,
tempat_proyek,tgl_mulai, tgl selesai, harga_proyek)
Primary Key KdProyek
Hubungan antara entiti Proyek dengan entiti Penawaran
Menempatkan KdProyek ke dalam Penawaran untuk Model one-to-many dalam
Proyek (KdProyek, nama_Proyek,
tempat_proyek,tgl_mulai, tgl selesai, harga_proyek)
Primary Key KdProyek
Penawaran (KdPenawaran, KdKaryawan, KdProyek,
KdKonsumen, KdPeralatan, KdBarang, nama_penawaran, jml_penawaran, tgl_penawaran)
Primary Key KdPenawaran
Foreign Key KdKonsumen references Kons umen (KdKonsumen) Foreign Key KdPr oyek references Proyek (KdProyek)
4.1.2.2.3 Tipe Relasi Biner Many-to-many (*:*)
Hubungan antara entiti Pembelian dengan entiti barang
Detail Pembelian (KdPembelian, KdBarang, qty_bar ang) Menempatkan KdBar ang dan KdPembelian ke dalam Detail Pembelian untuk Model many-to-many dihasilk an
Barang (KdBarang, nama_Barang, harga_barang, stok)
Primary Key KdBar ang Pembelian (KdPembelian, KdSupplier, KdKaryawan,
tgl_pembelian)
Primary Key KdPembelian
Foreign Key KdSupplier references supplier (KdSupplier ) Foreign Key KdKar yawan references Kar yawan ( KdKaryawan)
Primary Key KdPembelian,KdBarang
Foreign Key KdBarang references Barang (KdBarang) Foreign Key KdPembelian references pembelian (KdPembelian)
Hubungan antara entiti Peminjaman dengan entiti Peralatan
Detail P eminjaman (KdPeminjaman, KdPeralatan, qty_Per alatan) Menempatkan KdP eralatan dan KdPeminjaman k e dalam Detail Peminjaman untuk Model many- to-many dihasilkan
Foreign Key KdKar yawan references Kar yawan (KdKaryawan)
Primary Key KdPeminjaman,K dPeralatan
Foreign Key KdPeralatan references P eralatan (KdPeralatan) Foreign Key KdPeminjaman references Peminjaman (KdPeminjaman)
Peralat an (KdP eralatan, nama_Peralatan, qty) Primary Key KdPeralatan
Peminjaman (KdPeminjaman, KdKaryawan, KdRental, tgl_pinjam, tgl_kembali)
Primary Key KdPeminjaman
Hubungan antara entiti Pembayaran dengan entiti Konsumen
Detail Peminjaman ( KdPembayaran, KdKonsumen, tgl_pembayar an, jml_pembayaran)
Menempatkan KdPembayaran dan KdKonsumen ke dalam Detail Pembayar an untuk Model many-to-many dihasilkan
Foreign Key KdKaryawan references Karyawan
(KdKaryawan)
Primary Key KdPembayaran,KdKonsumen
Foreign Key KdPembayaran references Pembayaran (KdPembayaran) Pembayaran ( KdPembayaran, KdKaryawan, KdProyek,
tgl_pelunasan)
Primary Key KdP embayaran
Foreign Key KdKonsumen references Konsumen (KdKonsumen)
Konsumen (KdKonsumen, nama_Konsumen,
alamat_konsumen)
Primary Key KdKons umen Foreign Key KdProyek ref erences Pr oyek (KdProyek)
4.1.2.2.4 Tipe Relasi Kompleks
Hubungan antara entiti Penawaran dengan entiti Barang, Peralatan, dan Jasa
Detail Penawaran (KdPenawaran, KdBarang, KdPeral atan, KdJasa, qty_barang, qty_peralatan)
M enem patkan KdPenawaran, KdBarang, KdPeralatan, KdJasa ke dal am Detail Penawaran untuk Model relasi kompleks dihasil kan
Primary Key KdPenawaran,KdBarang, KdPeralatan, KdJasa Foreig n Key KdPenawaran references Penawaran (KdPenawaran) Foreig n Key KdBarang references Barang (KdBarang) Penawaran (KdPenawaran, KdKaryawan, KdProyek,
KdKonsumen, KdPeralatan, KdBarang, nama_penawaran, jml_penawaran, tgl_penawaran)
Primary Key KdPenawaran
F oreign Key KdKonsumen references Konsumen (KdKonsumen) F oreign Key KdProyek references Proyek (KdProyek)
Barang (KdBarang, nama_Barang, harga_barang,
stok)
Primary Key KdBarang
Peralatan (KdPeralatan, nama_Peralatan, qty) Primary Key KdPeralatan
Primary Key KdJasa
Foreig n Key KdPeral atan references Peralatan (KdPeralatan) Foreig n Key KdJasa references Jasa (KdJasa)
4.1.2.2.5 Atribut Multivalue
Hubungan antara entiti Karyawan dengan entiti TelpKaryawan
Karyawan (KdKaryawan, nama_karyawan,
alamat_karyawan, jabatan, password)
Menempatkan KdKaryawan ke dalam TelpKaryawan untuk Model one- to-many memiliki
Primary Key KdKaryawan
TelpKaryawan (NoTelpKaryawan, KdKar yawan) Primary Key NoTelpKaryawan
Foreign Key KdKaryawan references Karyawan (KdKaryawan)
Hubungan antara entiti Suplier dengan entiti TelpSuplier
Supplier (Kd Su pplier, nama_su pplier, ala mat_su pplier)
Mene mp atka n Kd Supplie r ke da lam Te lpSup plier untuk Mod el one -to -ma ny memiliki
Primary Ke y Kd Supplie r
TelpSupplier (N oTe lpSu pplier, Kd Su pplier) Prima ry Key NoTelpSupp lie r
Foreign Key KdSupp lier r efere nce s Supplie r (KdSup plier)
Hubungan antara entiti Rental dengan entiti TelpRental
R enta l (KdRe ntal, nama_re ntal, alamat_re ntal)
Me nempa tkan KdR ental ke da lam Te lpRe ntal un tuk Mod el one -to -ma ny memiliki
Primar y K ey KdRen ta l
TelpRental (No Te lpRe ntal, Kd Ren tal) Primary Ke y N oTelp Rental
Hubungan antara entiti Konsumen dengan entiti TelpKonsumen
Kons ume n (KdKon su me n, n ama_Kon su me n,
alamat_Konsu me n)
Menempa tka n Kd Ko nsumen ke da lam Te lpKon sumen u ntu k Mod el on e-to -ma ny me miliki
Primar y K ey KdKonsumen
TelpKonsumen (N oTe lpKo nsumen, Kd Konsumen ) Primary Key N oTe lpKo nsumen
For eign K ey Kd Konsumen r efere nc es Konsumen (KdKo nsumen)
4.1.2.4 Validasi Relasi dengan Normalisasi
Normalisasi yang akan dilakukan mencapai bentuk normal ketiga. Entiti akan dikelompokkan menurut bentuk-bentuk normal yang telah dicapai. Berikut ini adalah normalisasi entiti:
Normalisasi Pembelian 1NF
Pembelian = @KdPembelian + @Kdsuplier + @Kdbarang + @Kdkaryawan + qtybarang + harga_barang + tglpembelian + nama_barang + nama_karyawan + nama_suplier
2NF
Pembelian_H = @KdPembelian + #Kdsuplier + #Kdbarang + #Kdkaryawan + tglpembelian + nama_suplier + nama_karyawan
Barang = @Kdbarang + nama_barang + stok 3NF
Pembelian_H = @KdPembelian + #Kdsuplier + #Kdkaryawan + tglpembelian
Pembelian_D = @KdPembelian + #Kdbarang + qty
Karyawan = @Kdkaryawan + #Kdjabatan + #UserID + nama_karyawan + alamat_karyawan
TelpKaryawan = @NoTelpKaryawan + #Kdkaryawan Barang = @Kdbarang + nama_barang + harga + stok Supplier = @Kdsuplier + nama_suplier + alamat_suplier TelpSupplier = @NoTelpSuplier + #Kdsuplier
Jabatan = @Kdjabatan + nama_jabatan User = @UserId + Password + status + login
Normalisasi Peminjaman 1NF
Peminjaman = @KdPeminjaman + @KdPeralatan + @KdRental + @Kdkaryawan + tgl_peminjaman + tgl_kembali + qty_pinjam + harga_sewa + nama_peralatan + nama_karyawan + nama_rental
2NF
Peminjaman_H = @KdPeminjaman + #KdPeralatan + #KdRental + #Kdkaryawan + tgl_peminjaman + tgl_kembali + qty_pinjam
Peminjaman_D = @KdPeminjaman + #KdPeralatan + qty_pinjam Peralatan = @Kdperalatan + nama_peralatan + harga_sewa +
stok_peralatan 3NF
Peminjaman_H = @KdPeminjaman + #Kdrental + #Kdkaryawan + tglpembelian
Peminjaman_D = @KdPeminjaman + #KdPeralatan + qty_pinjam Karyawan = @Kdkaryawan + #Kdjabatan + jabatan + nama_karyawan + alamat_karyawan + #UserID
TelpKaryawan = @NoTelpKaryawan + #Kdkaryawan Rental = @Kdrental + nama_rental + alamat_rental TelpRental = @NoTelpRental + #Kdrental
Peralatan = @Kdperalatan + nama_peralatan + harga_sewa + qty_peralatan
Jabatan = @Kdjabatan + nama_jabatan User = @UserId + Password + status + Login
Normalisasi Penawaran 1NF
Penawaran = @Kdpenawaran + @Kdbarang + @Kdkonsumen + @KdBarang + @Kdperalatan + @Kdkaryawan + @Kdjasa + t gl_penawaran + jml_penawaran + nama_penawaran + nama_barang + nama_konsumen + nama_peralatan + nama_karyawan
2NF
Penawaran_H = @Kdpenawaran + #Kdbarang + #Kdkonsumen + #Kdkaryawan + #Kdperalatan + #Kdproyek + #kdjasa + nama_penawaran +tgl_penawaran + nama_konsumen + nama_barang + nama_peralatan + nama_karyawan
Penawaran_D = @Kdpenawaran + Kdproyek + qty_barang + qty_peralatan
Barang = @Kdbarang + nama_barang + qty
Peralatan = @Kdperalatan + nama_peralatan + qty_peralatan 3NF
Penawaran_H = @Kdpenawaran + Kdproyek + Kdkaryawan + tgl_penawaran
Penawaran_D = @Kdpenawaran + #Kdproyek + #kdperalatan + #kdbarang + #kdjasa + qty_peralatan + qty_barang Barang = @Kdbarang + nama_barang + qty
Peralatan = @Kdperalatan + nama_peralatan + qty_peralatan
Karyawan = @Kdkaryawan + #Kdjabatan + jabatan + nama_karyawan + alamat_karyawan + #UserID
TelpKaryawan = @NoTelpKaryawan + #Kdkaryawan
Proyek = @kdproyek + nama_proyek + tempat_proyek + tgl_mulai + tgl_selesai + harga_proyek
TelpKonsumen = @NoTelpKonsumen + #Kdkonsumen Jasa = @Kdjasa + nama_jasa + biaya
Jabatan = @Kdjabatan + nama_jabatan User = @UserId + Password + Status + Login
Normalisasi Pembayaran 1NF
Pembayaran = @Kdpembayaran + #KdKaryawan + #Kdproyek + #Kdkonsumen + jml_pembayaran + tgl_pembayaran + tgl_pelunasan + nama_karyawan + nama_proyek + nama_konsumen
2NF
Pembayaran_H = @Kdpembayaran + #KdKaryawan + #Kdproyek + tgl_pembayaran + tgl_pelunasan + nama_karyawan + nama_proyek + nama_konsumen
Pembayaran_D = @Kdpembayaran + #Kdkonsumen + Jumlah_pembayaran + Sisa_pembayaran
3NF
PembayaranH = @Kdpembayaran + #KdKaryawan + #kdproyek + tgl_pembayaran + tgl_pelunasan PembayaranD = @Kdpembayaran + #Kdkonsumen + Jumlah_pembayaran + Sisa_pembayaran
Karyawan = @Kdkaryawan + #Kdjabatan + jabatan + nama_karyawan + alamat_karyawan + #UserID
Proyek = @kdproyek + nama_proyek + tempat_proyek + tgl_mulai + tgl_selesai + harga_proyek
Konsumen = @KdKonsumen + nama_konsumen + alamat_konsumen TelpKonsumen = NoTelpKonsumen + kdkonsumen
Jabatan = @Kdjabatan + nama_jabatan User = @UserId + Password + Status + Login
TelpKaryawan = @NoTelpKaryawan + #Kdkaryawan
4.1.2.4 Pembuatan Model Basis Data Logikal Global
Pada tahap ini, model basis data secara global yang didapat dari tabel-tabel setelah mencapai bentuk normal beserta referensi dari setiap foreign key :
Tabel 4.17 Relasi pada entiti msbarang Nama
entiti
Atribut Primary key Foreign key Referensi
msbarang kdbarang, nama_barang,
harga, stok, satuan
kdbarang - -
Tabel 4.18 Relasi pada entiti pembelianH
Nama entiti Atribut Primary key Foreign key Referensi pembelianH kdpembelian, kdpembelian kdsuplier mssuplier
kdsuplier, kdkaryawan, tgl_pembelian
kdkaryawan mskaryawan
Tabel 4.19 Relasi pada entiti pembelianD
Nama entiti Atribut Primary key Foreign key Referensi pembelianD kdpembelian, kdbarang, qty kdpembelian kdbarang kdpembelian kdbarang pembelianH msbarang
Tabel 4.20 Relasi pada entiti mssuplier
Nama entiti Atribut Primary key Foreign key Referensi mssuplier kdsuplier,
nama_suplier, alamat_suplier,
kota
kdsuplier - -
Tabel 4.21 Relasi pada entiti TelpSuplier
Nama entiti Atribut Primary key Foreign key Referensi TelpSuplier NoTelpSuplier,
kdsuplier
Tabel 4.22 Relasi pada entiti mskaryawan
Nama entiti Atribut Primary key Foreign key Referensi mskaryawan kdkaryawan, userID, kdjabatan, nama_karyawan, alamat_karyawan, kota kdkaryawan userID kdjabatan msuser msjabatan
Tabel 4.23 Relasi pada entiti msjabatan
Nama entiti Atribut Primary key Foreign key Referensi msjabatan kdjabatan,
jabatan
kdjabatan - -
Tabel 4.24 Relasi pada entiti msuser
Nama entiti Atribut Primary key Foreign key Referensi msuser userID, pass,
status, Login
userID - -
Tabel 4.25 Relasi pada entiti TelpKaryawan
Nama entiti Atribut Primary key Foreign key Referensi TelpKaryawan NoTelpKaryawan,
kdkaryawan
Tabel 4.26 Relasi pada entiti peminjamanH
Nama entiti Atribut Primary key Foreign key Referensi peminjamanH kdpeminjaman, kdkaryawan, kdrental, tgl_pinjam, tgl_kembali kdpeminjaman kdkaryawan kdrental mskaryawan msrental
Tabel 4.27 Relasi pada entiti peminjamanD
Nama entiti Atribut Primary key Foreign key Referensi peminjamanD kdpeminjaman, kdperalatan, qty kdpeminjaman, kdperalatan kdpeminjaman kdperalatan peminjamanH msperalatan
Tabel 4.28 Relasi pada entiti msperalatan
Nama entiti Atribut Primary key Foreign key Referensi msperalatan kdperalatan,
nama_peralatan, harga_sewa,
stok
Tabel 4.29 Relasi pada entiti msrental
Nama entiti Atribut Primary key Foreign key Referensi msrental kdrental,
nama_rental, alamat_rental,
kota
kdrental - -
Tabel 4.30 Relasi pada entiti TelpRental
Nama entiti Atribut Primary key Foreign key Referensi TelpRental NoTelpRental,
kdrental
NoTelpRental Kdrental msrental
Tabel 4.31 Relasi pada entiti mskonsumen
Nama entiti Atribut Primary key Foreign key Referensi mskonsumen kdkonsumen,
nama_konsumen, alamat_konsumen,
kota
kdkonsumen - -
Tabel 4.32 Relasi pada entiti TelpKonsumen
Nama entiti Atribut Primary key Foreign key Referensi TelpKonsumen NoTelpKonsumen,
kdkonsumen
Tabel 4.33 Relasi pada entiti penawaranH
Nama entiti Atribut Primary key Foreign key Referensi penawaranH kdpenawaran, kdkonsumen, kdkaryawan, kdproyek, nama_penawaran, tgl_penawaran status kdpenawaran kdkonsumen kdkaryawan kdproyek mskonsumen mskaryawan msproyek
Tabel 4.34 Relasi pada entiti penawaranD
Nama entiti Atribut Primary key Foreign key Referensi penawaranD kdpenawaran, kdperalatan, kdbarang, kdjasa, qty_barang, qty_peralatan kdpenawaran, kdperalatan, kdbarang, kdjasa kdpenawaran kdperalatan kdbarang kdjasa penawaranH msperalatan msbarang msjasa
Tabel 4.35 Relasi pada entiti msproyek
Nama entiti Atribut Primary key Foreign key Referensi msproyek kdproyek,
nama_proyek,
alamat_proyek, kota, tgl_mulai,
tgl_selesai, harga_proyek
Tabel 4.36 Relasi pada entiti msjasa
Nama entiti Atribut Primary key Foreign key Referensi msjasa kdjasa, jasa,
biaya
kdjasa - -
Tabel 4.37 Relasi pada entiti pembayaranH
Nama entiti Atribut Primary key Foreign key Referensi pembayaranH kdpembayaran, kdkaryawan, kdproyek, tgl_pelunasan kdpembayaran kdkaryawan kdproyek kdkonsumen mskaryawan msproyek mskonsumen
Tabel 4.38 Relasi pada entiti pembayaranD
Nama entiti Atribut Primary key Foreign key Referensi pembayaranD kdpembayaran, kdkonsumen, tgl_pembayaran, jml_pembayaran kdpembayaran, kdkonsumen kdpembayaran kdkonsumen pembayaranH mskonsumen
mssuplli er
PK kdsu ppl ier
nam a_supplier alam at_suppl ier kota pem bel ianH
PK kdpembeli an F K1 kdsuppl ier F K2 kdkaryawan tgl_pembel ian msbarang PK kdbarang nam a_barang harga st ok m suser PK userI D pass stat us login mskaryawan PK kdkaryawan FK1 userI D FK2 kdjabatan nam a_karyawan alam at_karyawan kota msjabat an PK kdjab atan Jabat an mskonsumen PK kd ko nsumen nam a_konsum en al am at_konsumen kota pembayaranH PK kdp embayaran FK1 kdkaryawan FK2 kdproyek t gl_pelunasan msproyek PK kdpro yek nama_proyek alam at _proyek kota t gl _mulai t gl _selesai harga_proyek pem injamanH PK kdpemin jaman FK2 kdkaryawan FK3 kdrental tgl _pi nj am tgl _kembal i m speralatan PK kdp eral atan nama_peralatan harga_sewa stok msrent al PK kd ren tal nam a_rent al al am at_rental kota penawaranH PK kd penawaran F K2 kdkonsumen F K3 kdkaryawan F K4 kdproyek nam a_penawaran tgl_penawaran Tel pSupplier
PK NoTel pSu ppl ier
FK1 kdsupplier TelpKaryawan PK No Telp Karyawan F K1 kdkaryawan T el pKonsum en PK NoTel pKonsumen FK1 kdkonsum en TelpRent al PK NoT elpRenatal FK1 kd_rent al pem bel ianD
PK,FK1 kdp embel ian PK,FK2 kdb aran g qt y pemi njamanD PK, FK1 kdperal atan PK, FK2 kdpemin jaman qty penawaranD PK, FK1 kdpenawaran PK, FK2 kdperal atan PK, FK3 kdbarang PK, FK4 kdj asa qty_barang qty_peralat an msjasa PK kd jasa j asa bi aya pembayaranD PK, FK1 kdpembayaran PK, FK2 kdkonsumen tgl_pem bayaran jm l_pem bayaran
4.1.2.5 Pemilihan DBMS (Database Management System)
Berikut ini adalah perbandingan antara SQL Server 2000 dengan Oracle 9iDB :
Tabel 4.39 Perbandingan antara M icrosoft SQL Server 2000 dengan Oracle 9iDB Perbedaan Microsoft SQL Server
2000
Oracle 9i
Type DBM S Transactional relational database server Transactional relational database server Biaya $1,489 - $4,999 (Professional Edition) $1,500 - $15,000
Kebutuhan perangkat keras Intel Pentium II atau AM D K6-II processor, 64 M B RAM , 380 M B hard drive
Dedicated server
Kebutuhan piranti lunak Windows XP atau
Windows Server 2000 atau Windows .Net Server 2003, Internet Explorer 5.0
Windows Server 2000 atau Windows .Net Server 2003, TRU64 UNIX, HP-UX Version 11, Solaris 8, AIX
Kekurangan Biaya cukup tinggi, memerlukan Windows 2000 Server
Lisensi berdasarkan individu bukan medianya, dokumentasi sulit dipahami Kehandalan M endukung failover
cluster, pemulihan point in
M endukung failover cluster, pemulihan point in
time, dapat melakukan restart jika berhenti
time dan kehandalan tingkat enterprise lainnya Standar SQL99, XM L, ODBC, JDBC, T-SQL SQL99, SQL/J, PL/SQL, ODBC, JDBC, XM L, J2EE 1.3
Keterbatasan basis data Terbatas mendekati 2 miliar objek dalam basis data
Tidak diketahui
Pemenuhan ACID Ya Ya
Kelebihan M endukung kehandalan
dan keamanan tingkat enterprise, dapat
menjalankan berbagai basis data dalam satu server
DBM S dengan standar industri mampu mengatur data tingkat enterprise, mendukung semua akses standar basis data pada umumnya, memiliki kehandalan dan tingkat keamanan yang tinggi
Keamanan M enggunakan authentikasi
pengguna dengan pilihan untuk menyatukan keamanan basis data
dengan keamanan Windows 2000 Server
Integrated user
authentication, extensive transaction logging
Data-data tersebut menunjukkan bahwa Oracle 9iDB memiliki kemampuan yang lebih baik jika dibandingkan dengan M icrosoft SQL Server 2000, tetapi biaya yang harus dikeluarkan untuk DBM S tersebut relatif tinggi. Dengan pertimbangan masalah-masalah khususnya dalam masalah biaya tersebut maka aplikasi ini akan menggunakan M icrosoft SQL Server 2000 sebagai DBM S untuk implementasinya.
4.1.3 Perancangan Basis Data Fisikal
Perancangan basis data fisikal merupakan tahap akhir perancangan basis data. Tujuan perancangan basis data fisikal yaitu untuk menghasilkan suatu gambaran implementasi dari basis data pada penyimpanan sekunder. Tahap-tahap perancangan fisikal pada basis data PT. Nabatindah Sejahtera sebagai berikut:
4.1.3.1 Merancang Relasi-Relasi Dasar
Tahap awal perancangan fisikal ini bertujuan untuk memutuskan bagaimana menggambarkan relasi basis model data logikal global pada DBM S. Untuk memulai prosesnya, dilakukan penyusunan informasi tentang relasi yang terbentuk pada perancangan logikal. Informasi yang tersusun antara lain nama relasi, atribut-atribut, primary keys, foreign keys, refential integrity, domain yang terdiri dari tipe data, panjang, constraints, dan apakah atribut yang bernilai null.
Berikut ini adalah perancangan DBDL untuk setiap entiti yang bertujuan untuk membuat domain dari setiap atribut agar user dapat mengerti penggunaan setiap atribut tersebut
berdasarkan penjelasannya dan juga batasan yang terdapat di dalam setiap atribut.
1. DBDL (Database Design Language) untuk Tabel msbarang Domain kdbarang fixed length character string, 5 Domain nama_barang variable length character string, 20 Domain harga integer
Domain stok integer Domain satuan integer msbarang (
kdbarang kode barang NOT NULL nama_barang nama barang NOT NULL harga harga barang NOT NULL
stok stok NOT NULL
satuan satuan barang NOT NULL Primary Key (kdbarang)
)
2. DBDL (Database Design Language) untuk Tabel pembelianD Domain kdpembelian fixed length character string, 5 Domain kdbarang fixed length character string, 5 Domain qty integer
pembelianD (
kdpembelian kode pembelian NOT NULL kdbarang kode barang NOT NULL qty jumlah barang NOT NULL
Primary Key (kdpembelian,kdbarang)
Foreign Key (kdpembelian) References pembelian (kdpembelian)
ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key (kdbarang) References msbarang (kdbarang)
ON UPDATE CASCADE ON DELETE NO ACTION )
3. DBDL (Database Design Language) untuk Tabel pembelianH Domain kdpembelian fixed length character string, 5 Domain kdsuplier fixed length character string, 5 Domain kdkaryawan fixed length character string, 5 Domain tgl_pembelian datetime
pembelianH (
kdpembelian kode pembelian NOT NULL kdsuplier kode suplier NOT NULL kdkaryawan kode karyawan NOT NULL tgl_pembelian tanggal pembelian NOT NULL Primary Key (kdpembelian)
Foreign Key (kdsuplier) References mssuplier (kdsuplier) ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key (kdkaryawan) References mskaryawan
(kdkaryawan)
ON UPDATE CASCADE ON DELETE NO ACTION )
4. DBDL (Database Design Language) untuk Tabel mssuplier Domain kdsuplier fixed length character string, 5 Domain nama_suplier variable length character string, 20 Domain alamat_suplier variable length character string, 20 Domain kota variable length character string, 20 mssuplier (
kdsuplier kode suplier NOT NULL nama_suplier nama suplier NOT NULL alamat_suplier alamat suplier NOT NULL
kota kota NOT NULL
Primary Key (kdsuplier) )
5. DBDL (Database Design Language) untuk Tabel TelpSuplier Domain NoTelpSuplier numeric
Domain kdsuplier fixed length character string, 5 TelpSuplier (
NoTelpSuplier no telepon suplier NOT NULL kdsuplier kode suplier NOT NULL Primary Key (NoTelpSuplier)
Foreign Key (kdsuplier) References mssuplier (kdsuplier) ON UPDATE CASCADE ON DELETE NO ACTION )
6. DBDL (Database Design Language) untuk Tabel msuser Domain userID variable length character string, 20
Domain pass fixed length character string, 35 Domain status fixed length character string, 1 Domain login integer, 1
msuser (
userID nama user NULL pass password user NULL status status jabatan NOT NULL login status login NOT NULL Primary Key (userID)
)
7. DBDL (Database Design Language) untuk Tabel mskaryawan
Domain kdkaryawan fixed length character string, 5 Domain userID variable length character string, 20 Domain kdjabatan fixed length character string, 5 Domain nama_karyawan variable length character string, 20 Domain alamat_karyawan variable length character string, 20 Domain kota variable length character string, 20 mskaryawan (
kdkaryawan kode karyawan NOT NULL
userID nama user NOT NULL
kdjabatan kode jabatan NOT NULL nama_karyawan nama karyawan NOT NULL alamat_karyawan alamat karyawan NOT NULL
kota kota karyawan NOT NULL Primary Key (kdkaryawan)
Foreign Key (userID) References msuser (userID)
ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key (kdjabatan) References msjabatan (kdjabatan)
ON UPDATE CASCADE ON DELETE NO ACTION )
8. DBDL (Database Design Language) untuk Tabel TelpKaryawan
Domain NoTelpKaryawan numeric
Domain kdkaryawan fixed length character string, 5 TelpKaryawan (
NoTelpKaryawan no telepon karyawan NOT NULL kdkaryawan kode karyawan NOT NULL Primary Key (NoTelpKaryawan)
Foreign Key (kdkaryawan) References mskaryawan (kdkaryawan)
ON UPDATE CASCADE ON DELETE NO ACTION )
9. DBDL (Database Design Language) untuk Tabel msrental Domain kdrental fixed length character string, 5 Domain nama_rental variable length character string, 20 Domain alamat_rental variable length character string, 20 Domain kota variable length character string, 20
msrental (
kdrental kode rental NOT NULL nama_rental nama rental NOT NULL alamat_rental alamat rental NOT NULL
kota kota rental NOT NULL
Primary Key (kdrental) )
10. DBDL (Database Design Language) untuk Tabel penawaranH
Domain kdpenawaran fixed length character string, 5 Domain kdkonsumen fixed length character string, 5 Domain kdkaryawan fixed length character string, 5 Domain kdproyek fixed length character string, 5 Domain nama_penawaranvariable length character string, 20 Domain tgl_penawaran datetime
Domain jumlah_penawaran integer
Domain status fixed length character string, 10 penawaranH (
kdpenawaran kode penawaran NOT NULL kdkonsumen kode konsumen NOT NULL kdkaryawan kode karyawan NOT NULL kdproyek kode proyek NOT NULL nama_penawaran nama penawaran NOT NULL tgl_penawaran tanggal penawaran NOT NULL
status status penawaran NOT NULL Primary Key (kdpenawaran)
Foreign Key (kdkonsumen) References mskonsumen (kdkonsumen)
ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key (kdkaryawan) References mskaryawan (kdkaryawan)
ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key (kdproyek) References msjabatan (kdproyek) ON UPDATE CASCADE ON DELETE NO ACTION )
11. DBDL (Database Design Language) untuk Tabel pembayaranH
Domain kdpembayaran fixed length character string, 5 Domain kdkaryawan fixed length character string, 5 Domain kdproyek fixed length character string, 5 Domain tgl_pelunasan datetime
pembayaran (
kdpembayaran kode pembayaran NOT NULL kdkaryawan kode karyawan NOT NULL kdproyek kode proyek NOT NULL tgl_pelunasan tanggal pelunasan NOT NULL Primary Key (kdpembayaran)
Foreign Key (kdkaryawan) References mskaryawan (kdkaryawan)
ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key (kdproyek) References msproyek (kdproyek)
ON UPDATE CASCADE ON DELETE NO ACTION )
12. DBDL (Database Design Language) untuk Tabel msjabatan Domain kdjabatan fixed length character string, 5 Domain jabatan variable length character string, 20 msjabatan (
kdjabatan kode jabatan NOT NULL
jabatan jabatan NOT NULL
Primary Key (kdjabatan) )
13. DBDL (Database Design Language) untuk Tabel peminjamanH
Domain kdkaryawan fixed length character string, 5 Domain kdpeminjaman fixed length character string, 5 Domain kdrental fixed length character string, 5 Domain tgl_pinjam datetime
Domain tgl_kembali datetime peminjamanH (
kdkaryawan kode karyawan NOT NULL kdpeminjaman kode peminjaman NOT NULL
kdrental kode rental NOT NULL tgl_pinjam tanggal pinjam NOT NULL tgl_kembali tanggal kembali NOT NULL Primary Key (kdkaryawan, kdpeminjaman)
Foreign Key (kdkaryawan) References mskaryawan (kdkaryawan)
ON UPDATE CASCADE ON DELETE NO ACTION
Foreign Key (kdperalatan) References msperalatan (kdperalatan)
ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key (kdrental) References msrental (kdrental)
ON UPDATE CASCADE ON DELETE NO ACTION )
14. DBDL (Database Design Language) untuk Tabel TelpRental Domain NoTelpRental numeric
Domain kdrental fixed length character string, 5 TelpRental (
NoTelpRental no telp rental NOT NULL kdrental kode rental NOT NULL Primary Key (NoTelpRental)
Foreign Key (kdrental) References msrental (kdrental) ON UPDATE CASCADE ON DELETE NO ACTION )
15. DBDL (Database Design Language) untuk Tabel msproyek Domain kdproyek fixed length character string, 5 Domain nama_proyek variable length character string, 20 Domain alamat_proyek variable length character string, 20 Domain kota variable length character string, 20 Domain tgl_mulai datetime
Domain tgl_selesai datetime Domain harga_proyek integer msproyek (
kdproyek kode proyek NOT NULL nama_proyek nama proyek NOT NULL alamat_proyek alamat proyek NOT NULL
kota kota proyek NOT NULL
tgl_mulai tanggal mulai NOT NULL tgl_selesai tanggal selesai NOT NULL harga_proyek harga proyek NOT NULL Primary Key (kdproyek)
)
16. DBDL (Database Design Language) untuk Tabel pembayaranD
Domain kdpembayaran fixed length character string, 5 Domainkdkonsumen fixed length character string, 5 Domain tgl_pembayaran integer
pembayaranD (
kdpembayaran kode pembayaran NOT NULL kdkonsumen kode konsumen NOT NULL jml_pembayaran jumlah pembayaran NOT NULL tgl_pembayaran tanggal pembayaran NOT NULL Primary Key (kdpembayaran, kdkonsumen)
Foreign Key (kdpembayaran) References mspembayaran (kdpembayaran)
ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key (kdkonsumen) References mskonsumen (kdkonsumen)
ON UPDATE CASCADE ON DELETE NO ACTION )
17. DBDL (Database Design Language) untuk Tabel peminjamanD
Domain kdkaryawan fixed length character string, 5 Domain kdpeminjaman fixed length character string, 5 Domain kdperalatan fixed length character string, 5 Domain qty integer
peminjamanD (
kdkaryawan kode karyawan NOT NULL kdpeminjaman kode peminjaman NOT NULL kdperalatan kode peralatan NOT NULL qty jumlah peralatan NOT NULL
Primary Key (kdkaryawan, kdpeminjaman, kdperalatan)
Foreign Key (kdkaryawan) References mskaryawan (kdkaryawan)
ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key (kdpeminjaman) References mspeminjaman (kdpeminjaman)
ON UPDATE CASCADE ON DELETE NO ACTION
Foreign Key (kdperalatan) References msperalatan (kdperalatan)
ON UPDATE CASCADE ON DELETE NO ACTION )
18. DBDL (Database Design Language) untuk Tabel penawaranD
Domain kdpenawaran fixed length character string, 5 Domain kdperalatan fixed length character string, 5 Domain kdbarang fixed length character string, 5 Domain kdjasa fixed length character string, 5 Domain qty_barang integer
Domain qty_peralatan integer penawaranD (
kdpenawaran kode penawaran NOT NULL kdperalatan kode peralatan NOT NULL kdbarang kode barang NOT NULL
qty_barang jumlah barang NOT NULL qty_peralatan jumlah peralatan NOT NULL Primary Key (kdpenawaran, kdperalatan, kdbarang, kdjasa) Foreign Key (kdpenawaran) References mspenawaran (kdpenawaran)
ON UPDATE CASCADE ON DELETE NO ACTION
Foreign Key (kdperalatan) References msperalatan (kdperalatan)
ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key (kdbarang) References msbarang (kdbarang)
ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key (kdjasa) References msjasa (kdjasa)
ON UPDATE CASCADE ON DELETE NO ACTION )
19. DBDL (Database Design Language) untuk Tabel msjasa Domain kdjasa fixed length character string, 5 Domain jasa variable length character string, 20 Domain biaya integer
msjasa (
kdjasa kode jasa NOT NULL
jasa jasa NOT NULL
biaya harga jasa NOT NULL
Primary Key (kdjasa) )
20. DBDL (Database Design Language) untuk Tabel mskonsumen
Domain kdkonsumen fixed length character string, 5 Domain nama_konsumen variable length character string, 20 Domain alamat_konsumen variable length character string, 20 Domain kota variable length character string, 20 mskonsumen (
kdkonsumen kode konsumen NOT NULL nama_konsumen nama konsumen NOT NULL alamat_konsumen alamat konsumen NOT NULL
kota kota konsumen NOT NULL
Primary Key (kdkonsumen) )
21. DBDL (Database Design Language) untuk Tabel TelpKonsumen
Domain NoTelpKonsumen numeric
Domain kdkonsumen fixed length character string, 5 TelpKonsumen (
NoTelpKonsumen no telepon konsumen NOT NULL kdkonsumen kode konsumen NOT NULL Primary Key (NoTelpKonsumen)
Foreign Key (kdkonsumen) References mskonsumen (kdkonsumen)
)
22. DBDL (Database Design Language) untuk Tabel msperalatan Domain kdperalatan fixed length character string, 5 Domain nama_peralatan variable length character string, 20 Domain harga_sewa integer
Domain stok integer msperalatan (
kdperalatan kode peralatan NOT NULL nama_peralatan nama peralatan NOT NULL harga_sewa harga sewa NOT NULL stok stok peralatan NOT NULL Primary Key (kdperalatan)
)
4.1.3.2 Menganalisis Transaksi
Analisa transaksi dilakukan untuk memahami penggunaan transaksi atau query yang akan dijalankan pada basis data dan untuk menganalisis transaksi-transaksi yang penting atau sering digunakan. Hasil dari analisis tersebut dapat digunakan dalam pemilihan index yang tepat. Langkah-langkah dalam menganalisis transaksi, yaitu:
1. M emetakan semua jalur transaksi dalam relasi
2. M enentukan relasi mana yang paling sering diakses oleh transaksi