Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Perancangan Model Data Sistem Pemesanan Kamar Hotel

Sudah menjadi rahasia umum bahwa cara terbaik untuk mempelajari sesuatu adalah dengan mempraktikkannya dalam skenario kehidupan nyata. Jelas, hal yang sama berlaku untuk pemodelan database. Oleh karena itu, dalam artikel ini saya memutuskan untuk mengajari Anda cara membuat struktur database sederhana, dengan mengambil contoh buku teks dari sistem reservasi kamar hotel. Saya akan menunjukkan cara memulai dan memberi Anda beberapa ide untuk memperluas model.

Pemodelan Basis Data:Temukan, Temukan, Temukan

Pada artikel ini kami akan merancang model data untuk sistem reservasi kamar hotel. Kami mencari model data di mana kami dapat merepresentasikan informasi tentang kamar, tamu, dan reservasi yang dipesan di Hotel VERTABELO****** imajiner kami. Semua informasi ini akan disimpan dalam tabel.

Pemodelan database adalah proses penemuan siklik. Kami pertama-tama mengidentifikasi tabel utama dan atributnya. Dalam model kami, tabel utama adalah:room , guest dan reservation . Kemudian kami melanjutkan menyempurnakan tabel kami dengan menemukan atribut atau kolomnya. Misalnya, room tabel memiliki atribut seperti:kamar number , name dan smoke bendera antara lain.

Reservation tabel memiliki atribut date_in , date_out , status (dibatalkan, dikonfirmasi) dan made_by (online, in_person, phone, mail), sedangkan atribut tabel guest adalah:first_name , last_name dan member_since . Mungkin Anda merasa seperti reservation meja membutuhkan lebih banyak atribut (seperti tipe kamar, jumlah tempat tidur), kami akan membahas poin ini nanti, sampai saat itu, pertimbangkan reservation tabel tidak lengkap. Model data berikut yang dibuat di Vertabelo menunjukkan tabel utama.




Tipe Data:Apakah Domain dari Nilai yang Diizinkan untuk Kolom?

Perhatikan bahwa setiap kolom memiliki tipe data (varchar, integer, date, boolean) untuk menunjukkan jenis nilai yang dapat ditetapkan ke kolom. Misalnya, kolom smoke di atas meja room adalah boolean tipe data, artinya hanya benar atau salah adalah nilai yang diizinkan.

Kunci Utama:Nomor Jaminan Sosial dari Setiap Catatan

Setiap tabel harus memiliki kolom (atau lebih dari satu) yang bertindak sebagai pengenal untuk setiap record dalam tabel. Kolom ini disebut primary key (PK), dan praktik terbaik pada desain database menyarankan bahwa setiap tabel harus memiliki PK.

Jika kita melihat model data Vertabelo sebelumnya, kita akan melihat bahwa setiap tabel memiliki kolom yang disebut id dengan indikator PK di sebelah kanan. Kolom id ini membentuk PK (sebagai konvensi kita beri nama id kolom PK).

Konsep penting, mungkin jelas bagi banyak pembaca, adalah bahwa kolom PK tidak boleh memiliki nilai duplikat. Dengan kata lain, setiap kolom PK memiliki batasan unik, dan setiap upaya untuk membuat catatan baru dengan nilai duplikat akan ditolak dengan kesalahan oleh pengelola database.

Lanjutkan Menemukan; Temukan Objek Database Baru

Reservasi adalah salah satu elemen yang lebih kompleks untuk direpresentasikan dalam model data ini. Satu reservasi dapat memiliki banyak kamar yang terkait dengannya (misalnya "Saya ingin membuat reservasi untuk satu kamar double dan kamar terpisah dengan 3 tempat tidur untuk anak-anak saya"). Persyaratan bisnis ini menambahkan 4 hal ke model kami:

Tabel baru: Kita perlu membuat tabel baru bernama room_reserved , tempat kami menyimpan semua kamar milik satu reservasi.

Tambahkan dua referensi: Referensi adalah elemen yang sangat penting dalam model data. Referensi menjelaskan bagaimana satu tabel terkait dengan tabel lain. Dalam model kami, setiap kamar yang dipesan milik satu reservasi, jadi kami akan menggunakan referensi untuk memodelkan fakta itu. Referensi ini secara grafis direpresentasikan sebagai garis yang menghubungkan kedua tabel.

Selain itu, karena setiap reservasi milik satu tamu, kita perlu membuat referensi baru yang menghubungkan guest dan reservation tabel.

Memindahkan kolom: Karena kami dapat memiliki beberapa kamar milik satu reservasi, kami harus mengizinkan pembatalan per kamar individu, setelah itu kami memindahkan attribute status dari reservation ke reserved_room tabel.

Model data yang diperbarui ditunjukkan dalam diagram berikut yang dirancang di Vertabelo:



Apa yang Terjadi pada Tabel yang Dihubungkan oleh Referensi?

Saat kita membuat referensi antara dua tabel, satu kolom baru ditambahkan ke salah satu tabel. Kolom yang baru saja ditambahkan ini disebut Kunci Asing, dan bertindak sebagai penunjuk ke tabel lain yang memungkinkan koneksi antar tabel. Sebagai contoh, perhatikan diagram berikut:

Gbr. 1 Tabel reservation dan guest sebelum dan sesudah menambahkan referensi

Lanjutkan Menemukan; Pergi untuk Lebih Banyak

Satu hal yang menunggu untuk dimodelkan adalah kenyataan bahwa kamar dapat digunakan oleh beberapa tamu untuk jangka waktu tertentu. Untuk mewakili fakta bisnis ini, kami menambahkan 2 tabel:hosted_at dan occupied_room .

Perhatikan bahwa setiap orang yang menginap di hotel akan memiliki catatan di hosted_at . Catatan ini akan memiliki referensi ke kamar yang dia tempati dan tamu. Inilah sebabnya hosted_at memiliki referensi ganda terhadap guest dan occupied_room .

Tabel occupied_room akan memiliki satu catatan per setiap kamar yang disewa, pada catatan ini kita dapat menemukan bidang:check_in dan check_out dari jenis cap waktu yang menunjukkan kapan sewa dimulai dan selesai. Tipe data timestamp menyimpan titik waktu dengan presisi arbitrer. Setiap occupied_room record juga akan memiliki referensi ke nomor kamar yang disewa dan secara tidak langsung melalui hosted_at kepada tamu yang menginap di kamar ini.

Kami juga menambahkan tabel room_type ke model data; idenya adalah untuk mengelompokkan kamar berdasarkan kategori kamar atau tipe kamar. Misalnya “standard one double bed”, “luxury 2 double bed” dapat berupa deskripsi jenis. Kami juga memiliki atribut max_capacity di sini.




Latihan: Desain basis data adalah disiplin yang mudah didekati, namun, dibutuhkan waktu untuk menjadi ahli materi pelajaran. Jika Anda melakukan langkah pertama pada desain basis data, coba selesaikan model data saat ini untuk memungkinkan:

  • Jika dua atau lebih tamu berbagi kamar, izinkan check-in dan check-out yang berbeda untuk setiap tamu.
  • Dalam beberapa kasus, hotel dapat mengubah konfigurasi kamar (misalnya dari standar satu tempat tidur ganda menjadi mewah 2 tempat tidur ganda). Tambahkan ke model data elemen untuk mewakili perubahan konfigurasi tersebut, dengan mempertahankan riwayat setiap ruangan.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pagination dengan OFFSET / FETCH :Cara yang lebih baik

  2. LIHAT SQL

  3. SQL Benar Bergabung

  4. Apa yang harus dilakukan (atau tidak dilakukan) tentang statistik menunggu teratas

  5. Memahami redo log group vs file vs member