57
RANCANGAN SISTEM YANG DIUSULKAN
4.1 Usulan Perancangan Sistem
Sistem yang diusulkan dirancang berdasarkan analisis kebutuhan sistem dan permasalahan yang dihadapi oleh PT Kuwera Jaya Tour & Travel, yaitu merancang suatu sistem pemesanan secara online dengan menggunakan teknologi internet.
Website yang dirancang terdiri dari dua bagian utama yaitu front end dan back end
(admin). Bagian front end ditujukan untuk user / pelanggan, sedangkan back end
ditujukan untuk admin.
Website untuk bagian front end menyediakan fasilitas-fasilitas yaitu dapat
melihat isi products, sejarah singkat perusahaan, informasi terbaru tentang perusahaan, lokasi, login dan registrasi, fasilitas quick search untuk mencari informasi tiket dan hotel secara langsung. Dalam situs ini, pelanggan harus terlebih dahulu mendaftarkan dirinya atau menjadi member agar dapat melakukan transaksi secara online seperti pemesanan tiket / paket tur / voucher hotel dan merubah
profile ataupun mengganti password. Setiap pelanggan memiliki username dan
password setelah melakukan registrasi, untuk proses login agar dapat melakukan
transaksi online.
Pada tahap pemesanan, pelanggan sebelumnya memilih jenis produk yang diinginkan, kemudian setelah melakukan beberapa langkah pemesanan lalu pelanggan akan diberikan kode reservasi sebagai tanda bukti telah melakukan pemesanan.
Website untuk bagian back end memiliki password untuk proses login agar
dapat melakukan pengeditan data yaitu melihat, menambah, mengurangi, menghapus semua data yang berhubungan dengan sistem pemesanan online. Meskipun proses pemesanan dilakukan secara online, proses pembayaran tetap dilakukan melalui transfer antar rekening bank. Setelah itu pelanggan melakukan konfirmasi pembayaran dengan cara mengirim pesan pada admin dengan fasilitas
messages yang ada pada sistem.
Perancangan sistem yang diusulkan ini, diharapkan dapat membantu perusahaan. Dimana sistem ini bukan untuk menggantikan sistem yang sedang berjalan saat ini, tetapi sebagai pendukung sistem yang sedang berjalan. Maksudnya adalah pelanggan masih dapat melakukan transaksi dengan datang langsung ke perusahaan atau via telepon. Dan dengan adanya sistem yang diusulkan ini maka pelanggan dapat melihat informasi serta memesan tiket, paket wisata, dan voucher hotel melalui internet. Dimana akan memudahkan bagi pelanggan karena tidak terbatas oleh waktu. Untuk sistem yang diusulkan ini, akan selalu di update setiap harinya oleh admin di dalam website back end pada waktu tertentu, sehingga data yang diperoleh dari yang offline dengan yang online akan selalu up-to-date.
4.2 Perancangan Basis Data
Setelah melakukan analisis lengkap terhadap kebutuhan perusahaan, maka tahap siklus hidup aplikasi basis data yang berikutnya adalah perancangan basis data. Dalam tahap ini kita menggunakan suatu metodologi yang terdiri dari tiga fase utama, yaitu perancangan basis data konseptual (Conseptual database design),
perancangan basis data logical (Logical database design), dan perancangan basis data fisikal (Physical database design).
4.2.1 Perancangan Basis Data Konseptual
Conceptual Database Design merupakan proses membuat model
dari informasi yang digunakan dalam sebuah perusahaan, tidak tergantung pada semua pertimbangan fisik.
4.2.1.1 Mengidentifikasi Tipe Entity
Entity Keterangan Alias Occurrence
User Berisi informasi mengenai para pelanggan/pengguna
yang telah mendaftar menjadi member.
Pengguna Pengguna pada
website PT Kuwera
Jaya
Message_header Berisi data mengenai pesan yang masuk pada inbox
Inbox Pesan yang masuk pada website PT
Kuwera Jaya Message_sent Berisi data mengenai
pesan yang keluar pada sent
Sent Pesan yang keluar pada website PT
Kuwera Jaya Penumpang Berisi informasi para
penumpang yang memesan tiket
Passanger Penumpang yang melakukan
Entity Keterangan Alias Occurrence pada website PT
Kuwera Jaya Peserta Berisi informasi para
peserta tour
Peserta Peserta yang
melakukan
pemesanan paket tur pada website PT
Kuwera Jaya Tiket_reservasi Berisi informasi mengenai
detail pemesanan tiket yang telah di pesan oleh
user
Tiket_reservasi Detail pemesanan tiket pada website PT Kuwera Jaya
Tour_reservasi Berisi informasi mengenai detail pemesanan paket tur.
Tour_reservasi Detail pemesanan paket tur pada
website PT Kuwera
Jaya Voucher_hotel_
reservasi
Berisi informasi mengenai pemesanan voucher hotel
Voucher_hotel_re servasi
Detail peme-sanan voucher hotel pada
website PT Kuwera
Jaya Penerbangan Berisi informasi mengenai
jadwal penerbangan dan harga tiket
Penerbangan Detail jadwal penerbangan dan harga tiket
Entity Keterangan Alias Occurrence Maskapai Berisi informasi mengenai
nama maskapai/airline
Maskapai Detail maskapai
yang bekerja sama dengan PT Kuwera Jaya
Rute Berisi informasi mengenai rute penerbangan
Rute Detail rute
penerbangan dan nama kota yang menjadi tujuan
Tour Berisi informasi mengenai paket tur yang tersedia
pada PT Kuwera Jaya
Tour Detail paket tur yang tersedia pada
website PT Kuwera
Jaya Hotel Berisi informasi mengenai
hotel domestic dan international
Hotel Detail hotel
domestic dan international yang terdaftar pada
website PT Kuwera
Jaya Tarif_hotel Berisi informasi mengenai
tarif kamar hotel
Tarif_hotel Detail tarif kamar hotel
Tipe_kamar Berisi informasi mengenai tipe kamar hotel yang
Tipe_kamar Detail tipe kamar hotel
Entity Keterangan Alias Occurrence tersedia
Tipe_bed Berisi informasi mengenai tipe bed hotel yang
tersedia
Tipe_bed Detail tipe bed hotel
Cancel_reservasi_ tiket
Berisi data mengenai Tiket yang dibatalkan
Cancel_reservasi_ tiket
Detail tiket yang diba-talkan pada
website PT Kuwera
Jaya Cancel_reservasi_
hotel
Berisi data mengenai voucher hotel yang dibatalkan
Cancel_reservasi_ hotel
Detail voucher hotel yang diba-talkan pada website PT
Kuwera Jaya Cancel_reservasi_
tour
Berisi data mengenai paket tur yang dibatalkan
Cancel_reservasi_ tour
Detail paket tur yang diba-talkan pada
website PT Kuwera
Jaya Tabel 4.1 Tabel Tipe Entitas
4.2.1.2 Mengidentifikasi Tipe Relasi
Nama Entitas Multiplicity Relationship Nama Entitas Multiplicity Message_
header
Nama Entitas Multiplicity Relationship Nama Entitas Multiplicity Message_ sent 1.* melibatkan User *.* Tiket_reservasi 0.* 0.* 0.* 1.1 0.* memiliki memiliki memiliki memiliki melibatkan Maskapai Penerbangan Rute Penumpang User 1.1 1.* 1.* 1.* 1.1 Tour_reservasi 0.* 0.* 1.1 melibatkan memilki memiliki User Tour Peserta 1.1 1.1 1.* Voucher_hotel _reservasi 0.* 0.* 0.* 0.* 0.* melibatkan memiliki memiliki memiliki memiliki User Hotel Tarif_hotel Tipe_kamar Tipe_bed 1.1 1.1 1.* 1.* 1.* Penerbangan 1.* 1.* memiliki memiliki Maskapai Rute 1.1 1.1 Tarif_hotel 1.* 1.* 1.* memiliki memiliki memiliki Hotel Tipe_kamar Tipe_bed 1.1 1.1 1.1 Cancel_reserva si_tiket 0.1 0.* memiliki melibatkan Tiket_reservasi User 1.1 1.1
Nama Entitas Multiplicity Relationship Nama Entitas Multiplicity Cancel_reserva si_hotel 0.1 0.* memiliki melibatkan Voucher_hotel_reservasi User 1.1 1.1 Cancel_reserva si_tour 0.1 0.* memiliki melibatkan Tour_reservasi User 1.1 1.1 Tabel 4.2 Tabel Tipe Relasi
4.2.1.3 Mengidentifikasi dan Mengasosiasikan Atribut dengan suatu Entitas atau Tipe Relasi
Nama
Entitas Atribut Deskripsi
Tipe data dan panjang
Null Multi Valued
username Username varchar (10) No No
password Password user varchar (10) No No nama_lengkap Nama lengkap user varchar (50) No No gender Jenis kelamin user varchar (10) No No
alamat Alamat user text No No
email Email user varchar (50) No No
telp No. telp user varchar (20) No No User
status Status user tinyint (1) No No pesan_id Kode pesan int (3) No No
subject Judul pesan varchar(50) No No
isi Isi pesan text No No
tanggal Tanggal dibuat datetime No No
Status Status pesan tinyint(1) No No
Message_ header
Username Pengirim, penerima pesan
varchar(10) No Yes
pesan_id Kode pesan int (3) No No
subject Judul pesan varchar(50) No No
isi Isi pesan text No No
Message_ sent
Nama
Entitas Atribut Deskripsi
Tipe data dan panjang
Null Multi Valued
Status Status pesan tinyint(1) No No
Username Pengirim, penerima pesan
varchar(10) No Yes
penumpang_id Kode penumpang varchar(9) No No nama_penumpang Nama penumpang varchar (30) No No
gender Jenis kelamin
penumpang
varchar (10) No No Penumpang
jenis_penumpang Jenis penumpang varchar (10) No No peserta_id Kode peserta tour varchar (9) No No
nama_peserta Nama peserta tour varchar (30) No No Peserta
gender Jenis kelamin
peserta tour
varchar (10) No No
reservasi_tiket_id Kode reservasi tiket
varchar (16) No No
username Pemesan reservasi varchar (10) No No tanggal_reservasi Tanggal reservasi datetime No No maskapai_id Kode maskapai char (2) No No nama_maskapai Nama maskapai varchar (20) No No Tiket_reserva
si
penerbangan_id Kode penerbangan tiket
Nama
Entitas Atribut Deskripsi
Tipe data dan panjang Null Multi Valued keberangkatan, tiket kembali
Tarif_tiket Tarif tiket int(10) No Yes
Rute_id Kode rute
penerbangan
varchar(11) No Yes
kota_asal Kota asal
penerbangan
varchar(20) No Yes
kota_tujuan Kota tujuan penerbangan
varchar(20) No Yes
kota_transit Kota transit varchar(20) Yes Yes tanggal_berangkat Tanggal berangkat date No No tanggal_kembali Tanggal kembali date Yes No penumpang_id Kode penumpang varchar(9) No Yes nama_penumpang Nama penumpang varchar (30) No Yes
gender Jenis kelamin
penumpang
varchar (10) No Yes
jenis_penumpang Jenis penumpang varchar (10) No Yes Total_tarif_tiket Total tarif tiket int(10) No No tipe_pembayaran Tipe pembayaran varchar(20) No No status_pembayaran Status pembayaran varchar(10) No No
Nama
Entitas Atribut Deskripsi
Tipe data dan panjang Null Multi Valued n pembayaran
tipe_pengambilan Tipe pengambilan tiket
varchar(20) No No
reservasi_tour_id Kode reservasi tour varchar(16) No No username Pemesan reservasi varchar (10) No No tanggal_reservasi Tanggal reservasi datetime No No
tour_id Kode tour varchar(15) No No
nama_tour Nama tour varchar (50) No No
Tarif_tour Tarif tour int(10) No No
peserta_id Kode peserta tour varchar (9) No Yes
nama_peserta Nama peserta tour varchar (30) No Yes
gender Jenis kelamin
peserta tour
varchar (10) No Yes
Total_tarif_tour Total tarif tour int(10) No No tipe_pembayaran Tipe_pembayaran varchar(20) No No status_pembayaran Status pembayaran varchar(10) No No tanggal_pembayara n Tanggal pembayaran datetime Yes No Tour_reser vasi
tipe_pengambilan Tipe pengambilan paket tour
Nama
Entitas Atribut Deskripsi
Tipe data dan panjang
Null Multi Valued reservasi_hotel_id Kode reservasi
hotel
varchar(14) No No
username Pemesan reservasi varchar (10) No No tanggal_reservasi Tanggal reservasi datetime No No
hotel_id Kode hotel varchar(10) No No
Nama_hotel Nama hotel varchar(20) No No tanggal_masuk Tanggal check-in date No No tanggal_keluar Tanggal check-out date No No tarif_kamar_id Kode tarif kamar varchar(12) No Yes tipe_kamar_id Kode tipe kamar
hotel
varchar(6) No Yes
Nama_tipe_kamar Nama tipe kamar hotel
varchar(20) No Yes
tipe_bed_id Kode tipe bed kamar
char(2) No Yes
Nama_tipe_bed Kode tipe bed kamar
varchar(20) No Yes
tarif_kamar Tarif kamar int(10) No Yes breakfast Fasilitas breakfast char(1) No Yes Voucher_hot
el_reserva si
jumlah_kamar Jumlah kamar yang dipesan
Nama
Entitas Atribut Deskripsi
Tipe data dan panjang
Null Multi Valued Total_tarif_kamar Total tarif kamar int(10) No No tipe_pembayaran Tipe pembayaran varchar(20) No No status_pembayaran Status pembayaran varchar(10) No No tanggal_pembayara
n
Tanggal pembayaran
datetime Yes No
tipe_pengambilan Tipe pengambilan voucher hotel
varchar(20) No No
penerbangan_id Kode penerbangan varchar(21) No No maskapai_id Kode maskapai char(2) No No jam_berangkat Jam keberangkatan time No No
jam_tiba Jam tiba time No No
rute_id Kode rute
penerbangan
varchar(11) No No
class Class tiket varchar(10) Yes No
tarif_tiket Tarif tiket int(10) No No
Penerbangan
masa_berlaku Masa berlaku tiket date Yes No
Maskapai_id Kode maskapai char(2) No No Maskapai
Nama Maskapai Nama maskapai varchar(20) No No
rute_id Kode rute
penerbangan
varchar(11) No No Rute
Nama
Entitas Atribut Deskripsi
Tipe data dan panjang Null Multi Valued penerbangan
kota_tujuan Kota tujuan penerbangan
varchar(20) No No
kota_transit Kota transit varchar(20) Yes No status_penerbangan Status penerbangan varchar(20) No No
tour_id Kode tour varchar(15) No No
nama_tour Nama tour varchar (50) No No
tarif_tour Harga tour int(10) No No
jenis_tour Jenis tour varchar(20) No No keterangan Keterangan tour text No No Tour
image Gambar tour varchar(50) No No
Hotel_id Kode hotel varchar(10) No No
Nama_hotel Nama hotel varchar(20) No No
Alamat Alamat hotel text No No
Lokasi Lokasi hotel varchar(20) No No
Negara Negara tempat
hotel berada
varchar(20) No No
star Status star hotel Tinyint(1) No No Hotel
Jenis_hotel Jenis hotel varchar(20) No No tarif_kamar_id Kode tarif kamar varchar(12) No No
Tarif_hotel
Nama
Entitas Atribut Deskripsi
Tipe data dan panjang
Null Multi Valued tipe_kamar_id Kode tipe kamar
hotel
varchar(6) No No
tipe_bed_id Kode tipe bed kamar
char(2) No No
breakfast Fasilitas breakfast char(1) No No
tarif_kamar Tarif kamar int(10) No No
tipe_kamar_id Kode tipe kamar hotel
varchar(6) No No Tipe_kamar
nama_tipe_kamar Nama tipe kamar hotel
varchar(20) No No
tipe_bed_id Kode tipe bed kamar
char(2) No No
Tipe_bed
nama_tipe_bed Nama tipe bed kamar varchar(20) No No cancel_reservasi_ti ket_id Kode cancel reservasi tiket varchar (16) No No
username Username varchar (10) No No
tanggal_cancel Tanggal cancel reservasi tiket
datetime No No Cancel_reser
vasi_tiket
reservasi_tiket_id Kode reservasi tiket yang dicancel
Nama
Entitas Atribut Deskripsi
Tipe data dan panjang
Null Multi Valued
charge Biaya charge int(10) No No
cancel_reservasi_ hotel_id
Kode cancel reservasi hotel
varchar (17) No No
username Username varchar (10) No No
tanggal_cancel Tanggal cancel reservasi hotel
datetime No No
reservasi_ hotel_id Kode reservasi hotel yang dicancel
varchar (14) No No Cancel_reser
vasi_hotel
charge Biaya charge int(10) No No
cancel_reservasi_ tour _id
Kode cancel reservasi tour
varchar (17) No No
username Username varchar (10) No No
tanggal_cancel Tanggal cancel reservasi tour
datetime No No
reservasi_ tour _id Kode reservasi tour yang dicancel
varchar (16) No No Cancel_reser
vasi_ tour
charge Biaya charge int(10) No No
4.2.1.4 Menentukan Domains Attribute
Domain atribut merupakan batasan nilai yang valid bagi atribut. Pada tabel di bawah ini adalah domain dari sejumlah atribut yang dimiliki oleh entitas dalam basisdata yang dirancang.
Entity Attribute Domain Name Meaning Domain Definition username username Sekumpulan
dari semua kemungkinan
username
String dengan panjang 10 karakter
password password Password user String dengan panjang 10 karakter
nama_lengkap nama_lengkap Nama lengkap user
String dengan panjang 50 karakter
gender gender Jenis kelamin user
String dengan panjang 10 karakter
alamat alamat Alamat user String dengan format text
email email Email user String dengan
panjang 50 karakter telp telepon Nomor telepon
user
String dengan panjang 20 karakter
User
status status Status untuk
admin(0) dan user(1) Angka dengan panjang 1 digit Message_ header
pesan_id pesan_id Sekumpulan
dari semua
Angka dengan panjang 3 digit
Entity Attribute Domain Name Meaning Domain Definition kemungkinan
kode pesan
subject subject Judul pesan String dengan panjang 50 karakter
isi isi Isi pesan String dengan
format text tanggal tanggal Tanggal pesan
dibuat
Tanggal dengan format YYYY – MM – DD
status status Status pesan
yang sudah dibaca (1) dan belum dibaca (0)
Angka dengan panjang 1 digit
username username Sekumpulan
dari semua kemungkinan username pengirim dan penerima pesan String dengan panjang 10 karakter Message_ header
pesan_id pesan_id Sekumpulan
dari semua kemungkinan
kode pesan
Angka dengan panjang 3 digit
Entity Attribute Domain Name Meaning Domain Definition subject subject Judul pesan String dengan
panjang 50 karakter
isi isi Isi pesan String dengan
format text tanggal tanggal Tanggal pesan
dibuat
Tanggal dengan format YYYY – MM – DD
status status Status pesan
yang sudah dibaca (1) dan belum dibaca (0)
Angka dengan panjang 1 digit
username username Sekumpulan
dari semua kemungkinan username pengirim dan penerima pesan String dengan panjang 10 karakter
penumpang_id penumpang_id Sekumpulan
dari semua kemungkinan kode penumpang String dengan panjang 9 karakter Penumpang
Entity Attribute Domain Name Meaning Domain Definition ang ng penumpang panjang 30 karakter gender gender Jenis kelamin
penumpang String dengan panjang 10 karakter jenis_penumpa ng jenis_penumpan g Jenis penumpang String dengan panjang 10 karakter
peserta_id peserta_id Sekumpulan
dari semua kemungkinan kode peserta tour String dengan panjang 9 karakter
nama_peserta nama_peserta Nama peserta tour
String dengan panjang 30 karakter
Peserta
gender gender Jenis kelamin peserta tour String dengan panjang 10 karakter reservasi_tiket _id reservasi_tiket_i d Sekumpulan dari semua kemungkinan kode reservasi tiket String dengan panjang 16 karakter Tiket_reserv asi
username username Sekumpulan
dari semua kemungkinan
username
String dengan panjang 10 karakter
Entity Attribute Domain Name Meaning Domain Definition pemesan tanggal_reserv asi tanggal_reservas i Tanggal pemesanan Tanggal dengan format YYYY – MM – DD
Maskapai_id kode_maskapai Sekumpulan
dari semua kemungkinan kode maskapai String dengan panjang 2 karakter nama_maskap ai
nama_maskapai Nama maskapai String dengan panjang 30 karakter penerbangan_i d penerbangan_id Sekumpulan dari semua kemungkinan kode penerbangan tiket keberangkatan String dengan panjang 21 karakter
tarif_tiket tarif_tiket Tarif tiket Angka dengan panjang 10 digit
rute_id rute_id Sekumpulan
dari semua kemungkinan
kode rute
String dengan panjang 11 karakter
Entity Attribute Domain Name Meaning Domain Definition penerbangan
kota_asal kota_asal Kota asal penerbangan
String dengan panjang 20 karakter
kota_tujuan kota_tujuan Kota tujuan penerbangan
String dengan panjang 20 karakter
kota_transit kota_transit Kota transit String dengan panjang 20 karakter tanggal_beran gkat tanggal_berangk at Tanggal berangkat Tanggal dengan format YYYY – MM – DD tanggal_kemb ali
tanggal_kembali Tanggal kembali Tanggal dengan format YYYY – MM – DD
penumpang_id penumpang_id Sekumpulan
dari semua kemungkinan kode penumpang String dengan panjang 9 karakter nama_penump ang nama_penumpa ng Nama penumpang String dengan panjang 30 karakter
gender gender Jenis kelamin penumpang
String dengan panjang 10 karakter
Entity Attribute Domain Name Meaning Domain Definition
ng g penumpang panjang 10 karakter
Total_tarif_tik et
Total_tarif_tiket Total tarif tiket Angka dengan panjang 10 digit tipe_pembayar an tipe_pembayara n Tipe pembayaran String dengan panjang 20 karakter status_pembay aran status_pembayar an Status pembayaran String dengan panjang 10 karakter tanggal_pemb ayaran tanggal_pembay aran Tanggal pembayaran Tanggal dengan format YYYY – MM – DD tipe_pengambi lan tipe_pengambila n Tipe pengambilan tiket String dengan panjang 20 karakter reservasi_tour _id reservasi_tour_i d Sekumpulan dari semua kemungkinan kode reservasi tour String dengan panjang 16 karakter Tour_reser vasi
username username Sekumpulan
dari semua kemungkinan username pemesan String dengan panjang 10 karakter
Entity Attribute Domain Name Meaning Domain Definition tanggal_reserv asi tanggal_reservas i Tanggal pemesanan Tanggal dengan format YYYY – MM – DD
tour_id tour_id Sekumpulan
dari semua kemungkinan
kode tour
String dengan panjang 15 karakter
nama_tour nama_tour Nama tour String dengan panjang 50 karakter
tarif_tour tarif_tour Harga tour Angka dengan panjang 10 digit
peserta_id peserta_id Sekumpulan
dari semua kemungkinan kode peserta tour String dengan panjang 9 karakter
nama_peserta nama_peserta Nama peserta tour
String dengan panjang 30 karakter
gender gender Jenis kelamin peserta tour
String dengan panjang 10 karakter
total_tarif_tour total_tarif_tour Total tarif tour Angka dengan panjang 10 digit
Entity Attribute Domain Name Meaning Domain Definition an n n panjang 20 karakter status_pembay aran status_pembayar an Status pembayaran String dengan panjang 10 karakter tanggal_pemb ayaran tanggal_pembay aran Tanggal pembayaran Tanggal dengan format YYYY – MM – DD tipe_pengambi lan tipe_pengambila n Tipe pengambilan paket tour String dengan panjang 20 karakter reservasi_hotel _id reservasi_hotel_ id Sekumpulan dari semua kemungkinan kode reservasi hotel String dengan panjang 14 karakter
username username Sekumpulan
dari semua kemungkinan username pemesan String dengan panjang 10 karakter tanggal_reserv asi tanggal_reservas i Tanggal pemesanan Tanggal dengan format YYYY – MM – DD Voucher_ho tel_reserva si
Entity Attribute Domain Name Meaning Domain Definition dari semua
kemungkinan kode hotel
panjang 10 karakter
nama_hotel nama_hotel Nama hotel String dengan panjang 20 karakter
tanggal_masuk tanggal_masuk Tanggal check-in
Tanggal dengan format YYYY – MM – DD
tanggal_keluar tanggal_keluar Tanggal check-out
Tanggal dengan format YYYY – MM – DD
tarif_kamar_id tarif_kamar_id Sekumpulan
dari semua kemungkinan
kode tarif kamar
String dengan panjang 12 karakter
tipe_kamar_id tipe_kamar_id Sekumpulan
dari semua kemungkinan
kode tipe kamar hotel String dengan panjang 6 karakter nama_tipe_ka mar nama_tipe_kam ar Nama tipe kamar hotel String dengan panjang 20 karakter
Entity Attribute Domain Name Meaning Domain Definition dari semua
kemungkinan kode tipe bed kamar
panjang 2 karakter
nama_tipe_be d
nama_tipe_bed Nama tipe bed String dengan panjang 20 karakter
tarif_kamar tarif_kamar Tarif kamar Angka dengan panjang 10 digit
breakfast breakfast Fasilitas breakfast
String dengan panjang 1 karakter
jumlah_kamar jumlah_kamar Jumlah kamar yang dipesan Angka dengan panjang 2 digit total_tarif_ka mar total_tarif_kama r
Total tarif kamar Angka dengan panjang 10 digit tipe_pembayar an tipe_pembayara n Tipe pembayaran String dengan panjang 20 karakter status_pembay aran status_pembayar an Status pembayaran String dengan panjang 10 karakter tanggal_pemb ayaran tanggal_pembay aran Tanggal pembayaran Tanggal dengan format YYYY – MM – DD tipe_pengambi lan tipe_pengambila n Tipe pengambilan String dengan panjang 20 karakter
Entity Attribute Domain Name Meaning Domain Definition voucher hotel penerbangan_i d penerbangan_id Sekumpulan dari semua kemungkinan kode penerbangan String dengan panjang 21 karakter
maskapai_id maskapai_id Sekumpulan
dari semua kemungkinan
kode maskapai
String dengan panjang 2 karakter
jam_berangkat jam_berangkat Jam
keberangkatan
Jam dengan format HH:MM
jam_tiba jam_tiba Jam tiba Jam dengan format HH:MM
rute_id rute_id Sekumpulan
dari semua kemungkinan kode rute penerbangan String dengan panjang 11 karakter
class class Class tiket String dengan
panjang 10 karakter Penerbanga
n
tarif_tiket tarif_tiket Tarif tiket Angka dengan panjang 10 digit
Entity Attribute Domain Name Meaning Domain Definition masa_berlaku masa_berlaku Masa berlaku
tiket
Tanggal dengan format YYYY – MM – DD
maskapai_id maskapai_id Sekumpulan
dari semua kemungkinan kode maskapai String dengan panjang 2 karakter Maskapai Nama_maskap ai
Nama_maskapai Nama maskapai String dengan panjang 20 karakter
rute_id rute_id Sekumpulan
dari semua kemungkinan kode rute penerbangan String dengan panjang 11 karakter
kota_asal kota_asal Kota asal penerbangan
String dengan panjang 20 karakter
kota_tujuan kota_tujuan Kota tujuan penerbangan
String dengan panjang 20 karakter
kota_transit kota_transit Kota transit String dengan panjang 20 karakter Rute status_penerba ngan status_penerban gan Status penerbangan String dengan panjang 20 karakter
Entity Attribute Domain Name Meaning Domain Definition dari semua
kemungkinan kode tour
panjang 15 karakter
nama_tour nama_tour Nama tour String dengan panjang 50 karakter
tarif_tour tarif_tour Harga tour Angka dengan panjang 10 digit
jenis_tour jenis_tour Jenis tour String dengan panjang 20 karakter
keterangan keterangan Keterangan tour String dengan format text
image image Gambar tour String dengan
panjang 50 karakter Hotel_id Hotel_id Sekumpulan
dari semua kemungkinan
kode hotel
String dengan panjang 10 karakter
Nama_hotel Nama_hotel Nama hotel String dengan panjang 20 karakter
Alamat Alamat Alamat hotel String dengan format text
Hotel
Lokasi Lokasi Lokasi hotel String dengan panjang 20 karakter
Entity Attribute Domain Name Meaning Domain Definition Negara Negara Negara tempat
hotel berada
String dengan panjang 20 karakter
star star Status star hotel String dengan panjang 1 digit
Jenis_hotel Jenis_hotel Jenis hotel String dengan panjang 20 karakter
tarif_kamar_id tarif_kamar_id Sekumpulan
dari semua kemungkinan
kode tarif kamar
String dengan panjang 12 karakter
hotel_id hotel_id Sekumpulan
dari semua kemungkinan
kode hotel
String dengan panjang 10 karakter
tipe_kamar_id tipe_kamar_id Sekumpulan
dari semua kemungkinan
kode tipe kamar hotel
String dengan panjang 6 karakter
Tarif_hotel
tipe_bed_id tipe_bed_id Sekumpulan
dari semua kemungkinan
kode tipe bed
String dengan panjang 2 karakter
Entity Attribute Domain Name Meaning Domain Definition kamar
breakfast breakfast Fasilitas breakfast
String dengan panjang 1 karakter
tarif_kamar tarif_kamar Tarif kamar Angka dengan panjang 10 digit
tipe_kamar_id tipe_kamar_id Sekumpulan
dari semua kemungkinan
kode tipe kamar hotel String dengan panjang 6 karakter Tipe_kamar nama_tipe_ka mar nama_tipe_kam ar Nama tipe kamar hotel String dengan panjang 20 karakter
tipe_bed_id tipe_bed_id Sekumpulan
dari semua kemungkinan
kode tipe bed kamar String dengan panjang 2 karakter Tipe_bed nama_tipe_be d
nama_tipe_bed Nama tipe bed kamar String dengan panjang 20 karakter Cancel_rese rvasi_tiket cancel_reserva si_tiket_id cancel_reservasi _tiket_id Sekumpulan dari semua kemungkinan kode cancel reservasi tiket String dengan panjang 16 karakter
Entity Attribute Domain Name Meaning Domain Definition username username Username String dengan
panjang 10 karakter tanggal_cancel tanggal_cancel Tanggal cancel
reservasi tiket Tanggal dengan format YYYY – MM – DD reservasi_tiket _id reservasi_tiket_i d Sekumpulan dari semua kemungkinan kode reservasi tiket yang di cancel String dengan panjang 15 karakter
charge charge Biaya charge Angka dengan panjang 10 karakter cancel_reserva
si_ tour _id
cancel_reservasi _ tour _id Sekumpulan dari semua kemungkinan kode cancel reservasi tour String dengan panjang 17 karakter
username username Username String dengan panjang 10 karakter
tanggal_cancel tanggal_cancel Tanggal cancel reservasi tour Tanggal dengan format YYYY – MM – DD Cancel_rese rvasi_tour reservasi_ tour _id reservasi_ tour _id Sekumpulan dari semua kemungkinan String dengan panjang 16 karakter
Entity Attribute Domain Name Meaning Domain Definition kode reservasi
tour yang di cancel
charge charge Biaya charge Angka dengan panjang 10 karakter cancel_reserva
si_ hotel _id
cancel_reservasi _ hotel _id Sekumpulan dari semua kemungkinan kode cancel reservasi hotel String dengan panjang 17 karakter
username username Username String dengan panjang 10 karakter
tanggal_cancel tanggal_cancel Tanggal cancel pemesanan voucher hotel Tanggal dengan format YYYY – MM – DD reservasi_ hotel _id reservasi_ hotel _id Sekumpulan dari semua kemungkinan kode reservasi hotel yang di cancel String dengan panjang 14 karakter Cancel_rese rvasi_hotel
charge charge Biaya charge Angka dengan panjang 10 karakter
4.2.1.5 Menentukan attribute candidate dan primary key
Entity Candidate Key Primary Key
User Username Nama_lengkap Username Message_header Pesan_id Subject Pesan_id Message_sent Pesan_id Subject Pesan_id Penumpang Penumpang_id Nama_penumpang Penumpang_id Peserta Peserta_id Nama_peserta Peserta_id Tiket_reservasi Reservasi_tiket_id Username Penerbangan_id Penumpang_id Reservasi_tiket_id Tour_reservasi Reservasi_tour_id Username Tour_id Peserta_id Reservasi_tour_id Voucher_hotel_ reservasi Reservasi_hotel_id Username Hotel_id Reservasi_hotel_id
Entity Candidate Key Primary Key Tarif_kamar_id Penerbangan Penerbangan_id Maskapai_id Rute_id Penerbangan_id Maskapai Maskapai_id Nama_maskapai Maskapai_id
Rute Rute_id Rute_id
Tour Tour_id Nama_tour Tour_id Hotel Hotel_id Nama_hotel Hotel_id Tarif_hotel Tarif_kamar_id Hotel_id Tipe_kamar_id Tipe_bed_id Tarif_kamar_id Tipe_kamar Tipe_kamar_id Nama_tipe_kamar Tipe_kamar_id Tipe_bed Tipe_bed_id Nama_tipe_bed Tipe_bed_id Cancel_reservasi_tiket Cancel_reservasi_tiket_id Username Reservasi_tiket_id Cancel_reservasi_tiket_id
Entity Candidate Key Primary Key Cancel_reservasi_hotel Cancel_reservasi_hotel_id
Username
Reservasi_ hotel _id
Cancel_reservasi_hotel_id
Cancel_reservasi_tour Cancel_reservasi_tour_id Username
Reservasi_ tour _id
Cancel_reservasi_tour_id
Tabel 4.5 Tabel Candidate Key dan Primary Key dari Entitas
User PK Username Tiket_reservasi PK Reservasi_tiket_id Penumpang PK Penumpang_id Penerbangan PK Penerbangan_id Maskapai PK Maskapai_id Cancel_reservasi_tiket PK Cancel_reservasi_tiket_id Cancel_reservasi_tour PK Cancel_reservasi_tour_id Cancel_reservasi_hotel PK Cancel_reservasi_hotel_id Voucher_hotel_reservasi PK Reservasi_hotel_id Tour_reservasi PK Reservasi_tour_id Tour PK Tour_id Message_header PK Pesan_id Message_sent PK Pesan_id Rute PK Rute_id Hotel PK Hotel_id Tarif_hotel PK Tarif_kamar_id Tipe_bed PK Tipe_bed_id Tipe_kamar PK Tipe_kamar_id Peserta PK Peserta_id 1.* 1.1 memiliki memiliki 1.1 1.* 1.1 1.1 1.1 1.1 0.1 0.* 0.* 0.1 melibatkan melibatkan memiliki memiliki 0.* melibatkan memiliki 0.* 1.1 memiliki 1.1 1.* 1.1 1.1 0.* memiliki 0.* 1.* memiliki 1.1 1.* 1.1 1.1 1.* 1.* memiliki memiliki 1.* *.* *.* melibatkan 1.1 0.* memiliki 1.1 0.1 melibatkan 0.* 1.1 1.* 0.* 1.1 memiliki memiliki 1.1 1.* 0.* 1.* memiliki 0.* memiliki 1.1 memiliki 0.* 1.* melibatkan melibatkan melibatkan 0.* memiliki 1.* memiliki 0.* 1.*
Gambar 4.2 ER Diagram dengan Penambahan Atribut Primary Key
4.2.1.6 Memeriksa Model dengan Adanya Kemungkinan Redudansi Dalam tahapan ini dilakukan pengecekan model data konseptual dengan cara memeriksa kembali relationship one – to – one (1:1) dan menghilangkan relationship yang redundan bila ada.
Setelah dilakukan pengidentifikasian entitas dan pengecekan terhadap kemungkinan relationship yang redundan, tidak ditemukan adanya
entitas yang menunjukan objek yang sama dalam perusahaan dan adanya informasi yang dapat diperoleh melalui relationship lain.
4.2.1.7 Memvalidasi Model Konseptual Lokal dengan Transaksi User Untuk dapat memastikan bahwa rancangan konseptual dari basis data yang sedang dibangun dapat mendukung transaksi yang dibutuhkan oleh pengguna, maka digunakan dua buah pendekatan :
1. Mendeskripsikan transaksi.
2. Menggambarkan panah transaksi pada diagram ER. Contoh-contoh transaksi yang sering terjadi:
1. List Username yang melakukan transaksi tercantum pada Tiket_reservasi
2. List Username yang melakukan transaksi tercantum pada Tour_reservasi
3. List Username yang melakukan transaksi tercantum pada Voucher_hotel_reservasi
4. List Username yang melakukan pembatalan transaksi tercantum pada Cancel_reservasi_tiket
5. List Username yang melakukan pembatalan transaksi tercantum pada Cancel_reservasi_tour
6. List Username yang melakukan pembatalan transaksi tercantum pada Cancel_reservasi_hotel
7. List Username yang tercantum pada Message_header 8. List Username yang tercantum pada Message_sent
9. List Reservasi_tiket_id yang tercantum pada Cancel_reservasi_tiket 10. List Reservasi_tour_id yang tercantum pada Cancel_reservasi_tour 11. List Reservasi_hotel_id yang tercantum pada Cancel_reservasi_hotel 12. List Penumpang_id yang tercantum pada Tiket_reservasi
13. List Penerbangan yang tercantum pada Tiket_reservasi 14. List Rute yang tercantum pada Penerbangan
15. List Maskapai yang tercantum pada Penerbangan
16. List Tarif_hotel yang tercantum pada Voucher_hotel_reservasi 17. List Hotel yang tercantum pada Tarif_hotel
18. List Tipe_kamar yang tercantum pada Tarif_hotel 19. List Tipe_bed yang tercantum pada Tarif_hotel 20. List Tour yang tercantum pada Tour_reservasi 21. List Peserta_id yang tercantum pada Tour_reservasi 22. List Hotel yang tercantum pada Voucher_hotel_reservasi 23. List Tipe_kamar yang tercantum pada Voucher_hotel_reservasi 24. List Tipe_bed yang tercantum pada Voucher_hotel_reservasi 25. List Maskapai yang tercantum pada Tiket_reservasi
User PK Username Tiket_reservasi PK Reservasi_tiket_id Penumpang PK Penumpang_id Penerbangan PK Penerbangan_id Maskapai PK Maskapai_id Cancel_reservasi_tiket PK Cancel_reservasi_tiket_id Cancel_reservasi_tour PK Cancel_reservasi_tour_id Cancel_reservasi_hotel PK Cancel_reservasi_hotel_id Voucher_hotel_reservasi PK Reservasi_hotel_id Tour_reservasi PK Reservasi_tour_id Tour PK Tour_id Message_header PK Pesan_id Message_sent PK Pesan_id Rute PK Rute_id Hotel PK Hotel_id Tarif_hotel PK Tarif_kamar_id Tipe_bed PK Tipe_bed_id Tipe_kamar PK Tipe_kamar_id Peserta PK Peserta_id 1.* 1.1 (15) memiliki (14) memiliki 1.1 1.* 1.1 1.1 1.1 1.1 0.1 0.* 0.* 0.1 (5) melibatkan (6) melibatkan (11) memiliki (10) memiliki 0.* (2) melibatkan (20) memiliki 0.* 1.1 (21) memiliki 1.1 1.* 1.1 1.1 0.* (16) memiliki 0.* 1.* (17) memiliki 1.1 1.* 1.1 1.1 1.* 1.* (19) memiliki (18) memiliki 1.* *.* *.* (1) melibatkan 1.1 0.* (9) memiliki 1.1 0.1 (4) melibatkan 0.* 1.1 1.* 0.* 1.1 (22) memiliki (12) memiliki 1.1 1.* 0.* 1.* (13) memiliki 0.* (25) memiliki 1.1 (26) memiliki 0.* 1.* (7) melibatkan (8) melibatkan (3) melibatkan 0.* (23) memiliki 1.* (24) memiliki 0.* 1.*
Gambar 4.3 ER Diagram dengan Penambahan atribut Primary Key
4.2.1.8 Meninjau Ulang Model Data Konseptual Lokal dengan User Dalam tahap ini dilakukan peninjauan ulang model data konseptual lokal dengan user. Hal – hal yang ditinjau ulang meliputi diagram ER dan dokumentasi pendukung yang telah dihasilkan selama tahap perancangan basis data konseptual.
4.2.2 Perancangan Basis Data Logikal
Perancangan basis data secara logikal merupakan tahap kedua dalam merancang sebuah sistem basis data, dimana di dalam perancangan basis data logikal akan dibuat sebuah model dengan menggunakan informasi yang telah diperoleh dari perusahaan serta berdasarkan pada model data spesifik.
Langkah-langkah dalam merancang basis data secara logikal adalah sebagai berikut ini:
1. Membangun dan memvalidasi model data logikal lokal untuk setiap
view.
a. Menghilangkan fitur yang tidak kompatibel dengan model relasional (langkah opsional).
b. Menurunkan relasi untuk model data logikal lokal. c. Memvalidasi relasi dengan menggunakan normalisasi. d. Memvalidasi relasi terhadap transaksi user.
e. Mendefinisikan integrity constraints.
f. Memeriksa kembali model data logikal lokal dengan user. 2. Membangun dan memvalidasi model data logikal global.
4.2.2.1 Menghilangkan Fitur yang tidak Kompatibel dengan Model Relasi
Tujuan dari langkah ini adalah untuk memperhalus model data konseptual lokal dengan menghilangkan feature yang tidak kompatibel
dengan model relasional. Hasil dari langkah ini secara keseluruhan dapat dilihat pada gambar berikut:
1. Menghilangkan many-to-many (*:*) binary relationship types
a. Dalam relationship antara entity message_header dengan User perlu dilakukan penghilangan many-to-many (*:*) binary relationship
types dengan cara membuat intermediate entity
Gambar 4.4 Message_header melibatkan User many-to-many relationship
Gambar 4.5 Decomposing Message_header melibatkan User many-to-many
relationship
Gambar 4.6 Decomposing Message_header melibatkan User many-to-many
b. Dalam relationship antara entity message_sent dengan User perlu dilakukan penghilangan many-to-many (*:*) binary relationship
types dengan cara membuat intermediate entity
Gambar 4.7 Message_sent melibatkan User many-to-many relationship
Gambar 4.8 Decomposing Message_sent melibatkan User many-to-many relationship
Gambar 4.9 Decomposing Message_sent melibatkan User many-to-many relationship
c. Dalam relationship antara entity Tiket_reservasi dengan Rute perlu dilakukan penghilangan many-to-many (*:*) binary relationship
Gambar 4.10 tiket_reservasi memiliki rute many-to-many relationship
Gambar 4.11 Decomposing tiket_reservasi memiliki rute many-to-many relationship
d. Dalam relationship antara entity Tiket_reservasi dengan Penerbangan (lihat Gambar 4.12) perlu dilakukan penghilangan many-to-many (*:*) binary relationship types dengan cara membuat intermediate entity (lihat Gambar 4.13).
1..1 0..* memiliki 1..1 1..* memiliki penerbangan penerbangan_id{PK} jadwal_berangkat keberangkatan_id{PK} penerbangan_id tanggal_berangkat tiket_reservasi reservasi_tiket_id{PK} keberangkatan_id kembali_id 0..1 0..* memiliki 1..1 1..* memiliki jadwal_kembali kembali_id{PK} penerbangan_id tanggal_kembali
Gambar 4.13 Decomposing tiket_reservasi memiliki penerbangan many-to-many
relationship
e. Dalam relationship antara entity voucher_hotel_reservasi dengan tipe_kamar (lihat Gambar 4.14) perlu dilakukan penghilangan
many-to-many (*:*) binary relationship types dengan cara membuat
intermediate entity (lihat Gambar 4.15)
Gambar 4.14 voucher_hotel_reservasi memiliki tipe_kamar many-to-many
Gambar 4.15 Decomposing voucher_hotel_reservasi memiliki tipe_kamar
many-to-many relationship
f. Dalam relationship antara entity voucher_hotel_reservasi dengan tipe_kamar (lihat Gambar 4.16) perlu dilakukan penghilangan
many-to-many (*:*) binary relationship types dengan cara membuat
intermediate entity (lihat Gambar 4.17)
Gambar 4.16 voucher_hotel_reservasi memiliki tipe_kamar
many-to-many relationship
Gambar 4.17 Decomposing voucher_hotel_reservasi memiliki tipe_kamar
g. Dalam relationship antara entity voucher_hotel_reservasi dengan tarif_hotel (lihat Gambar 4.18) perlu dilakukan penghilangan
many-to-many (*:*) binary relationship types dengan cara membuat
intermediate entity (lihat Gambar 4.19).
Gambar 4.18 voucher_hotel_reservasi memiliki tarif_hotel many-to-many
relationship
Gambar 4.19 Decomposing voucher_hotel_reservasi memiliki tarif_hotel
many-to-many relationship
2. Menghilangkan many-to-many (*:*) recursive relationship types
Dalam model data konseptual lokal ini, tidak terdapat many-to-many (*:*) recursive relationship types.
3. Menghilangkan complex relationship types
Dalam model data konseptual lokal ini, tidak terdapat complex
4. Menghilangkan multi-valued attributes
a. Dalam entity message_header terdapat atribut yang multi-valued, yaitu username pengirim dan penerima pesan (lihat Gambar 4.21), harus diselesaikan dengan cara membuat entity baru (lihat Gambar 4.22). message_header pesan_id{PK} subject isi tanggal status username(1..2)
Gambar 4.20 message_header entity with a multi-valued attribute username
Gambar 4.21 Decomposing username into a new entity called message_sender and message_receiver
Gambar 4.22 Decomposing username into a new entity called message_sender and message_receiver
b. Dalam entity message_sent terdapat atribut yang multi-valued, yaitu username pengirim dan penerima pesan (lihat Gambar 4.23), harus diselesaikan dengan cara membuat entity baru(lihat Gambar 4.24). message_sent pesan_id{PK} subject isi tanggal status username(1..2)
Gambar 4.23 message_sent entity with a multi-valued attribute username
Gambar 4.24 Decomposing username into a new entity called message_sender and message_receiver
Gambar 4.25 Decomposing username into a new entity called message_sender and message_receiver
4.2.2.2 Membuat Relasi untuk Model Data Logikal Lokal
Tujuan langkah ini adalah membuat relasi untuk model data logikal lokal untuk merepresentasikan entitas, relasi dan atribut yang telah diidentifikasi sebelumnya. Dalam langkah ini ditentukan primary key dan
foreign key dari setiap relasi, dimana seiring dan pengidentifikasian foreign
key maka suatu relasi akan jelas primary key yang menjadi referensinya.
Relasi diturunkan dengan langkah-langkah sebagai berikut: 1. Strong entity types
Langkah pertama yang harus dilakukan dalam menurunkan relasi untuk model data logikal lokal adalah menentukan tipe entitas. Salah satunya adalah strong entity types dimana entitas yang kemunculannya tidak dipengaruhi oleh entitas lain, seperti pada Tabel 4.6.
Tabel 4.6 Strong Entity Types
User (username, password, nama_lengkap, gender, alamat, email, telp, status) Primary Key username
Message_header (pesan_id, subject, isi, tanggal, status) Primary Key pesan_id
Message_sent (pesan_id, subject, isi, tanggal, status) Primary key pesan_id
Penumpang (penumpang_id, nama_penumpang, gender, jenis_penumpang) Primary Key penumpang_id
Primary Key peserta_id
Tiket_reservasi (reservasi_tiket_id, username, tanggal_reservasi, keberangkatan_id, kembali_id, penumpang_id, nama_penumpang, gender, jenis_penumpang, total_tarif_tiket, tipe_pembayaran, status_pembayaran, tanggal_pembayaran, tipe_pengambilan )
Primary Key reservasi_tiket_id
Tour_reservasi (reservasi_tour_id, username, tanggal_reservasi, tour_id, nama_tour, tarif_tour, peserta_id, nama_peserta, gender, total_tarif_tour, tipe_pembayaran, status_pembayaran, tanggal_pembayaran, tipe_pengambilan)
Primary Key reservasi_tour_id
Voucher_hotel_reservasi (reservasi_hotel_id, username, tanggal_reservasi, hotel_id, nama_hotel, tanggal_masuk, tanggal_keluar, total_tarif_kamar, tipe_pembayaran, status_pembayaran, tanggal_pembayaran, tipe_pengambilan)
Primary Key reservasi_hotel_id
Penerbangan (penerbangan_id, maskapai_id, jam_berangkat, jam_tiba, rute_id, class, tarif_tiket, masa_berlaku)
Primary Key penerbangan_id
Maskapai (maskapai_id, nama_maskapai) Primary Key maskapai_id
Rute (rute_id, kota_asal, kota_tujuan, kota_transit, status_penerbangan) Primary Key rute_id
Tour (tour_id, nama_tour, tarif_tour, jenis_tour, keterangan) Primary Key tour_id
Hotel (hotel_id, nama_hotel, alamat, lokasi, negara, star, jenis_hotel, image) Primary Key hotel_id
Tarif_hotel (tarif_kamar_id, hotel_id, tipe_kamar_id, tipe_bed_id, breakfast, tarif_kamar)
Primary Key tarif_kamar_id
Tipe_kamar (tipe_kamar_id, nama_tipe_kamar) Primary Key tipe_kamar_id
Tipe_bed (tipe_bed_id, nama_tipe_bed) Primary Key tipe_bed_id
Cancel_reservasi_tiket (cancel_reservasi_tiket_id, username, tanggal_cancel, reservasi_tiket_id, charge)
Primary Key cancel_reservasi_tiket_id
Cancel_reservasi_hotel (cancel_reservasi_hotel_id, username, tanggal_cancel, reservasi_hotel_id, charge)
Primary Key cancel_reservasi_hotel_id
Cancel_reservasi_tour (cancel_reservasi_tour_id, username, tanggal_cancel, reservasi_tour_id, charge)
Primary Key cancel_reservasi_tour_id
2. Weak entity types
Setelah menentukan strong entity types, weak entity types juga perlu ditentukan. Tabel 4.7 menunjukkan entitas mana saja yang kemunculannya bergantung pada entitas lain.
Tabel 4.7 Weak Entity Types
jadwal_berangkat (keberangkatan_id, penerbangan_id, tanggal_berangkat, tarif_tiket, rute_id, kota_asal, kota_tujuan, kota_transit)
Primary Key keberangkatan_id
jadwal_kembali (kembali_id, penerbangan_id, tanggal_kembali, tarif_tiket, rute_id, kota_asal, kota_tujuan, kota_transit)
Primary Key keberangkatan_id
Voucher_hotel_reservasi_detail (reservasi_hotel_id, tarif_kamar_id, tarif_kamar, breakfast, jumlah_kamar)
Primary Key reservasi_hotel_id Primary Key tarif_kamar_id
Message_sender (pesan_id, username) Primary Key pesan_id, username Message_receiver (pesan_id, username) Primary Key pesan_id, username
3. One-to-many (1:*) binary relationship types
Setelah menentukan tipe-tipe entitas, relasi antar entitas tersebut perlu menentukan primary key dan foreign key. Hasilnya adalah sebagai berikut:
a) Kirim username dari User ke tiket_reservasi untuk memodelkan 1:* relasi dimiliki
b) Kirim penumpang_id dari Penumpang ke tiket_reservasi untuk memodelkan 1:* relasi memiliki
c) Kirim tour_id dari Tour ke tour_reservasi untuk memodelkan 1:* relasi memiliki
d) Kirim username dari User ke tour_reservasi untuk memodelkan 1:* relasi dimiliki
e) Kirim peserta_id dari Peserta ke tour_reservasi untuk memodelkan 1:* relasi memiliki
f) Kirim hotel_id dari hotel ke voucher_hotel_reservasi untuk memodelkan 1:* relasi memiliki
g) Kirim username dari User ke voucher_hotel_reservasi untuk memodelkan 1:* relasi dimiliki
h) Kirim maskapai_id dari maskapai, dan rute_id dari rute ke penerbangan untuk memodelkan 1:* relasi memiliki
i) Kirim hotel_id dari hotel, tipe_kamar_id dari tipe_kamar, dan tipe_bed_id dari tipe_bed ke tarif_hotel untuk memodelkan 1:* relasi memiliki
j) Kirim username dari user ke cancel_reservasi_tiket untuk memodelkan 1:* relasi dimiliki
k) Kirim username dari user ke cancel_reservasi_tour untuk memodelkan 1:* relasi dimiliki
l) Kirim username dari user ke cancel_reservasi_hotel untuk memodelkan 1:* relasi dimiliki
m) Kirim username dari user ke message_sender untuk memodelkan 1:* relasi memiliki
n) Kirim username dari user ke message_receiver untuk memodelkan 1:* relasi memiliki
o) Kirim penerbangan_id dari penerbangan dan rute_id dari rute ke jadwal_berangkat untuk memodelkan 1:* relasi memiliki.
p) Kirim penerbangan_id dari penerbangan dan rute_id dari rute ke jadwal_berangkat untuk memodelkan 1:* relasi memiliki.
4. One-to-one (1:1) binary relationship types
a) Kirim pesan_id dari message_sent, pesan_id dari message_header ke message_sender untuk memodelkan 1:1 relasi dimiliki.
b) Kirim pesan_id dari message_sent, pesan_id dari message_header ke message_receiver untuk memodelkan 1:1 relasi dimiliki
c) Kirim reservasi_tiket_id dari tiket_reservasi ke cancel_reservasi_tiket untuk memodelkan 1:1 relasi memiliki.
d) Kirim reservasi_tour_id dari tour_reservasi ke cancel_reservasi_tour untuk memodelkan 1:1 relasi memiliki.
e) Kirim reservasi_hotel_id dari voucher_hotel_reservasi ke cancel_reservasi_hotel untuk memodelkan 1:1 relasi memiliki.
5. Many-to-many (*:*) binary relationship types
Relasi antar entitas ini perlu dibentuk dengan cara mengirimkan primary
key dari entitas-entitas yang berpartisipasi pada relasi tersebut ke dalam
a) Kirim keberangkatan_id dari jadwal_berangkat dan kembali_id dari jadwal_kembali ke tiket_reservasi untuk membentuk
composite primary key
b) Kirim reservasi_hotel_id dari voucher_hotel_reservasi dan
tariff_kamar_id dari tarif_hotel ke voucher_hotel_reservasi_detail untuk membentuk composite
primary key
6. Multi-valued attributes
Langkah ini dilakukan dengan cara membuat relasi yang merepresentasikan multi-valued attribute dan mengirimkan duplikat
Setelah langkah-langkah di atas selesai dijalankan, maka dibuatlah dokumentasi relasi dan atribut foreign key, yang akan ditunjukkan pada Tabel 4.8.
Tabel 4.8 Dokumentasi Relasi dan Atribut Foreign Key User (username, password, nama_lengkap, gender, alamat, email, telp, status) Primary Key username
Message_header (pesan_id, subject, isi, tanggal, status) Primary Key pesan_id
Message_sent (pesan_id, subject, isi, tanggal, status) Primary key pesan_id
Message_sender (pesan_id, username) Primary Key pesan_id, username
Foreign Key pesan_id references Message_header (pesan_id), Message_sent (pesan_id)
Foreign Key username references User (username) Message_receiver (pesan_id, username)
Primary Key pesan_id, username
Foreign Key pesan_id references Message_header (pesan_id), Message_sent (pesan_id)
Foreign Key username references User (username)
Penumpang (penumpang_id, nama_penumpang, gender, jenis_penumpang) Primary Key penumpang_id
Peserta (peserta_id, nama_peserta, gender) Primary Key peserta_id
Tiket_reservasi (reservasi_tiket_id, username, tanggal_reservasi, keberangkatan_id, kembali_id, penumpang_id, nama_penumpang, gender, jenis_penumpang, total_tarif_tiket, tipe_pembayaran, status_pembayaran, tanggal_pembayaran, tipe_pengambilan )
Primary Key reservasi_tiket_id
Foreign Key username references User (username)
Foreign Key keberangkatan_id references Jadwal_berangkat (keberangkatan_id) Foreign Key kembali_id references Jadwal_kembali (kembali_id)
Foreign Key penumpang_id references Penumpang (penumpang_id)
Tour_reservasi (reservasi_tour_id, username, tanggal_reservasi, tour_id, nama_tour, tarif_tour, peserta_id, nama_peserta, gender, total_tarif_tour, tipe_pembayaran, status_pembayaran, tanggal_pembayaran, tipe_pengambilan)
Primary Key reservasi_tour_id
Foreign Key tour_id references Tour (tour_id) Foreign Key username references User (username) Foreign Key peserta_id references Peserta (peserta_id)
Voucher_hotel_reservasi (reservasi_hotel_id, username, tanggal_reservasi, hotel_id, nama_hotel, tanggal_masuk, tanggal_keluar, total_tarif_kamar, tipe_pembayaran, status_pembayaran, tanggal_pembayaran, tipe_pengambilan)
Primary Key reservasi_hotel_id
Foreign Key username references User (username) Foreign Key hotel_id references Hotel (hotel_id)
Voucher_hotel_reservasi_detail (reservasi_hotel_id, tarif_kamar_id, tarif_kamar, breakfast, jumlah_kamar)
Primary Key reservasi_hotel_id, tarif_kamar_id
Foreign Key reservasi_hotel_id references Voucher_hotel_reservasi (reservasi_hotel_id)
Foreign Key tarif_kamar_id references Tarif_hotel (tarif_kamar_id)
Penerbangan (penerbangan_id, maskapai_id, jam_berangkat, jam_tiba, rute_id, class, tarif_tiket, masa_berlaku)
Primary Key penerbangan_id
Foreign Key maskapai_id references Maskapai (maskapai_id) Foreign Key rute_id references Rute (rute_id)
Maskapai (maskapai_id, nama_maskapai) Primary Key maskapai_id
Rute (rute_id, kota_asal, kota_tujuan, kota_transit, status_penerbangan) Primary Key rute_id
Tour (tour_id, nama_tour, tarif_tour, jenis_tour, keterangan) Primary Key tour_id
Hotel (hotel_id, nama_hotel, alamat, lokasi, negara, star, jenis_hotel, image) Primary Key hotel_id
Tarif_hotel (tarif_kamar_id, hotel_id, tipe_kamar_id, tipe_bed_id, breakfast, tarif_kamar)
Primary Key tarif_kamar_id
Foreign Key tipe_kamar_id references Tipe_kamar (tipe_kamar_id) Foreign Key tipe_bed_id references Tipe_bed (tipe_bed_id)
Tipe_kamar (tipe_kamar_id, nama_tipe_kamar) Primary Key tipe_kamar_id
Tipe_bed (tipe_bed_id, nama_tipe_bed) Primary Key tipe_bed_id
Cancel_reservasi_tiket (cancel_reservasi_tiket_id, username, tanggal_cancel, reservasi_tiket_id, charge)
Primary Key cancel_reservasi_tiket_id
Foreign Key username references User (username)
Foreign Key reservasi_tiket_id references Tiket_reservasi (reservasi_tiket_id)
Cancel_reservasi_hotel (cancel_reservasi_hotel_id, username, tanggal_cancel, reservasi_hotel_id, charge)
Primary Key cancel_reservasi_hotel_id
Foreign Key username references User (username)
Foreign Key reservasi_hotel_id references Voucher_hotel_reservasi (reservasi_hotel_id)
Cancel_reservasi_tour (cancel_reservasi_tour_id, username, tanggal_cancel, reservasi_tour_id, charge)
Primary Key cancel_reservasi_tour_id
Foreign Key username references User (username)
Foreign Key reservasi_tour_id references Tour_reservasi (reservasi_tour_id) Jadwal_berangkat (keberangkatan_id, penerbangan_id, tanggal_berangkat,
tarif_tiket, rute_id, kota_asal, kota_tujuan, kota_transit) Primary Key keberangkatan_id
Foreign Key penerbangan_id references Penerbangan (penerbangan_id) Foreign Key rute_id references Rute (rute_id)
Jadwal_kembali (kembali_id, penerbangan_id, tanggal_kembali, tarif_tiket, rute_id, kota_asal, kota_tujuan, kota_transit)
Primary Key kembali_id
Foreign Key penerbangan_id references Penerbangan (penerbangan_id) Foreign Key rute_id references Rute (rute_id)
4.2.2.3 Normalisasi
Tujuan dilakukannya normalisasi adalah untuk membuat kemungkinan terjadinya data rangkap menjadi sekecil mungkin, menghindari adanya data yang tidak konsisten terutama bila dilakukan penghapusan atau penambahan data sebagai akibat dari adanya data rangkap, dan menjamin identitas tabel secara tunggal sebagai determinan semua atribut.
Proses normalisasi yang dilakukan pada setiap entitas yang ada adalah sebagai berikut :
1. Username
UNF :
Tidak terdapat perulangan. Relation User sudah normal pada tahap UNF
User (username, password, nama_lengkap, gender, alamat, email, telp, status)
Primary Key username
2NF :
Tidak terdapat partial dependency, User sudah normal pada tahap 2NF
3NF :
Tidak terdapat transitive dependency, User sudah normal pada tahap 3NF
Hasil UNF-3NF :
User (username, password, nama_lengkap, gender, alamat, email, telp, status)
Primary Key username
2. Message_header
UNF :
Tidak terdapat perulangan. Relation Message_header sudah normal pada tahap UNF
1NF :
Primary Key pesan_id
2NF :
Tidak terdapat partial dependency, Message_header sudah normal pada tahap 2NF
3NF :
Tidak terdapat transitive dependency, Message_header sudah normal pada tahap 3NF
Hasil UNF-3NF :
Message_header (pesan_id, subject, isi, tanggal, status)
Primary Key pesan_id
3. Message_sent
UNF :
Tidak terdapat perulangan. Relation Message_sent sudah normal pada tahap UNF
1NF :
Message_sent (pesan_id, subject, isi, tanggal, status)
Primary Key pesan_id
Tidak terdapat partial dependency, Message_sent sudah normal pada tahap 2NF
3NF :
Tidak terdapat transitive dependency, Message_sent sudah normal pada tahap 3NF
Hasil UNF-3NF :
Message_sent (pesan_id, subject, isi, tanggal, status)
Primary Key pesan_id
4. Message_sender
UNF :
Tidak terdapat perulangan. Relation Message_sender sudah normal pada tahap UNF
1NF :
Message_sender (pesan_id, username) Primary Key pesan_id, username
Foreign Key pesan_id references Message_header (pesan_id), Message_sent (pesan_id)
2NF :
Tidak terdapat partial dependency, Message_sender sudah normal pada tahap 2NF
3NF :
Tidak terdapat transitive dependency, Message_sender sudah normal pada tahap 3NF
Hasil UNF-3NF :
Message_sender (pesan_id, username) Primary Key pesan_id, username
Foreign Key pesan_id references Message_header (pesan_id), Message_sent (pesan_id)
Foreign Key username references User (username)
5. Message_receiver
UNF :
Tidak terdapat perulangan. Relation Message_receiver sudah normal pada tahap UNF
1NF :
Primary Key pesan_id, username
Foreign Key pesan_id references Message_header (pesan_id), Message_sent (pesan_id)
Foreign Key username references User (username)
2NF :
Tidak terdapat partial dependency, Message_receiver sudah normal pada tahap 2NF
3NF :
Tidak terdapat transitive dependency, Message_receiver sudah normal pada tahap 3NF
Hasil UNF-3NF :
Message_receiver (pesan_id, username)
Primary Key pesan_id, username
Foreign Key pesan_id references Message_header (pesan_id), Message_sent (pesan_id)
6. Penumpang
UNF :
Tidak terdapat perulangan. Relation Penumpang sudah normal pada tahap UNF
1NF :
Penumpang (penumpang_id, nama_penumpang, gender, jenis_penumpang)
Primary Key penumpang_id
2NF :
Tidak terdapat partial dependency, Penumpang sudah normal pada tahap 2NF
3NF :
Tidak terdapat transitive dependency, Penumpang sudah normal pada tahap 3NF
Hasil UNF-3NF :
Penumpang (penumpang_id, nama_penumpang, gender, jenis_penumpang)
7. Peserta
UNF :
Tidak terdapat perulangan. Relation Peserta sudah normal pada tahap UNF
1NF :
Peserta (peserta_id, nama_peserta, gender)
Primary Key peserta_id
2NF :
Tidak terdapat partial dependency, Peserta sudah normal pada tahap 2NF
3NF :
Tidak terdapat transitive dependency, Peserta sudah normal pada tahap 3NF
Hasil UNF-3NF :
Peserta (peserta_id, nama_peserta, gender)
8. Tiket_reservasi
UNF :
Tiket_reservasi masih mempunyai repeating group
Tiket_reservasi (reservasi_tiket_id, username, tanggal_reservasi, keberangkatan_id, kembali_id, (penumpang_id, nama_penumpang, gender, jenis_penumpang), total_tarif_tiket, tipe_pembayaran, status_pembayaran, tanggal_pembayaran, tipe_pengambilan ) Primary Key reservasi_tiket_id
Foreign Key username references User (username)
Foreign Key keberangkatan_id references Jadwal_berangkat (keberangkatan_id)
Foreign Key kembali_id references Jadwal_kembali (kembali_id)
Foreign Key penumpang_id references Penumpang (penumpang_id)
Repeating group : penumpang_id, nama_penumpang, gender, jenis_penumpang
1NF :
Menghilangkan atribut total_tarif_tiket yang melupakan hasil perhitungan dari tarif_tiket, dan menambah primary key baru yaitu penumpang_id yang merupakan primary key dari repeating group.
Tiket_reservasi (reservasi_tiket_id, username, tanggal_reservasi, keberangkatan_id, kembali_id, penumpang_id, nama_penumpang, gender, jenis_penumpang, tipe_pembayaran, status_pembayaran, tanggal_pembayaran, tipe_pengambilan )
Primary Key reservasi_tiket_id, penumpang_id
Foreign Key username references User (username)
Foreign Key keberangkatan_id references Jadwal_berangkat (keberangkatan_id)
Foreign Key kembali_id references Jadwal_kembali (kembali_id)
Foreign Key penumpang_id references Penumpang (penumpang_id)
2NF :
Memindahkan atribut penumpang_id, nama_penumpang, gender, jenis_penumpang yang bergantung pada penumpang_id ke entitas baru yaitu tiket_reservasi_detail.
Tiket_reservasi (reservasi_tiket_id, username, tanggal_reservasi, keberangkatan_id, kembali_id, tipe_pembayaran, status_pembayaran, tanggal_pembayaran, tipe_pengambilan )
Primary Key reservasi_tiket_id
Foreign Key keberangkatan_id references Jadwal_berangkat (keberangkatan_id)
Foreign Key kembali_id references Jadwal_kembali (kembali_id)
Tiket_reservasi_detail (reservasi_tiket_id, penumpang_id, nama_penumpang, gender, jenis_penumpang)
Primary Key reservasi_tiket_id, penumpang_id
Foreign Key reservasi_tiket_id references Tiket_reservasi (reservasi_tiket_id)
Foreign Key penumpang_id references Penumpang (penumpang_id)
3NF :
Menghilangkan atribut nama_penumpang, gender, jenis_penumpang yang bergantung pada penumpang_id.
Tiket_reservasi (reservasi_tiket_id, username, tanggal_reservasi, keberangkatan_id, kembali_id, tipe_pembayaran, status_pembayaran, tanggal_pembayaran, tipe_pengambilan )
Primary Key reservasi_tiket_id
Foreign Key username references User (username)
Foreign Key keberangkatan_id references Jadwal_berangkat (keberangkatan_id)