資料庫應用技術大作業 旅館管理系統資料庫設計

2021-07-08 09:55:37 字數 4939 閱讀 3023

sql實踐作業:旅館管理系統資料庫設計與實現

————自動化學院自動化專業

小組成員及所完成的工作:

所完成的工作:資料庫整體結構的設計,er圖的繪製和其他工作的審核

系統名稱:旅館管理系統

一、系統需求

1.背景:

隨著科技和經濟的發展,旅遊業已經成為乙個熱門的產業,並且傳統的手工已不適應現代酒店管理的需要,及時、準確、全方位的網路化資訊管理成為必需。在酒店的管理及業務日益複雜、要求在不斷提高的現狀下,利用高科技、現代化的電腦自動化管理系統來處理日益繁重的酒店業務,對於大型的酒店是必須具備的管理方式。

酒店客房管理系統是根據酒店對客房管理的實際情況進行編寫的,主要目的是為了方便酒店對客房的實際情況進行集中的查詢與管理工作,以提高整個酒店的工作。酒店客房管理的科學化、系統化、資訊化成為各個酒店追求的目標。因此,而要實現這些功能,就要求各個酒店配備一套客房管理系統,以便在酒店內實施良好的完善的管理且以最快地速度響應客戶的需求,及時為他們提供服務,為他們提供乙個高效、便捷的居住環境。

2.旅店需求特點分析:

通過對旅店的調研,對於旅店的需求特點有了基本了解

(1)基本要求:系統能夠進行客戶的資訊的儲存,客戶資訊的刪除,客戶資訊的更新,客戶賬單的結算……因此要求系統一定要嚴密準確,不能

出現插入和刪除異常,因此要求資料庫系統的設計符合第四正規化

(2)高階要求:旅店面對的經常是一些突發的情況,比如客戶的提前退房,客戶

要求換房,客戶要求其他的附加服務……這些突發事件是我們在我們的系統中需要著重考慮的

3.旅客需求特點分析:

通過對使用者的調研,我們發現使用者希望住旅館的手續能夠盡量簡單,但是要求旅館的各種資訊準確,出現錯誤的可能性盡量低

4.旅店管理系統需求分析:

● 旅店的客房特點分析:

(1) 通過每個房間唯一的房間號來區別(也就是我們資料庫系統中的room_num),房間分成不同的型別(room_type)有『a』、『b』、『c』三種型別,它們對應的**也會不同,這個由顧客自己選擇,體現了我們設計系統的人性化;

(2) 房間的狀態(room_state)會根據是否有使用者入住而不同,如果該房間有人入住的話,那麼就將房間的狀態標記為busy;

(3) 房間同時擁有『isbooked』狀態,如果房間被預定的話,那麼就將這個房間的狀態標記為『booked』,如果沒有預定的話,那麼房間的狀態為『nobook』,這樣的話方便旅客『入住』、『換房』、『續住』種種操作,避免住進了已經有人預訂的房間,同時有些房間即使已經有人預定了,但是在預定旅客之前其他旅客還是可以住進來的,只要他在預定旅客入住之前退房就可以了,樣大大提高了客房的利用率。

(4) 考慮房間和顧客的關係,房間和旅客關係是一對多的,因為從現實出發,房間分為『單人房』、『雙人房』等,旅客的收費是按照『床位』來收費的,但是不**間的床位的**是不同的,但是在我們的資料庫中預設所有的房間都是單人房,這是我們設計的不足,更理想的是在每種型別中分為『單人房』、『雙人房』,然後為每個床位設立狀態,每位顧客都是按照床位來收房,而不是簡單的按照房間來收費,但是在現實生活中旅館的型別又有很多種,我們所設計的資料庫可能只是適合其中的部分型別的旅館。

● 旅客特點分析:

從旅館的角度來說,最重要的就是準確地記錄旅客在住宿期間一切資訊,並且要求準確

(1) lodger表用來記錄旅客的資訊,有lodger_name,id_num,room_num,e

checkin_date,exp_checkout_date,pre_payment

(2) lodger表用來記錄當前正在發生『入住』的旅客的資訊,這個表是動態的,

如果旅客退房,與之相關的表示checkout實體集,將使用者的資訊載入這個表,因為退房的資訊是非常關鍵的,因為旅店的賬目的結算是要依靠這個表的,然後他的資訊就會從lodger這個表中刪除;

旅客可能要求『換房』,實現這個功能的是change_room聯絡集

這個聯絡集聯絡了lodger和room兩個表,將原來的房間的狀態修改為『free』,將新入住的房間修改為『busy』;

旅客可能要求續住,我們當然會滿足這個要求,實現這個要求的要求是聯絡集con_room,如果旅客續住那麼在情況允許的情況下,可以繼續在原來的房間住宿,並修改exp_checkout_date 的資訊,如果原來的房間已經有人預定的話,那麼建議旅客更改房間,重新登記『lodger』資訊;

● 旅店的賬目管理特點分析

旅店的賬目管理系統是乙個比較複雜的系統,要求每天都要進行更新,同時還須具備『日結』、『月結』、『季度結』、『年結』的功能,與此相關的是checkout,dayaccount,monthaccount,yearaccount他們最終依賴的表都是checkout表,在我們的系統中checkout表用於記錄退房使用者的資訊,我們並沒有設定主鍵只是設立了外依賴,因為在這個表中不可能有兩個完全相同的元組

(lodger_name,room_num,cur_date,(cur_year,cur_month,cur_day),room_account,back_change),屬性(lodger_name,room_num,cur_

date,)使任意兩個元組都不可能相同,因為cur_date是精確到秒的,在實際情況中具有相同lodger_name,在同一時間內從同乙個房間退房時不會發生地,之所以不刪除這個表的元組,是因為我們想保留這些資訊以便日後的查詢,比如核對賬單,比如發生刑事案件需要旅店配合時,可能需要查詢相關的資訊……

日結dayaccount的實現也比較複雜,首先我們定製乙個作業『inseting dayaccount 』每天0:00:00向dayaccount插入乙個用於初始化的元組,然後建立乙個checkout與dayaccount之間的觸發器,如果向checkout中插入資訊,那麼就將 room_account累加到dayaccount中的day_account中去,這樣就能自動統計了每天的盈利狀況

monthaccount和yearaccount的演算法和dayaccount類似,同樣通過定製作業和建立觸發器,實現自動運算,在這就不多介紹了

二、系統概念模型(e-r圖)

三、關係模式(邏輯模型)

四、物理設計(表結構)

table1:room(entity set)

attribute:

room_num (房間號),

room_type (房間型別),

room_price(房間**),

room_state(房間狀態),

isbooked (預定狀態)

primarykey:

room_num

table2:lodger (entity set)

attribute:

lodger_name (客戶姓名),

id_num身份證號),

room_num房間號),

checkin_date (入住時間),

exp_checkout_date (預期退房時間),

pe_payment客戶預付款)

primarykey:

lodger_num,

id_num

foreignkey:

room_num references room

table 3:room_prebook (entity set)

attribute:

reserve_name (預定客戶姓名),

room_num (預定房間號),

exp_checkin_date( 預期入住時間),

pre_payment (預付款)

primarykey:

reserve_name

foreignkey:

room_num references room

table4:dayaccount (entity set)

attribute:

cur_year (年),

cur_month (月),

cur_day (日),

day_account(月結)

primarykey:

cur_year,

cur_month,

cur_day

table5:checkout(relation set)

attribute:

lodger_name (客戶姓名),

room_num (房間號),

cur_date (日期),

(cur_year,cur_month,cur_day)(年/月/日),

live_days (住宿天數),

room_account (賬單),

back_change (找零)

foreignkey:

lodger_name references lodger

room_num references room

table6: monthaccount(entity set)

attribute:

cur_year (年),

cur_month (月),

month_account (日結)

primarykey:

cur_year,

cur_month

table7:yearaccount (entity set)

attribute:

cur_year (年),

year_account (年結)

primarykey:

cur_year

table8:remind(entityset)

attribute:

lodger_name (客戶姓名),

room_num (房間號),

cur_date (日期)

primarykey:

lodger_name,

cur_date

foreignkey:

lodger_name

五、系統實現

1.功能模組設計:

(1) 客房資訊管理集合

《資料庫應用技術》課程大作業要求

一 分組要求 3人一組,自願組合。二 主題 可從以下題目中選取,也可自選。大作業參考題目 1.網上選課系統的資料庫設計 2.網上訂票系統的資料庫設計 3.考試系統的資料庫設計 4.自動抽題系統的資料庫設計 5.鐵路客票發售與預訂系統的資料庫設計 6.自動排課系統的資料庫設計 7.鏈管理系統的資料庫設...

資料庫大作業學生管理系統

學生管理系統資料庫設計與實現 班級 組成員及所完成的工作 系統名稱 學生管理系統 一 系統需求 a.該 學生管理系統 只是對資料庫應用技術的乙個樣本資料庫的例項,重在對資料庫一些方法的熟悉與掌握,其中包括從資料庫的概念模型到er圖的繪製,再到資料庫模式的建立 即為資料庫及其基本表的建立 而後資料的錄...

資料庫技術應用

主動資料庫技術在控制系統規則庫方面的應用研究 摘要 討論並分析了建立水下無人潛器 auv 自主運動控制規則庫的必要性和重要性及可行性。指出主動機制是主動資料庫的乙個重要功能,採用事件 條件 動作的規則來實現其主動功能。就控制系統的事件,動作特點提出控制規則資料庫設計方案,解決了自主控制系統中控制規則...