BAB 3
ANALISIS KEBUTUHAN DAN PERANCANGAN SISTEM BASIS DATA
3.1 Analisis Kebutuhan
3.1.1 Riwayat Perusahaan 3.1.1.1 Sejarah Organisasi
PT Cavenzi Indonesia cabang Plaza Meubel Cawang didirikan pada tanggal 18 Januari 2007 oleh Bapak Adrian Haryono Mulyoharjono dan Bapak Alwi Koty, yang disahkan oleh Bapak Rusnaldy, S.H. selaku notarisnya. Perusahaan yang bergerak dalam industri meubel dan beralamat di Jl. Otista Raya No. 82a Cawang Jakarta Timur ini selain memproduksi barang – barang meubel, juga mengambil barang – barang meubel dari supplier – supplier untuk dijual. PT Cavenzi Indonesia bekerja sama dengan perusahaan – perusahaan lain, dimana PT Cavenzi Indonesia menyediakan barang – barang meubel bagi perusahaan – perusahaan tersebut.
3.1.1.2 Visi dan Misi
Visi dari perusahaan adalah menjadi salah satu perusahaan meubel yang dapat memenuhi permintaan konsumen dan kebutuhan pasar terhadap meubel.
• Meningkatkan kualitas, baik pelayanan kepada pelanggan (Meningkatkan kinerja karyawan pada setiap bagian), maupun barang – barang yang dijual
• Menjalin kerja sama yang baik dengan supplier – supplier.
3.1.2 Struktur Organisasi
Struktur organisasi suatu perusahaan memegang peranan penting, karena dapat menggambarkan dengan jelas fungsi-fungsi dan pembagian tugas dalam organisasi. Dalam struktur organisasi akan digambarkan tata hubungan kerja, wewenang, dan tanggung jawab dari tiap-tiap bagian yang ada dalam organisasi. Struktur organisasi bertujuan membantu perusahaan dalam penyelesaian tugas secara efektif dan efisien agar tercipta suatu kelancaran kerja, guna mencapai tujuan perusahaan yang telah ditetapkan.
Struktur organisasi PT Cavenzi Indonesia adalah struktur organisasi garis, karena tugas dan perintah mengalir dari pimpinan melalui garis vertikal sampai pada tingkat yang terbawah. Struktur ini menjelaskan bahwa setiap bawahan menerima perintah langsung dari satu atasan dan bertanggung jawab penuh terhadap atasannya.
Struktur organisasi PT Cavenzi Indonesia dapat dilihat pada gambar berikut ini :
Gambar 3.1 Struktur Organisasi PT Cavenzi Indonesia RUPS DEWAN KOMISARIS DIREKTUR UTAMA MANAGER PEMASARAN MANAGER KEUANGAN WAKIL MANAGER KEUANGAN BAGIAN PERSEDIAAN BARANG SALES PROMOTION GIRLS OFFICE BOY DAN SOPIR STAFF ADMINISTRASI
3.1.3 Pembagian Tugas dan Tanggung Jawab
Uraian tugas dari masing-masing posisi pada struktur organisasi PT Cavenzi Indonesia adalah sebagai berikut :
a. RUPS (Rapat Umum Pemegang Saham).
1) Pemegang kekuasaan tertinggi dalam pengambilan keputusan. 2) Memilih dan mengangkat dewan komisaris dan direktur.
3) Mengawasi dan menerima pertanggungjawaban pelaksanaan kegiatan perusahaan dari dewan komisaris.
b. Dewan Komisaris.
1) Mengawasi pelaksanaan kegiatan perusahaan dalam pencapaian tujuan yang telah ditetapkan.
2) Menentukan kebijakan dan tujuan perusahaan secara keseluruhan. 3) Bertanggungjawab kepada RUPS atas seluruh kegiatan
perusahaan. c. Direktur Utama.
1) Merumuskan, menyusun dan menetapkan kegiatan operasional perusahaan.
2) Mengawasi, mengkoordinir dan mengevaluasi kegiatan dari masing-masing manager dalam menjalankan aktivitas perusahaan. 3) Memberikan pengarahan umum serta menetapkan tugas,
5) Memiliki hak / wewenang untuk memberhentikan dan menerima karyawan.
d. Manager Keuangan
1) Memeriksa laporan keuangan per bulan yang disusun oleh Wakil Manager Keuangan.
e. Manager Pemasaran
1) Memantau arus penjualan barang ke pelanggan, yang meliputi pesanan penjualan barang, pembayaran pelanggan, pengiriman barang ke pelanggan, dan retur penjualan dengan memeriksa laporan penjualan yang telah disusun oleh staff administrasi. 2) Memantau arus persediaan barang dari supplier / vendor, yang
meliputi pembelian barang jadi ke supplier dan retur pembelian dengan memeriksa laporan pembelian dan laporan persediaan yang telah disusun oleh bagian persediaan barang.
f. Wakil Manager Keuangan
1) Menyusun laporan keuangan per bulan berdasarkan laporan penjualan, pembelian, dan persediaan.
g. Bagian Persediaan Barang
1) Mengatur persediaan barang dari supplier, yang meliputi pembelian barang jadi ke supplier dan retur pembelian.
2) Mencatat barang masuk dan keluar.
3) Menyusun laporan pembelian dan persediaan per bulan. h. Staff Administrasi
1) Mengatur penjualan barang ke pelanggan, yang meliputi pesanan penjualan barang, pembayaran pelanggan, pengiriman barang ke pelanggan, dan retur penjualan
2) Membuat kwitansi, faktur, dan surat jalan (untuk pelanggan). 3) Mendokumentasikan faktur, tanda terima, bukti surat jalan, dan
data retur penjualan.
4) Menyusun laporan penjualan per bulan. i. Sales Promotion Girls
1) Melayani dan melakukan penawaran barang kepada pelanggan. j. Office Boy dan Sopir
1) Membersihkan showroom tiap hari. 2) Merakit meubel.
3) Pesuruh.
4) Mengirimkan barang pesanan pelanggan
3.1.4 Sistem yang Sedang Berjalan 3.1.4.1 Diagram Aliran Dokumen
Mulai Sales Promotion Girls Pelanggan Sesuai dengan yang dibutuhkan? Selesai Staff Administrasi Ya Bagian Persediaan Barang Sopir Melakukan penawaran barang Menerima informasi penawaran Mengeluarkan daftar harga Daftar harga Tidak Apakah harga sesuai? Tidak Memesan barang Ya Membuat faktur Menawar harga 4 3 2 Membayar 50% dari harga beli Membuat surat jalan 2 Surat jalan Packing barang Kirim barang Ada barang yang rusak? Tidak Melunasi pembayaran Faktur Memberikan faktur (bukti pelunasan) dan surat jalan
Faktur dan surat jalan Ya Memproses retur penjualan Mendokumen tasikan faktur Ordner Mendokumen tasikan surat jalan Ordner Membuat kwitansi Kwitansi Menerima surat jalan Menerima faktur Wakil Manager Keuangan Menerima faktur Menerima faktur Membuat laporan penjualan Mencatat barang keluar
3.1.4.1.2 DAD Sistem Persediaan
3.1.4.2 Kebutuhan pengguna
Analisis kebutuhan sistem pada PT Cavenzi Indonesia digambarkan dalam tabel berikut :
Tabel 3.1 Informasi Kebutuhan Pengguna
Informasi Pengguna
Barang Bagian persediaan barang
Supplier Bagian persediaan barang
Customer Staff administrasi
Pesanan customer Staff administrasi Pembayaran customer Staff administrasi Pengiriman barang ke customer Staff administrasi
Pembelian barang ke supplier Bagian persediaan barang Retur penjualan Staff administrasi
Retur pembelian Bagian persediaan barang Laporan penjualan Staff administrasi
Laporan pembelian Bagian persediaan barang Laporan persediaan Bagian persediaan barang
3.1.5 Permasalahan yang Dihadapi
Dari analisis sistem yang berlaku ditemukan permasalahan yaitu penjualan dan persediaan masih dilakukan secara manual dengan menggunakan kertas, sehingga membutuhkan waktu, biaya dan tenaga yang cukup besar. Melihat permasalahan yang ada, maka PT Cavenzi Indonesia memutuskan untuk menggunakan sistem penjualan dan persediaan yang baru dan alternatif yang lain untuk mengatasi permasalahan yang ada.
Sistem penjualan dan persediaan ini dibuat lebih karena adanya arahan dari pihak manajemen PT Cavenzi Indonesia untuk lebih meningkatkan penjualan dan dapat memantau persediaan yang ada.
3.1.6 Usulan Pemecahan Masalah
Dengan melihat permasalahan yang ada, maka usulan atas masalah yang dihadapi adalah dengan mengubah sistem penjualan dan persediaan yang manual menjadi sistem penjualan dan persediaan yang dapat dilakukan dengan menggunakan aplikasi berbasis web dan merancang sistem basis data untuk menyimpan data penjualan dan persediaan tersebut.
Dengan adanya sistem ini, pengguna diberikan kemudahan dalam melakukan kegiatan penjualan dan persediaan, sehingga akan lebih
persediaan yang akurat dan konsisten, yang mana dapat meningkatkan kinerja PT Cavenzi Indonesia dalam mengolah data – data tersebut.
3.2 Perancangan Sistem Basis Data
Perancangan basis data dilakukan berdasarkan kebutuhan informasi yang telah diidentifikasi pada PT Cavenzi Indonesia dan terbagi dalam tiga tahap, yaitu:
• Perancangan basis data konseptual • Perancangan basis data logical • Perancangan basis data fisikal
3.2.1 Perancangan Basis Data Konseptual 3.2.1.1 Identifikasi Tipe Entity
Tabel 3.2 Identifikasi Tipe Entity
Nama Entity Deskripsi Alias Kejadian
MsBarang Barang – barang yang dijual di PT Cavenzi Indonesia
Barang Memiliki beberapa macam, seperti sofa, lemari, meja, dll. MsSupplier Perusahaan – perusahaan yang menyediakan barang untuk PT Cavenzi Indonesia
Supplier Supplier memasok barang – barang yang akan dijual ke pelanggan
Nama Entity Deskripsi Alias Kejadian MsKaryawan Karyawan yang bekerja
pada PT Cavenzi Indonesia
Pegawai Bekerja di PT Cavenzi
MsCustomer Pelanggan yang hendak membeli suatu barang
Customer Melakukan transaksi pembelian barang
TrPemesanan Berisi informasi
mengenai pemesanan barang dari pelanggan
Pemesanan Pelanggan memesan barang
TrPembayaran Berisi informasi
mengenai pembayaran pelanggan atas pesanannya Pembayaran Pelanggan membayar barang – barang yang dipesannya
TrPengiriman Berisi informasi
mengenai pengiriman barang – barang ke pelanggan
Pengiriman Barang – barang dikirim setelah pelanggan
melakukan pembayaran
TrPembelian Berisi informasi
mengenai pembelian barang ke supplier
Pembelian PT Cavenzi
Indonesia membeli barang dari supplier
Nama Entity Deskripsi Alias Kejadian TrReturPenjualan Informasi mengenai
retur barang – barang yang dijual ke pelanggan
Retur Penjualan
Jika ada barang rusak dikirim, maka pelanggan akan meretur barang itu
TrReturPembelian Informasi mengenai retur barang – barang yang dibeli dari supplier
Retur Pembelian
Jika ada barang rusak dikirim
supplier ke
perusahaan, maka perusahaan akan meretur barang itu
CustomerTalk Saran dan kritik customer Saran dan Kritik Setiap customer berhak untuk mengeluarkan saran dan kritik, demi kemajuan
perusahaan
3.2.1.2 Identifikasi Tipe Relationship
Tabel 3.3 Identifikasi Tipe Relationship
Nama Entity Multipicity Relational Multipicity Nama Entitas MsBarang 1..1 1..* Dimiliki Dimiliki 1..* 1..* TrPemesanan TrPembelian
Nama Entity Multipicity Relational Multipicity Nama Entitas
MsSupplier 1..1 Dimiliki 1..* TrPembelian
MsKaryawan 1..1 1..1 1..1 1..1 Melakukan Melayani Melayani Melakukan 1..* 1..* 1..* 1..* TrPembelian TrPemesanan TrPembayaran TrPengiriman MsCustomer 1..1 1..1 Melakukan Memberikan 1..* 1..* TrPemesanan CustomerTalk
TrPemesanan 1..1 Dimiliki 1..1 TrPembayaran
TrPembayaran 1..1 Melakukan 1..1 TrPengiriman
TrPengiriman 1..1 Memiliki 0..1 TrReturPenjualan
3.2.1.3 Identifikasi dan Asosiasi Atribut dengan Entity atau Tipe
Relationship
Tabel 3.4 Entity MsBarang Entity : MsBarang
Atribut Deskripsi Tipe Data Null Multi value KdBarang NamaBarang JenisBarang Harga Stok Kode Barang Nama Barang Jenis Barang Harga Persediaan Barang Char(5) Varchar(30) Varchar(30) Varchar(20) Int Tidak Tidak Tidak Tidak Tidak Tidak Tidak Tidak Tidak Tidak
Tabel 3.5 Entity MsSupplier Entity : MsSupplier
Atribut Deskripsi Tipe Data Null Multi value KdSupplier NamaSupplier AlamatSupplier TelpSupplier EmailSupplier Kode Supplier Nama Supplier Alamat Supplier Telepon Supplier Email Supplier Char(5) Varchar(30) Text Varchar(20) Varchar(50) Tidak Tidak Tidak Tidak Tidak Tidak Tidak Tidak Ya Ya
Tabel 3.6 Entity MsKaryawan Entity : MsKaryawan
Atribut Deskripsi Tipe Data Null Multi value KdKaryawan NamaKaryawan AlamatKaryawan TelpKaryawan EmailKaryawan Jabatan Username Password Kode Karyawan Nama Karyawan Alamat Karyawan Telepon Karyawan Email Karyawan Jabatan Karyawan Username Karyawan Password Karyawan Char(5) Varchar(30) Text Varchar(20) Varchar(50) Varchar(30) Varchar(20) Varchar(35) Tidak Tidak Tidak Tidak Tidak Tidak Tidak Tidak Tidak Tidak Tidak Ya Ya Tidak Tidak Tidak
Tabel 3.7 Entity MsCustomer Entity : MsCustomer
Atribut Deskripsi Tipe Data Null Multi value KdCust NamaCust AlamatCust KdPos TelpCust EmailCust NoRekCust Username Kode Customer Nama Customer Alamat Customer Kode Pos Customer Telepon Customer Email Customer
Nomor Rekening Customer Username Customer Int Varchar(30) Text Char(5) Varchar(20) Varchar(50) Varchar(20) Varchar(20) Tidak Tidak Tidak Tidak Tidak Tidak Tidak Tidak Tidak Tidak Tidak Tidak Ya Ya Ya Tidak
Password Password Customer Varchar(35) Tidak Tidak
Tabel 3.8 Entity TrPemesanan Entity : TrPemesanan
Atribut Deskripsi Tipe Data Null Multi value KdPemesanan KdBarang HargaJual Qty TglPesan Kode Pemesanan Kode Barang Harga Jual Satuan Jumlah Barang Tanggal Pemesanan Char(6) Char(5) Varchar(20) Int Datetime Tidak Tidak Tidak Tidak Tidak Tidak Tidak Tidak Tidak Tidak
Tabel 3.9 Entity TrPembayaran Entity : TrPembayaran
Atribut Deskripsi Tipe Data Null Multi value KdPembayaran TglBayar Kode Penjualan Tanggal Pembayaran Char(6) Datetime Tidak Tidak Tidak Tidak
Tabel 3.10 Entity TrPengiriman Entity : TrPengiriman
Atribut Deskripsi Tipe Data Null Multi value KdPengiriman Kode Pengiriman Char(6) Tidak Tidak
Tabel 3.11 Entity TrPembelian Entity : TrPembelian
Atribut Deskripsi Tipe Data Null Multi value KdPembelian KdBarang HargaBeli Qty TglBeli Kode Pembelian Kode Barang Harga Beli Satuan Banyak Barang Tanggal Beli Char(6) Char(5) Varchar(20) Int Datetime Tidak Tidak Tidak Tidak Tidak Tidak Tidak Tidak Tidak Tidak
Tabel 3.12 Entity TrReturPenjualan Entity : TrReturPenjualan
Atribut Deskripsi Tipe Data Null Multi value KdRtrPenjualan
Qty
TglPengembalian
Kode Retur Penjualan Banyak Barang Tanggal Pengembalian Char(6) Int Datetime Tidak Tidak Tidak Tidak Tidak Tidak
Tabel 3.13 Entity TrReturPembelian Entity : TrReturPembelian
Atribut Deskripsi Tipe Data Null Multi value KdRtrPembelian
Qty
TglPengembalian
Kode Retur Pembelian Banyak Barang Tanggal Pengembalian Char(6) Int Datetime Tidak Tidak Tidak Tidak Tidak Tidak
Tabel 3.14 Entity CustomerTalk Entity : CustomerTalk
Atribut Deskripsi Tipe Data Null Multi value KdCust
Talk Tgl
Kode Customer Isi saran dan kritik Tanggal pengiriman Char(5) Text Datetime Tidak Tidak Tidak Tidak Tidak Tidak
3.2.1.4 Menentukan Atribut Domain
Tabel 3.15 Atribut Domain Entity MsBarang Entity : MsBarang
Atribut Atribut Domain
KdBarang
NamaBarang
JenisBarang
Harga
Harus diawali dengan ‘KB’, sisa karakter berupa angka dan harus 5 karakter
Diisi dengan karakter, maksimal 30 karakter
Diisi dengan karakter, maksimal 30 karakter
Diisi dengan karakter, maksimal 20 karakter
Tabel 3.16 Atribut Domain Entity MsSupplier Entity : MsSupplier
Tabel 3.17 Atribut Domain Entity MsKaryawan Entity : MsKaryawan
Atribut Atribut Domain
KdSupplier
NamaSupplier
AlamatSupplier TelpSupplier
EmailSupplier
Harus diawali dengan ‘KS’, sisa karakter berupa angka dan harus 5 karakter
Diisi dengan karakter, maksimal 30 karakter
Diisi dengan karakter
Diisi karakter berupa angka, maksimal 20 karakter
Diisi dengan karakter, maksimal 50 karakter
Atribut Atribut Domain
KdKaryawan
NamaKaryawan
Harus diawali dengan ‘KK’, sisa karakter berupa angka dan harus 5 karakter
Diisi dengan karakter, maksimal 30 karakter
Tabel 3.18 Atribut Domain Entity MsCustomer Entity : MsCustomer AlamatKaryawan TelpKaryawan EmailKaryawan Jabatan Username Password
Diisi dengan karakter
Diisi karakter berupa angka, maksimal 20 karakter
Diisi dengan karakter, maksimal 50 karakter
Diisi dengan karakter, maksimal 30 karakter
Diisi dengan karakter, maksimal 20 karakter
Diisi dengan karakter, maksimal 35 karakter
Atribut Atribut Domain
KdCust NamaCust
AlamatCust KdPos
Diisi dengan angka
Diisi dengan karakter, maksimal 30 karakter
Diisi dengan karakter
T
Tabel 3.19 Atribut Domain Entity TrPemesanan Entity : TrPemesanan EmailCust NoRekCust Username Password 20 karakter
Diisi dengan karakter, maksimal 50 karakter
Diisi karakter berupa angka, maksimal 20 karakter
Diisi dengan karakter, maksimal 20 karakter
Diisi dengan karakter, maksimal 35 karakter
Atribut Atribut Domain
KdPemesanan
KdBarang
HargaJual
Qty
Harus diawali dengan ‘KPB sisa karakter berupa angka dan harus 6 karakter
Harus diawali dengan ‘KB’, sisa karakter berupa angka dan harus 5 karakter
Diisi dengan karakter, maksimal 20 karakter
Tabel 3.20 Atribut Domain Entity TrPembayaran Entity : TrPembayaran
Tabel 3.21 Atribut Domain Entity TrPengiriman Entity : TrPengiriman
TglPesan Diisi dengan tanggal dan waktu dengan format yyyy-mm-dd hh:mm:ss
Atribut Atribut Domain
KdPembayaran
TglBayar
Harus diawali dengan ‘KBB’, sisa karakter berupa angka dan harus 6 karakter
Diisi dengan tanggal dan waktu dengan format yyyy-mm-dd hh:mm:ss
Atribut Atribut Domain
KdPengiriman
TglKirim
Harus diawali dengan ‘KKB’, sisa karakter berupa angka dan harus 6 karakter
Tabel 3.22 Atribut Domain Entity TrPembelian Entity : TrPembelian
Tabel 3.23 Atribut Domain Entity TrReturPenjualan Entity : TrReturPenjualan
Atribut Atribut Domain
KdPembelian
KdBarang
HargaBeli
Qty TglBeli
Harus diawali dengan ‘KBI’, sisa karakter berupa angka dan harus 6 karakter
Harus diawali dengan ‘KB’, sisa karakter berupa angka dan harus 5 karakter
Diisi dengan karakter, maksimal 20 karakter
Diisi dengan angka
Diisi dengan tanggal dan waktu dengan format yyyy-mm-dd hh:mm:ss
Atribut Atribut Domain
KdRtrPenjualan
Qty
Harus diawali dengan ‘KRJ’, sisa karakter berupa angka dan harus 6 karakter
Tabel 3.24 Atribut Domain Entity TrReturPembelian Entity : TrReturPembelian
TglPengembalian Diisi dengan tanggal dan waktu dengan format yyyy-mm-dd hh:mm:ss
Atribut Atribut Domain
KdRtrPembelian
Qty
TglPengembalian
Harus diawali dengan ‘KRB’, sisa karakter berupa angka dan harus 6 karakter
Diisi dengan angka
Diisi dengan tanggal dan waktu dengan format yyyy-mm-dd hh:mm:ss
Tabel 3.25 Atribut Domain Entity CustomerTalk Entity : Customer Talk
3.2.1.5 Menentukan Atribut Candidate Key dan Primary Key Setiap
Entity
Tabel 3.26 Identifikasi Candidate Key dan Primary Key
Entity Candidate Key Primary Key
MsBarang KdBarang KdBarang
MsSupplier KdSupplier KdSupplier
MsKaryawan KdKaryawan KdKaryawan
MsCustomer KdCust KdCust TrPemesanan KdPemesanan
KdBarang
KdPemesanan KdBarang
TrPembayaran KdPembayaran KdPembayaran
TrPengiriman KdPengiriman KdPengiriman
Atribut Atribut Domain
KdCust
Talk Tgl
Harus diawali dengan ‘KC’, sisa karakter berupa angka dan harus 5 karakter
Diisi dengan karakter
Diisi dengan tanggal dan waktu dengan format yyyy-mm-dd hh:mm:ss
Entity Candidate Key Primary Key TrPembelian KdPembelian
KdBarang
KdPembelian KdBarang
TrReturPenjualan KdRtrPenjualan KdRtrPenjualan TrReturPembelian KdRtrPembelian KdRtrPembelian
3.2.1.6 Mempertimbangkan Penggunaan Konsep Pemodelan Enhanced
Tidak terdapat entity dengan konsep enhanced modeling, seperti spesialisasi, generalisasi, penggabungan (aggregation) dan komposisi (composition).
3.2.1.7 Cek Redudansi
Pada langkah ini, dilakukan pengecekan untuk menghilangkan redudansi. Terdapat 3 aktivitas pada langkah ini yaitu :
1. Mengecek relasi one-to-one (1:1)
Tujuannya supaya tidak ada dua atau lebih tipe entitas yang merepresentasikan objek yang sama dalam perusahaan. Adapun 1:1 relationship (1:1) yang diuji antara lain :
Gambar 3.6 Hubungan one to one (1:1) antara TrPemesanan dan TrPembayaran
Gambar 3.7 Hubungan one to one (1:1) antara TrPembayaran dan TrPengiriman
Gambar 3.8 Hubungan one to one (1:1) antara TrPengiriman dan TrPemesanan
Dari hasil pengujian tersebut ternyata tidak ditemukan adanya dua atau lebih entitas yang merepresentasikan objek yang sama dalam perusahaan.
2. Menghilangkan relasi yang redundan.
Pada relasi-relasi entity yang ada, tidak ada relasi yang redundan yang perlu dihilangkan.
3. Mempertimbangkan dimensi waktu.
Tidak ada relasi yang berhubungan dengan dimensi waktu. Oleh karena itu langkah ini tidak dilakukan.
3.2.1.8 Validasi Model Konseptual Terhadap Transaksi User
Validasi model data konseptual diuji untuk memastikan model konseptual lokal mendukung dan menjalankan transaksi yang dibutuhkan oleh pengguna.
Keterangan :
(A) Barang dimiliki transaksi pemesanan (B) Barang dimiliki transaksi pembelian
(C) Supplier dimiliki transaksi pembelian barang (D) Karyawan melakukan transaksi pembelian (E) Karyawan melayani transaksi pemesanan (F) Karyawan melayani transaksi pembayaran (G) Karyawan melakukan transaksi pengiriman (H) Customer melakukan pemesanan barang
(I) Customer memberikan saran dan kritik (Customer Talk) (J) Transaksi pemesanan dimiliki transaksi pembayaran (K) Transaksi pembayaran melakukan transaksi pengiriman (L) Pengiriman memiliki retur penjualan
(M) Pembelian memiliki retur pembelian
3.2.1.9 Melakukan Review Model Data Konseptual dengan User Model data konseptual merupakan representasi yang sebenarnya dari transaksi pengguna. Setelah ditinjau secara bersama-sama dengan penggunaannya, rancangan basis data konseptual yang dirancang sampai tahap ini dianggap mampu mewakili keinginan pengguna sistem di PT Cavenzi Indonesia.
3.2.2 Pemilihan DBMS
Berikut ini memperlihatkan perbandingan DBMS MySQL Server 2000 standard edition dengan Oracle 9i standard edition :
Tabel 3.27 Tabel perbandingan MySQL Server 2000 Standard Edition dengan Oracle Standard edition
Kriteria Feasibility Faktor Pemberat
MySQL Oracle 9i
Operational Feasibility
menjelaskan sebaik apa sistem akan bekerja dan juga penerimaan solusi yang ditawarkan 25% MySQL mendukung user akan mudah mengoperasikan sistem ini.Karena aplikasi PHP 4.0 berbasis web interface seperti ini mungkin sangat familiar bagi user yang biasa surfing di internet dan akan mengurangi
terjadinya human error
Dari segi keamanan oracle memang memberikan fungsionalitas yang tinggi, tetapi di lain pihak Oracle lebih umum digunakan pada perusahaan dengan basis data yang sangat besar, sehingga perusahaan dengan basis data yang tidak besar akan lebih memilih DBMS lain dan tidak
Kriteria Feasibility Faktor Pemberat MySQL Oracle 9i Nilai : 85 Nilai : 80 Technical Feasibility menilai kematangan teknologi, tingkat keahlian teknis yang dibutuhkan untuk mengembangkan, mengoperasikan, dan mengelola DBMS 25% Membuat aplikasi web-based, khususnya PHP 4.0 sangat mudah dikuasai oleh programmer, atau
yang baru ingin menguasainya
dapat menjadi ahli dalam waktu singkat. MySQL adalah DBMS yang mudah digunakan dan dioperasikan.
Secara teknis oracle membutuhkan
keahlian yang lebih daripada SQL Server. Namun oracle ini mendukung semua platform, tidak hanya
platform yang berbasis windows saja. Fitur yang mendukung adalah PL/SQL, dimana PL/SQL memiliki fitur: Indexes: B-Tree indexes, Bitmap indexes,
Kriteria Feasibility Faktor Pemberat MySQL Oracle 9i indexes, Domain indexes Tables: BEFORE trigger, AFTER trigger, INSTEAD OF trigger Procedures : PL/SQL statements, Java methods, Third- Generation Language (3GL) routines
Array : Mendukung Nilai : 80 Nilai : 85
Economic Feasibility Berapa besar biaya yang dibutuhkan untuk menerapkan solusi 40% MySQL Free Processor : Pentium 166 MHz Memory : 64 MB RAM
Hard disk Space: 145 MB, 380 MB (typical)
Oracle 9i Enterprise Edition dihargai US$ 40.000 namun belum meliputi fitur-fitur manajemen manapun OLAP dan data mining. Bila ingin menginstal fitur-fitur
Kriteria Feasibility Faktor Pemberat MySQL Oracle 9i Dilihat dari kebutuhan piranti lunak: Microsoft Windows, Dreamweaver Mx
tersebut, maka harus mengeluarkan biaya tambahan lagi dan ada
biaya tambahan untuk pelatihan karena keahlian yang tinggi. Dilihat dari kebutuhan
piranti keras (minimum): Processor : Pentium 166 MHz Memory : 128 MB RAM
Hard disk Space: 140 MB pada system Drive ditambah 4.5 GB untuk Oracle Home
Kriteria Feasibility Faktor Pemberat MySQL Oracle 9i 9i mendukung semua platform termasuk platform berbasis windows, AIX-Based system, Compaq Tru64 UNIX, HP, LINUX, Intel,
Sun Solaris, dan sebagainya
Nilai : 90 Nilai : 80 Schedule Feasibility
Berapa lama yang diperlukan untuk merancang dan mengimplementasikan solusi 10% Karena tidak memerlukan keahlian teknis yang tinggi maka solusi dapat diimplementasikan
dalam waktu 5-7 bulan
Butuh waktu sekitar 9-12 bulan untuk mengimplementasikan solusi
Nilai : 75 Nilai : 70
Dari hasil analisis diatas diambil keputusan bahwa DBMS yang akan digunakan adalah MySQL. Hal ini berdasarkan dari nilai tertinggi MySQL memperoleh nilai 84,75. MySQL juga gratis dan gampang diimplementasikan.
Karakteristik DBMS MySQL 5.0.20 yang digunakan dalam perancangan fisikal ini :
Tabel 3.28 Karakteristik MySQL 5.0.20 MySQL 5.0.20
Tipe DBMS Transactional relational database server Kebutuhan Piranti Keras Processor : Pentium 166 MHz (minimum)
Memory : 64 MB RAM (minimum)
Hard disk Space: 145 MB (minimum), 380 MB (typical)
Kebutuhan Piranti Lunak Membutuhkan software Apache2Triad versi 1.5.4 untuk Windows versi 2000 ke atas.
Membutuhkan software updated phpMyAdmin to 2.7.0
Portability Dapat berjalan di atas berbagai macam OS.
Open Source Karena bersifat open source, maka tidak ada biaya license.
MySQL 5.0.20
Security Mempunyai beberapa lapisan keamanan seperti level subnetmask, nama host, user permission, dan password ter-enkripsi.
Scalability & Limits Dapat menangani jumlah records lebih dari 50 juta dan jumlah tabel 60 ribu
Graphical user interface Dapat menggunakan software sebagai antarmuka grafis dengan user, sehingga mudah digunakan.
3.2.3 Perancangan Basis Data Logikal
3.2.3.1 Menghilangkan Fitur yang Tidak Kompatibel dengan Model Relasional
Berikut ini adalah tahap-tahap dalam menghilangkan fitur-fitur yang tidak kompatibel dengan model relasional
1. Menghilangkan Many-To-Many (*:*) Binary Relationship a.Relasi Many-To-Many (*:*) pada entitas TrPembelian dan
MsBarang akan menghasilkan entitas baru yaitu entitas TrDetailPembelian
Gambar 3.10 Pemecahan menjadi dua relationship 1:* antara entity TrPembelian dan MsBarang
2. Hilangkan tipe relasi Many-To-Many (*:*) rekursif
Gambar 3.12 Relasi *:* rekursif MsKaryawan
3. Hilangkan atribut Multi-Value
a. Atribute Multi-Value TeleponSupplier pada entitas MsSupplier dihilangkan dengan menghasilkan sebuah entitas baru yaitu entitas TeleponSupplier
Gambar 3.13 Atribute Multi- Value TeleponSupplier
b.Atribute Multi-Value EmailSupplier pada entitas MsSupplier dihilangkan dengan menghasilkan sebuah
Gambar 3.14 Atribute Multi-Value EmailSupplier
c.Atribute Multi-Value TeleponKaryawan pada entitas MsKaryawan dihilangkan dengan menghasilkan sebuah entitas baru yaitu entitas TeleponKaryawan
Gambar 3.15 Atribute Multi-Value TeleponKaryawan
d.Atribute Multi-Value EmailKaryawan pada entitas MsKaryawan dihilangkan dengan menghasilkan sebuah entitas baru yaitu entitas EmailKaryawan
e.Atribute Multi-Value TeleponCustomer pada entitas MsCustomer dihilangkan dengan menghasilkan sebuah entitas baru yaitu entitas TeleponCustomer
Gambar 3.17 Atribute Multi-Value TeleponCustomer
f.Atribute Multi-Value EmailCustomer pada entitas MsCustomer dihilangkan dengan menghasilkan sebuah entitas baru yaitu entitas EmailCustomer
g.Atribute Multi-Value NoRekCustomer pada entitas MsCustomer dihilangkan dengan menghasilkan sebuah entitas baru yaitu entitas EmailCustomer
Gambar 3.19 Atribute Multi-Value NoRekeningCustomer
3.2.3.2 Membuat relasi untuk model data logikal lokal 1. Tipe entity kuat
- MsJenisBarang (KdJenisBarang, JenisBarang) Primary Key : KdJenisBarang
- MsSupplier (KdSupplier, NamaSupplier, AlamatSupplier) Primary Key : KdSupplier.
- MsJenisKaryawan (KdJenisKaryawan, Jabatan) Primary Key : KdJenisKaryawan
- MsCustomer (KdCust, NamaCust, AlamatCust, KdPos, Username, Password)
Primary Key : KdCust
- TrPengiriman (KdPengiriman, TglKirim) Primary Key : KdPengiriman
- TrPembelian (KdPembelian, KdBarang, HargaBeli, Qty, TglBeli)
Primary Key : KdPembelian
- TrReturPenjualan (KdRtrPenjualan, Qty, TglPengembalian)
Primary Key : KdRtrPenjualan
- TrReturPembelian (KdRtrPembelian, Qty, TglPengembalian)
Primary Key : KdRtrPembelian
2. Tipe Entity lemah
- MsBarang (KdBarang, KdJenisBarang, NamaBarang, JenisBarang, Harga, Stok)
Primary Key : MsBarang
Foreign Key : KdJenisBarang references MsJenisBarang
- MsKaryawan (KdKaryawan, KdJenisKaryawan, NamaKaryawan, AlamatKaryawan, Username, Password)
Primary Key : KdKaryawan
Foreign Key : KdJenisKaryawan references MsJenisKaryawan
Primary Key : KdPembelian, KdBarang Foreign Key :
KdPembelian references TrPembelian KdBarang references MsBarang
- TeleponSupplier (TelpSupplier, KdSupplier) Primary Key : TelpSupplier
Foreign Key : KdSupplier references MsSupplier - EmailSupplier (EmailSupplier, KdSupplier)
Primary Key : EmailSupplier
Foreign Key : KdSupplier references MsSupplier - TeleponKaryawan (TelpKaryawan, KdKaryawan)
Primary Key : TelpKaryawan
Foreign Key : KdKaryawan references MsKaryawan - EmailKaryawan (EmailKaryawan, KdKaryawan)
Primary Key : EmailKaryawan
Foreign Key : KdKaryawan references MsKaryawan - TeleponCustomer (TelpCust, KdCust)
Primary Key : TelpCust
Foreign Key : KdCust references MsCustomer - EmailCustomer (EmailCust, KdCust)
Foreign Key : KdCust references MsCustomer
3. Mengidentifikasi relasi One-To-Many (1:*) a. Hubungan MsSupplier dengan TrPembelian
b. Hubungan MsKaryawan dengan TrPembelian
d. Hubungan MsKaryawan dengan TrPembayaran
e. Hubungan MsKaryawan dengan TrPengiriman
f. Hubungan MsCustomer dengan TrPemesanan
4. Mengidentifikasi relasi One-To-One (1:1) a. Hubungan TrPemesanan dengan TrPembayaran
b. Hubungan TrPembayaran dengan TrPengiriman
d. Hubungan TrPengiriman dengan TrRtrPenjualan
e. Hubungan TrPembelian dengan TrRtrPembelian
5. Mengidentifikasi relasi Many-To-Many (*;*) a.
6. Mengidentifikasi atribut Multi-Value
a. Hubungan KdSupplier dengan TeleponSupplier untuk model relasi Multi-Value mempunyai
b. Hubungan KdSupplier dengan EmailSupplier untuk model relasi Multi-Value mempunyai
c. Hubungan KdKaryawan dengan TeleponKaryawan untuk model relasi Multi-Value mempunyai
d. Hubungan KdKaryawan dengan EmailKaryawan untuk model relasi Multi-Value mempunyai
e. Hubungan KdCustomer dengan TeleponCustomer untuk model relasi Multi-Value mempunyai
f. Hubungan KdCustomer dengan EmailCustomer untuk model relasi Multi-Value mempunyai
3.2.3.3 Memvalidasi relasi menggunakan normalisasi
• MsBarang (KdBarang, KdJenisBarang, NamaBarang, JenisBarang, Harga, Stok)
Primary Key : KdBarang
Foreign Key : KdJenisBarang references MsJenisBarang (KdJenisBarang)
1NF : Sudah memenuhi 1NF karena mempunyai primary key dan tidak ada lagi repeating group.
2NF : Sudah memenuhi 2NF karena tidak terdapat partial dependency.
3NF : Sudah memenuhi 3NF karena tidak terdapat transitive dependency
Hasil validasi normalisasi :
MsBarang (KdBarang, KdJenisBarang, NamaBarang, JenisBarang, Harga, Stok)
Primary key : KdBarang
Foreign Key : KdJenisBarang references MsJenisBarang (KdJenisBarang)
• MsJenisBarang (KdJenisBarang, JenisBarang) Primary Key : KdJenisBarang
1NF : Sudah memenuhi 1NF karena mempunyai primary key dan tidak ada lagi repeating group.
2NF : Sudah memenuhi 2NF karena tidak terdapat partial dependency.
3NF : Sudah memenuhi 3NF karena tidak terdapat transitive dependency
Hasil validasi normalisasi :
MsJenisBarang (KdJenisBarang, JenisBarang) Primary key : KdJenisBarang
• MsSupplier (KdSupplier, NamaSupplier, AlamatSupplier) Primary Key : KdSupplier
1NF : Sudah memenuhi 1NF karena mempunyai primary key dan tidak ada lagi repeating group.
2NF : Sudah memenuhi 2NF karena tidak terdapat partial dependency.
3NF : Sudah memenuhi 3NF karena tidak terdapat transitive dependency
Hasil validasi normalisasi :
MsSupplier (KdSupplier, NamaSupplier, AlamatSupplier) Primary key : KdSupplier
Foreign Key : KdJenisKaryawan references MsJenisKaryawan (KdJenisKaryawan) 1NF : Sudah memenuhi 1NF karena mempunyai primary key
dan tidak ada lagi repeating group.
2NF : Sudah memenuhi 2NF karena tidak terdapat partial dependency.
3NF : Sudah memenuhi 3NF karena tidak terdapat transitive dependency
Hasil validasi normalisasi :
MsKaryawan (KdKaryawan, KdJenisKaryawan,
NamaKaryawan, AlamatKaryawan, Username, Password) Primary key : KdKaryawan
Foreign Key : KdJenisKaryawan references MsJenisKaryawan (KdJenisKaryawan)
• MsJenisKaryawan (KdJenisKaryawan, Jabatan) Primary Key : KdJenisKaryawan
1NF : Sudah memenuhi 1NF karena mempunyai primary key dan tidak ada lagi repeating group.
2NF : Sudah memenuhi 2NF karena tidak terdapat partial dependency.
3NF : Sudah memenuhi 3NF karena tidak terdapat transitive dependency
MsJenisKaryawan (KdJenisKaryawan, Jabatan) Primary key : KdJenisKaryawan
• MsCustomer (KdCust, NamaCust, AlamatCust, KdPos, Username,Password)
Primary Key : KdCust
1NF : Sudah memenuhi 1NF karena mempunyai primary key dan tidak ada lagi repeating group.
2NF : Sudah memenuhi 2NF karena tidak terdapat partial dependency.
3NF : Sudah memenuhi 3NF karena tidak terdapat transitive dependency
Hasil validasi normalisasi :
MsCustomer (KdCust, NamaCust, AlamatCust, KdPos, Username, Password)
Primary key : KdCust
• TrPemesanan (KdPemesanan, TglPesan) Primary Key : KdPemesanan
1NF : Sudah memenuhi 1NF karena mempunyai primary key dan tidak ada lagi repeating group.
3NF : Sudah memenuhi 3NF karena tidak terdapat transitive dependency
Hasil validasi normalisasi :
TrPemesanan (KdPemesanan, TglPesan) Primary Key : KdPemesanan
• TrPembayaran (KdPembayaran, TglBayar) Primary Key : KdPembayaran
1NF : Sudah memenuhi 1NF karena mempunyai primary key dan tidak ada lagi repeating group.
2NF : Sudah memenuhi 2NF karena tidak terdapat partial dependency.
3NF : Sudah memenuhi 3NF karena tidak terdapat transitive dependency
Hasil validasi normalisasi :
TrPembayaran (KdPembayaran, TglBayar) Primary Key : KdPembayaran
• TrPengiriman (KdPengiriman, TglKirim) Primary Key : KdPengiriman
1NF : Sudah memenuhi 1NF karena mempunyai primary key dan tidak ada lagi repeating group.
2NF : Sudah memenuhi 2NF karena tidak terdapat partial dependency.
3NF : Sudah memenuhi 3NF karena tidak terdapat transitive dependency
Hasil validasi normalisasi :
TrPengiriman (KdPengiriman, TglKirim) Primary Key : KdPengiriman
• TrPembelian (KdPembelian, Qty, TglBeli, HargaBeli) Primary Key : KdPembelian
1NF : Sudah memenuhi 1NF karena mempunyai primary key dan tidak ada lagi repeating group.
2NF : Sudah memenuhi 2NF karena tidak terdapat partial dependency.
3NF : Sudah memenuhi 3NF karena tidak terdapat transitive dependency
Hasil validasi normalisasi :
TrPembelian (KdPembelian, Qty, TglBeli, HargaBeli) Primary Key : KdPembelian
• TrReturPenjualan (KdRtrPenjualan, Qty, TglPengembalian) Primary Key : KdRtrPenjualan
1NF : Sudah memenuhi 1NF karena mempunyai primary key dan tidak ada lagi repeating group.
2NF : Sudah memenuhi 2NF karena tidak terdapat partial dependency.
3NF : Sudah memenuhi 3NF karena tidak terdapat transitive dependency
Hasil validasi normalisasi :
TrReturPenjualan (KdRtrPenjualan, Qty, TglPengembalian) Primary Key : KdRtrPenjualan
• TrReturPembelian (KdRtrPembelian, Qty,TglPengembalian) Primary Key : KdRtrPembelian
1NF : Sudah memenuhi 1NF karena mempunyai primary key dan tidak ada lagi repeating group.
2NF : Sudah memenuhi 2NF karena tidak terdapat partial dependency.
3NF : Sudah memenuhi 3NF karena tidak terdapat transitive dependency
Hasil validasi normalisasi :
TrReturPembelian (KdRtrPembelian, Qty,TglPengembalian) Primary Key : KdRtrPembelian
• TrDetailPembelian (KdPembelian, Qty, TglBeli, HargaBeli, KdBarang, NamaBarang, JenisBarang)
Primary Key : KdPembelian, KdBarang
Foreign Key : KdPembelian references TrPembelian(KdPembelian)
Foreign Key : KdBarang references MsBarang (KdBarang) 1NF : Sudah memenuhi 1NF karena mempunyai primary key
dan tidak ada lagi repeating group.
2NF : Sudah memenuhi 2NF karena tidak terdapat partial dependency.
3NF : Sudah memenuhi 3NF karena tidak terdapat transitive dependency
Hasil validasi normalisasi :
TrDetailPembelian (KdPembelian, Qty, TglBeli, HargaBeli, KdBarang, NamaBarang, JenisBarang)
Primary Key : KdPembelian, KdBarang
Foreign Key : KdPembelian references TrPembelian(KdPembelian)
Foreign Key : KdBarang references MsBarang (KdBarang)
Foreign Key : KdSupplier references MsSupplier (KdSupplier)
1NF : Sudah memenuhi 1NF karena mempunyai primary key dan tidak ada lagi repeating group.
2NF : Sudah memenuhi 2NF karena tidak terdapat partial dependency.
3NF : Sudah memenuhi 3NF karena tidak terdapat transitive dependency
Hasil validasi normalisasi :
TeleponSupplier (TelpSupplier, KdSupplier) Primary Key : TelpSupplier
Foreign Key : KdSupplier references MsSupplier (KdSupplier)
• EmailSupplier (EmailSupplier, KdSupplier) Primary Key : EmailSupplier
Foreign Key : KdSupplier references MsSupplier (KdSupplier)
1NF : Sudah memenuhi 1NF karena mempunyai primary key dan tidak ada lagi repeating group.
2NF : Sudah memenuhi 2NF karena tidak terdapat partial dependency.
Hasil validasi normalisasi :
EmailSupplier (EmailSupplier, KdSupplier) Primary Key : EmailSupplier
Foreign Key : KdSupplier references MsSupplier (KdSupplier)
• TeleponKaryawan (TelpKaryawan, KdKaryawan) Primary Key : TelpKaryawan
Foreign Key : KdKaryawan references MsKaryawan (KdKaryawan)
1NF : Sudah memenuhi 1NF karena mempunyai primary key dan tidak ada lagi repeating group.
2NF : Sudah memenuhi 2NF karena tidak terdapat partial dependency.
3NF : Sudah memenuhi 3NF karena tidak terdapat transitive dependency
Hasil validasi normalisasi :
TeleponKaryawan (TelpKaryawan, KdKaryawan) Primary Key : TelpKaryawan
Foreign Key : KdKaryawan references MsKaryawan (KdKaryawan)
• EmailKaryawan (EmailKaryawan, KdKaryawan) Primary Key : EmailKaryawan
Foreign Key : KdKaryawan references MsKaryawan (KdKaryawan)
1NF : Sudah memenuhi 1NF karena mempunyai primary key dan tidak ada lagi repeating group.
2NF : Sudah memenuhi 2NF karena tidak terdapat partial dependency.
3NF : Sudah memenuhi 3NF karena tidak terdapat transitive dependency
Hasil validasi normalisasi :
EmailKaryawan (EmailKaryawan, KdKaryawan) Primary Key : EmailKaryawan
Foreign Key : KdKaryawan references MsKaryawan (KdKaryawan)
• TeleponCustomer (TelpCust, KdCust) Primary Key : TelpCust
Foreign Key : KdCust references MsCustomer (KdCust) 1NF : Sudah memenuhi 1NF karena mempunyai primary key
dan tidak ada lagi repeating group.
2NF : Sudah memenuhi 2NF karena tidak terdapat partial dependency.
3NF : Sudah memenuhi 3NF karena tidak terdapat transitive dependency
Hasil validasi normalisasi :
TeleponCustomer (TelpCust, KdCust) Primary Key : TelpCust
Foreign Key : KdCust references MsCustomer (KdCust)
• EmailCustomer (EmailCust, KdCust) Primary Key : EmailCust
Foreign Key : KdCust references MsCustomer (KdCust) 1NF : Sudah memenuhi 1NF karena mempunyai primary key
dan tidak ada lagi repeating group.
2NF : Sudah memenuhi 2NF karena tidak terdapat partial dependency.
3NF : Sudah memenuhi 3NF karena tidak terdapat transitive dependency
Hasil validasi normalisasi :
EmailCustomer (EmailCust, KdCust) Primary Key : EmailCust
• NoRekeningCustomer (NoRekCust, KdCust) Primary Key : NoRekCust
Foreign Key : KdCust references MsCustomer (KdCust) 1NF : Sudah memenuhi 1NF karena mempunyai primary key
dan tidak ada lagi repeating group.
2NF : Sudah memenuhi 2NF karena tidak terdapat partial dependency.
3NF : Sudah memenuhi 3NF karena tidak terdapat transitive dependency
Hasil validasi normalisasi :
NoRekeningCustomer (NoRekCust, KdCust) Primary Key : NoRekCust
Foreign Key : KdCust references MsCustomer (KdCust)
3.2.3.4 Validasi relasi pada transaksi user
Semua transaksi pengguna seperti yang telah didefinisikan pada tahap konseptual diperiksa kembali terhadap relasi yang ada untuk memastikan relasi sudah benar dan dapat memenuhi transaksi-transaksi yang dibutuhkan pengguna.
3.2.3.5 Mendefinisikan integrity constraint • Required data
Beberapa atribut harus selalu berisi data yang sah sehingga atribut tersebut tidak diperbolehkan menerima null. Batasan seperti ini telah diidentifikasikan dalam kamus data atribut. • Attribute domain constrains
Setiap atribut mempunyai domain yang merupakan sekumpulan nilai yang sah. Batasan ini telah diidentifiikasikan pada saat menentukan domain atribut untuk model data. • Entity integrity
Primary key dari sebuah entity tidak dapat menerima null. Batasan ini telah dipertimbangkan pada saat mengidentifikasi primary key pada kamus data entitas.
• Referential integrity
MsBarang (KdBarang, KdJenisBarang, NamaBarang, JenisBarang, Harga, Stok)
Primary key : KdBarang
Foreign Key KdJenisBarang references MsJenisBarang ON UPDATE CASCADE ON DELETE NO ACTION
MsKaryawan (KdKaryawan, KdJenisKaryawan, NamaKaryawan, AlamatKaryawan, Username, Password)
Primary key : KdKaryawan
Foreign Key KdJenisKaryawan references MsJenisKaryawan (KdJenisKaryawan)
MsCustomer (KdCust, NamaCust, AlamatCust, KdPos, Username, Password)
Primary Key : KdCust
TrPemesanan (KdPemesanan, TglPesan) Primary Key : KdPemesanan
TrPembayaran (KdPembayaran, TglBayar) Primary Key : KdPembayaran
TrPengiriman (KdPengiriman, TglKirim) Primary Key : KdPengiriman
TrPembelian (KdPembelian, Qty, TglBeli, HargaBeli) Primary Key : KdPembelian
TrReturPenjualan (KdRtrPenjualan, Qty, TglPengembalian) Primary Key : KdRtrPenjualan
TrReturPembelian (KdRtrPembelian, Qty, TglPengembalian)
Primary Key : KdRtrPembelian
TrDetailPembelian (KdPembelian, Qty, TglBeli, HargaBeli, KdBarang, NamaBarang, JenisBarang)
Primary Key : KdPembelian, KdBarang
Foreign Key KdPembelian references TrPembelian (KdPembelian)
Foreign Key KdBarang references MsBarang (KdBarang) ON UPDATE CASCADE ON DELETE NO ACTION
TeleponSupplier (TelpSupplier, KdSupplier) Primary Key : TelpSupplier
Foreign Key KdSupplier references MsSupplier (KdSupplier)
ON UPDATE CASCADE ON DELETE NO ACTION
EmailSupplier (EmailSupplier, KdSupplier) Primary Key : EmailSupplier
Foreign Key KdSupplier references MsSupplier (KdSupplier)
TeleponKaryawan (TelpKaryawan, KdKaryawan) Primary Key : TelpKaryawan
Foreign Key KdKaryawan references MsKaryawan (KdKaryawan)
ON UPDATE CASCADE ON DELETE NO ACTION
EmailKaryawan (EmailKaryawan, KdKaryawan) Primary Key : EmailKaryawan
Foreign Key KdKaryawan references MsKaryawan (KdKaryawan)
ON UPDATE CASCADE ON DELETE NO ACTION
TeleponCustomer (TelpCust, KdCust) Primary Key : TelpCust
Foreign Key KdCust references MsCustomer (KdCust) ON UPDATE CASCADE ON DELETE NO ACTION
EmailCustomer (EmailCust, KdCust) Primary Key : EmailCust
Foreign Key KdCust references MsCustomer (KdCust) ON UPDATE CASCADE ON DELETE NO ACTION
NoRekeningCustomer (NoRekCust, KdCust) Primary Key : NoRekCust
Foreign Key KdCust references MsCustomer (KdCust) ON UPDATE CASCADE ON DELETE NO ACTION
• Enterprise constrains
Merupakan aturan tambahan yang dibuat oleh user atau seorang database administrator dari basis data tersebut. Batasan ini telah diidentifikasikan dalam tabel atribut domain.
MsBarang PK KdBarang FK1 KdJenisBarang NamaBarang Harga Stok TrDetailPembelian PK KdPembelian FK1 KdBarang Qty TglBeli HargaBeli NamaBarang JenisBarang TrReturPenjualan PK KdRtrPenjualan FK1 KdPengiriman Qty TglPengembalian TrPembelian PK KdPembelian FK1 KdBarang FK2 KdSupplier Qty TglBeli HargaBeli TrReturPembelian PK KdRtrPembelian FK1 KdPembelian Qty TglPengembalian MsCustomer PK KdCust NamaCust AlamatCust KdPos Username Password MsSupplier PK KdSupplier NamaSupplier AlamatSupplier TeleponSupplier PK TelpSupplier FK1 KdSupplier EmailSupplier PK EmailSupplier FK1 KdSupplier MsKaryawan PK KdKaryawan FK1 KdJenisKaryawan NamaKaryawan AlamatKaryawan Username Password TeleponKaryawan PK TeleponKaryawan FK1 KdKaryawan EmailKaryawan PK EmailKaryawan FK1 KdKaryawan TeleponCustomer PK TelpCust FK1 KdCust EmailCustomer PK EmailCust FK1 KdCust MsJenisBarang PK KdJenisBarang JenisBarang MsJenisKaryawan PK KdJenisKaryawan Jabatan NoRekeningCustomer PK NoRekCust FK1 KdCust TrPemesanan PK KdPemesanan FK1 KdCust TglPesan TrPembayaran PK KdPembayaran FK1 KdPemesanan TglBayar TrPengiriman PK KdPengiriman FK1 KdPembayaran TglKirim FK2 KdKaryawan CustomerTalk PK,FK1 KdCust Talk Tgl
3.2.4 Perancangan Basis Data Fisikal
Pada perancangan basis data fisikal terdapat pembahasan perancangan Database Design Language (DBDL) untuk setiap entitas, perancangan constraint setiap entitas, analisis transaksi, pembuatan indeks, serta perancangan mekanisme keamanan data.
3.2.4.1 Menerjemahkan Model Data Logikal kedalam Target DBMS Bertujuan untuk membuat suatu skema basis data relasional dari model data logikal yang dapat diimplementasikan ke DBMS yang dituju.
3.2.4.1.1 Merancang Relasi Dasar
Tujuan dari tahap ini adalah untuk merepresentasikan relasi dasar yang diidentifikasi pada model data logikal global ke dalam sasaran DBMS dengan menggunakan DBDL (Database Design Language). DBDL yang digunakan adalah sebagai berikut:
1. DBDL untuk MsBarang
Domain KdBarang : char, length 5 Domain KdJenisBarang : char, length 6
Domain NamaBarang : variable length char string, length 20
MsBarang (
KdBarang Kode Barang NOT NULL, KdJenisBarang Kode Jenis Barang NOT NULL, NamaBarang Nama Barang NOT NULL,
Harga Harga NOT NULL,
Stok Persediaan Barang NOT NULL Primary Key KdBarang
Foreign Key KdJenisBarang references MsBarang (KdJenisBarang) ON UPDATE CASCADE ON DELETE NO ACTION
2. DBDL untuk MsJenisBarang
Domain KdJenisBarang : char, length 5
Domain JenisBarang : variable length char string, length 20
MsJenisBarang(
KdJenisBarang Kode Jenis Barang NOT NULL, JenisBarang Jenis Barang NOT NULL Primary Key KdJenisBarang
3. DBDL untuk MsSupplier
Domain KdSupplier : char, length 5
Domain NamaSupplier : variable length char string, length 20
Domain AlamatSupplier : text
MsSupplier (
KdSupplier Kode Supplier NOT NULL, NamaSupplier Nama Supplier NOT NULL, AlamatSupplier Alamat Supplier NOT NULL, Primary Key KdSupplier
4. DBDL untuk TeleponSupplier Domain KdSupplier : char, length 5
Domain TelpSupplier : variable length char string, length 20
TeleponSupplier (
KdSupplier Kode Supplier NOT NULL, TelpSupplier Telepon Supplier NOTNULL Primary Key TelpSupplier
5. DBDL untuk EmailSupplier
Domain EmailSupplier : variable length char string, length 50
Domain KdSupplier : char, length 5
EmailSupplier (
EmailSupplier Email Supplier NOTNULL, KdSupplier Kode Supplier NOT NULL Primary Key EmailSupplier
Foreign Key KdSupplier references MsSupplier (KdSupplier) ON UPDATE CASCADE ON DELETE NO ACTION
6. DBDL untuk MsKaryawan
Domain KdKaryawan : char, length 5 Domain KdJenisKaryawan : char, length 6
Domain NamaKaryawan : variable length char string, length 50
Domain AlamatKaryawan : text
Domain Username : variable length char string, length 20
Domain Password : variable length char string, length 35
MsKaryawan (
KdKaryawan Kode Karyawan NOT NULL, KdJenisKaryawan Kode Jenis Karyawan NOT
NULL,
NamaKaryawan Nama Karyawan NOT NULL, AlamatKaryawan Alamat Karyawan NOT NULL, Username Username Karyawan NOT NULL, Password Password Karyawan NOT NULL Primary Key KdKaryawan
Foreign Key KdJenisKaryawan references
MsJenisKaryawan (KdJenisKaryawan) ON UPDATE CASCADE ON DELETE NO ACTION
7. DBDL untuk MsJenisKaryawan
Domain KdJenisKaryawan : char, length 6
Domain JabatanKaryawan : variable length char string, length 30
MsJenisKaryawan (
KdJenisKaryawan Kode Jenis Karyawan NOT NULL,
8. DBDL untuk TeleponKaryawan
Domain TelpKaryawan : variable length char string, length 20
Domain KdKaryawan : char, length 5 TeleponKaryawan (
TelpKaryawan Telepon Karyawan NOTNULL KdKaryawan Kode Karyawan NOT NULL, Primary Key TelpKaryawan
Foreign Key KdKaryawan references MsKaryawan (KdKaryawan) ON UPDATE CASCADE ON DELETE NO ACTION,
9. DBDL untuk EmailKaryawan
Domain EmailKaryawan : variable length char string, length 50
Domain KdKaryawan : char, length 5
EmailKaryawan (
TelpKaryawan Email Karyawan NOTNULL KdKaryawan Kode Karyawan NOT NULL, Primary Key EmailKaryawan
Foreign Key KdKaryawan references MsKaryawan (KdKaryawan) ON UPDATE CASCADE ON
10. DBDL untuk MsCustomer Domain KdCust : integer
Domain NamaCust : variable length char string, length 50
Domain AlamatCust : text
Domain Kdpos : char, length 5
Domain Username : variable length char string, length 20
Domain Password : variable length char string, length 35
MsCustomer (
KdCust Kode Customer NOT NULL, NamaCust Nama Customer NOT NULL, AlamatCust Alamat Customer NOT NULL, Kdpos Kode Pos dari Customer NOT NULL, Username Username Customer NOT NULL, Password Password Customer NOT NULL Primary Key KdCust
TeleponCustomer (
TelpCust Telepon Customer NOTNULL KdCust Kode Customer NOT NULL, Primary Key TelpCust
Foreign Key KdCust references MsCustomer (KdCust) ON UPDATE CASCADE ON DELETE NO ACTION,
12. DBDL untuk EmailCustomer
Domain EmailCust : variable length char string, length 50
Domain KdCust : char, length 5
EmailCustomer (
TelpCust Email Customer NOTNULL, KdCust Kode Customer NOT NULL Primary Key EmailCust
Foreign Key KdCust references MsCustomer (KdCust) ON UPDATE CASCADE ON DELETE NO ACTION
13. DBDL untuk NoRekeningCustomer
Domain KdCust : char, length 5
NoRekeningCustomer (
NoRekCust Email Customer NOTNULL, KdCust Kode Customer NOT NULL Primary Key NoRekCust
Foreign Key KdCust references MsCustomer (KdCust) ON UPDATE CASCADE ON DELETE NO ACTION
14. DBDL untuk TrPemesanan
Domain KdPemesanan : char, length 6 Domain KdCust : char, length 5 Domain TglPesan : datetime
TrPemesanan (
KdPemesanan Kode Pemesanan NOT NULL, KdCust Kode Customer NOTNULL,
TglPesan Tanggal pemesanan NOT NULL Primary Key KdPemesanan
15. DBDL untuk TrPembayaran
Domain KdPembayaran : char, length 6 Domain KdPemesanan : char, length 6 Domain KdKaryawan : char, lenght 5
Domain TglBayar : datetime
TrPembayaran (
KdPembayaran Kode Pembayaran NOT NULL, KdPemesanan Kode Pemesanan NOTNULL,
KdKaryawan Kode Karyawan NOT NULL, TglBayar Tanggal pembayaran NOT NULL Primary Key KdPembayaran
Foreign Key KdPemesanan references TrPemesanan (KdPemesanan) ON UPDATE CASCADE ON DELETE NO ACTION
Foreign Key KdKaryawan references MsKaryawan (KdKaryawan) ON UPDATE CASCADE ON DELETE NO ACTION
);
16. DBDL untuk TrPengiriman
Domain KdPengiriman : char, length 6 Domain KdPembayaran : char, length 6
Domain TglKirim : datetime
TrPengiriman (
KdPengiriman Kode Pengiriman NOT NULL, KdPembayaran Kode Pembayaran NOTNULL,
KdKaryawan Kode Karyawan NOT NULL, TglKirim Tanggal pembayaran NOT NULL Primary Key KdPengiriman
Foreign Key KdPembayaran references TrPembayaran (KdPembayaran) ON UPDATE CASCADE ON DELETE NO ACTION
Foreign Key KdKaryawan references MsKaryawan (KdKaryawan) ON UPDATE CASCADE ON DELETE NO ACTION
);
17. DBDL untuk TrPembelian
Domain KdPembelian : char, length 6 Domain KdSupplier : char, lenght 5 Domain TglBeli : datetime TrPembelian (
Primary Key KdPembelian
Foreign Key KdSupplier references MsSupplier (KdSupplier) ON UPDATE CASCADE ON DELETE NO ACTION,
);
18. DBDL untuk TrDetailPembelian Domain KdPembelian : char, length 6 Domain KdBarang : char, length 6
Domain HargaBeli : variable length char string, length 20
Domain Qty : integer
TrDetailPembelian (
KdPembelian Kode Pembelian NOT NULL, KdBarang Kode Barang NOT NULL, HargaBeli Harga Beli Satuan NOT NULL, Qty Banyaknya barang NOT NULL, Primary Key KdPembelian
Foreign Key KdBarang references MsBrang (KdBarang) ON UPDATE CASCADE ON DELETE NO ACTION
19. DBDL untuk TrReturPenjualan Domain KdRtrPenjualan: char, length 6 Domain KdPenjualan : char, length 6 Domain Qty : integer Domain TglPengembalian : Datetime
TrReturPenjualan (
KdRtrPenjualan Kode Retur Penjualan NOT NULL,
KdPenjualan Kode penjualan NOT NULL,
Qty Banyaknya barang NOT
NULL,
TglPengembalian Tanggal Pengembalian NOT NULL
Primary Key KdRtrPenjualan
Foreign Key KdPenjualan references TrlPenjualan (KdPenjualan) ON UPDATE CASCADE ON DELETE NO ACTION
Domain Qty : integer Domain TglPengembalian : Datetime
TrReturPembelian (
KdRtrPembelian Kode Retur Pembelian NOT NULL,
KdPembelian Kode Pembelian NOT NULL, Qty Banyaknya barang NOT NULL, TglPengembalian Tanggal Pengembalian NOT NULL
Primary Key KdRtrPembelian
Foreign Key KdPembelian references
TrHeaderlPembelian (KdPembelian) ON UPDATE CASCADE ON DELETE NO ACTION
);
21. DBDL untuk CustomerTalk Domain KdCust : char, length 6 Domain Talk : Text
Domain Tgl : datetime CustomerTalk (
KdCust Kode Customer NOT NULL,
Primary Key KdCust
Foreign Key KdCust references MsCustomer (KdCust) ON UPDATE CASCADE ON DELETE NO ACTION
);
3.2.4.1.2 Merancang Representasi Dari Data Turunan
Tujuan dari langkah ini adalah untuk memutuskan bagaimana merepresentasikan suatu data turunan pada model data logikal global pada DBMS yang dipakai. Pada model data logikal global yang telah dibuat tidak terdapat data turunan, jadi langkah ini tidak dilakukan
3.2.4.1.3 Merancang Enterprise Constraints
Berikut ini merupakan perancangan constraints yang terdapat dalam suatu entitas, antara lain:
1. Constraint untuk MsBarang CREATE TABLE MsBarang (
KdBarang CHAR(5), KdJenisBarang VARCHAR(30),
CONSTRAINT PK MsBarang PRIMARY KEY (KdBarang),
CONSTRAINT FK MsBarang FOREIGN KEY (KdJenisBarang) REFERENCES MsJenisBarang (KdJenisBarang) ON UPDATE CASCADE ON DELETE NO ACTION
)
2. Constraint untuk MsJenisBarang
CREATE TABLE MsJenisBarang (
KdJenisBarang VARCHAR(30), JenisBarang VARCHAR(30),
CONSTRAINT PK MsjenisBarang PRIMARY KEY (KdJenisBarang),
)
3. Constraint untuk MsSupplier
CREATE TABLE MsSupplier (
KdSupplier CHAR(5), NamaSupplier VARCHAR(20), AlamatSupplier TEXT,
CONSTRAINT PK MsSupplier PRIMARY KEY (KdSupplier)
)
4. Constraint untuk TeleponSupplier
CREATE TABLE TeleponSupplier (
TelpSupplier VARCHAR(20), KdSupplier CHAR(5),
CONSTRAINT PK TeleponSupplier PRIMARY KEY (TelpSupplier)
CONSTRAINT FK TeleponSupplier FOREIGN KEY (KdSupplier) REFERENCES MsSupplier (KdSupplier) ON UPDATE CASCADE ON DELETE NO ACTION
)
5. Constraint untuk EmailSupplier
CREATE TABLE EmailSupplier (
CONSTRAINT FK EmailSupplier FOREIGN KEY (KdSupplier) REFERENCES MsSupplier (KdSupplier) ON UPDATE CASCADE ON DELETE NO ACTION
)
6. Constraint untuk MsKaryawan
CREATE TABLE MsKaryawan ( KdKaryawan CHAR(5), KdJenisKaryawan CHAR(6), NamaKaryawan VARCHAR(20), AlamatKaryawan TEXT, Username VARCHAR (20), Password VARCHAR (10),
CONSTRAINT PK MsKaryawan PRIMARY KEY (KdKaryawan),
CONSTRAINT FK MsKaryawan FOREIGN KEY (KdJenisKaryawan) REFERENCES MsJenisKaryawan(KdJenisKaryawan) ON UPDATE CASCADE ON DELETE NO ACTION
7. Constraint untuk MsJenisKaryawan
CREATE TABLE MsJenisKaryawan (
KdJenisKaryawan CHAR(6),
Jabatan VARCHAR(30),
CONSTRAINT PK MsJenisKaryawan PRIMARY KEY (KdJenisKaryawan)
)
8. Constraint untuk TeleponKaryawan
CREATE TABLE TeleponKaryawan (
TelpKaryawan VARCHAR(20), KdKaryawan CHAR(5),
CONSTRAINT PK TeleponKaryawan PRIMARY KEY (TelpKaryawan)
CONSTRAINT FK TeleponKaryawan FOREIGN KEY (KdKaryawan) REFERENCES MsKaryawan (KdKaryawan) ON UPDATE CASCADE ON DELETE NO ACTION
9. Constraint untuk EmailKaryawan
CREATE TABLE EmailKaryawan (
EmailKaryawan VARCHAR(20), KdKaryawan CHAR(5),
CONSTRAINT PK EmailKaryawan PRIMARY KEY (EmailKaryawan)
CONSTRAINT FK EmailKaryawan FOREIGN KEY (KdKaryawan) REFERENCES MsKaryawan (KdKaryawan) ON UPDATE CASCADE ON DELETE NO ACTION
)
10. Constraint untuk MsCustomer CREATE TABLE MsCustomer ( KdCust INT(5), KdJenisCust CHAR(6), NamaCust VARCHAR(50), AlamatCust TEXT, KdPos VARCHAR(6), Username VARCHAR (20), Password VARCHAR (10),
CONSTRAINT PK MsCustomer PRIMARY KEY (KdCust),
CONSTRAINT FK MsCustomer FOREIGN KEY (KdJenisCust) REFERENCES MsJenisCustomer(KdJenisCust) ON UPDATE CASCADE ON DELETE NO ACTION
)
11. Constraint untuk TeleponCustomer CREATE TABLE TeleponCustomer (
TelpCust VARCHAR(20), KdCust CHAR(5),
CONSTRAINT PK TeleponCustomer PRIMARY KEY (TelpCust)
CONSTRAINT FK TeleponCustomer FOREIGN KEY (KdCust) REFERENCES MsCustomer (KdCust) ON UPDATE CASCADE ON DELETE NO ACTION