• Tidak ada hasil yang ditemukan

BAB 4 RANCANGAN SISTEM YANG DIUSULKAN. (admin). Bagian front end ditujukan untuk user / pelanggan, sedangkan back end

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB 4 RANCANGAN SISTEM YANG DIUSULKAN. (admin). Bagian front end ditujukan untuk user / pelanggan, sedangkan back end"

Copied!
277
0
0

Teks penuh

(1)

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.

(2)

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),

(3)

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

(4)

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

(5)

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

(6)

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

(7)

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

(8)

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

(9)

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

(10)

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

(11)

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

(12)

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

(13)

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

(14)

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

(15)

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

(16)

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

(17)

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

(18)

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

(19)

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

(20)

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

(21)

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

(22)

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

(23)

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

(24)

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

(25)

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

(26)

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

(27)

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

(28)

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

(29)

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

(30)

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

(31)

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

(32)

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

(33)

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

(34)

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

(35)

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

(36)

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

(37)

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

(38)

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

(39)

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

(40)

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

(41)

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

(42)

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.

(43)

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

(44)

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

(45)

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

(46)

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).

(47)

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

(48)

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

(49)

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

(50)

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

(51)

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

(52)

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

(53)

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

(54)

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.

(55)

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

(56)

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

(57)

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

(58)

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

(59)

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.

(60)

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

(61)

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

(62)

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

(63)

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

(64)

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)

(65)

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

(66)

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,

(67)

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

(68)

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 :

(69)

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

(70)

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)

(71)

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 :

(72)

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)

(73)

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)

(74)

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)

(75)

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.

(76)

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

(77)

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)

Gambar

Gambar 4.2  ER Diagram dengan Penambahan Atribut Primary Key
Gambar 4.3 ER Diagram dengan Penambahan atribut Primary Key
Gambar 4.13 Decomposing tiket_reservasi memiliki penerbangan many-to-many  relationship
Gambar 4.15 Decomposing voucher_hotel_reservasi memiliki tipe_kamar many-to- many-to-many relationship
+7

Referensi

Dokumen terkait

Hal ini bisa dilihat bahwa terdapat lebih dari 67% siswa MTs menyatakan game ini menarik, karena menurut siswa MTs game dikemas dalam bentuk baru menggunakan

Pada pengujian nilai waktu pengolahan citra, rata-rata waktu pada tiga algoritma menggunakan tiga citra yang berbeda selama 10 kali dengan algoritma Gaussian blur

Dari beberapa pendapat para ahli di atas, penulis mengambil sebuah kesimpulan bahwa perencanaan strategis ( strategic planning ) adalah proses memutuskan atas

Struktur tipe pemangsaan famili ikan karang yang terdapat di stasiun terumbu buatan biorock sebagian besar adalah karnivora yaitu sebesar 80% dari jumlah ikan karang yang

Hasil regresi linier dalam penelitian ini dimana yang menjadi variabel bebasnya adalah partisipasi kerja dan aktualisasi diri, sementara variabel terikatnya

Penulis berterima kasih atas bimbingan, yang telah banyak memberikan ide, arahan dan dorongan yang sangat bermanfaat sehingga disertasi ini dapat terselesaikan dengan

[r]

Penggunaan metode chain code dan operasi morfologi dalam segmentasi tepi citra CT scan paru-paru mendapatkan hasil dengan visual deteksi tepi yang halus dan tidak