You are on page 1of 10

Q1.

Hãy đọc mô tả sau đây về hệ đặt chỗ trong khách sạn và trả lời các Câu
hỏi con từ 1 đến 5.

Công ty Du lịch A đã quyết định xây dựng một hệ đặt chỗ khách sạn. Như
được biểu diễn trên Hình 1, hệ này gồm một máy chủ đặt chỗ khách sạn
và các PC khách được thiết đặt tại các văn phòng khách hàng và các
khách sạn. Chúng được nối với nhau qua một mạng. Nhiệm vụ chủ yếu
của hệ thống này là nhận đặt chỗ từ các máy khách được cài đặt ở địa
điểm của những khách hàng đã được đăng kí như thành viên của hệ thống.
Việc đặt chỗ được gửi tới dịch vụ thông tin phòng khách sạn (sau đây
được coi như kiểm kê phòng), đã được đăng kí bởi các máy PC khách
trong các khách sạn đối với máy chủ đặt chỗ khách sạn.

May chu dat


cho

Mang

PC khach o cho … PC khach o cho PC khach o … PC khach o


khach hang khach hang khach san khach san

Hinh 1 Cau hinh he thong dat cho trong khach san

3
Các nhiệm vụ được xử lí bởi hệ này được chỉ ra trong bảng dưới đây.
Bảng Các nhiệm vụ được xử lí bởi Hệ thống Đặt chỗ Khách sạn
Máy khách Nhiệm vụ Mô tả chức năng

Đăng kí/ Cập nhật Kiểm kê phòng đối với mỗi kiểu phòng được đăng kí bằng cách xác
định khách sạn và các ngày có thể dùng được. Đồng thời cũng có khả
kiểm kê phòng
năng cập nhật kiểm kê phòng.
Danh sách của các phòng đã được đặt, khách hàng và mức giá phòng
Ở khách sạn Đưa ra danh sách đặt
được hiển thị đối với một khách sạn cụ thể và ngày đăng kí ở khách
chỗ
sạn (check-in date).
Đăng kí mức giá Đối với một khách sạn cụ thể, mức giá cho mỗi mùa và mỗi kiểu
phòng phòng được thiết lập như đã định.
Vùng, quận, ngày đăng ký ở khách sạn, kiểu phòng và tổng số phòng
Tìm kiếm/đặt phòng được xác định và việc tìm kiếm được thực hiện đối với những khách
khách sạn sạn thoả mãn các điều kiện đã xác định. Cũng có khả năng chọn bất kỳ
một khách sạn tìm được và đặt một hay nhiều phòng.
Ở chỗ
Hiển thị các chi tiết của một việcđặt chỗ dược thực hiện bởi một khách
khách Yêu cầu/Huỷ chi tiết
hàng.
hàng đặt chỗ
Việc đặt chỗ cũng có thể bị hủy bỏ.
Đăng kí/cập nhật/ Khách hàng có thể đăng kí như thành viên của dịch vụ này bằng cách
xoá thông tin thành vào thông tin khách hàng được yêu cầu. Cũng có khả năng cập nhật và
viên xoá thông tin khách hàng này.
Điều kiện tiên quyết được giả thiết cho hệ này được trình bày dưới đây.
・ Hệ này quản lí tổng số các phòng trong kiểm kê phòng. Nói cách khác, việc
đặt chỗ khách sạn chỉ được phép khi tổng số phòng trống bằng hoặc lớn hơn
tổng số phòng yêu cầu. Tổng số phòng trống bị giảm đi hoặc tăng lên khi có việc
đặt chỗ hoặc hủy đặt chỗ.
・ Có bốn kiểu phòng: phòng đơn, phòng đôi, phòng ba và phòng tiện nghi.
・ Có ba kiểu mùa: ngoài mùa, giữa mùa và trong mùa. Điều này được xác định
dựa trên ngày đăng ký vào ở khách sạn.
・ Mức giá phòng được thiết đặt theo khách sạn, theo kiểu phòng và theo mùa.
Mức giá phòng được tính cho một đêm trong phòng.
・ Tổng số tiền được tính bằng cách nhân tổng số phòng với mức giá phòng.
Việc giảm giá không được xét tới.
・ Chỉ những khách hàng được đăng kí như thành viên mới có thể đặt chỗ
khách sạn. Không thể xoá tư cách thành viên của một khách hàng có đặt chỗ.
Lưu ý rằng mọi vấn đề như xác thực người thao tác máy khách, khoảng thời gian
cho mỗi nhiệm vụ, thay đổi mức giá phòng, ban hành phiếu vé và thanh toán nằm
ngoài phạm vi của bài toán này.

4
Những ví dụ về các màn hình hiển thị và các báo cáo đầu ra được sử dụng trong
quá trình hoạt động được chỉ ra trong các Hình 2 đến Hình 4. Chú giải sử dụng
trong Hình 2 cũng được áp dụng cho Hình 3.

Room registration/update – Đăng kí/cập nhật phòng


Mã khách sạn: 1234 Tên Khách sạn: HotelWakkanai Vùng:: Hokkaido Quận:: Wakkanai

Ngày: M 7 D 20 Y 2001
PhòngĐơn Phòng Đôi Phòng Ba P Tiện nghi
Hiện thời Những phòng được đặt − − − −
Những phòng được đ/kí − − − −
Đăng kí/ Cập nhật Tổng số phòng 120 60 5

Đăng ký Ve bang chon

Đăng kí OK PhòngĐơn Phòng Đôi Phòng Ba P Tiện nghi

Những phòng đặt chỗ 0 0 − 0

Những phòng đăng kí 120 60 − 5

Ve bang chon

Chú giải: : Vùng nhập vào


: Thực đơn Pull-down (chọn từ nhiều lựa chọn)

: Hiển thị đầu ra phụ thuộc vào đầu vào


, : Nút Radio (chọn 1 mục)
: Nút Thực hiện
Khi bấm vào phím để thực hiện việc đăng kí, việc tìm và đặt chỗ trên phần màn

hình phía trên đường kép , làm hiển thị phần màn hình phía
dưới vạch kép .

Hình. 2 Đăng kí phòng / Màn hình cập nhật (mẫu)

5
Tìm Khách sạn / đặt chỗ
Vùng: Hokkaido Quận: Wakkanai

Ngày Check-in: M 7 D 20 Y 2001

Kiểu phòng: Twin

Tổng số phòng: 2

Tìm Ve bang chon

Tên khách sạn Mức giá phòng Có phòng?


Hotel Wakkanai $ 180 Tất cả đã đặt chỗ

Kitano-kuni Hotel $ 150 Trống

Hotel Nosappu $ 170 Trống

Đat cho Ve bang chon

Đặt chỗ hoàn thành

Số đạt chỗ.: 23456

Số thành viên: 3456 John Smith

Ngày Check-in: M 7 D 20 Y 2001

Tên khách sạn: Kitano-kuni Hotel

Kiểu phòng: Twin Tổng số phòng 2

Mức giá phòng: $ 150 Tổng số tiền: $ 300


Ve bang chon

Fig. 3 Tìm khách sạn/ Màn hình đặt chỗ (mẫu)

Danh sách đặt chỗ Ngày 10 thnág 7 năm 2001


Mã khách sạn: 1234 Tên khách sạn: Hotel Wakkanai Vùng: Hokkaido Quận: Wakkanai
Ngày Check-in: 15 July, 2001

Số hiệu đặt chỗ Kiểu phòng Tổng số phòng Số hiệu thành viên Tên Tổng số tiền
45678 Single 1 7890 Joe Smith $120
Mary
56789 Single 2 8901 $240
Diamond
67890 Twin 1 9012 John Lee $180


Hình 4 Danh sách đặt chỗ (mẫu)

6
Hình 5 chỉ ra biểu đồ thực thể-quan hệ được xác định cho hệ này.

Hotel District Region

Hotel_code District_code Region_code

Hotel_name District_name Region_name

a Region_code

Address

Phone_no.

Rate
Calendar
Hotel_code
Check-in_date
Room_type
Room_inventory
Season
Season
Check-in_date
Room_charge
Hotel_code

Room_type

Reserved_rooms

b
Reservation

Reserv_no

Member_no
Member
Check-in_date
Member_no
Hotel_code
Name
Room_type
Address
Reserved_rooms
Phone_no

Legend:
Ghi chú: : 1 to 1
Entity_name
: 1 to many
Attribute_name
Attribute_name : many to many

Tên các thuộc


Underlined tính được
attribute namesgạch chân làprimary
represent các khoá chính
keys.

Fig. 5 Biểu đồ thực thể-quan hệ

7
Ở đây, máy chủ đặt chỗ khách sạn lưu giữ dữ liệu trong cơ sở dữ liệu quan hệ được
xác định bởi các bảng phản ánh biểu đồ thực thể-quan hệ. Để phù hợp với biểu đồ
thực thể-quan hệ, tên thực thể được sử dụng cho tên bảng và tên thuộc tính cho tên
cột, và các kiểu dữ liệu thích hợp cần phải được sử dụng cho các bảng. Dữ liệu
được xử lí khi sử dụng SQL nhúng trong ngôn ngữ lập trình máy chủ (host
programming language) được sử dụng để viết mã chương trình chính để xử lí
những yêu cầu nhiệm vụ khác nhau từ phía các máy khách.

Câu hỏi con 1


Đặt những tên thuộc tính đúng vào các hộp a và b trong
biểu đồ thực thể-quan hệ biểu diễn trong Hình 5.

Câu hỏi con 2


Trong những định nghĩa bảng sử dụng SQL, việc xoá tư cách thành viên của
những khách hàng đã có đặt chỗ được ngăn ngừa bằng cách thiết đặt sự ràng
buộc toàn vẹn sau đây. Hãy đặt các từ đúng vào trong các hộp sau, từ
c đến f .

Khi đi đến cột d trong bảng c , f được thiết đặt


cho bảng e .

Câu hỏi con 3


Lệnh SQL sau đây là lệnh để tạo ra danh sách đặt chỗ được biểu diễn trên
Hình 4 đối với mã khách sạn (hotel code) và ngày đăng ký vào khách sạn
(check-in date) đã được xác định. Hãy đặt từ hay biểu thức đúng vào các hộp
g đến i trong mô tả dưới đây:
Lưu ý rằng “:XXX” là biến máy chủ lưu giữ dữ liệu về “XXX” được xác định
bởi phía máy khách.
SELECT RESERVATION.RESERV_NO, RESERVATION.ROOM_TYPE,

RESERVATION.RESERVED_ROOMS, RESERVATION.MEMBER_NO,
MEMBER.NAME, g

FROM RESERVATION, MEMBER, CHARGE, CALENDAR


WHERE RESERVATION.HOTEL_CODE = :HOTELCODE

8
AND RESERVATION.CHECKIN_DATE = :CHECKINDATE

AND h

AND RATE.HOTEL_CODE = :HOTELCODE


AND RATE.ROOM_TYPE = RESERVATION.ROOM_TYPE
AND CALENDAR.CHECKIN_DATE = :CHECKINDATE

AND i

Câu hỏi con 4


Để xử lí nhiều đêm, công ty du lịch quyết định thêm một vùng nhập số liệu
“tổng số đêm” đối với màn hình tìm/đặt chỗ khách sạn sao cho tất cả các thao
tác đặt chỗ với một tổ hợp chung của khách sạn, kiểu phòng và tổng số phòng
liên quan tới việc lưu lại nhiều đêm, có thể được xử lí tất cả chỉ trong một lần
đặt chỗ với một số hiệu đặt chỗ. Để làm điều này, thực thể “Reservation”
trong biểu đồ thực thể-quan hệ được biểu diễn trên Hình 5 đã được chia làm
hai phần: “Reservation” đối với việc đặt chỗ và “Reservation_details” đối với
việc lưu lại mỗi đêm, và các thuộc tính đã được cấp phát cho cả hai phần. Hãy
nhập vào biểu đồ thực thể-quan hệ các tên thuộc tính đúng được liên kết với
mỗi thực thể phù hợp với chú giải, và hãy hoàn thành phần này của biểu đồ
thực thể-quan hệ.
Lưu ý rằng mức giá phòng cho mùa đang xét được áp dụng cho mỗi đêm lưu
trú và rằng không được có các dữ liệu dư thừa, không cần thiết (dạng chuẩn
thứ hai).

Câu hỏi con 5


Hình 6 mô tả luồng xử lí để cập nhật dữ liệu khi nút Đặt chỗ (Reservation)
được ấn trong chương trình đặt chỗ khách sạn sau khi những thay đổi đặc tả
trong Câu hỏi con 4 đã được thực hiện. Với chương trình này, con trỏ (cursor)
đến từ bảng kiểm kê phòng được khai báo như chỉ ra trong Hình 7 và việc xử lí
nhiều đêm được tiến hành khi sử dụng các phép toán con trỏ.

Mặc dù nhiều thể nghiệm dữ liệu được cập nhật khi sử dụng chương trình này,
một hàm quản lí giao dịch được sử dụng cho cơ sở dữ liệu quan hệ để bảo vệ
tính toàn vẹn khi việc cập nhật được yêu cầu đồng thời bởi nhiều máy khách
(client PC), hoặc khi một lỗi hệ thống xảy ra giữa chừng xử lí.. Sử dụng hàm

9
này, các giao dịch được bắt đầu một cách tự động khi chương trình khởi động,
và được tách rời khi một khai báo SQL COMMIT hoặc ROLLBACK được
thực hiện. Dữ liệu xử lí trong thời gian đó hoặc được xác nhận hoặc bị hủy bỏ.
Do dữ liệu không bị khoá giữa thời điểm tìm kiếm một khách sạn và thời điểm
thực hiện đặt chỗ khách sạn, cho nên vẫn cần thiết phải xác minh rằng phòng
vẫn còn có tại thời điểm đặt chỗ, ngay cả khi khách sạn đó quả thực có những
phòng trống khi nó được tìm thấy. Việc xử lí CLOSE cho con trỏ (cursor)
được thực hiện tự động khi một khai báo COMMIT hoặc ROLLBACK được
thực hiện.

Trong trường hợp đặt chỗ nhiều đêm, những việc đặt chỗ được thực hiện chỉ
khi có phòng cho tất cả các đêm yêu cầu. Dữ liệu liên quan tới kiểm kê phòng
không bị tác động trong bất kì những trường hợp khác nào.

10
Bat dau

Nhan Reserv_no

0 →COUNTER

Khong
Co du lieu?

Co

Khong
Co cho trong?

Co

UPDATE the Room_inventory m

Khong the dat cho

COUNTER + 1 → COUNTER

Khong
COUNTER = NO_OF_NIGHTS

Co

COMMIT ROLLBACK

Hoan thanh viec dat cho Khong the dat cho

Hinh 6 Luong tien trinh cap nhat du lieu khi nhan nut Dat cho

11
DECLARE ROOM_STOCK_CSR CURSOR
FOR SELECT *
o
WHERE HOTEL_CODE = :HOTELCODE
AND ROOM_TYPE = :ROOMTYPE
AND p
FOR UPDATE;

Hinh 7 Khai bao con tro

(1) Hãy đặt kí hiệu cho từ đúng (xuất hiện trong nhóm câu trả lời sau đây) trong
các hộp j đến n trong lưu đồ chỉ ra trong Hình 6 liên
quan đến việc cập nhật dữ liệu khi nút đặt chỗ (Reservation) được ấn.

Nhóm câu trả lời:


a) COMMIT
b) ROLLBACK
c) FETCH với cursor
d) OPEN cursor
e) INSERT vào kiểm kê Phòng
f) INSERT vào Reservation
g) UPDATE Reservation
h) INSERT vào Reservation_details
i) UPDATE Reservation_details

(2) Hãy đặt từ hoặc biểu thức đúng vào các hộp o đến p

trong khai báo cursor chỉ ra trong Hình 7. Giả thiết rằng, tuy nhiên, các biến
máy chủ “:CHECKINDATE_F” và “:LASTNIGHT_T” có thể được sử dụng.
Chúng có cùng kiểu DATE như “CHECK_IN_DATE” trong cở sở dữ liệu.
Chúng đại diện cho đêm đầu tiên và đêm cuối cùng tương ứng của việc lưu lại
liên tục (ngày check-in + tổng số đêm − một ngày) như được xác định bởi
khách hàng.

12

You might also like