BAB 3 ANALISIS DAN PERANCANGAN
3.1
Sejarah Perusahaan Berdiri pada tanggal 6 Desember 2008, PT. Inspirasindo yang dikenal sebagai Celio Bistro memiliki domisili di Rukan Kencana Niaga Blok D1 No. 3C, 3D & 3U, Meruya Utara – Jakarta Barat. Perusahaan ini didirikan oleh bapak Budiharsono Wanandy dan ibu Melanie Mokoagow selaku direktur utama dan komisaris. Celio Bistro merupakan badan usaha yang bergerak dengan fokus di bidang jasa konsumsi. Kata Celio diadopsi dari bahasa latin yang berarti heaven (surga) sementara kata Bistro yang sering dilafalkan sebagai bistrot adalah sebuah istilah dari Perancis untuk menyebut sebuah restoran kecil yang menyajikan makanan sederhana. Sempat menetap untuk kurun waktu yang cukup lama, pemilik sekaligus pendiri perusahaan ini mengadopsi citarasa masakan-masakan yang berasal dari Swiss, demikian halnya dengan interior yang disajikan mengusung konsep nuansa Eropa yang berbaur dengan batuan-batuan alam khas Indonesia. Restoran Celio Bistro tidak hanya memanjakan para pelanggannya dengan masakan-masakan
khas
Eropa
yang
menjadi
andalannya,
namun
turut
menghadirkan citarasa tradisional khas Indonesia, Jepang dan berbagai masakan oriental lainnya. Masakan-masakan tersebut tentunya diolah dengan menggunakan bahan-bahan pilihan bermutu tinggi yang dipadukan dengan berbagai komponen serta komposisi khusus lainnya melalui tangan-tangan handal juru masaknya.
81
82 Selain bermacam-macam appetizer, main course, maupun dessert yang dihadirkan, restoran ini juga menyediakan bar khusus bermacam-macam minuman dingin (beverages) serta menyajikan live music performance sebagai pelengkap untuk menemani dan mengiringi hidangan bagi para tamu restoran. Keunggulan lainnya adalah terdapat sebuah ruangan serbaguna siap sewa yang umumnya sering dipergunakan dalam tatanan event-event tertentu dimana para pengguna dapat melakukan tata dekorasi sesuai dengan keinginan mereka dalam menjamu keluarga maupun rekan dan kerabat mereka. Melalui kegiatan tersebut, Celio Bistro menjalin kerjasama dengan perusahaan-perusahaan ternama lainnya. Event yang dimaksudkan adalah acara-acara yang bersifat corporate maupun personal dari masing-masing perusahaan.
3.2
Visi dan Misi Perusahaan PT. Inspirasindo memiliki visi untuk menjadi restoran yang terus tumbuh dan berkembang semakin baik kedepannya. Sementara misi-misi yang dikedepankan oleh PT. Inspirasindo yaitu menghadirkan pelayanan terbaik untuk menyenangkan hati para pelanggannya sebagai salah satu jaminan kepuasan pelanggan. Sehingga dengan demikian, kualitas dan mutu maupun sumber daya manusia sangat diperhatikan dan ditekankan sebagai tolak ukur utama untuk mencapai perolehan hasil terbaik dalam mewujudkan visi dan misi yang dikehendaki tersebut.
83 3.3
Struktur Organisasi Perusahaan
Gambar 3.1 Struktur Organisasi PT. Inspirasindo (Celio Bistro) (Sumber: Human Resources Department, 2012) Struktur Organisasi menggambarkan struktur hubungan kerja antar internal divisi perusahaan yang berelasi satu sama lainnya. Struktur yang terdapat pada PT. Inspirasindo dapat dilihat pada gambar diatas.
Job Description Adapun susunan dan penjelasan mengenai job description yang terdapat pada struktur organisasi di Celio Bistro sebagai berikut: 1. Direktur Memiliki wewenang dan tanggung jawab sebagai berikut: a. Mengambil dan menentukan keputusan dalam kinerja perusahaan b. Mengawasi koordinasi antar departemen yang terlibat beserta staff jajarannya
84 c. Mengatur dan menyetujui penggunaan sumber dana perusahaan d. Mengawasi penerapan kebijakan-kebijakan perusahaan 2. Finance Department Departemen ini terdiri dari beberapa bagian yaitu cashier, administration dan purhasing dengan wewenang dan tanggung jawab masing-masing sebagai berikut: a. Cashier mengatur dan mengelola perolehan dana perusahaan b. Administration
mengatur
dan
mengelola
manajemen
keuangan
perusahaan c. Purchasing menentukan dan mengatur pembelian yang dibutuhkan perusahaan 3. Operational Department Departemen ini terdiri atas beberapa bagian yaitu kitchen, pastry dan bar dengan wewenang dan tanggung jawab masing-masing sebagai berikut: a. Kitchen mempersiapkan dan mengelola hidangan main course yang akan dihidangkan kepada para tamu b. Pastry mempersiapkan dan mengelola hidangan appetizer dan dessert pada umumnya c. Bar mempersiapkan dan mengelola hidangan beverages yang akan disajikan kepada tamu 4. Logistic Department Departemen ini memiliki wewenang dan tanggung jawab sebagai berikut: a. Mengatur dan mengelola kebutuhan logistik perusahaan b. Mengontrol dan menyesuaikan logistik masing-masing departemen
85 3.4
Analisis Sistem yang Sedang Berjalan Prosedur-prosedur sistem yang sedang berjalan pada PT. Inpirasindo saat ini adalah sebagai berikut: 1. Prosedur Pembelian Adapun prosedur pembelian yang berlaku saat ini, yaitu: a. Logistic staff melakukan pemeriksaan terhadap persediaan barang per tiga hari. Kemudian menyusun laporan persediaan dan kebutuhan barang yang akan dibeli melalui Purchase Order (PO). b. PO yang telah disusun kemudian disahkan oleh manager. Setelah itu bagian purchasing melakukan pembelian terhadap barang-barang yang diperlukan secara langsung sesuai kebutuhan. c. Proses pembayaran dilakukan secara langsung seiring dengan proses pembelian. d. Karena proses pembelian dilakukan secara langsung, maka tidak ada proses pengembalian barang. e. Bagian finance akan mencatat pembelian yang dilakukan oleh bagian purchasing menggunakan Microsoft Excel. Pembelian memiliki prosedur kerja yang panjang dan melibatkan beberapa bagian pada perusahan, yaitu logistic staff, bagian purchasing, bagian finance dan manager. Penyimpanan data pembelian masih menggunakan Microsoft Excel sehingga data yang disimpan dapat terjadi berulang kali terhadap data yang sama dan menyebabkan redundansi data. 2. Prosedur Penjualan Adapun prosedur penjualan yang berlaku saat ini, yaitu:
86 a. Pengunjung memesan berdasarkan menu hidangan tersedia yang kemudian didistribusikan ke bagian kitchen, pastry, dan bar. b. Bagian kitchen menyiapkan hidangan main course, bagian pastry menyiapkan hidangan appetizer maupun dessert, dan bagian bar menyiapkan beverages berdasarkan daftar pesanan. c. Menu yang sudah ready to serve, akan disajikan oleh pelayan kepada pengunjung berdasarkan urutan. d. Pembayaran pesanan dilakukan berdasarkan billing tagihan yang dicetak melalui kasir sesuai dengan nomor meja pelanggan. (rangkap pertama untuk pengunjung, rangkap kedua untuk pihak manajemen restoran). Dalam proses penjualan, pesanan diolah pada beberapa bagian dalam operasional, seperti bagian kitchen, pastry, dan bar. Pengolahan berdasarkan catatan rangkap kedua yang didistribusikan memakan waktu dan memiliki resiko kehilangan atau rusak. 3. Prosedur Persediaan Adapun prosedur persediaan yang berlaku saat ini, yaitu: a. Bahan baku dikemas dan disesuaikan dengan takaran dan porsi yang akan diolah sesuai dengan pesanan. b. Setiap bahan baku disimpan dalam freezer penyimpanan khusus dan pengambilan akan disesuaikan dengan kebutuhan. Proses bisnis persediaan sudah memiliki pencatatan jumlah persediaan bahan baku namun belum mencakup keseluruhan. Sehingga restoran tidak dapat mengetahui dengan pasti jumlah persediaan secara keseluruhan pada waktu tertentu dan adanya kemungkinan kehilangan bahan baku.
87 3.5
Permasalahan Setelah dilakukan penelitian terhadap sistem yang sedang berjalan di PT. Inspirasindo, ditemukan permasalahan-permasalahan sebagai berikut: a. Penyimpanan data dilakukan secara manual dengan menggunakan Microsoft Excel yang dapat menyebabkan redundansi data. b. Mengalami kesulitan dalam pembuatan laporan pembelian dan penjualan. c. Terdapat ketidaksesuaian data penggunaan stok barang dengan sisa stok persediaan secara fisik.
3.6
Pemecahan Masalah Dengan melihat kepada permasalahan-permasalahan yang ada, maka diusulkan solusi sebagai berikut: a. Merancang suatu sistem basis data yang saling berintegrasi antara proses bisnis pembelian, penjualan dan persediaan. b. Arsip data terhadap dokumen-dokumen fisik menjadi terkomputerisasi secara basis data agar memiliki tingkat keamanan yang lebih baik serta history transaksi yang tersimpan dapat menjadi pertimbangan dalam pengambilan keputusan di masa mendatang. c. Merancang suatu form yang digunakan untuk memudahkan sinkronisasi antara basis data dengan kesesuaian fisik barang. d. Merancang aplikasi dengan mengusung GUI (Graphical User Interface) yang user-friendly dan mudah dipahami.
88 3.7
Perancangan Basis Data 3.7.1
Database Planning Mision statement yang dilakukan untuk mendukung dalam mengelola data yang digunakan, persediaan bahan baku dan membuat laporan hasil data pembelian bahan baku dan penjualan makanan. Mission objective-nya adalah: 1. Untuk mengelola (insert, update, delete) data makanan 2. Untuk menampilkan data makanan 3. Untuk mengelola (insert, update, delete) data karyawan 4. Untuk menampilkan data karyawan 5. Untuk mengelola (insert, update, delete) data pembelian 6. Untuk mengelola (insert, update, delete) data penjualan 7. Untuk menampilkan data pembelian dan penjualan 8. Membuat laporan penjualan dan pembelian
3.7.2
System Definition Pengguna yang berperan dalam aplikasi adalah manager, bagian operasional, bagian purchasing dan bagian finance.
3.7.3
Requirement Collection and analysis Pada tahapan ini, menganalisis dan mengumpulkan kebutuhan pengguna. Metode yang dilakukan adalah dengan metode fact finding. Telepon karyawan disimpan secara historical sehingga harus dipecah menjadi entitas baru.
89 3.7.4
Database Design Pendekatan dalam perancangan basis data menggunakan pendekatan top-down dimulai dengan mengidentifikasi entitas dan hubungan antar entitas. 3.7.4.1
Perancangan Basis Data Konseptual Langkah-langkah yang terdapat di dalam perancangan basis data konseptual meliputi: 1. Identify entity types Tabel 3.1 Tabel Pengidentifikasi Entitas Entity Name Karyawan
Description Entitas
Aliases
yang Staff
Occurrence Karyawan akan
menjelaskan
ditambahkan setiap
informasi
ada penerimaan
mengenai
karyawan baru dan
karyawan.
akan diubah informasi mengenai karyawan jika ada perubahan.
Pembelian
Entitas
yang Order
menjelaskan
Pembelian
Purchase order dilakukan untuk
informasi
membeli bahan baku
mengenai
dan dilakukan oleh
pembelian
karyawan.
bahan
baku
yang diperlukan. Pembayara
Entitas
n
menjelaskan informasi
yang Pembayara npenjualan
Pembayaran akan dilakukan setiap ada transaksi sales order
90 mengenai
dan dilakukan oleh
pembayaran
karyawan.
terhadap pesanan
yang
dilakukan. Penjualan
Entitas
yang Order
menjelaskan
Penjualan
Sales order dilakukan jika ada tamu yang
informasi
memesan makanan
mengenai
dan dilakukan oleh
pesanan
yang
karyawan.
dilakukan oleh customer. Bahanbaku
Entitas
yang Bahanbaku
Daftar bahan baku
menjelaskan
yang digunakan untuk
informasi
produksi makanan
mengenai
berdasarkan resep,
bahan
baku
yang
belum
bahan baku akan ditambahkan setiap diperlukan bahan baku
diolah.
yang baru untuk digunakan. Persediaan
Entitas
Bahanjadi
menjelaskan
dari produksi bahan
informasi
baku dan akan
mengenai
dikurangi setiap ada
bahan jadi.
sales order.
Resep
Entitas
yang Bahanjadi
yang Resep
Bahan jadi dihasilkan
Daftar resep yang
menjelaskan
digunakan untuk
informasi
produksi makanan
mengenai resep
yang berisi mengenai
(kumpulan dari
bahan baku apa saja,
bahan baku).
dan akan ditambahkan setiap ada menu baru.
Menu
Entitas
yang Menu
Daftar menu makanan
91 menjelaskan
yang disajikan oleh
informasi
restoran dan akan
mengenai
ditambahkan setiap
daftar
ada menu baru.
menu
makanan yang tersedia. Meja
Entitas
yang Meja
Daftar meja yang ada
menjelaskan
pada restoran dan
informasi
akan ditambahkan
mengenai meja
setiap ada
customer.
penambahan meja atau pengurangan meja yang tidak digunakan lagi.
Persediaan
Entitas
yang Persediaan
Bahanbaku
menjelaskan
Bahanbaku
Persediaan bahan baku yang ada untuk
informasi
memproduksi
mengenai
makanan dan akan
persediaan
ditambahkan setiap
bahan baku.
ada purchase order dan dikurangi jika ada sales order.
Produksi
Entitas
yang Produksi
Bahanjadi
menjelaskan
Bahanjadi
Daftar pembuatan makanan yang
informasi
dilakukan untuk
mengenai
dijadikan bahan jadi.
produksi bahan baku
menjadi
bahan jadi.
92
2. Identify relationship types Tabel 3.2 Tabel Pengidentifikasi Relationship Multiplici
Relationsh
EntityNam Multiplic
ty
ip
e
ity
Menu
1..1
memiliki
Resep
1..1
Resep
0..*
mengandu
BahanBak
ng
u
mengandu
BahanBak
ng
u
mengandu
BahanBak
ng
u
0..*
dilakukan
Karyawan 1..1
0..*
dilakukan
Karyawan 1..1
EntityName
PersediaanBahanB aku Pembelian
ProduksiBahanJadi
1..1
0..*
0..*
0..* Penjualan
0..* 1..1
0..*
0..* Pembayaran PersediaanBahanJa di
0..* 1..1
mengandu ng mengandu ng
1..*
1..1
1..*
Resep
1..1
Menu
1..1
ditangani
Karyawan 1..1
mengandu
Pembayar
ng
an
mengandu ng mengandu ng diterima mengandu ng
1..1
Meja
1..1
Menu
1..*
Karyawan 1..1 Menu
1..1
93
Gambar 3.2 ER Konseptual tanpa primary key
94
3. Identify and associate attributes with entity or relationship types Tabel 3.3 Tabel Entitas Karyawan Data Type
Attributes
Karyawan
IdKaryawan
char(7)
No
No
NamaLengkap
varchar(50) No
No
NamaPosisi
varchar(50) No
No
NoKTP
varchar(20) No
No
Username
varchar(50) No
No
Password
varchar(50) No
No
Alamat
varchar(50) No
No
NoTelepon
varchar(15) Yes
Yes
JenisKelamin
char(1)
No
No
StartWork
date
No
No
EndWork
date
Yes
No
and Length
Nulls
Multi -
Entity Name
valued
Tabel 3.4 Tabel Entitas Pembelian Data Type
Attributes
Pembelian
IdPembelian
char(7)
No
No
NamaBahanBaku
varchar(50) No
No
JumlahPembelian
integer
No
No
HargaPembelian
integer
No
No
TanggalPembelian
datetime
No
No
and Length
Nulls
Multi -
Entity Name
valued
95
Tabel 3.5 Tabel Entitas Penjualan Data Type
Attributes
Penjualan
IdPenjualan
char(7)
No
No
NamaMenu
integer
No
No
JumlahPenjualan
integer
No
No
HargaPenjualan
integer
No
No
TanggalPenjualan
datetime
No
No
and Length
Nulls
Multi -
Entity Name
valued
Tabel 3.6 Tabel Entitas Pembayaran Data Type
Attributes
Pembayaran
IdPembayaran
char(5)
No
No
TotalPayment
integer
No
No
Discount
integer
Yes
No
NamaTipePembayaran
varchar(50) No
No
TanggalPembayaran
datetime
No
and Length
Nulls
Multi -
Entity Name
No
valued
Tabel 3.7 Tabel Entitas Bahanbaku Data Type
Attributes
BahanBaku
IdBahanBaku
char(5)
No
No
NamaBahanBaku
varchar(50) No
No
TipeBahanBaku
varchar(50) No
No
SatuanBahanBaku
varchar(10) No
No
and Length
Nulls
Multi -
Entity Name
valued
96
Tabel 3.8 Tabel Entitas Meja Data Type
Attributes
Meja
IdMeja
char(5)
No
No
NamaMeja
char(5)
No
No
and Length
Nulls
Multi -
Entity Name
valued
Tabel 3.9 Tabel Entitas Menu Data Type
Attributes
Menu
IdMenu
char(5)
No
No
NamaMenu
varchar(50) No
No
HargaMenu
integer
No
No
NamaTipeMenu
varchar(50) No
No
NamaKategori
varchar(50) No
No
and Length
Nulls
Multi -
Entity Name
valued
Tabel 3.10 Tabel Entitas Resep Data Type
Attributes
Resep
IdResep
char(5)
No
No
JumlahBB
float
No
No
SatuanBB
varchar(10) No
No
HargaBB
integer
No
No
JumlahPorsi
integer
No
No
and Length
Nulls
Multi -
Entity Name
valued
97
Tabel 3.11 Tabel Entitas PersediaanBahanJadi Entity Name
Attributes
Persediaan
IdPersediaan
BahanJadi
BahanJadi
Data Type and Length char(5)
Nulls
Multi valued
No
No
NamaMenu
varchar(50) No
No
Jumlah
integer
No
Yes
Tabel 3.12 Tabel Entitas PersediaanBahanBaku Entity Name
Attributes
Persediaan
IdPersediaan
Bahanbaku
BahanBaku
Data Type and Length char(5)
Nulls
Multi valued
No
No
NamaBahanbaku
varchar(50) No
No
Jumlah
float
No
No
Tabel 3.13 Tabel Entitas Produksibahanjadi Entity Name Produksi BahanJadi
Attributes
Data Type and Length
Nulls
Multi valued
IdProduksi
char(7)
No
No
NamaMenu
varchar(50) No
No
NamaLengkap
varchar(50) No
No
JumlahProduksi
integer
No
No
TanggalProduksi
datetime
No
No
98
4. Determine attribute domains Tabel 3.14 Tabel Domain Atribute Karyawan Entity Name
Attributes
Attributes domain
Karyawan
IdKaryawan
Diisi dengan karakter format ‘E[0-9] [0-9] [0-9] [0-9] [09] [0-9]’
NamaLengkap
Diisi dengan karakter
NamaPosisi
Diisi dengan karakter
NoKTP
Diisi dengan karakter
Username
Diisi dengan karakter
Password
Diisi dengan karakter
Alamat
Diisi dengan karakter
NoTelepon
Diisi dengan angka
JenisKelamin
Diisi dengan karakter [F/M]
StartWork
Diisi dengan format tanggal
EndWork
Diisi dengan format tanggal
Tabel 3.15 Tabel Domain Atribute Pembelian Entity Name
Attributes
Attributes domain
Pembelian
IdPembelian
Diisi dengan karakter format ‘P[0-9] [0-9] [0-9] [0-9] [09] [0-9]’
NamaBahanBaku
Diisi dengan karakter
JumlahPembelian
Diisi dengan angka
HargaPembelian
Diisi dengan angka
TanggalPembelian
Diisi dengan format tanggal dan waktu
99
Tabel 3.16 Tabel Domain Atribute Penjualan Entity Name
Attributes
Attributes domain
Penjualan
IdPenjualan
Diisi dengan karakter format ‘S[0-9] [0-9] [0-9] [0-9] [09] [0-9]’
NamaMenu
Diisi dengan angka
JumlahPenjualan
Diisi dengan angka
HargaPenjualan
Diisi dengan angka
TanggalPenjualan
Diisi dengan format tanggal dan waktu
Tabel 3.17 Tabel Domain Atribute Pembayaran Entity Name
Attributes
Attributes domain
Pembayaran
IdPembayaran
Diisi dengan karakter format ‘P[0-9] [0-9] [0-9] [0-9]’
TotalPayment
Diisi dengan angka
Discount
Diisi dengan angka
NamaTipePembayaran Diisi dengan karakter TanggalPembayaran
Diisi dengan format tanggal dan waktu
Tabel 3.18 Tabel Domain Atribute BahanBaku Entity Name
Attributes
Attributes domain
BahanBaku
IdBahanBaku
Diisi dengan karakter format ‘M[0-9] [0-9] [0-9] [0-9]’
NamaBahanBaku
Diisi dengan karakter
TipeBahanBaku
Diisi dengan karakter
SatuanBahanBaku
Diisi dengan karakter
100 Tabel 3.19 Tabel Domain Atribute Meja Entity Name
Attributes
Attributes domain
Meja
IdMeja
Diisi dengan karakter format ‘T[0-9] [0-9] [0-9] [0-9]’
NamaMeja
Diisi dengan karakter dengan format [0-9][0-9]-[0-9][0-9]]
Tabel 3.20 Tabel Domain Atribute Menu Entity Name
Attributes
Attributes domain
Menu
IdMenu
Diisi dengan karakter format ‘E[0-9] [0-9] [0-9] [0-9]’
NamaMenu
Diisi dengan karakter
HargaMenu
Diisi dengan angka
NamaTipeMenu
Diisi dengan karakter
NamaKategori
Diisi dengan karakter
Tabel 3.21 Tabel Domain Atribute Resep Entity Name
Attributes
Attributes domain
Resep
IdResep
Diisi dengan karakter format ‘R[0-9] [0-9] [0-9] [0-9]’
JumlahBB
Diisi dengan karakter
SatuanBB
Diisi dengan karakter
HargaBB
Diisi dengan angka
JumlahPorsi
Diisi dengan angka
101
Tabel 3.22 Tabel Domain Atribute PersediaanBahanJadi Entity Name
Attributes
Attributes domain
Persediaan
IdPersediaan
Diisi dengan karakter format
BahanJadi
BahanJadi
‘F[0-9] [0-9] [0-9] [0-9]’
NamaMenu
Diisi dengan karakter
Jumlah
Diisi dengan angka
Tabel 3.23 Tabel Domain Atribute PersediaanBahanBaku Entity Name
Attributes
Attributes domain
Persediaan
IdPersediaan
Diisi dengan karakter format
Bahanbaku
BahanBaku
‘S[0-9] [0-9] [0-9] [0-9]’
NamaBahanBaku
Diisi dengan karakter
Jumlah
Diisi dengan karakter
Tabel 3.24 Tabel Domain Atribute ProduksiBahanJadi Entity Name
Attributes
Attributes domain
Produksi
IdProduksi
Diisi dengan karakter format
BahanJadi
‘O[0-9] [0-9] [0-9] [0-9] [09] [0-9]’ NamaMenu
Diisi dengan karakter
NamaLengkap
Diisi dengan karakter
JumlahProduksi
Diisi dengan angka
TanggalProduksi
Diisi dengan format tanggal dan waktu
102
5. Determine candidate, primary, and alternate key attributes Tabel 3.25 Tabel Menentukan Candidate, Primary dan Alternate Key Entity Name
Candidate Key
Primary Key
Alternate Key
Karyawan
IdKaryawan
IdKaryawan
NoKTP
NoKTP
Username
Username
NoTelepon
NoTelepon Pembelian
IdPembelian
IdPembelian
-
Penjualan
IdPenjualan
IdPenjualan
-
Pembayaran
IdPembayaran
IdPembayaran
-
BahanBaku
IdBahanBaku
IdBahanBaku
-
Meja
IdMeja
IdMeja
-
Menu
IdMenu
IdMenu
-
Resep
IdResep
IdResep
-
Persediaan
IdPersediaan
IdPersediaan
BahanJadi
BahanJadi
BahanJadi
Persediaan
IdPersediaan
IdPersediaan
Bahanbaku
BahanBaku
BahanBaku
IdProduksi
IdProduksi
Produksi BahanJadi
-
-
-
103 Resep
Menu 1..1
1..*
1..1
memiliki
IdResep
mengandung
IdMenu
Meja
mengandung 1..1
1..1 0..*
IdMeja
1..1 1..1 mengandung
1..1
PersediaanBahanJadi mengandung
IdPersediaanBahanJa di mengandung
0..*
1..*
0..*
0..*
BahanBaku
IdBahanBaku
mengandung
Penjualan
IdPenjualan 1..1
mengandung 1..1
0..* ProduksiBahanJadi 0..*
1..* 1..1
mengandung
IdProduksi
PersediaanBahanBaku
1..1 mengandung
ditangani
0..*
IdPersediaanBahanBaku
dilakukan
0..*
IdPembayaran
1..1
Pembelian
IdPembelian
Pembayaran
Karyawan 0..*
dilakukan
1..1
0..*
1..1 diterima
IdKaryawan
1..1
Gambar 3.3 ER dengan primary key 6. Consider use of enhanced modeling concepts Pada tahapan ini, dilakukan pertimbangan terhadap penggunaan konsep enchanced model, seperti spesialisasi, generalisasi, agregasi (penggabungan), dan komposisi. Setelah melakukan pertimbangan, perancangan basis data secara konseptual ini tidak menggunakan konsep enchanced model.
104 7. Check model for redundancy Tujuan dari tahapan ini adalah memeriksa dan menghilangkan redundansi yang terdapat di dalam model yang dibangun. Terdapat dua aktivitas yang dilakukan, yaitu: a. Memeriksa kembali hubungan one to one (1..1) Pada tahapan ini dilakukan pemeriksaan terhadap ERD konseptual yang bertujuan untuk menggabungkan dua entitas yang memiliki kesamaan objek. Entitas yang mengalami penggabungan yaitu: 1) Entitas Penjualan dan entitas Pembayaran. Relasi awal sebelum terjadinya penggabungan entitas Penjualan dan entitas Pembayaran.
Gambar 3.4 Hubungan 1..1 antara entitas Penjualan dan Pembayaran Relasi akhir setelah terjadinya penggabungan entitas Penjualan dan entitas Pembayaran.
Gambar 3.5 Gabungan entitas Pembayaran dengan Penjualan
105 2) Entitas Bahanbaku dan entitas PersediaanBahanbaku. Relasi awal sebelum terjadinya penggabungan entitas Bahanbaku dan entitas PersediaanBahanbaku.
Gambar 3.6 Hubungan 1..1 antara entitas BahanBaku dan PersediaanBahanBaku Relasi akhir setelah terjadinya penggabungan entitas Bahanbaku dan entitas PersediaanBahanbaku. BahanBaku
IdBahanBaku
Gambar 3.7 Gabungan entitas PersediaanBahanBaku dengan BahanBaku 3) Entitas Menu dan entitas PersediaanBahanJadi. Relasi awal sebelum terjadinya penggabungan entitas Menu dan entitas PersediaanBahanJadi.
Gambar 3.8 Hubungan 1..1 antara entitas Menu dan PersediaanBahanJadi Relasi akhir setelah terjadinya penggabungan entitas Menu dan entitas PersediaanBahanJadi.
106 Menu
IdMenu
Gambar 3.9 Gabungan entitas PersediaanBahanJadi dengan Menu
Selain entitas tersebut, terdapat entitas Menu dan entitas Resep yang tidak mengalami penggabungan karena entitasentitas tersebut menggambarkan objek yang berbeda. b. Menghilangkan
relasi
yang
memiliki
kemungkinan
redundansi Pada tahapan ini dilakukan pemeriksaan terhadap ERD konseptual yang bertujuan untuk menghilangkan redundansi terhadap relasi, dan dalam hal ini ditemukan relasi yang redundansi. 1) Hubungan redundansi antara entitas Resep, Menu, dan ProduksiBahanJadi. Relasi awal sebelum penghilangan hubungan antara entitas Resep dan entitas ProduksiBahanJadi.
107
Gambar 3.10 Redundansi pada Resep, Menu, dan ProduksiBahanJadi Relasi akhir setelah penghilangan hubungan antara entitas Resep dan entitas ProduksiBahanJadi.
Gambar 3.11 Penghilangan redundansi pada Resep, Menu dan ProduksiBahanJadi
8. Validate conceptual data model against user transactions Tahapan ini memiliki tujuan untuk memastikan model konseptual mendukung transaksi-transaksi yang dibutuhkan dengan
penggambaran
representasi
melalui
Relationship. Transaksi-transaksi tersebut, meliputi: a. Data entry 1) Memasukkan data menu 2) Memasukkan data resep
Entity
108 3) Memasukkan data bahanbaku 4) Memasukkan data karyawan 5) Memasukkan data pembelian 6) Memasukkan data penjualan 7) Memasukkan data meja 8) Memasukkan data produksi bahan jadi b. Data update atau deletion 1) Melakukan update/delete data menu 2) Melakukan update/delete data resep 3) Melakukan update/delete data bahanbaku 4) Melakukan update/delete data karyawan 5) Melakukan update/delete data pembelian 6) Melakukan update/delete data penjualan 7) Melakukan update/delete data meja 8) Melakukan update/delete data produksi bahan jadi c. Data query 1) Menampilkan dan melakukan pencarian data menu 2) Menampilkan dan melakukan pencarian data resep 3) Menampilkan dan melakukan pencarian data bahan baku 4) Menampilkan dan melakukan pencarian data karyawan 5) Menampilkan
dan
melakukan
pencarian
data
pembelian 6) Menampilkan dan melakukan pencarian data penjualan
109 7) Menampilkan dan melakukan data meja 8) Menampilkan dan melakukan pencarian data produksi bahan jadi 9. Review conceptual data model with user Pada tahapan ini, dilakukan review antara model basis data konseptual terhadap pengguna untuk memastikan model yang telah dirancang merepresentasikan kebutuhan perusahaan.
Gambar 3.12 ERD konseptual dengan primary key setelah validasi model
110 3.7.4.2
Perancangan Basis Data Logikal Model data konseptual yang telah terbentuk, selanjutnya akan dipetakan ke dalam model data logikal. Langkah-langkah yang terdapat pada perancangan basis data logikal meliputi: 1. Derive relations for logical data model Pada tahapan ini, dilakukan penurunan relasi untuk model data logikal yang merepresentasikan entitas, relasi, dan atribut yang telah teridentifikasi. Relasi yang diturunkan meliputi beberapa hal berikut: a. Strong Entity Type Yang termasuk dalam kategori sebagai entitas kuat pada model data ini adalah sebagai berikut: 1) Karyawan (IdKaryawan, NamaLengkap, NamaPosisi, NoKTP, Username, Password, Alamat, NoTelepon, JenisKelamin, StartWork, EndWork) 2) Pembelian
(IdPembelian,
JumlahPembelian,
Namabahanbaku, HargaPembelian,
TanggalPembelian) 3) Penjualan
(IdPenjualan,
NamaMenu,JumlahPenjualan, TanggalPenjualan,
HargaPenjualan,
TotalPembayaran,
Diskon,
NamaTipePembayaran) 4) BahanBaku
(IdBahanBaku,
NamaBahanBaku,
SatuanBahanBaku, TipeBahanBaku, jumlahStok)
111 5) Meja (IdMeja, NamaMeja) 6) Menu
(IdMenu,
NamaMenu,
HargaMenu,
NamaTipeMenu, NamaKategori, JumlahStok) 7) Resep (IdResep, JumlahBB, SatuanBB, HargaBB, JumlahPorsi) 8) ProduksiBahanJadi (IdProduksi, JumlahProduksi, TanggalProduksi) b. Weak Entity Type Pada tahapan ini, tidak terdapat adanya kategori entitas lemah karena tidak ada entitas yang tergantung secara sebagian maupun penuh terhadap entitas lainnya. c. One-to-many (1:*) binary relationship types 1) Hubungan antara entitas Meja dengan Penjualan. Menampilkan IdMeja dari entitas Meja ke entitas Penjualan dengan relasi “mengandung”.
Meja (IdMeja,
Penjualan (IdPenjualan, IdMeja,
NamaMeja)
NamaMenu,JumlahPenjualan, HargaPenjualan,
Primary key IdMeja
TanggalPenjualan, TotalPembayaran, Diskon, NamaTipePembayaran) Primary key IdPenjualan Foreign Key IdMeja references Meja
112 (IdMeja) 2) Hubungan antara entitas Karyawan dengan Penjualan. Menampilkan IdKaryawan dari entitas Karyawan ke entitas Penjualan dengan relasi “ditangani”.
Karyawan (IdKaryawan,
Penjualan (IdPenjualan, IdMeja,
NamaLengkap, NamaPosisi,
IdKaryawan, JumlahPenjualan,
NoKTP, Username, Password,
HargaPenjualan, TanggalPenjualan,
Alamat, NoTelepon,
TotalPayment, Discount,
JenisKelamin, StartWork,
NamaTipePembayaran,
EndWork)
TanggalPembayaran)
Primary key IdKaryawan
Primary key IdPenjualan Foreign Key IdMeja references Meja (IdMeja) Foreign Key IdKaryawan references Karyawan (IdKaryawan)
113
3) Hubungan antara entitas Karyawan dengan Pembelian. Menampilkan IdKaryawan dari entitas Karyawan ke entitas Pembelian dengan relasi “dilakukan”.
Karyawan (IdKaryawan,
Pembelian (IdPembelian, IdKaryawan,
NamaLengkap, NamaPosisi,
Namabahanbaku, JumlahPembelian,
NoKTP, Username, Password,
HargaPembelian, TanggalPembelian)
Alamat, NoTelepon,
Primary Key IdPembelian
JenisKelamin, StartWork,
Foreign Key IdKaryawan references
EndWork)
Karyawan (IdKaryawan)
Primary key IdKaryawan
4) Hubungan
antara
entitas
Menu
dengan
ProduksiBahanJadi. Menampilkan IdMenu dari entitas Menu ke entitas ProduksiBahanJadi dengan relasi “mengandung”.
Menu (IdMenu, NamaMenu,
ProduksiBahanJadi (IdProduksi, IdMenu,
HargaMenu, NamaTipeMenu,
JumlahProduksi, TanggalProduksi)
NamaKategori, JumlahStok)
Primary key IdProduksi
Primary key IdMenu
Foreign key IdMenu references Menu
114 (IdMenu) 5) Hubungan
antara
entitas
Karyawan
dengan
ProduksiBahanJadi. Menampilkan IdKaryawan dari entitas Karyawan ke entitas ProduksiBahanJadi dengan relasi “dilakukan”.
Karyawan (IdKaryawan,
ProduksiBahanJadi (IdProduksi,
NamaLengkap, NamaPosisi,
IdMenu, IdKaryawan,
NoKTP, Username, Password,
JumlahProduksi,
Alamat, NoTelepon,
TanggalProduksi)
JenisKelamin, StartWork,
Primary key IdProduksi
EndWork)
Foreign key IdMenu references
Primary key IdKaryawan
Menu (IdMenu)
115
d. One-to-one (1:1) binary relationship types 1) Hubungan antara entitas Menu dengan Resep. Menampilkan IdMenu dari entitas Menu ke entitas Resep dengan relasi “memiliki”.
Menu (IdMenu, NamaMenu,
Resep (IdResep, IdMenu, JumlahBB,
HargaMenu, NamaTipeMenu,
SatuanBB, HargaBB, JumlahPorsi)
NamaKategori, JumlahStok)
Primary key IdResep
Primary key IdMenu
Foreign key IdMenu references Menu (IdMenu)
e. One-to-one (1:1) recursive relationships Pada tahapan ini tidak terdapat entitas yang memiliki relasi dengan jenis one-to-one (1:1) recursive relationship types. f. Superclass/subclass relationship types Pada tahapan ini, tidak terdapat relasi superclass atau subclass karena tidak ada entitas dengan superclass atau subclass.
116
g. Many-to-many (*:*) binary relationship types 1) Hubungan many-to-many antara entitas Pembelian dengan BahanBaku menghasilkan entitas baru yaitu DetailPembelian. HeaderPembelian
BahanBaku (IdBahanBaku,
(IdPembelian, IdKaryawan,
NamaBahanBaku,
TanggalPembelian)
SatuanBahanBaku,
Primary key IdPembelian
NamaTipeBahanBaku)
Foreign key IdKaryawan
Primary key IdBahanBaku
references Karyawan (IdKaryawan)
DetailPembelian (IdPembelian, IdBahanBaku, JumlahPembelian, HargaPembelian) Primary key IdPembelian, IdBahanBaku Foreign key IdPembelian references Karyawan (HeaderPembelian) Foreign key IdBahanBaku references Karyawan (BahanBaku)
117
2) Hubungan many-to-many antara entitas Penjualan dengan
Menu
menghasilkan
entitas
baru
DetailPenjualan. HeaderPenjualan (IdPenjualan,
Menu (IdMenu,
IdMeja, IdKaryawan,
NamaTipeMenu,
IdTipePembayaran, JumlahPembayaran,
NamaKategori,
TanggalPenjualan, Diskon)
NamaMenu, HargaMenu)
Primary key IdPenjualan
Primary key IdMenu
Foreign key IdMeja references Meja (IdMeja) Foreign key IdKaryawan references Karyawan (IdKaryawan) Foreign key IdTipePembayaran references TipePembayaran (IdTipePembayaran)
DetailPenjualan (IdPenjualan, IdMenu, JumlahPenjualan, HargaPenjualan) Primary key IdPenjualan, IdMeja Foreign key IdPenjualan references HeaderPenjualan (IdPenjualan)
yaitu
118 Foreign key IdMenu references Menu (IdMenu) 3) Hubungan many-to-many antara entitas Resep dengan Bahanbaku
menghasilkan
entitas
baru
yaitu
DetailPenjualan. HeaderResep (IdResep,
BahanBaku (IdBahanBaku,
JumlahPorsi)
NamaBahanBaku, SatuanBahanBaku, NamaTipeBahanBaku) Primary key IdBahanBaku
DetailResep (IdResep, IdBahanBaku, JumlahBB, HargaBB) Primary key IdResep, IdBahanBaku Foreign key IdResep references HeaderResep (IdResep) Foreign key IdBahanBaku references BahanBaku (IdBahanBaku) h. Complex relationship types Pada tahapan ini tidak terdapat adanya tipe relasi kompleks. i. Multi-valued attributes Terdapat multi-valued attribute NoTelepon pada entitas Karyawan. Attribute tersebut dihilangkan dan
119 menghasilkan entitas baru yaitu entitas Telepon untuk menyimpan history dari data telepon. Karyawan (IdKaryawan,
Telepon (NoTelepon,
NamaLengkap, NamaPosisi,
IdKaryawan)
NoKTP, Username, Password,
Primary Key NoTelepon
Alamat, JenisKelamin,
Foreign Key IdKaryawan
StartWork, EndWork)
references Karyawan
Primary key Idkaryawan
(IdKaryawan)
2. Validate relations using normalization Normalisasi penjualan UNF Penjualan
(IdPenjualan,
NamaTipePembayaran, TanggalPenjualan, JumlahPenjualan,
NamaLengkap, JumlahPembayaran,
NamaMeja, HargaPenjualan,
{
NamaMenu,
Subtotal},GrandTotal,
Diskon) 1NF HeaderPenjualan
(IdPenjualan,
NamaTipePembayaran,
NamaLengkap, JumlahPembayaran,
TanggalPenjualan, NamaMeja, Diskon) DetailPenjualan (IdPenjualan, NamaMenu, JumlahPenjualan, HargaPenjualan) 2NF
120 HeaderPenjualan
(IdPenjualan,
NamaTipePembayaran,
NamaLengkap, JumlahPembayaran,
TanggalPenjualan, NamaMeja, Diskon) DetailPenjualan (IdPenjualan, IdMenu, JumlahPenjualan, HargaPenjualan) Menu (IdMenu, NamaMenu) 3NF HeaderPenjualan
(IdPenjualan,
IdMeja,
IdKaryawan,
IdTipePembayaran, JumlahPembayaran, TanggalPenjualan, Diskon) DetailPenjualan (IdPenjualan, IdMenu, JumlahPenjualan, HargaPenjualan) TipePembayaran
(IdTipePembayaran,
NamaTipePembayaran, NamaBank) Menu (IdMenu, IdTipeMenu, NamaMenu, HargaMenu, jumlahStok) TipeMenu (IdTipeMenu, IdKategori, NamaTipeMenu) Kategori (IdKategori, NamaKategori) Meja (IdMeja, NamaMeja) Karyawan
(IdKaryawan,
IdPosisi,
NamaLengkap,
NamaPosisi, NoKTP, Username, Password, Alamat, Jenis Kelamin, StartWork, EndWork) Posisi (IdPosisi, NamaPosisi) Telepon (NoTelepon, IdKaryawan)
121
Normalisasi Pembelian UNF Pembelian (IdPembelian, NamaLengkap, TanggalPembelian, {
NamaBahanBaku,
JumlahPembelian,
HargaPembelian,
Subtotal}, GrandTotal) 1NF HeaderPembelian
(IdPembelian,
NamaLengkap,
TanggalPembelian) DetailPembelian
(IdPembelian,
NamaBahanBaku,
JumlahPembelian, HargaPembelian) 2NF HeaderPembelian
(IdPembelian,
NamaLengkap,
(IdPembelian,
IdBahanBaku,
TanggalPembelian) DetailPembelian
JumlahPembelian, HargaPembelian) BahanBaku (IdBahanBaku, NamaBahanBaku) 3NF HeaderPembelian
(IdPembelian,
IdKaryawan,
TanggalPembelian) DetailPembelian
(IdPembelian,
IdBahanBaku,
JumlahPembelian, HargaPembelian) BahanBaku
(IdBahanBaku,
IdTipeBahanBaku,
NamaBahanBaku, SatuanBahanBaku, JumlahStok)
122 TipeBahanBaku (IdTipeBahanBaku, NamaTipeBahanBaku) Karyawan
(IdKaryawan,
IdPosisi,
NamaLengkap,
NamaPosisi, NoKTP, Username, Password, Alamat, Jenis Kelamin, StartWork, EndWork) Posisi (IdPosisi, NamaPosisi) Telepon (NoTelepon, IdKaryawan)
Normalisasi Resep UNF Resep
(IdResep,
NamaMenu,
JumlahPorsi,
{NamaBahanBaku, JumlahBB, SatuanBB, HargaBB}) 1NF HeaderResep (IdResep, NamaMenu, JumlahPorsi) DetailResep
(IdResep,
NamaBahanBaku,
JumlahBB,
SatuanBahanBaku, HargaBB) 2NF HeaderResep (IdResep, NamaMenu, JumlahPorsi) DetailResep (IdResep, IdBahanBaku, JumlahBB, HargaBB) BahanBaku
(IdBahanBaku,
NamaBahanBaku,
SatuanBahanBaku) 3NF HeaderResep (IdResep, JumlahPorsi) DetailResep (IdResep, IdBahanBaku, JumlahBB, HargaBB)
123 BahanBaku
(IdBahanBaku,
IdTipeBahanBaku,
NamaBahanBaku, SatuanBahanBaku) Menu (IdMenu, IdTipeMenu, NamaMenu, HargaMenu) TipeMenu (IdTipeMenu, IdKategori, NamaTipeMenu) Kategori (IdKategori, NamaKategori) TipeBahanBaku (IdTipeBahanBaku, NamaTipeBahanBaku)
Normalisasi Proses Produksi UNF Produksi
(IdProduksi,
NamaMenu,
JumlahProduksi,
NamaLengkap, TanggalProduksi) 1NF ProduksiBahanJadi
(IdProduksi,
NamaMenu,
JumlahProduksi, NamaLengkap, TanggalProduksi) 2NF ProduksiBahanJadi
(IdProduksi,
NamaMenu,
JumlahProduksi, NamaLengkap, TanggalProduksi) 3NF ProduksiBahanJadi (IdProduksi, IdMenu, JumlahProduksi, IdKaryawan, TanggalProduksi) Karyawan (IdKaryawan, IdPosisi, NamaLengkap, NoKTP, Username, Password, Alamat, Jenis Kelamin, StartWork, EndWork) Posisi (IdPosisi, NamaPosisi)
124 Telepon (NoTelepon, IdKaryawan) BahanBaku
(IdBahanBaku,
IdTipeBahanBaku,
NamaBahanBaku, SatuanBahanBaku) TipeBahanBaku (IdTipeBahanBaku, NamaTipeBahanBaku) Menu
(IdMenu,
IdTipeMenu,
IdResep,
NamaMenu,
HargaMenu, JumlahStok) TipeMenu (IdTipeMenu, IdKategori, NamaTipeMenu) Kategori (IdKategori, NamaKategori) HeaderResep (IdResep, JumlahPorsi) DetailResep (IdResep, IdBahanBaku, JumlahBB, HargaBB)
3NF gabungan HeaderPenjualan
(IdPenjualan,
IdMeja,
IdKaryawan,
IdTipePembayaran, JumlahPembayaran, TanggalPenjualan, Diskon) DetailPenjualan (IdPenjualan, IdMenu, JumlahPenjualan, HargaPenjualan) TipePembayaran
(IdTipePembayaran,
NamaTipePembayaran, NamaBank) Meja (IdMeja, NamaMeja) HeaderPembelian
(IdPembelian,
IdKaryawan,
TanggalPembelian) DetailPembelian
(IdPembelian,
JumlahPembelian, HargaPembelian)
IdBahanBaku,
125 Karyawan (IdKaryawan, IdPosisi, NamaLengkap, NoKTP, Username, Password, Alamat, Jenis Kelamin, StartWork, EndWork) Posisi (IdPosisi, NamaPosisi) Telepon (NoTelepon, IdKaryawan) HeaderResep (IdResep, JumlahPorsi) DetailResep (IdResep, IdBahanBaku, JumlahBB, HargaBB) Menu
(IdMenu,
IdTipeMenu,
IdResep,
NamaMenu,
HargaMenu, jumlahStok) TipeMenu (IdTipeMenu, IdKategori, NamaTipeMenu) Kategori (IdKategori, NamaKategori) ProduksiBahanJadi (IdProduksi, IdMenu, JumlahProduksi, IdKaryawan, TanggalProduksi) BahanBaku
(IdBahanBaku,
IdTipeBahanBaku,
NamaBahanBaku, satuanBahanBaku, stokBahanBaku) TipeBahanBaku (IdTipeBahanBaku, NamaTipeBahanBaku)
3. Validate relations against user transactions Tujuan pada langkah ini adalah untuk memastikan bahwa relasi pada model data logikal mendukung semua transaksi yang dibutuhkan. Transaksi-transaksi tersebut, meliputi: a. Data entry 1) Memasukkan data menu
126 2) Memasukkan data resep 3) Memasukkan data bahan baku 4) Memasukkan data karyawan 5) Memasukkan data pembelian 6) Memasukkan data penjualan 7) Memasukkan data meja 8) Memasukkan data tipe pembayaran 9) Memasukkan data tipe menu 10) Memasukkan data kategori 11) Memasukkan data produksi 12) Memasukkan data tipe bahan baku 13) Memasukkan data posisi 14) Memasukkan data nomortelepon b. Data update atau deletion 1) Melakukan update/delete data menu 2) Melakukan update/delete data resep 3) Melakukan update/delete data bahan baku 4) Melakukan update/delete data karyawan 5) Melakukan update/delete data pembelian 6) Melakukan update/delete data penjualan 7) Melakukan update/delete data meja 8) Melakukan update/delete data pembayaran 9) Memasukkan update/delete data tipe menu 10) Memasukkan update/delete data kategori
127 11) Memasukkan update/delete data produksi 12) Memasukkan update/delete data tipe bahan baku 13) Memasukkan update/delete data posisi 14) Memasukkan update/delete data nomortelepon c. Data query 1) Menampilkan dan melakukan pencarian data menu 2) Menampilkan dan melakukan pencarian data resep 3) Menampilkan dan melakukan pencarian data bahan baku 4) Menampilkan dan melakukan pencarian data karyawan 5) Menampilkan
dan
melakukan
pencarian
data
pembelian 6) Menampilkan dan melakukan pencarian data penjualan 7) Menampilkan dan melakukan data meja 8) Menampilkan
dan
melakukan
pencarian
data
pembayaran 9) Menampilkan dan melakukan pencarian data tipe menu 10) Menampilkan dan melakukan pencarian data kategori 11) Menampilkan dan melakukan pencarian data produksi 12) Menampilkan dan melakukan pencarian data tipe bahan baku 13) Menampilkan dan melakukan pencarian data posisi
128 14) Menampilkan
dan
melakukan
pencarian
data
nomortelepon
4. Check integrity constraints a. Required data Pertimbangan tersebut telah dilakukan pada tahapan konseptual (3.7.1.3 Identifikasi dan asosiasi atribut dengan entitas atau relasi). b. Atribute domain constraints Pertimbangan tersebut telah dilakukan pada tahapan konseptual (3.7.1.4 Menentukan attribute domain). c. Multiplicity Pertimbangan tersebut telah dilakukan pada tahapan konseptual (3.7.1.2 Mengidentifikasikan jenis relasi antar entitas). d. Entity integrity Pertimbangan tersebut telah dilakukan pada tahapan konseptual (3.7.1.5 Menentukan atribut primary key dan candidate key). e. Referential integrity Setiap foreign key menghubungkan setiap tuple di dalam child relation dengan tuple pada parent relation yang berisikan nilai candidate key yang bersesuaian. Jadi foreign key yang memiliki sebuah nilai, maka nilai harus
129 menunjuk kepada tuple yang berelasi pada parent. Berikut adalah referential integrity pada model logikal: 1) Posisi (IdPosisi, NamaPosisi) Primary key (IdPosisi) 2) Karyawan Username,
(IdKaryawan, Password,
IdPosisi,
NamaLengkap,
NoKTP, Alamat,
JenisKelamin, StartWork, EndWork) Primary key (IdKaryawan) Foreign key (IdPosisi) references Posisi (IdPosisi) on delete cascade on update cascade 3) Telepon (NoTelepon, IdKaryawan) Primary key (NoTelepon) Foreign key (IdKaryawan) references Karyawan (IdKaryawan) on delete cascade on update cascade 4) Meja (IdMeja, NamaMeja) Primary key (IdMeja) 5) TipePembayaran
(IdTipePembayaran,
NamaTipePembayaran, NamaBank) Primary key (IdTipePembayaran) 6) TipeBahanBaku(IdTipeBahanBaku, NamaTipeBahanBaku) Primary key (IdTipeBahanBaku) 7) BahanBaku
(IdBahanBaku,
IdTipeBahanBaku,
NamaBahanBaku, SatuanBahanBaku)
130 Primary key (IdBahanBaku) Foreign
key
(IdTipeBahanBaku)
TipeBahanBaku
(IdTipeBahanBaku)
references on
delete
cascade on update cascade 8) HeaderResep (IdResep, JumlahPorsi) Primary key (IdResep) 9) DetailResep (IdResep,
IdBahanBaku, JumlahBB,
SatuanBB, HargaBB) Primary key (IdResep,IdBahanBaku) Foreign key (IdResep) references Resep (IdResep) on delete cascade on update cascade Foreign key (IdBahanBaku) references BahanBaku (IdBahanBaku) on delete cascade on update cascade 10) Kategori (IdKategori, NamaKategori) Primary key (IdKategori) 11) TipeMenu
(IdTipeMenu,
IdKategori,
NamaTipeMenu) Primary key (IdTipeMenu) Foreign
key
(IdKategori)
references
Kategori
(IdKategori) on delete cascade on update cascade 12) Menu (IdMenu, IdTipeMenu, IdResep, NamaMenu, HargaMenu) Primary key (IdMenu)
131 Foreign
key
(IdTipeMenu)
references
TipeMenu(IdTipeMenu) on delete cascade on update cascade Foreign key (IdResep) references Resep (IdResep) on delete cascade on update cascade 13) ProduksiBahanJadi
(IdProduksi,
IdResep,
IdKaryawan, JumlahProduksi, TanggalProduksi) Primary key (IdProduksi) Foreign key (IdKaryawan) references Karyawan (IdKaryawan) on delete cascade on update cascade Foreign key (IdResep) references Resep (IdResep) on delete cascade on update cascade 14) HeaderPenjualan (IdPenjualan, IdMeja, IdKaryawan, IdTipePembayaran,
JumlahPembayaran,
TanggalPenjualan, Diskon) Primary key (IdPenjualan) Foreign key (IdMeja) references Meja (IdMeja) on delete cascade on update cascade Foreign key (IdKaryawan) references Karyawan (IdKaryawan) on delete cascade on update cascade Foreign
key
TipePembayaran
(IdTipePembayaran) (IdTipePembayaran)
cascade on update cascade
references on
delete
132 15) DetailPenjualan
(IdPenjualan,
IdMenu,
JumlahPenjualan, HargaPenjualan) Primary key (IdPenjualan, IdMenu) Foreign
key
(IdPenjualan)
references
HeaderPenjualan (IdPenjualan) on delete cascade on update cascade Foreign key (IdMenu) references Menu (IdMenu) on delete cascade on update cascade 16) HeaderPembelian
(IdPembelian,
IdKaryawan,
TanggalPembelian) Primary key (IdPembelian) Foreign key (IdKaryawan) references Karyawan (IdKaryawan) on delete cascade on update cascade 17) DetailPembelian
(IdPembelian,
IdBahanBaku,
JumlahPembelian, HargaPembelian) Primary key (IdPembelian,IdBahanBaku) Foreign
key
(IdPembelian)
references
HeaderPembelian (IdPembelian) on delete cascade on update cascade Foreign key (IdBahanBaku) references Bahanbaku (IdBahanBaku) on delete cascade on update cascade
133 5. Review logical data model with user Pada tahap ini, review antara model data logikal terhadap pengguna dilakukan untuk meyakinkan bahwa model data tersebut merepresentasikan kebutuhan data perusahaan.
6. Merge logical data models into global model (optional step) Pada tahapan perancangan basis data ini tidak dilakukan merge logical data model ke dalam global model karena pada transaksi-transaksi yang terjadi tidak terdapat pemisahan antara data logical dengan global. Keseluruhan data bersifat sama dan dapat berdiri sendiri sehingga tidak digabungkan ke dalam data global.
7. Check for future growth Pada tahapan ini, pertimbangan dan pengamatan terhadap model data dilakukan untuk menentukan perkiraan terhadap perubahan yang mungkin terjadi secara signifikan beberapa tahun ke depan, setelah dilakukan analisis terhadap kemungkinan tersebut, ternyata perubahan yang mungkin terjadi tidak terlalu signifikan namun tidak tertutup adanya kemungkinan dimana perlu dilakukan maintenance dan update terhadap aplikasi tersebut.
134
Gambar 3.13 ERD logikal
135 3.7.4.3
Perancangan Basis Data Fisikal 1. Translate logical data model for target DBMS 1.1 Design base relations Posisi Domain IdPosisi
: fixed length character string, length 5 format ‘P[0-9][0-9][09][0-9]’
Domain NamaPosisi : variabel length character string, length 50 Posisi ( IdPosisi IdPosisi not null, NamaPosisi NamaPosisi not null, Primary key (IdPosisi), )
Karyawan Domain IdKaryawan
: fixed length character string, length 7 format ‘E[0-9][0-9][09][0-9][0-9][0-9]’
Domain IdPosisi
: fixed length character string, length 5 format ‘P [0-9] [0-9] [0-9] [0-9]’
136 Domain NoKTP
: variabel length character string, length 20
Domain Username
: variabel length character string, length 50
Domain [Password]
: variabel length character string, length 50
Domain NamaLengkap : variabel length character string, length 50 Domain Alamat
: variabel length character string, length 50
Domain JenisKelamin : single character, must be one of 'M' or 'F' Domain StartWork
: date
Domain EndWork
: date
Karyawan ( IdKaryawan IdKaryawan not null, IdPosisi IdPosisi not null, NoKTP NoKTP not null, Username Username not null, [Password] [Password] not null, NamaLengkap NamaLengkap not null, Alamat Alamat not null, JenisKelamin JenisKelamin not null,
137 StartWork StartWork not null, EndWork EndWork, Primary key (IdKaryawan), Foreign key (IdPosisi) references Posisi(IdPosisi) on delete cascade on update cascade, )
Telepon Domain NoTelepon
: variabel length character string, length 15
Domain IdKaryawan : fixed length character string, length 7 format ‘E[0-9][0-9][09][0-9][0-9][0-9]’ Telepon ( NoTelepon NoTelepon not null, IdKaryawan IdKaryawan not null, Primary key (NoTelepon), Foreign
key
(IdKaryawan)
references
Karyawan(IdKaryawan) on delete cascade on update cascade, )
Meja
138 Domain IdMeja
: fixed length character string, length 5 format ‘T[0-9][0-9][0-9-[0-9]’
Domain NamaMeja : fixed length character string, length 5 format ‘[0-9][0-9]-[0-9][0-9]’ Meja ( IdMeja IdMeja not null, NamaMeja NamaMeja not null, Primary key (IdMeja), )
TipePembayaran Domain IdTipePembayaran
: fixed length character string, length 5 format ‘TP[0-9][0-9][0-9]’
Domain NamaTipePembayaran :
variabel
length
character string, length 50 Domain NamaBank
:
variabel
length
character string, length 50 TipePembayaran ( IdTipePembayaran IdTipePembayaran not null,
139 NamaTipePembayaran NamaTipePembayaran not null, NamaBank NamaBank, Primary key (IdTipePembayaran), )
TipeBahanBaku Domain IdTipeBahanBaku
:
fixed
length
character
string, length 5 format ‘TB[0-9][0-9][0-9]’ Domain NamaTipeBahanBaku : variabel length character string, length 50 TipeBahanBaku ( IdTipeBahanBaku IdTipeBahanBaku not null, NamaTipeBahanBaku NamaTipeBahanBaku not null, Primary key (IdTipeBahanBaku), )
BahanBaku Domain IdBahanBaku
: fixed length character string, length 5 format ‘B[0-9][09][0-9][0-9]’
140 Domain IdTipeBahanBaku : fixed length character string, length 5 format ‘TB[0-9][09][0-9]’ Domain NamaBahanBaku : variabel length character string, length 50 Domain SatuanBahanBaku : variabel length character string, length 10 Domain StokBahanBaku
: float
BahanBaku ( IdBahanBaku IdBahanBaku not null, IdTipeBahanBaku IdTipeBahanBaku not null, NamaBahanBaku NamaBahanBaku not null, SatuanBahanBaku SatuanBahanBaku not null, StokBahanBaku StokBahanBaku not null, Primary key (IdBahanBaku), Foreign
key
(IdTipeBahanBaku)
references
TipeBahanBaku (IdTipeBahanBaku) on delete cascade on update cascade, )
HeaderResep
141 Domain IdResep
: fixed length character string, length 5 format ‘R[0-9][0-9][0-9][09]’
Domain JumlahPorsi : integer HeaderResep ( IdResep IdResep not null, JumlahPorsi JumlahPorsi not null, Primary key (IdResep), )
DetailResep Domain IdResep
: fixed length character string, length 5 format ‘R[0-9][0-9][09][0-9]’
Domain IdBahanBaku : fixed length character string, length 5 format ‘M[0-9][0-9][09][0-9]’ Domain JumlahBB
: float
Domain HargaBB
: integer
DetailResep ( IdResep IdResep not null, IdBahanBaku IdBahanBaku not null,
142 JumlahBB JumlahBB not null, HargaBB HargaBB not null, Primary key (IdResep,IdBahanBaku), Foreign key (IdResep) references Resep (IdResep) on delete cascade on update cascade, Foreign key (IdBahanBaku) references BahanBaku (IdBahanBaku) on delete cascade on update cascade, )
Kategori Domain IdKategori
: fixed length character string, length 5 format ‘C[0-9][0-9][09][0-9]’
Domain NamaKategori : variabel length character string, length 50 Kategori ( IdKategori IdKategori not null, NamaKategori NamaKategori not null, Primary key (IdKategori), )
TipeMenu
143 Domain IdTipeMenu
: fixed length character string, length 5 format ‘TM[0-9][09][0-9]’
Domain IdKategori
: fixed length character string, length 5 format ‘C[0-9][0-9][09][0-9]’
Domain NamaTipeMenu :
variabel
length
character
string, length 50 TipeMenu ( IdTipeMenu IdTipeMenu not null, IdKategori IdKategori not null, NamaTipeMenu NamaTipeMenu not null, Primary key (IdTipeMenu), Foreign
key
(IdKategori)
references
Kategori
(IdKategori) on delete cascade on update cascade, )
Menu Domain IdMenu
: fixed length character string, length 5 format ‘M[0-9][0-9][0-9] [0-9]’
Domain IdTipeMenu : fixed length character string, length 5 format ‘TM[0-9][0-9][0-9]’
144 Domain IdResep
: fixed length character string, length 5 format ‘R[0-9][0-9][0-9] [0-9]’
Domain NamaMenu : variabel length character string, length 50 Domain HargaMenu : integer Domain jumlahStok : integer Menu ( IdMenu IdMenu not null, IdTipeMenu IdTipeMenu not null, IdResep IdResep not null, NamaMenu NamaMenu not null, HargaMenu HargaMenu not null, jumlahStok jumlahStok not null, Primary key (IdMenu), Foreign
key
(IdTipeMenu)
references
TipeMenu
(IdTipeMenu) on delete cascade on update cascade, Foreign key (IdResep) references Resep (IdResep) on delete cascade on update cascade, )
ProduksiBahanJadi
145 Domain IdProduksi
: fixed length character string, length 7 format ‘O[0-9] [09][0-9][0-9][0-9][0-9]’
Domain IdMenu
: fixed length character string, length 5 format ‘M[0-9][09][0-9][0-9]’
Domain IdKaryawan
: fixed length character string, length 7 format ‘K[0-9][0-9][09][0-9][0-9][0-9]’
Domain JumlahProduksi : integer Domain TanggalProduksi : datetime ProduksiBahanJadi ( IdProduksi IdProduksi not null, IdResep IdResep not null, IdKaryawan IdKaryawan not null, JumlahProduksi JumlahProduksi not null, TanggalProduksi TanggalProduksi not null, Primary key (IdProduksi), Foreign
key
(IdKaryawan)
references
Karyawan
(IdKaryawan) on delete cascade on update cascade, Foreign key (IdResep) references Resep (IdResep) on delete cascade on update cascade, )
146 HeaderPenjualan Domain IdPenjualan
:
fixed
length
character
string, length 7 format ‘S[09][0-9][0-9][0-9][0-9][0-9]’ Domain IdMeja
:
fixed
length
character
string, length 5 format ‘T[09][0-9][0-9][0-9]’ Domain IdKaryawan
:
fixed
length
character
string, length 5 format ‘K[09][0-9][0-9][0-9][0-9][0-9]’ Domain IdTipePembayaran : integer Domain JumlahPembayaran : integer Domain TanggalPenjualan
: datetime
Domain Diskon
: integer
HeaderPenjualan ( IdPenjualan IdPenjualan not null, IdMeja IdMeja not null, IdKaryawan IdKaryawan not null, IdTipePembayaran IdTipePembayaran not null, JumlahPembayaran JumlahPembayaran not null, TanggalPenjualan TanggalPenjualan not null, Diskon Diskon not null, Primary key (IdPenjualan),
147 Foreign key (IdMeja) references Meja (IdMeja) on delete cascade on update cascade, Foreign
key
(IdKaryawan)
references
Karyawan
(IdKaryawan) on delete cascade on update cascade, Foreign
key
(IdTipePembayaran)
references
TipePembayaran (IdTipePembayaran) on delete cascade on update cascade, )
DetailPenjualan Domain IdPenjualan
: fixed length character string, length 7 format ‘S[0-9][0-9][09][0-9][0-9][0-9]’
Domain IdMenu
: fixed length character string, length 5 format ‘M[0-9][0-9][09][0-9]’
Domain JumlahPenjualan : integer Domain HargaPenjualan : integer DetailPenjualan ( IdPenjualan IdPenjualan not null, IdMenu IdMenu not null, JumlahPenjualan JumlahPenjualan not null, HargaPenjualan HargaPenjualan not null,
148 Primary key (IdPenjualan, IdMenu), Foreign key (IdPenjualan) references HeaderPenjualan (IdPenjualan) on delete cascade on update cascade, Foreign key (IdMenu) references Karyawan (Menu) on delete cascade on update cascade, )
HeaderPembelian Domain IdPembelian
: fixed length character string, length 7 format ‘P[0-9][09][0-9][0-9][0-9][0-9]’
Domain IdKaryawan
: fixed length character string, length 5 format ‘K[0-9] [0-9] [0-9] [0-9]’
Domain TanggalPembelian : datetime HeaderPembelian ( IdPembelian IdPembelian not null, IdKaryawan IdKaryawan not null, TanggalPembelian TanggalPembelian not null, Primary key (IdPembelian), Foreign
key
(IdKaryawan)
references
Karyawan
(IdKaryawan) on delete cascade on update cascade, )
149 DetailPembelian Domain IdPembelian
: fixed length character string, length 7 format ‘P[0-9][0-9][09][0-9][0-9][0-9]’
Domain IdBahanBaku
: fixed length character string, length 7 format ‘B[0-9][0-9][09][0-9]’
Domain JumlahPembelian : float Domain HargaPembelian : integer DetailPembelian ( IdPembelian IdPembelian not null, IdBahanBaku IdBahanBaku not null, JumlahPembelian JumlahPembelian not null, HargaPembelian HargaPembelian not null, Primary key (IdPembelian,IdBahanBaku), Foreign key (IdPembelian) references HeaderPembelian (IdPembelian) on delete cascade on update cascade, Foreign key (IdBahanBaku) references Bahanbaku (IdBahanBaku) on delete cascade on update cascade, )
150 1.2 Design representation of derived data Pada tahapan ini bertujuan untuk menentukan representasi dari data turunan yang ditampilkan pada logical data model terhadap target DBMS. Data turunan (derived data) adalah suatu atribut yang memiliki nilai dengan mengetahui nilai dari atribut lainnya dahulu. Atribut yang menjadi data turunan adalah: 1. SubtotalPembelian SubtotalPembelian didapat dari hasil perhitungan nilai
atribut
pada
tabel
DetailPembelian.
SubtotalPembelian merupakan hasil perkalian dari jumlahPembelian
dan
hargaPembelian.
SubtotalPembelian akan ditampilkan pada laporan pembelian. 2. GrandTotalPembelian GrandTotalPembelian
didapat
dari
hasil
perhitungan nilai atribut pada tabel DetailPembelian. GrandTotalPembelian merupakan hasil penjumlahan dari SubtotalPembelian. GrandTotalPembelian akan ditampilkan pada laporan pembelian. 3. SubtotalPenjualan SubtotalPenjualan didapat dari hasil perhitungan nilai
atribut
pada
tabel
DetailPenjualan.
SubtotalPenjualan merupakan hasil perkalian dari
151 jumlahPenjualan
dan
hargaPenjualan.
SubtotalPenjualan akan ditampilkan pada laporan penjualan. 4. GrandTotalPenjualan GrandTotalPenjualan
didapat
dari
hasil
perhitungan nilai atribut pada tabel DetailPenjualan. GrandTotalPenjualan merupakan hasil penjumlahan dari SubtotalPenjualan. GrandTotalPenjualan akan ditampilkan pada laporan penjualan.
1.3 Design general constraints Pada tahapan ini bertujuan untuk merancang general constraint dari target DBMS. Terdapat beberapa general constraint pada tahap ini, sebagai berikut: a. Tanggal keluar karyawan harus lebih besar dari tanggal
masuk
karyawan.
CONSTRAINT
cekTanggalKeluar CHECK ( EndWork > StartWork) b. Transaksi pembelian tidak bisa dilakukan jika tidak ada karyawan. CONSTRAINT cekPembelian CHECK ( EXISTS (SELECT IdKaryawan from Karyawan)) c. Transaksi penjualan tidak bisa dilakukan jika tidak ada karyawan. CONSTRAINT cekPenjualan CHECK ( EXISTS (SELECT IdKaryawan from Karyawan))
152 2. Design file organizations and indexes Pada tahapan ini bertujuan untuk mengoptimalkan file organizations untuk menyimpan base relations dan indexes yang diperlukan agar memperoleh kinerja maksimal. 2.1 Menganalisis Transaksi Transaksi yang berjalan pada sistem basis data yaitu: a. Data entry 1) Memasukkan data menu 2) Memasukkan data resep 3) Memasukkan data bahan baku 4) Memasukkan data karyawan 5) Memasukkan data pembelian 6) Memasukkan data penjualan 7) Memasukkan data meja 8) Memasukkan data tipe pembayaran 9) Memasukkan data tipe menu 10) Memasukkan data kategori 11) Memasukkan data produksi 12) Memasukkan data tipe bahan baku 13) Memasukkan data posisi 14) Memasukkan data nomortelepon
153 Tabel 3.26 Tabel IRUD Data Entry Transaksi 1-3 Nama Entitas
1
2
3
I
R U D I
R U D I
R U D
HeaderPenjualan DetailPenjualan TipePembayaran Meja HeaderPembelian DetailPembelian Karyawan Posisi Telepon HeaderResep
x x
DetailResep
x x
Menu
x x
TipeMenu
x
Kategori
x
Produksi BahanBaku TipeBahanBaku
x x x
154
Tabel 3.27 Tabel IRUD Data Entry Transaksi 4-6 Nama Entitas
5
5
6
I
R U D I
R U D I
R U D
HeaderPenjualan
x x
DetailPenjualan
x x
TipePembayaran
x
Meja
x
HeaderPembelian
x x
DetailPembelian
x x
Karyawan Posisi Telepon
x x
x
x
x x x
HeaderResep DetailResep Menu
x
TipeMenu Kategori Produksi BahanBaku TipeBahanBaku
x
155
Tabel 3.28 Tabel IRUD Data Entry Transaksi 7-9 Nama Entitas
7
8
9
I
R U D I
R U D I
R U D
HeaderPenjualan DetailPenjualan TipePembayaran Meja
x x x x
HeaderPembelian DetailPembelian Karyawan Posisi Telepon HeaderResep DetailResep Menu TipeMenu Kategori Produksi BahanBaku TipeBahanBaku
x x x
156
Tabel 3.29 Tabel IRUD Data Entry Transaksi 10-12 Nama Entitas
1 0 I
R
1 1 U D I
1 2
R U D I
R
HeaderPenjualan DetailPenjualan TipePembayaran Meja HeaderPembelian DetailPembelian Karyawan
x
Posisi Telepon HeaderResep
x
DetailResep
x
Menu TipeMenu Kategori Produksi
x x x x
BahanBaku TipeBahanBaku
x x
U D
157
Tabel 3.300 Tabel IRUD Data Entry Transaksi 1314 Nama Entitas
1
3
I
R
1 4 U D I
R
U D
HeaderPenjualan DetailPenjualan TipePembayaran Meja HeaderPembelian DetailPembelian Karyawan Posisi
x x x
Telepon
x x
HeaderResep DetailResep Menu TipeMenu Kategori Produksi BahanBaku TipeBahanBaku
b. Data update atau deletion 1) Melakukan update/delete data menu 2) Melakukan update/delete data resep 3) Melakukan update/delete data bahan baku 4) Melakukan update/delete data karyawan 5) Melakukan update/delete data pembelian 6) Melakukan update/delete data penjualan
158 7) Melakukan update/delete data meja 8) Melakukan update/delete data tipe pembayaran 9) Memasukkan update/delete data tipe menu 10) Memasukkan update/delete data kategori 11) Memasukkan update/delete data produksi 12) Memasukkan update/delete data tipe bahan baku 13) Memasukkan update/delete data posisi 14) Memasukkan update/delete data nomortelepon
Tabel 3.311 Tabel IRUD Data Update atau Deletion Transaksi 1-3 Nama Entitas
1
2
3
I
R U D I
R U D I
R U D
HeaderPenjualan DetailPenjualan TipePembayaran Meja HeaderPembelian DetailPembelian Karyawan Posisi Telepon HeaderResep
x
x
x
DetailResep
x
x
x
Menu
x
TipeMenu
x
x
x
Kategori Produksi BahanBaku
x
x
x
x
159 TipeBahanBaku
x
Tabel 3.322 Tabel IRUD Data Update atau Deletion Transaksi 4-6 Nama Entitas
4
5
6
I
R U D I
R U D I
R U D
HeaderPenjualan
x
x
x
DetailPenjualan
x
x
x
TipePembayaran
x
Meja
x
HeaderPembelian
x
x
x
DetailPembelian
x
x
x
Karyawan
x
Posisi
x
Telepon
x
x
x
x
x
HeaderResep DetailResep Menu
x
TipeMenu Kategori Produksi BahanBaku TipeBahanBaku
x
160
Tabel 3.333 Tabel IRUD Data Update atau Deletion Transaksi 7-9 Nama Entitas
7
8
9
I
R U D I
R U D I
R U D
HeaderPenjualan DetailPenjualan TipePembayaran Meja
x x
x
x
x
x
HeaderPembelian DetailPembelian Karyawan Posisi Telepon HeaderResep DetailResep Menu TipeMenu
x
Kategori
x
Produksi BahanBaku TipeBahanBaku
x
x
161
Tabel 3.344 Tabel IRUD Data Update atau Deletion Transaksi 10-12 Nama Entitas
1 0 I
1 1
R U D I
R
1 2 U D I
R U D
HeaderPenjualan DetailPenjualan TipePembayaran Meja HeaderPembelian DetailPembelian Karyawan
x
Posisi Telepon HeaderResep
x
DetailResep
x
Menu TipeMenu Kategori Produksi
x
x
x x
x
x
BahanBaku TipeBahanBaku
x
x
x
162
Tabel 3.355 Tabel IRUD Data Update atau Deletion Transaksi 13-14 Nama Entitas
1 3 I
R
1 4 U D I
R
U D
HeaderPenjualan DetailPenjualan TipePembayaran Meja HeaderPembelian DetailPembelian Karyawan
x
Posisi
x
Telepon
x
x x
x
x
HeaderResep DetailResep Menu TipeMenu Kategori Produksi BahanBaku TipeBahanBaku
c. Data query 1) Menampilkan dan melakukan pencarian data menu 2) Menampilkan dan melakukan pencarian data resep 3) Menampilkan dan melakukan pencarian data bahan baku
163 4) Menampilkan dan melakukan pencarian data karyawan 5) Menampilkan dan melakukan pencarian data pembelian 6) Menampilkan dan melakukan pencarian data penjualan 7) Menampilkan dan melakukan data meja 8) Menampilkan dan melakukan pencarian data tipe pembayaran 9) Menampilkan dan melakukan pencarian data tipe menu 10) Menampilkan dan melakukan pencarian data kategori 11) Menampilkan dan melakukan pencarian data produksi 12) Menampilkan dan melakukan pencarian data tipe bahan baku 13) Menampilkan dan melakukan pencarian data posisi 14) Menampilkan dan melakukan pencarian data nomortelepon 15) Membuat laporan pembelian bahanbaku 16) Membuat laporan penjualan makanan
164
Tabel 3.366 Tabel IRUD Data Query Transaksi 1-3 Nama Entitas
1
2
3
I
R U D I
R U D I
R U D
HeaderPenjualan DetailPenjualan TipePembayaran Meja HeaderPembelian DetailPembelian Karyawan Posisi Telepon HeaderResep
x
DetailResep
x
Menu
x
TipeMenu
x
Kategori
x
Produksi BahanBaku
x
TipeBahanBaku
x
165
Tabel 3.377 Tabel IRUD Data Query Transaksi 4-6 Nama Entitas
4
5
6
I
R U D I
R U D I
R U D
HeaderPenjualan DetailPenjualan TipePembayaran Meja HeaderPembelian
x
DetailPembelian
x
Karyawan
x
Posisi
x
Telepon HeaderResep DetailResep Menu
x
TipeMenu Kategori Produksi BahanBaku TipeBahanBaku
x x
166
Tabel 3.388 Tabel IRUD Data Query Transaksi 7-9 Nama Entitas
7
8
9
I
R U D I
R U D I
R U D
HeaderPenjualan DetailPenjualan TipePembayaran Meja
x x
HeaderPembelian DetailPembelian Karyawan Posisi Telepon HeaderResep DetailResep Menu TipeMenu
x
Kategori
x
Produksi BahanBaku TipeBahanBaku
167
Tabel 3.399 Tabel IRUD Data Query Transaksi 10-12 Nama Entitas
1 0 I
1 1
R U D I
1 2
R U D I
R U D
HeaderPenjualan DetailPenjualan TipePembayaran Meja HeaderPembelian DetailPembelian Karyawan
x
Posisi Telepon HeaderResep
x
DetailResep
x
Menu TipeMenu Kategori Produksi
x x
BahanBaku TipeBahanBaku
x
168
Tabel 3.40 Tabel IRUD Data Query Transaksi 13-14 Nama Entitas
1 3 I
1 4
R U D I
R U D
HeaderPenjualan DetailPenjualan TipePembayaran Meja HeaderPembelian DetailPembelian Karyawan Posisi
x x
Telepon
x
HeaderResep DetailResep Menu TipeMenu Kategori Produksi BahanBaku TipeBahanBaku
2.2 Menentukan file organizations Pada tahapan ini, pengorganisasian file bertujuan untuk menentukan efisiensi file organizations terhadap base relations. Contoh pengorganisasian file yang digunakan adalah menampilkan data karyawan yang diurutkan berdasarkan IdKaryawan.
169 2.3 Menentukan index Pada tahapan ini, menentukan index bertujuan untuk menentukan
penambahan
indexes
yang
akan
meningkatkan kinerja dari sistem. CREATE UNIQUE INDEX idxKaryawan ON Karyawan (IdKaryawan) CREATE
UNIQUE
INDEX
idxPembelian
ON
idxPenjualan
ON
idxBahanBaku
ON
DetailPembelian (IdPembelian) CREATE
UNIQUE
INDEX
DetailPenjualan (IdPenjualan) CREATE
UNIQUE
INDEX
BahanBaku (IdBahanBaku) CREATE UNIQUE INDEX idxMenu ON Menu (IdMenu)
2.4 Mengestimasi kebutuhan disk space Tahapan ini bertujuan untuk memperkirakan jumlah kapasitas yang diperlukan untuk basis data. Perkiraan pertumbuhan data yang diambil dari hasil wawancara.
170
Tabel 3.41 Tabel Estimasi Karyawan Entity Name
Attributes
Data Type
Size
Karyawan
IdKaryawan
char(7)
NamaLengkap
varchar(50)
IdPosisi
char(5)
NoKTP
varchar(20)
21
Username
varchar(50)
51
Password
varchar(50)
51
Alamat
varchar(50)
51
JenisKelamin
char(1)
1
StartWork
date
8
EndWork
date
8
7 51 5
Total
254
Kapasitas dari tabel Karyawan adalah 254 byte Diperkirakan
setiap
bulan
terdapat
tahun
pertumbuhan
penambahan
1
Karyawan Dalam
satu
tabel
ini
adalah
254*1*12=3048 byte
Tabel 3.42 Tabel Estimasi Posisi Entity Name
Attributes
Data Type
Posisi
Idposisi
char(5)
NamaPosisi
varchar(50)
Total
Size 5 51 56
Kapasitas dari tabel Karyawan adalah 56 byte Diperkirakan setiap bulan terdapat penambahan 1 Posisi
171 Dalam satu tahun pertumbuhan tabel ini adalah 56*1=56 byte
Tabel 3.43 Tabel Estimasi Telepon Entity Name
Attributes
Data Type
Telepon
Notelepon
varchar(15)
IdKaryawan
char(7)
Size 16 7
Total
23
Kapasitas dari tabel Telepon adalah 23byte Diperkirakan setiap bulan terdapat penambahan 2 Telepon Dalam
satu
tahun
pertumbuhan
tabel
ini
adalah
23*2*12=552 byte
Tabel 3.44 Tabel Estimasi Meja Entity Name
Attributes
Data Type
Meja
IdMeja
char(5)
5
NamaMeja
char(5)
5
Total
Size
10
Kapasitas dari tabel Meja adalah 10 byte Diperkirakan setiap bulan terdapat penambahan 1 Meja Dalam
satu
tahun
10*1*12=120 byte
pertumbuhan
tabel
ini
adalah
172
Tabel 3.45 Tabel Estimasi Kategori Entity Name
Attributes
Data Type
Kategori
IdKategori
char(5)
NamaKategori
varchar(50)
Size 5
Total
51 55
Kapasitas dari tabel Kategori adalah 56 byte Diperkirakan setiap bulan terdapat penambahan 1 Kategori Dalam
satu
tahun
pertumbuhan
tabel
ini
adalah
56*1*12=672 byte
Tabel 3.46 Tabel Estimasi TipeMenu Entity Name
Attributes
Data Type
TipeMenu
IdTIpeMenu
char(5)
5
IdKategori
char(5)
5
NamaTipeMenu
varchar(50)
Total
Size
51 61
Kapasitas dari tabel TipeMenu adalah 61 byte Diperkirakan
setiap
bulan
terdapat
tahun
pertumbuhan
penambahan
1
TipeMenu Dalam
satu
61*1*12=732 byte
tabel
ini
adalah
173
Tabel 3.47 Tabel Estimasi Menu Entity Name
Attributes
Data Type
Menu
IdMenu
char(5)
5
IdTipeMenu
char(5)
5
IdResep
char(5)
5
NamaMenu
varchar(50)
HargaMenu
integer
4
jumlahStok
integer
4
Total
Size
51
74
Kapasitas dari tabel Menu adalah 74 byte Diperkirakan setiap bulan terdapat penambahan 2 Menu Dalam
satu
tahun
pertumbuhan
tabel
ini
adalah
74*2*12=1764 byte
Tabel 3.48 Tabel Estimasi BahanBaku Entity Name
Attributes
Data Type
BahanBaku
IdBahanBaku
char(5)
5
IdTipeBahanBaku
char(5)
5
NamaBahanBaku
varchar(50)
51
SatuanBahanBaku
varchar(10)
11
StokBahanBaku
float
Total
Size
4 76
Kapasitas dari tabel BahanBaku adalah 76 byte Diperkirakan BahanBaku
setiap
bulan
terdapat
penambahan
2
174 Dalam
satu
tahun
pertumbuhan
tabel
ini
adalah
76*2*12=1824 byte Tabel 3.49 Tabel Estimasi TipePembayaran Entity Name
Attributes
Data Type
TipePembayaran
IdTipePembayaran
char(5)
Size 5
NamaTipePembayaran varchar(50)
51
Nama Bank
51
varchar(50)
Total
107
Kapasitas dari tabel TipePembayaran adalah 107 byte Diperkirakan
setiap
bulan
terdapat
penambahan
1
TipePembayaran Dalam
satu
tahun
pertumbuhan
tabel
ini
adalah
107*1*12=1284 byte
Tabel 3.50 Tabel Estimasi TipeBahanbaku Entity Name
Attributes
Data Type
TipeBahanBaku
IdTipeBahanBaku
char(5)
NamaTipeBahanBaku
varchar(50)
Size 5
Total
51 56
Kapasitas dari tabel TipeBahanBaku adalah 56 byte Diperkirakan
setiap
bulan
terdapat
penambahan
1
TipeBahanBaku Dalam
satu
tahun
56*1*12=672 byte
pertumbuhan
tabel
ini
adalah
175
Tabel 3.51 Tabel Estimasi HeaderResep Entity Name
Attributes
Data Type
Size
HeaderResep
IdResep
char(5)
5
JumlahPorsi
integer
4
Total
9
Kapasitas dari tabel HeaderResep adalah 9 byte Diperkirakan
setiap
bulan
terdapat
tahun
pertumbuhan
penambahan
2
HeaderResep Dalam
satu
tabel
ini
adalah
9*2*12=216 byte
Tabel 3.52 Tabel Estimasi DetailResep Entity Name
Attributes
Data Type
DetailResep
IdResep
char(5)
5
IdBahanBaku
char(5)
5
JumlahBB
float
4
HargaBB
integer
4
Total
Size
18
Kapasitas dari tabel DetailResep adalah 18 byte Diperkirakan setiap bulan terdapat penambahan 40 DetailResep Dalam
satu
tahun
18*40*12=8640 byte
pertumbuhan
tabel
ini
adalah
176 Tabel 3.53 Tabel Estimasi ProduksiBahanJadi Entity Name
Attributes
Data Type
ProduksiBahanJadi IdProduksi
Size
char(5)
5
IdMenu
char(5)
5
IdKaryawan
char(7)
7
JumlahProduksi
integer
4
TanggalProduksi
datetime
8
Total
29
Kapasitas dari tabel DetailPenjualan adalah 29 byte Diperkirakan setiap hari terdapat penambahan 100 DetailPenjualan Dalam
satu
tahun
pertumbuhan
tabel
ini
adalah
29*100*365=1058500 byte
Tabel 3.54 Tabel Estimasi HeaderPenjualan Entity Name
Attributes
Data Type
Size
HeaderPenjualan
IdPenjualan
char(7)
7
IdMeja
char(5)
5
IdKaryawan
char(7)
7
IdTipePembayaran
char(5)
5
JumlahPembayaran
integer
4
TanggalPenjualan
datetime
8
Diskon
integer
4
Total
40
Kapasitas dari tabel HeaderPenjualan adalah 40 byte Diperkirakan
setiap
HeaderPenjualan
hari
terdapat
penambahan
20
177 Dalam
satu
tahun
pertumbuhan
tabel
ini
adalah
40*20*365=292000 byte
Tabel 3.55 Tabel Estimasi DetailPenjualan Entity Name
Attributes
Data Type
Size
DetailPenjualan
IdPenjualan
char(7)
7
IdMenu
char(5)
5
JumlahPenjualan
integer
4
HargaPenjualan
integer
4
Total
20
Kapasitas dari tabel DetailPenjualan adalah 20 byte Diperkirakan setiap hari terdapat penambahan 100 DetailPenjualan Dalam
satu
tahun
pertumbuhan
tabel
ini
adalah
20*100*365=730000 byte
Tabel 3.56 Tabel Estimasi HeaderPembelian Entity Name
Attributes
Data Type
Size
HeaderPembelian
IdPembelian
char(7)
7
IdKaryawan
char(7)
7
TanggalPembelian
datetime
4
Total
18
Kapasitas dari tabel HeaderPembelian adalah 18 byte Diperkirakan setiap bulan terdapat penambahan 10 HeaderPembelian
178 Dalam
satu
tahun
pertumbuhan
tabel
ini
adalah
18*10*12=2160 byte
Tabel 3.57 Tabel Estimasi DetailPembelian Entity Name
Attributes
Data Type
DetailPembelian
IdPembelian
char(7)
7
IdBahanBaku
char(5)
5
JumlahPembelian
float
4
HargaPembelian
integer
4
Total
Size
20
Kapasitas dari tabel DetailPembelian adalah 20 byte Diperkirakan setiap bulan terdapat penambahan 250 DetailPembelian Dalam
satu
tahun
pertumbuhan
tabel
ini
adalah
20*250*12=60000 byte
3. Design User View Bertujuan
untuk
merancang
user
view
yang
diidentifikasikan selama requirements collection dan analysis stage dari Database System Development Lifecycle.
4. Design security mechanisms Tujuan tahapan ini adalah merancang mekanisme keamanan basis data sesuai dengan ketentuan pengguna yang telah dikumpulkan selama tahapan database life cycle.
179 Mekanisme keamanan memiliki dua tipe, yaitu system security dan data security. System security adalah untuk melakukan akses dan menggunakan basis data, memerlukan login menggunakan username dan password. Data security adalah untuk melakukan akses dan menggunakan objek basis data dan aksi yang dapat dilakukan oleh pengguna terhadap objekobjek tersebut.
5. Consider the introduction of controlled redundancy Pada tahapan ini, dilakukan pertimbangan untuk melakukan
kontrol
redundansi
lebih
lanjut
dengan
menggunakan ketentuan normalisasi sebelumnya untuk dapat meningkatkan performa dari sistem, tetapi tidak ditemukan adanya redundansi data pada perancangan basis data ini sehingga tidak diperlukan pengenalan kontrol redundansi.
6. Monitor and tune the operational system Pada tahap ini, pemahaman terhadap operasional sistem dilakukan lebih lanjut sebelum melakukan implementasi basis data secara keseluruhan untuk memperoleh spesifikasi dan dokumentasi terkait yang diperlukan dan dengan kata lain pengawasan maupun penyesuaian
belum dilakukan karena
aplikasi basis data belum diimplementasikan.
180 3.7.5
DBMS selection DBMS yang digunakan adalah MySQL untuk mendukung penggunaan dari sistem basis data. Keuntungan dari MySQL adalah multi-user sehingga dapat digunakan oleh lebih dari satu user dalam waktu yang bersamaan.
3.7.6
Application Design Perancangan layar dari aplikasi pembelian, persediaan, dan penjualan pada restoran celio bistro adalah sebagai berikut:
Gambar 3.14 Perancangan layar Login
181
Gambar 3.15 Perancangan layar Form Utama
Gambar 3.16 Perancangan layar File
182
Gambar 3.17 Perancangan layar Change Password
Gambar 3.18 Perancangan layar Master
183
Gambar 3.19 Perancangan layar Master – Barang
Gambar 3.20 Perancangan layar Master – Barang – Bahanbaku
184
Gambar 3.21 Perancangan layar Master – Barang – TipeBahanbaku
Gambar 3.22 Perancangan layar Master – Makanan
185
Gambar 3.23 Perancangan layar Master – Makanan – Menu
Gambar 3.24 Perancangan layar Master – Makanan – Tipe Menu
186
Gambar 3.25 Perancangan layar Master – Makanan – Kategori
Gambar 3.26 Perancangan layar Karyawan
187
Gambar 3.27 Perancangan layar Karyawan – Data Karyawan
Gambar 3.28 Perancangan layar Karyawan – Posisi
188
Gambar 3.29 Perancangan layar Tipe Pembayaran
Gambar 3.30 Perancangan layar Master – Resep
189
Gambar 3.31 Perancangan layar Master – Meja
Gambar 3.32 Perancangan layar Transaksi
190
Gambar 3.33 Perancangan layar Transaksi – Pembelian
Gambar 3.34 Perancangan layar Transaksi – Penjualan
191
Gambar 3.35 Perancangan layar Transaksi – Produksi
Gambar 3.36 Perancangan layar Transaksi – Pembayaran
192
Gambar 3.37 Perancangan layar Laporan
Gambar 3.38 Perancangan layar Laporan – Laporan Pembelian
193
Gambar 3.39 Perancangan layar Laporan – Laporan Penjualan
3.7.7
Prototyping Pada tahap prototype tidak dilakukan karena pada tahap ini merupakan tahap optional.
3.7.8
Implementation DDL yang digunakan adalah CREATE TABLE IF NOT EXISTS `bahanbaku` ( `IdBahanBaku` char(5) NOT NULL, `IdTipeBahanBaku` char(5) NOT NULL, `NamaBahanbaku` varchar(50) NOT NULL, `SatuanBahanBaku` varchar(10) NOT NULL, `StokBahanBaku` int(11) NOT NULL,
194 PRIMARY KEY (`IdBahanBaku`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `detailpembelian` ( `IdPembelian` char(7) NOT NULL, `IdBahanBaku` int(11) NOT NULL, `JumlahPembelian` int(11) NOT NULL, `HargaPembelian` int(11) NOT NULL, PRIMARY KEY (`IdPembelian`,`IdBahanBaku`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `detailpenjualan` ( `IdPenjualan` char(7) NOT NULL, `IdMenu` char(5) NOT NULL, `JumlahPenjualan` int(11) NOT NULL, `HargaPenjualan` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `detailresep` ( `idResep` char(5) NOT NULL, `IdBahanBaku` char(5) NOT NULL, `JumlahBB` int(11) NOT NULL, `HargaBB` int(11) NOT NULL, PRIMARY KEY (`idResep`,`IdBahanBaku`)
195 ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `headerpembelian` ( `IdPembelian` char(7) NOT NULL, `IdKaryawan` char(7) NOT NULL, `TanggalPembelian` datetime NOT NULL, PRIMARY KEY (`IdPembelian`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `headerpenjualan` ( `IdPenjualan` char(7) NOT NULL, `IdMeja` char(5) NOT NULL, `IdKaryawan` char(7) NOT NULL, `idTipepembayaran` char(5) DEFAULT NULL, `JumlahPembayaran` int(11) DEFAULT NULL, `TanggalPenjualan` datetime DEFAULT NULL, `Diskon` int(11) DEFAULT NULL, PRIMARY KEY (`IdPenjualan`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `headerresep` ( `idResep` char(5) NOT NULL, `jumlahPorsi` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
196
CREATE TABLE IF NOT EXISTS `karyawan` ( `IdKaryawan` char(7) NOT NULL, `idPosisi` char(5) NOT NULL, `NoKTP` varchar(20) NOT NULL, `namalengkap` varchar(100) NOT NULL, `alamat` varchar(100) NOT NULL, `jeniskelamin` int(11) NOT NULL, `username` varchar(100) NOT NULL, `password` varchar(100) NOT NULL, `startdate` datetime DEFAULT NULL, `enddate` datetime DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `kategori` ( `IdKategori` char(5) NOT NULL, `NamaKategori` varchar(50) DEFAULT NULL, PRIMARY KEY (`IdKategori`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `meja` ( `IdMeja` char(5) NOT NULL, `NamaMeja` char(5) NOT NULL, PRIMARY KEY (`IdMeja`)
197 ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `menu` ( `IdMenu` char(5) NOT NULL, `IdResep` char(5) NOT NULL, `IdTipeMenu` char(5) NOT NULL, `NamaMenu` varchar(50) NOT NULL, `HargaMenu` int(11) NOT NULL, `JumlahStok` int(11) NOT NULL, PRIMARY KEY (`IdMenu`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `posisi` ( `IdPosisi` char(5) NOT NULL, `NamaPosisi` varchar(50) NOT NULL, PRIMARY KEY (`IdPosisi`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `produksi` ( `IdProduksi` char(7) NOT NULL, `IdMenu` char(5) NOT NULL, `IdKaryawan` char(7) NOT NULL, `Jumlah` int(11) NOT NULL, `TanggalProduksi` datetime NOT NULL
198 ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `telepon` ( `NoTelepon` varchar(15) NOT NULL DEFAULT '', `IdKaryawan` char(7) NOT NULL, PRIMARY KEY (`NoTelepon`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `tipebahanbaku` ( `IdTipeBahanBaku` char(5) NOT NULL, `NamaTipeBahanBaku` varchar(50) NOT NULL, PRIMARY KEY (`IdTipeBahanBaku`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `tipemenu` ( `IdTipeMenu` char(5) NOT NULL, `IdKategori` char(5) NOT NULL, `NamaTipeMenu` varchar(50) NOT NULL, PRIMARY KEY (`IdTipeMenu`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `tipepembayaran` ( `IdTipePembayaran` char(5) NOT NULL, `NamaTipePembayaran` varchar(50) NOT NULL,
199 `NamaBank` varchar(50) NOT NULL DEFAULT '', PRIMARY KEY (`IdTipePembayaran`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
3.7.9
Data convertion and loading Konversi data dilakukan langsung dari pihak internal perusahaan, dikarenakan data bersifat rahasia.
3.7.10 Testing Testing dilakukan untuk melakukan pengecekan apakah aplikasi yang dijalankan mengalami bug. Testing dilakukan 2 kali, yaitu testing dilakukan oleh penulis dan testing yang dilakukan oleh user. 3.7.11 Operational maintenance Proses pengawasan serta pemeliharaan dilakukan jika user mengalami bug ketika menggunakan aplikasi tersebut.
3.8
Perancangan Sistem 3.8.1
SDLC Model yang digunakan adalah waterfall model. Tahapan-tahapan pada waterfall model, yaitu: 1. Communication Pada tahap communication, dilakukan pengumpulan informasi dan aktivitas lainnya dengan melakukan komunikasi pada user. Metode
200 komunikasi yang dilakukan adalah dengan melakukan observasi, wawancara dan memeriksa dokumen. 2. Planning Pada tahap planning, dilakukan perencanaan aplikasi yang akan dikerjakan dengan menghitung resiko dan melakukan penjadwalan. 3. Modeling Pada tahap modeling, dilakukan pemodelan aplikasi agar user memahami analisis dan design tersebut. 4. Construction Pada tahap construction, dilakukan untuk membangun aplikasi (code) dan melakukan testing. 5. Deployment Pada tahap deployment, aplikasi diberikan untuk user, melakukan evaluasi terhadap aplikasi tersebut dan memberikan feedback berdasarkan evaluasi tersebut.
3.8.2
DFD DFD yang digambarkan untuk sistem aplikasi basis data ini adalah sebagai berikut:
201
Gambar 3.40 Diagram Konteks
Gambar 3.41 Diagram Level Nol
202
Gambar 3.42 Diagram Level 1 Penjualan Pada proses bisnis pembelian dan persediaan tidak digambarkan secara rinci pada tahapan dfd level 1 dikarenakan proses bisnis pembelian dan persediaan yang masih sederhana dan dengan sudah digambarkan secara rinci pada tahapan dfd level 0.
3.8.3
Perancangan Struktur Menu Adapun struktur menu yang terdapat pada sistem aplikasi basis data ini ditunjukkan melalui representasi gambar yang terdapat di bawah ini:
203
Gambar 3.43 Struktur Menu 3.8.4
State Transition Diagram Adapun STD yang terdapat pada sistem aplikasi basis data sebagai berikut:
204
Gambar 3.44 STD Login
Gambar 3.45 STD Form Utama
205
Gambar 3.46 STD File
Gambar 3.47 STD sub menu Change Password
206
Gambar 3.48 STD menu Master
Gambar 3.49 STD sub menu Barang
207
Gambar 3.50 STD sub menu BahanBaku
208
Gambar 3.51 STD sub menu TipeBahanBaku
Gambar 3.52 STD sub menu Makanan
209
Gambar 3.53 STD sub menu Menu
210
Gambar 3.54 STD sub menu TipeMenu
211
Gambar 3.55 STD sub menu Kategori
Gambar 3.56 STD sub menu Karyawan
212
Gambar 3.57 STD sub menu Data Karyawan
213
Gambar 3.58 STD sub menu Posisi
214 Form Utama
Klik Master Tampilkan Submenu Master
Kembali ke form utama
Klik Tutup Kembali ke FormUtama
Master
Klik Tipe pembayaran Tampilkan Submenu Tipe pembayaran
Tipe Pembayaran
Klik Cari Menampilkan hasil pencarian
Klik Tambah Menambahkan data Tipe Pembayaran baru
Klik Simpan Menyimpan data Tipe Pembayaran
Klik Ubah Mengedit data Tipe Pembayaran Klik Hapus Menghapus data Tipe Pembayaran
Klik Batal Membatalkan data Tipe Pembayaran
Gambar 3.59 STD sub menu Tipe Pembayaran
Gambar 3.60 STD sub menu Resep
215
Gambar 3.61 STD sub menu Meja
Gambar 3.62 STD menu Transaksi
216
Gambar 3.63 STD sub menu Pembelian
Gambar 3.64 STD sub menu Penjualan
217
Gambar 3.65 STD sub menu Produksi
Gambar 3.66 STD sub menu Pembayaran
218
Gambar 3.67 STD menu Laporan
Gambar 3.68 STD sub menu Laporan Pembelian
219
Gambar 3.69 STD sub menu Laporan Penjualan