• Tidak ada hasil yang ditemukan

4.2.2 Perancangan Basis Data Logikal

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

Dokumen terkait