MÔ TẢ Bài toán được đưa ra là quản lý thông tin của khách hàng thuê phòng tại khách sạn, bao gồm các vấn đề quản lý như: khách hàng, dịch vụ, sử dụng dịch vụ, phòng, thuê phòng, hóa đơn
Trang 1CƠ SỞ DỮ LIỆU Page 1
BÀI TẬP LỚN
MÔN: CƠ SỞ DỮ LIỆU
HỌ VÀ TÊN : LÊ VĂN KHANH
LỚP : D10CN1
MÃ SINH VIÊN : 1021040030
ĐỀ TÀI
THÔNG TIN KHÁCH HÀNG THUÊ PHÒNG KHÁCH SẠN
Trang 2CƠ SỞ DỮ LIỆU Page 2
A MÔ TẢ
Bài toán được đưa ra là quản lý thông tin của khách hàng thuê phòng tại khách sạn, bao gồm các vấn đề quản lý như: khách hàng, dịch vụ, sử dụng dịch vụ, phòng, thuê phòng, hóa đơn Qua đó có thể lập các hóa đơn Từ các hóa đơn có thể tìm thấy thông tin cá nhân của khách hàng cũng như các thông tin thuê phòng, sử dụng dịch vụ của khách hàng
Các thông tin khách hàng bao gồm : mã khách hàng, họ tên, địa chỉ, số điện thoại, ngày
sinh, giới tính, số chứng minh thư Thông tin của khách hàng được sử dụng khi thuê phòng và khi thanh toán hóa đơn
Thông tin về dịch vụ bao gồm: mã dịch vụ,tên dịch vụ, giá dịch vụ Giá dịch vụ được
tính trên một đơn vị liên quan tới dịch vụ đó
Thông tin khách hàng sử dụng dịch vụ: mã sử dụng, mã khách hàng, mã dịch vụ, đơn
vị, số lượng Một khách hàng có thể sử dụng nhiều dịch vụ trong khách sạn và mỗi dịch
vụ cũng có thể được sử dụng bởi nhiều khách hàng
Thông tin phòng của khách sạn: số phòng, loại phòng, giá phòng Ở đây, loại phòng
chia làm 6 loại, mỗi loại có mức giá riêng của loại đó và giá được tính /1 ngày thuê
Thông tin thuê phòng của khách hàng gồm có: mã đăng kí, mã khách hàng, số phòng,
ngày đăng kí, ngày đến, ngày đi Mỗi khách hàng khi thuê phòng chỉ có một mã đăng kí duy nhất
Thông tin hóa đơn bao gồm: mã hóa đơn, mã khách hàng Khi thanh toán, mỗi khách
hàng có 1 mã hóa đơn duy nhất
B XÁC ĐỊNH CÁC TẬP THỰC THỂ
Các tập thực thể (các thuộc tính khóa được gạch chân)
Khách hàng: lưu thông tin khách hàng , bao gồm các thuộc tính
- mã khách hàng
- tên khách hàng
- địa chỉ
- số điện thoại
- ngày sinh
- giới tính
- chứng minh thư
Trang 3CƠ SỞ DỮ LIỆU Page 3
Dịch vụ: lưu thông tin các loại dịch vụ trong khách sạn mà khách hàng có thể sử dụng, bao gồm các thuộc tính
- mã dịch vụ
- tên dịch vụ
- giá dịch vụ
Phòng: lưu thông tin phòng của khách sạn, gồm các thuộc tính
- số phòng
- loại phòng
- giá phòng
Hóa đơn: lưu thông tin thể hiện yêu cầu thanh toán tiền của khách hàng bao gồm các thuộc tính
- mã hóa đơn
- mã khách hàng Thực thể liên kết
Thuê: lưu thông tin thuê phòng của khách hàng
- mã đăng kí
- mã khách hàng
- số phòng
- ngày đăng kí
- ngày đến
- ngày đi
Sử dụng: lưu thông tin sử dụng dịch vụ của khách hàng
- mã sử dụng
- mã khách hàng
- mã dịch vụ
- đơn vị
- số lượng Các mối liên kết
Khách hàng có hóa đơn
Khách hàng sử dụng dịch vụ
Khách hàng đặt phòng khách sạn
Trang 4CƠ SỞ DỮ LIỆU Page 4
C MÔ HÌNH THỰC THỂ LIÊN KẾT
Khachhang
HoaDon
Diachi
GiaP LoaiP
Chungminhthu
Sodt
MaKH
TenKH
Gioitinh
MaHD
TenDV MaDV
SoP
có
Ngaysinh
MaDK
NgayDK
Ngayden
Soluong Donvi
GiaDV
Trang 5CƠ SỞ DỮ LIỆU Page 5
D ÁNH XẠ MÔ HÌNH THỰC THỂ LIÊN KẾT SANG MÔ HÌNH QUAN HỆ
Phong
SoP
LoaiP
GiaP
DichVu MaDV TenDV GiaDV
Thue
MaDK
SoP
MaKH
NgayDK
Ngayden
Ngaydi
Khachhang
MaKH
TenKH
Diachi
Ngaysinh
Gioitinh
Sodt
Chungminhthu
SuDung MaSD MaKH MaDV Donvi Soluong
HoaDon MaHD MaKH
Trang 6CƠ SỞ DỮ LIỆU Page 6
E THỰC HIỆN LƯỢC ĐỒ QUAN HỆ BẰNG MYSQL
Trang 7CƠ SỞ DỮ LIỆU Page 7
F THỰC HIỆN 10 CÂU TRUY VẤN BẰNG ĐẠI SỐ QUAN HỆ
QUERY 1: Tìm tên của tất cả các khách hàng là nữ sinh từ năm 1970-1990
Biểu thức truy vấn :
Kết quả=π (TenKH) (σ ((Gioitinh=0)AND((year(Ngaysinh)>=1970)AND(year(Ngaysinh)<=1990))) (Khachhang))
QUERY 2: Tìm tên của tất cả các khách hàng là nam sinh trước năm 1970
Biểu thức truy vấn
Kết quả=π (TenKH) (σ ((Gioitinh=1)AND(year(Ngaysinh)<1970)) (Khachhang))
QUERY 3: Tìm số phòng và loại phòng của các phòng có giá từ 500000-800000 Biểu thức truy vấn :
Kết quả=π (SoP#,LoaiP) (σ ((GiaP>=500000)AND(GiaP<=800000)) (Phong))
QUERY 4: Tìm mã dịch vụ và tên của các dịch vụ mà khách hàng sử dụng có số lượng ≥ 10
Biểu thức truy vấn :
Kết quả=π (MaDV#,TenDV) (σ (SuDung.Soluong≥10) AND (DichVu.MaDV#=SuDung.MaDV#))
(SuDung×DichVu))
Trang 8CƠ SỞ DỮ LIỆU Page 8
QUERY 5: Tìm mã đăng kí và tên khách hàng đăng kí trong tháng 4-2012
Biểu thức truy vấn :
Kết quả=π (Thue.MaDK#,Khachhang.TenKH) (σ (month(Thue.NgayDK=4) AND
year(Thue.NgayDK=2012) AND (Thue.MaKH#=Khachhang.MaKH#)) (Khachhang×Thue))
QUERY 6: Tìm mã đăng kí, số phòng, mã khách hàng ở trong khoảng thời gian quí I năm 2012
Biểu thức truy vấn :
Kết quả=π (Thue.MaDK#,Phong.SoP#,Khachhang.MaKH#) (σ ((month(Thue.Ngayden)>=1)AND
(month(Thue.Ngaydi)<=3) AND (Phong.SoP#=Thue.SoP#) AND
QUERY 7: Tìm mã khách hàng và tên khách hàng sử dụng dịch vụ Karaoke
Biểu thức truy vấn :
Kết quả=π (Khachhang.MaKH#,Khachhang.TenKH) (σ ((SuDung.MaDV#=DichVu.MaDV#) AND
(DichVu.TenDV=”Karaoke”) AND (Khachhang.MaKH#=SuDung.MaKH#))
(Khachhang×SuDung×DichVu))
Trang 9CƠ SỞ DỮ LIỆU Page 9
QUERY 8: Tìm tất cả mã hóa đơn và tên của khách hàng sử dụng dịch vụ có giá ≥ 200000
Biểu thức truy vấn :
Kết quả=π (HoaDon.MaHD#,Khachhang.TenKH) (σ ((HoaDon.MaKH#=Khachhang.MaKH#) AND
(Khachhang.MaKH#=SuDung.MaKH#) AND (DichVu.MaDV#=SuDung.MaDV#) AND
(DichVu.GiaDV>=200000) (HoaDon×Khachhang×SuDung))
QUERY 9: Tìm tên của những khách hàng đăng kí phòng loại 1
Biểu thức truy vấn:
Kết quả=π (Khachhang.TenKH) (σ ((Thue.SoP#=Phong.SoP#) AND (Phong.LoaiP=”L1”) AND
QUERY 10: Tìm mã hóa đơn và mã khách hàng của khách hàng sử dụng dịch vụ thuê taxi
Biểu thức truy vấn:
Kết quả=π (HoaDon.MaHD#,Khachhang.MaKH#) (σ ((Khachhang.MaKH#=HoaDon.MaKH#) AND
(Khachhang.MaKH#=SuDung.MaKH#) AND (SuDung.MaDV#=DichVu.MaDV#) AND
(DichVu.TenDV=”Thuê taxi”))
Trang 10CƠ SỞ DỮ LIỆU Page 10
G Xác định các phụ thuộc hàm F trên từng lược đồ quan hệ
và đưa về dạng chuẩn 3 (3NF)
1 Xét quan hệ
Khachhang(MaKH(A), TenKH(B), Diachi(C), Sodt(D), Ngaysinh(D),
Gioitinh(E), Chungminhthu(F))
Với tập các phụ thuộc hàm F1={ABCDEFG} và tập khóa K1={A}
Không có thuộc tính không khóa nào phụ thuộc bắc cầu vào khóa
Quan hệ Khachhang ở dạng 3NF
2 Xét quan hệ
Phong(SoP(A), LoaiP(B), GiaP(C))
Với tập phụ thuộc hàm F2={ABC } và tập khóa K2={A}
Không có thuộc tính không khóa nào phụ thuộc bắc cầu vào thuộc tính khóa
Do đó, quan hệ Phong ở dạng 3NF
3 Xét quan hệ
DichVu(MaDV(A), TenDV(B), GiaDV(C))
Với tập phụ thuộc hàm F3={ABC} và tập khóa K3={A}
Không có phụ thuộc hàm bắc cầu trong quan hệ này
Do đó, quan hệ DichVu ở dạng 3NF
Trang 11CƠ SỞ DỮ LIỆU Page 11
4 Xét quan hệ
Thue(MaDK(A), MaKH(B), SoP(C), NgayDK(D), Ngayden(E), Ngaydi(F)) Với tập phụ thuộc hàm F4={ABCDEF} và tập khóa K4={A}
Không có thuộc tính không khóa nào phụ thuộc bắc cầu vào khóa
Do đó, quan hệ Thue ở dạng chuẩn 3 (3NF)
5 Xét quan hệ
HoaDon(MaHD(A), MaKH(B))
Với tập phụ thuộc hàm F5={AB} và tập khóa K5={A}
Không có phụ thuộc hàm bắc cầu trong quan hệ này
Do đó, quan hệ HoaDon ở dạng chuẩn 3(3NF)
6.Xét quan hệ
SuDung(MaSD(A), MaKH(B), MaDV(C), Donvi(D), Soluong(E))
Với tập phụ thuộc hàm F6={AB,CD,ACE} và tập khóa K6={A,C}
Không có thuộc tính không khóa nào phụ thuộc bắc cầu vào thuộc tính khóa
Do đó, quan hệ SuDung ở dạng chuẩn 3(3NF)
Trang 12CƠ SỞ DỮ LIỆU Page 12
H Thực hiện 10 câu truy vấn bằng câu lệnh MySQL
QUERY 1: Tìm tên của tất cả các khách hàng là nữ sinh từ năm 1970-1990
SELECT TenKH
FROM Khachhang
WHERE Gioitinh = 0 AND
YEAR(Ngaysinh) BETWEEN 1970 AND 1990;
QUERY 2: Tìm tên của tất cả các khách hàng là nam sinh trước năm 1970
SELECT TenKH
FROM Khachhang
WHERE Gioitinh = 1 AND YEAR(Ngaysinh) < 1970;
QUERY 3: Tìm số phòng và loại phòng của các phòng có giá từ 500000-800000
SELECT SoP, LoaiP
FROM Phong
WHERE Gia BETWEEN 500000 AND 800000
GROUP BY LoaiP
Trang 13CƠ SỞ DỮ LIỆU Page 13
QUERY 4: Tìm mã dịch vụ và tên của các dịch vụ mà khách hàng sử dụng có số lượng lớn hơn hoặc bằng 10
SELECT DichVu.MaDV, DichVu.TenDV
FROM DichVu, SuDung
WHERE SuDung.Soluong >= 10 AND DichVu.MaDV=SuDung.MaDV ;
QUERY 5: Tìm mã đăng kí và tên khách hàng đăng kí trong tháng 4-2012
SELECT Thue.MaDK, Khachhang.TenKH
FROM Thue, Khachhang
WHERE MONTH(Thue.NgayDK) = 4 AND
YEAR(Thue.NgayDK)= 2012 AND
Khachhang.MaKH = Thue.MaKH;
QUERY 6: Tìm mã đăng kí, số phòng, mã khách hàng của các khách hàng ở trong khoảng thời gian quí I năm 2012
SELECT Thue.MaDK, Phong.SoP, Khachhang.MaKH
FROM Khachhang, Thue, Phong
WHERE MONTH(Thue.Ngayden) >= 1 AND
MONTH(Thue.Ngaydi) <= 3 AND
Thue.SoP=Phong.SoP AND
Khachhang.MaKH=Thue.MaKH;
Trang 14CƠ SỞ DỮ LIỆU Page 14
QUERY 7: Tìm mã khách hàng và tên khách hàng sử dụng dịch vụ Karaoke
SELECT Khachhang.MaKH, Khachhang.TenKH
FROM Khachhang, SuDung, DichVu
WHERE DichVu.TenDV=”Karaoke” AND
Khachhang.MaKH=SuDung.MaKH AND
SuDung.MaDV=DichVu.MaDV;
QUERY 8: Tìm tất cả mã hóa đơn và tên của khách hàng sử dụng dịch vụ giá ≥ 200000
SELECT HoaDon.MaHD, Khachhang.TenKH
FROM Khachhang, HoaDon, SuDung
WHERE SuDung.GiaDV > 200000 AND
Khachhang.MaKH=SuDung.MaKH AND
HoaDon.MaKH=Khachhang.MaKH;
Trang 15CƠ SỞ DỮ LIỆU Page 15
QUERY 9: Tìm tên của những khách hàng đăng kí phòng loại 1
SELECT Khachhang.TenKH
FROM Khachhang, Thue, Phong
WHERE Phong.LoaiP = “L1” AND
Khachhang.MaKH=Thue.MaKH AND
Thue.SoP=Phong.SoP;
QUERY 10: Tìm mã hóa đơn và mã khách hàng của khách hàng sử dụng dịch vụ thuê taxi
SELECT HoaDon.MaHD, Khachhang.MaKH
FROM HoaDon, Khachhang, SuDung, DichVu
WHERE DichVu.TenDV=”Thuê taxi” AND
HoaDon.MaKH=Khachhang.MaKH AND
Khachhang.MaKH=SuDung.MaKH AND
SuDung.MaDV=DichVu.MaDV;