Tải bản đầy đủ (.docx) (29 trang)

Thiết kế cơ sở dữ liệu Quản lý khách sạn

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (278.44 KB, 29 trang )

NHĨM 5: QUẢN LÍ KHÁCH SẠN

MỤC LỤC

1


CHƯƠNG 1: ĐẶC TẢ HỆ THỐNG
1.1. Mục đích, yêu cầu
1.1.1. Mục đích
Việc lập chương trình quản lý khách sạn nhằm tạo một hệ thống quản lý việc
kinh doanh của khách sạn có những chức năng như quản lý nhân viên, khách,
phịng, lập phiếu đăng ký, lập hố đơn. Mục tiêu của đề tài là xây dựng một phần
mềm để giúp việc quản lý khách sạn trở lên dễ dàng hơn.
1.1.2 Yêu cầu
-

Chương trình thực hiện những yêu cầu sau :
Chức năng quản lí khách hàng
Chức năng quản lí phịng
Chức năng quản lí nhân viên
Chức năng quản lí phiếu đặt phịng
Chức năng quản lí dịch vụ
Chức năng lập hố đơn
1.2 Mơ tả hệ thống
1.2.1 Quy trình nghiệp vụ
-

-

Khi khách hàng đến khách sạn, nhân viên bảo vệ sẽ tiếp nhận giữ xe, chỉ dẫn


khách đến bộ phận tiếp tân.
Nhân viên tạp vụ trông coi và di chuyển hành lý cho khách.
Bộ phận tiếp tân sẽ tiếp nhận, kiểm tra những phòng trống phù hợp với yêu
cầu của khách, lập phiếu thuê, cập nhật thông tin về khách hàng vào hệ
thống quản lý.
Khi khách yêu cầu sử dụng dịch vụ, nhân viên phục vụ sẽ cung cấp, chỉ dẫn
cho khách.
Khi khách yêu cầu trả phòng nhân viên phục vụ kiểm tra hiện trạng cơ sở vật
chất trong phòng, bộ phận tiếp tân sẽ lập lại chi tiết phiếu thanh toán rồi
chuyển qua bộ phận kế toán lập hoá đơn cho khách hàng.

2


1.2.2 Quy tắc nghiệp vụ
Tổng chi phí khách hàng phải trả dựa trên loại phòng đã thuê và loại dịch vụ
đã sử dụng.
Tổng chi phí = Tiền phịng + Tiền dịch vụ.
1.3 Đặc tả các chức năng cần xây dựng
-

Chức năng quản lí khách hàng: tìm kiếm, thêm, sửa, xố thơng tin của khách
hàng.
Chức năng quản lí phịng: tìm kiếm, cập nhật trạng thái của phịng.
Chức năng quản lí nhân viên: tìm kiếm, thêm, sửa, xố thơng tin nhân viên.
Chức năng lập quản lí phiếu đặt phịng: tìm kiếm và quản lí phiếu đặt phịng.
Chức năng lập quản lí dịch vụ: tính tổng tiền, quản lí dịch vụ.
Chức năng lập hố đơn: tính tổng tiền, quản lí và lập hố đơn.

CHƯƠNG 2 : PHÂN TÍCH VÀ CÀI ĐẶT DỮ LIỆU HỆ THỐNG

2.1. Mô tả hệ thống dưới dạng mối quan hệ dữ liệu
* Đặc tả vấn đề : Một khách sạn có nhu cầu tin học hóa việc quản lý một
cách dễ dàng, khoa học và tiết kiệm thời gian.
- Khách hàng khi đến thuê phòng của khách sạn sẽ có phiếu th phịng.
Mỗi phiếu th phịng gồm: mã phiếu thuê, ngày thuê, ngày dự kiến trả.
Một khách hàng có thể có nhiều phiếu th.
- Để quản lí khách hàng, khách sạn sẽ lưu những thông tin sau: mã khách
hàng, tên khách hàng, ngày sinh, số CMND (hoặc giấy tờ tuỳ thân khác), địa
chỉ, số điện thoại.
- Sau khi khách trả phòng, nhân viên sẽ kiểm tra phòng và lập hoá đơn, khách
hàng sẽ phải trả hoá đơn. Mỗi hoá đơn sẽ gồm: mã hoá đơn, ngày lậptổng
tiền. Mỗi khách hàng có thể có nhiều hố đơn, mỗi nhân viên có thể lập
nhiều hố đơn.
- Một khách hàng có thể có nhiều phiếu đặt phịng và mỗi phiếu đặt phịng sẽ
được thanh toán qua một hoá đơn.
- Mỗi phiếu đặt phịng được th nhiều phịng và mỗi phịng có thể được thuê
từ nhiều chi tiết phiếu đặt.
- Mỗi phiếu đặt phịng có nhiều phiếu dịch vụ. Mỗi phiếu dịch vụ có nhiều
dịch vụ và mỗi dịch vụ nằm trong nhiều phiếu dịch vụ.
- Khách sạn muốn quản lí thơng tin phịng nên mỗi phịng gồm thơng tin: số
phịng, tình trạng. Mỗi phịng thuộc một loại phịng, mỗi loại phịng có nhiều

3


phịng khác nhau. Mỗi loại phịng gồm thơng tin: mã loại phịng, tên loại
phịng, giá, số người tối đa.
- Ngồi ra khách sạn cịn quản lí thơng tin của nhân viên gồm: mã nhân viên,
tên nhân viên, địa chỉ, số điện thoại, ngày sinh, giới tính, chức vụ, lương,
ngày vào làm.

2.2. Xây dựng mơ hình liên kết thực thể

2.3. Cách chuyển từ mơ hình liên kết thực thể sang mơ hình quan hệ

4


* Các quy tắc chuyển đổi:
- Quy tắc 1: Với kiểu liên kết 1:n
Chuyển khóa chính của LĐQH bên 1 (cha) sang làm khóa ngoại của LĐQH
bên nhiều (con).
- Quy tắc 2: Với kiểu liên kết n:n
Chuyển mối liên kết thành một LĐQH có thuộc tính là thuộc tính của mối
liên kết, thêm các thuộc tính khóa chính của các LĐQH có liên quan, khóa chính
của LĐQH mới này là các thuộc tính mới thêm vào.
- Quy tắc 3: Với kiểu liên kết 1:1
+ Cách 1: Chuyển khóa chính của LĐQH này sang làm khóa ngoại của
LĐQH kia hoặc ngược lại.
+ Cách 2: Nhập 2 kiểu thực thể và mối liên kết thành 1 LĐQH, chọn khóa
chính cho phù hợp.
* Từ các quy tắc trên, ta xây dựng được lược đồ quan hệ theo các bước như
sau:
Bước 1: Chuyển các tập thực thể thành quan hệ:
KHACHHANG (MAKH, TENKH, NS, GIOITINH, SDT,SOCMND, DIACHI,
QUOCTICH)

PHIEUDATPHONG (MAPHIEUDATPHONG, NGAYLAP, NGAYDEN)
CHITIETPHIEUDAT (MACHITIETPHIEUDAT, NGAYTRAPHONG)
HOADON (MAHD, NGAYLAP, TONGTIEN)
PHONG (SOPHONG, TINHTRANG)

LOAIPHONG (MALOAIPHONG, TENLOAIPHONG, GIA, SONGUOITOIDA)
5


PHIEUDICHVU (MAPHIEUDV, NGAYLAP, TONGTIEN)
DICHVU (MADV, TENDV, DONGIA)
NHANVIEN (MANV, TENNV, NS, SDT, DIACHI, GIOITINH, LUONG,
NGAYVAOLAM)

Bước 2 : Chuyển đổi mối liên kết
Mối kết hợp HOADON – NHANVIEN chuyển đổi mã nhân viên thành khoá
ngoại trong mối quan hệ HOADON.
Mối kết hợp HOADON – PHIEUDATPHONG chuyển đổi mã phiếu đặt
phịng thành khố ngoại trong mối quan hệ HOADON.
Mối kết hợp PHIEUDATPHONG – KHACHHANG chuyển đổi mã khách
hàng thành khoá ngoại trong mối quan hệ PHIEUDATPHONG.
Mối kết hợp PHIEUDATPHONG – NHANVIEN chuyển đổi mã nhân viên
thành khoá ngoại trong mối quan hệ PHIEUDATPHONG.
Mối kết hợp CHITIETPHIEUDAT – PHONG chuyển đổi số phịng thành
khố ngoại trong mối quan hệ CHITIETPHIEUDAT.
Mối kết hợp CHITIETPHIEUDAT – PHIEUDATPHONG chuyển đổi mã
phiếu đặt phịng thành khố ngoại trong mối quan hệ CHITIETPHIEUDAT.
Mối kết hợp PHONG – LOAIPHONG chuyển đổi mã loại phịng thành khố
ngoại trong mối quan hệ PHONG.
Mối kết hợp PHIEUDATPHONG – PHIEUDICHVU chuyển đổi mã phiếu
đặt phịng thành khố ngoại trong quan hệ PHIEUDICHVU.
Mối kết hợp DICHVU – PHIEUDICHVU chuyển thành
CHITIETPHIEUDV (MAPHIEUDV, MADV, DONGIA, SOLUONG).

6



2.4. KẾT LUẬN ĐÁNH GIÁ DẠNG CHUẨN
KHACHHANG (MAKH, TENKH, NS, GIOITINH, SDT,SOCMND, DIACHI,
QUOCTICH)

PHIEUDATPHONG (MAPHIEUDATPHONG, NGAYLAP, NGAYDEN, MANV,
MAKH)

CHITIETPHIEUDAT (MACHITIETPHIEUDAT, NGAYTRAPHONG,
SOPHONG, MAPHIEUDATPHONG)
HOADON (MAHD, NGAYLAP, TONGTIEN, MANV, MAPHIEUDATPHONG)
PHONG (SOPHONG, TINHTRANG, MALOAIPHONG)
LOAIPHONG (MALOAIPHONG, TENLOAIPHONG, GIA, SONGUOITOIDA)
PHIEUDICHVU (MAPHIEUDV, NGAYLAP, TONGTIEN,
MAPHIEUDATPHONG)

CHITIETPHIEUDV (MAPHIEUDV, MADV, DONGIA, SOLUONG).
DICHVU (MADV, TENDV, DONGIA)
NHANVIEN (MANV, TENNV, NS, SDT, DIACHI, GIOITINH, LUONG,
NGAYVAOLAM)


KHACHHANG (MAKH, TENKH, NS, SDT,SOCMND, DIACHI)

- Thỏa mãn 1NF vì khơng có các thuộc tính đa trị.
- Thỏa mãn 2NF vì thỏa mã 1NF và các thuộc tính phụ thuộc đầy đủ
vào khóa chính.
- Thỏa mãn 3NF vì thỏa mã 2NF và các thuộc tính khơng khóa phụ
thuộc trực tiếp vào khóa chính.

- Thỏa mãn BCNF vì thỏa mã 3NF và khơng có thuộc tính khóa phụ
thuộc hàm vào thuộc tính khơng khóa.


NHANVIEN (MAKH, TENKH, NS, GIOITINH, SDT,SOCMND, DIACHI,
QUOCTICH)

- Thỏa mãn 1NF vì khơng có các thuộc tính đa trị.
7


- Thỏa mãn 2NF vì thỏa mã 1NF và các thuộc tính phụ thuộc đầy đủ
vào khóa chính.
- Thỏa mãn 3NF vì thỏa mã 2NF và các thuộc tính khơng khóa phụ
thuộc trực tiếp vào khóa chính.
- Thỏa mãn BCNF vì thỏa mã 3NF và khơng có thuộc tính khóa phụ
thuộc hàm vào thuộc tính khơng khóa.


PHIEUDATPHONG (MAPHIEUDATPHONG, NGAYLAP, NGAYDEN,
MANV, MAKH

- Thỏa mãn 1NF vì khơng có các thuộc tính đa trị.
- Thỏa mãn 2NF vì thỏa mã 1NF và các thuộc tính phụ thuộc đầy đủ
vào khóa chính.
- Khơng thỏa mã 3NF do có các thuộc tính khơng phụ thuộc trực tiếp
vào khóa chính.
MAKH  TENKH



HOADON (MAHOADON, NGAYLAP, TIENPHONG, TIENPHATSINH,
TONGTIEN, MANV, MAKH)

- Thỏa mãn 1NF vì khơng có các thuộc tính đa trị.
- Thỏa mãn 2NF vì thỏa mã 1NF và các thuộc tính phụ thuộc đầy đủ
vào khóa chính.
- Khơng thỏa mã 3NF do có các thuộc tính khơng phụ thuộc trực tiếp
vào khóa chính.
MANV  TENNV
MAKH  TENKH


PHONG (SOPHONG, TINHTRANG, MALOAIPHONG)

- Thỏa mãn 1NF vì khơng có các thuộc tính đa trị.
- Thỏa mãn 2NF vì thỏa mã 1NF và các thuộc tính phụ thuộc đầy đủ
vào khóa chính.
- Khơng thỏa mã 3NF do có các thuộc tính khơng phụ thuộc trực tiếp
vào khóa chính.
MALOAIPHONG  TENLOAIPHONG


LOAIPHONG (MALOAIPHONG, TENLOAIPHONG, GIA,
SONGUOITOIDA)

- Thỏa mãn 1NF vì khơng có các thuộc tính đa trị.
8


- Thỏa mãn 2NF vì thỏa mã 1NF và các thuộc tính phụ thuộc đầy đủ

vào khóa chính.
- Thỏa mãn 3NF vì thỏa mã 2NF và các thuộc tính khơng khóa phụ
thuộc trực tiếp vào khóa chính.
- Thỏa mãn BCNF vì thỏa mã 3NF và khơng có thuộc tính khóa phụ
thuộc hàm vào thuộc tính khơng khóa.
• PHIEUTRAPHONG (MAPHIEUTHUE, SOPHONG, NGAYTRAPHONG)
- Thỏa mãn 1NF vì khơng có các thuộc tính đa trị.
- Thỏa mãn 2NF vì thỏa mã 1NF và các thuộc tính phụ thuộc đầy đủ
vào khóa chính.
- Thỏa mãn 3NF vì thỏa mã 2NF và các thuộc tính khơng khóa phụ
thuộc trực tiếp vào khóa chính.
- Thỏa mãn BCNF vì thỏa mã 3NF và khơng có thuộc tính khóa phụ
thuộc hàm vào thuộc tính khơng khóa.

2.5. VẼ MƠ HÌNH QUAN HỆ
9


2.6. ĐẶC TẢ CÁC BẢNG
Chúng ta gồm tổng cộng 7 bảng: KHACHHANG, PHIEUTHUEPHONG,
HOADON, PHONG, LOAIPHONG, NHANVIEN.

Column name
MANV

NHANVIEN
Data type nul
Index
l
Char(10)

Primary
key
10

Chú thích
Mã nhân viên


TENNV

Nvarchar(
50)
Date
Char(10)
Nvarchar(
50)
Char(3)
Int
Date

NS
SDT
DIACHI
GIOITINH
LUONG
NGAYVAOLAM
Column name
MAHD

NGAYLAP

TONGTIEN
MAPHIEUDATPHON
G
MANV
KHACHHANG
Column
name
MAKH
TENKH
GIOITINH
NS
SDT
SOCMND
DIACHI
QUOCTICH

Tên nhân viên
V
V
V

Ngày sinh
Số điện thoại
Địa chỉ

V
V

Giới tính
Lương

Ngày vào làm

HOADON
Data
nul
Index
type
l
Char(10)
Primary
key
Date
Int
Char(10) V Reference
s
Char(10) V Reference
s

Data type

nul
l

Char(10)
Nvarchar(
50)
Char(3)
Date
Char(10)
Char(20)

Nvarchar(
50)
Nvarchar(
50)

Chú thích
Mã hố đơn
Ngày lập
Tổng tiền
Mã phiếu đặt
phịng
Mã nhân viên

Index

Chú thích

Primary
key

Mã khách hàng
Tên khách hàng
Giới tính
Ngày sinh
Số điện thoại
Số CMND
Địa chỉ

V
V


Quốc tịch

11


PHIEUDATPHONG
Column name
MAPHIEUDATPHON
G
NGAYLAPPHIEU
NGAYDEN
MANV
MAKH
CHITIETPHIEUDAT
Column name

Data
type
Char(10)

V

Char(10)

V

MACHITIETPHIEUDAT
NGAYDI
SOPHONG


Date
Char(10)

MAPHIEUDATPHONG

Char(10)

Column name

Data type

SOPHONG

Char(10)

TINHTRANG

Nvarchar(
20)
Char(10)

Column name
MALOAIPHONG

Index

Chú thích

Primary

key

Date
Date
Char(10)

Data
type
Char(10)

MALOAIPHON
G

nul
l

nul
l

Mã phiếu đăng

Ngày lập phiếu
Ngày đến
Reference Mã nhân viên
s
Reference
Mã khách
s
hàng
Index


Chú thích

Primary
key

Mã chi tiết
phiếu đặt
Ngày đi
Số phịng

Referenc
es
Referenc
es

PHONG
nul
Index
l
Primary
key

Mã phiếu đặt
phịng
Chú thích
Số phịng
Tình trạng

V


References

LOAIPHONG
Data type nul
Index
l
Char(10)
Primary
12

Mã loại phịng

Chú thích
Mã loại phịng


key
TENLOAIPHON
G
GIA
SONGUOITOID
A

Nvarchar(
20)
Int
Int

Column name

MAPHIEUDV
NGAYLAP
TONGTIEN
MAPHIEUDATPHON
G
Column name
MAPHIEUDV
MADV
DONGIA
SOLUONG
Column name
MADV
TENDV
DONGIA

V

Tên loại phòng

V

Giá
Số người tối đa

PHIEUDICHVU
Data
nul
Index
type
l

Char(10)
Primary
key
Date
V
Int
Char(10) V Reference
s

CHITIETPHIEUDV
Data type nul
Index
l
Char(10)
Primary
key
Char(10)
Primary
key
Int
Int
V
DICHVU
Data type nul
Index
l
Char(10)
Primary
key
Nvarchar(

V
20)
Int

CHƯƠNG 3: KHAI THÁC CSDL
3.1. Cài đặt các bảng bằng câu lệnh SQL
13

Chú thích
Mã phiếu dịch
vụ
Ngày lập
Tổng tiền
Mã phiếu đặt
phịng
Chú thích

Mã phiếu dịch vụ
Mã dịch vụ
Đơn giá
Số lượng
Chú thích
Mã dịch vụ
Tên dịch vụ
Đơn giá


USE QLKS
CREATE TABLE NHANVIEN
(

MANV CHAR(10) PRIMARY KEY,
TENNV NVARCHAR(50) NOT NULL,
NS DATE,
SDT CHAR(10),
DIACHI NVARCHAR(50),
GIOITINH CHAR(3) CHECK (GIOITINH IN ('NAM', 'NU')),
LUONG INT,
NGAYVAOLAM DATE NOT NULL
)
CREATE TABLE KHACHHANG
(
MAKH CHAR(10) PRIMARY KEY,
TENKH NVARCHAR(50) NOT NULL,
GIOITINH CHAR(3) CHECK (GIOITINH IN ('NAM', 'NU')),
NS DATE NOT NULL,
SDT CHAR(10),
SOCMND CHAR(20) NOT NULL,
DIACHI NVARCHAR(50),
QUOCTICH NVARCHAR(50)
)
CREATE TABLE LOAIPHONG
(
MALOAIPHONG CHAR(10) PRIMARY KEY,
TENLOAIPHONG NVARCHAR(20),
GIA INT NOT NULL,
SONGUOITOIDA INT
)
CREATE TABLE PHONG
(
SOPHONG CHAR(10) PRIMARY KEY,

TINHTRANG NVARCHAR(20) NOT NULL,
MALOAIPHONG CHAR(10) REFERENCES LOAIPHONG(MALOAIPHONG)
)
CREATE TABLE PHIEUDATPHONG
(
MAPHIEUDATPHONG CHAR(10) PRIMARY KEY,
NGAYLAPPHIEU DATE,
NGAYDEN DATE,
MANV CHAR (10) REFERENCES NHANVIEN(MANV),
MAKH CHAR (10) REFERENCES KHACHHANG(MAKH)
)
CREATE TABLE CHITIETPHIEUDAT
(
MACHITIETPHIEUDAT CHAR(10) PRIMARY KEY,
NGAYTRAPHONG DATE,
SOPHONG CHAR (10) REFERENCES PHONG(SOPHONG),
MAPHIEUDATPHONG CHAR (10) REFERENCES
PHIEUDATPHONG(MAPHIEUDATPHONG)
)

14


CREATE TABLE HOADON
(
MAHD CHAR(10) PRIMARY KEY,
NGAYLAP DATE NOT NULL,
TONGTIEN INT NOT NULL,
MANV CHAR (10) REFERENCES NHANVIEN(MANV),
MAPHIEUDATPHONG CHAR (10) REFERENCES

PHIEUDATPHONG(MAPHIEUDATPHONG)
)
CREATE TABLE PHIEUDICHVU
(
MAPHIEUDV CHAR(10) PRIMARY KEY,
NGAYLAP DATE NOT NULL,
TONGTIEN INT NOT NULL,
MAPHIEUDATPHONG CHAR (10) REFERENCES
PHIEUDATPHONG(MAPHIEUDATPHONG)
)
CREATE TABLE DICHVU
(
MADV CHAR(10) PRIMARY KEY,
TENDV NVARCHAR(50) NOT NULL,
DONGIA INT NOT NULL
)
CREATE TABLE CHITIETPHEUDV
(
MAPHIEUDV CHAR (10) REFERENCES PHIEUDICHVU(MAPHIEUDV),
MADV CHAR (10) REFERENCES DICHVU(MADV),
DONGIA INT NOT NULL,
SOLUONG INT,
PRIMARY KEY(MAPHIEUDV, MADV)
)

3.2 30 yêu cầu cho đại số quan hệ và truy vấn SQL
1. Đưa ra mã nhân viên, tên nhân viên, lương của các nhân viên trong khách
sạn
Đại số quan hệ
MANV,TENNV, LUONG


(NHANVIEN)

Truy vấn SQL

SELECT MANV, TENNV,LUONG
FROM NHANVIEN

2. Lương trung bình của nhân viên trong khách sạn.
Đại số quan hệ
15


ℑ AVG(LUONG) (NHANVIEN)
Truy vấn SQL

SELECT AVG(LUONG)
FROM NHANVIEN

3. Đưa ra đơn giá của dịch vụ giặt ủi
Đại số quan hệ
DONGIA( TENDV = ‘giặt ủi’ (DICHVU))
Truy vấn SQL

SELECT DONGIA
FROM DICHVU
WHERE TENDV = N'giặt ủi'

4. Đưa ra đỉa chỉ và số điện thoại của khách hàng Nguyễn Văn A
Đại số quan hệ

SDT,DIACHI ( TENKH = ‘Nguyễn Văn A’ (KHACHHANG))
Truy vấn SQL

SELECT SDT,DIACHI
FROM KHACHHANG
WHERE TENKH = 'Nguyễn Văn A'

5. Đưa ra tình trạng phịng của phòng số 123
Đại số quan hệ
TINHTRANG ( SOPHONG = ‘123’ (PHONG))
Truy vấn SQL

SELECT TINHTRANG
FROM PHONG
WHERE SOPHONG = '123'

6. Đưa ra mã nhân viên, họ tên, mức lương và ngày vào làm của các nhân viên
nữ
Đại số quan hệ
MANV,TENNV,LUONG,NGAYVAOLAM

( GIOITINH = 'NỮ' (NHANVIEN))

Truy vấn SQL

SELECT MANV,TENNV,LUONG,NGAYVAOLAM
FROM NHANVIEN
WHERE GIOITINH = N'NỮ'

7. Đưa ra tên các loại phòng và giá của mỗi loại

16


Đại số quan hệ
TENLOAIPHONG, GIA (LOAIPHONG)
Truy vấn SQL

SELECT TENLOAIPHONG,GIA
FROM LOAIPHONG

8. Đưa ra ngày lập các hố đơn có tổng tiền lớn hơn 5000
Đại số quan hệ
NGAYLAP ( TONGTIEN > 1000 (HOADON))
Truy vấn SQL

SELECT NGAYLAP
FROM HOADON
WHERE TONGTIEN > 1000

9. Đưa ra số lượng dịch vụ mã DV02 của phiếu dịch vụ mã PDV123
Đại số quan hệ
SOLUONG ( MADV='DV02' AND MAPHIEUDV='PDV123' (CHITIETPHEUDV))
Truy vấn SQL

SELECT SOLUONG
FROM CHITIETPHEUDV
WHERE MADV='DV02' AND MAPHIEUDV='PDV123'

10.Đưa ra tổng số tiền hoá đơn mà nhân viên tên Nguyễn Văn A đã lập
Đại số quan hệ

ℑ SUM(TONGTIEN) ( TENNV = 'Nguyễn Văn A' AND HOADON.MANV = NHANVIEN.MANV
(HOADON x NHANVIEN))
Truy vấn SQL

SELECT SUM(TONGTIEN)
FROM HOADON, NHANVIEN
WHERE TENNV = N'Nguyễn Văn A' AND HOADON.MANV = NHANVIEN.MANV

11.Đưa ra họ tên và mức lương của nhân viên mã NV03
Đại số quan hệ
TENNV,LUONG( MANV = ‘NV03’(NHANVIEN))
Truy vấn SQL
SELECT TENNV,LUONG
FROM NHANVIEN
WHERE MANV = 'NV03'

17


12.Đưa ra các số phòng thuộc loại phòng lớn
Đại số quan hệ
SOPHONG ( TENLOAIPHONG = ‘lớn’(PHONG x LOAIPHONG))
Truy vấn SQL

SELECT SOPHONG
FROM PHONG, LOAIPHONG
WHERE TENLOAIPHONG = N'lớn' AND PHONG.MALOAIPHONG =
LOAIPHONG.MALOAIPHONG

13.Đưa ra mã các phiếu đặt phòng mà nhân viên Nguyễn Văn A đã lập

Đại số quan hệ
MAPHIEUDATPHONG(TENNV = ‘Nguyễn Văn A’ AND PHIEUDATPHONG.MANV = NHANVIEN.MANV
(PHIEUDATPHONG X NHANVIEN))
Truy vấn SQL

SELECT MAPHIEUDATPHONG
FROM PHIEUDATPHONG P, NHANVIEN NV
WHERE TENNV = 'Nguyễn Văn A' AND NV.MANV = P.MANV

14.Đưa ra các phòng còn trống cho 3 người
Đại số quan hệ
SOPHONG ( PHONG.MALOAIPHONG = LOAIPHONG.MALOAIPHONG AND SONGUOITOIDA > 3 AND
TINHTRANG = 'CÒN TRỐNG'(PHONG x LOAIPHONG))
Truy vấn SQL

SELECT SOPHONG
FROM PHONG P, LOAIPHONG LP
WHERE P.MALOAIPHONG = LP.MALOAIPHONG AND SONGUOITOIDA > 3 AND
TINHTRANG = N'CÒN TRỐNG'

15.Đưa ra mã khách hàng, tên khách hàng đến trong ngày 15-11-2020
Đại số quan hệ
( NGAYDEN = '2020-05-05' AND
KHACHHANG.MAKH = PHIEUDATPHONG.MAKH (KHACHHANG x
PHIEUTHUEPHONG))
KHACHHANG.MAKH,TENKH

Truy vấn SQL

SELECT KH.MAKH,TENKH

FROM KHACHHANG KH ,PHIEUDATPHONG PDP
WHERE KH.MAKH = PDP.MAKH AND NGAYDEN = '2020-05-05'

18


16.Đưa ra tên, mã nhân viên, mức lương của nhân viên có lương từ 20000 đến
30000.
Đại số quan hệ
(

MANV, TENNV, LUONG LUONG>=20000 AND LUONG<=30000

(NHANVIEN))

Truy vấn SQL

SELECT MANV,TENNV,LUONG
FROM NHANVIEN
WHERE LUONG BETWEEN 20000 AND 30000

17.Đưa ra số phòng và giá tiền các phòng còn trống
Đại số quan hệ
SOPHONG,GIA(TINHTRANG = ‘Còn trống’ AND
PHONG.MALOAIPHONG = LOAIPHONG.MALOAIPHONG

(PHONG x LOAIPHONG))

Truy vấn SQL


SELECT SOPHONG,GIA
FROM PHONG,LOAIPHONG
WHERE TINHTRANG = N'Còn trống' AND
PHONG.MALOAIPHONG = LOAIPHONG.MALOAIPHONG

18.Đưa ra mã, tên của các nhân viên đã lập hoá đơn trong ngày 12-09-2020
Đại số quan hệ
( NGAYLAP = ‘2020-09-12’ AND
HOADON.MANV = NHANVIEN.MANV (NHANVIEN x HOADON))
HOADON.MANV,TENNV

Truy vấn SQL

SELECT HOADON.MANV,TENNV
FROM HOADON,NHANVIEN
WHERE NGAYLAP = '2020-09-12' AND HOADON.MANV = NHANVIEN.MANV

19.Đưa ra số tiền dịch vụ mà khách hàng mã KH124 phải trả
Đại số quan hệ
TONGTIEN( MAKH = ‘KH124’ AND PHIEUDICHVU . MAPHIEUDATPHONG =
PHIEUDATPHONG.MAPHIEUDATPHONG

(PHIEUDICHVU x PHIEUDATPHONG))
Truy vấn SQL

SELECT TONGTIEN
FROM PHIEUDICHVU PDV,PHIEUDATPHONG PDP
WHERE PDV.MAPHIEUDATPHONG = PDP.MAPHIEUDATPHONG AND MAKH = 'KH124'

19



20.Đưa ra số hoá đơn mà nhân viên viên Nguyễn Văn Mạnh đã lập
Đại số quan hệ
ℑ COUNT()( TENNV = ‘Nguyễn Văn Mạnh’ AND
HOADON.MANV = NHANVIEN.MANV (NHANVIEN x HOADON)
Truy vấn SQL

SELECT COUNT(*) AS SOLUONG
FROM HOADON,NHANVIEN
WHERE TENNV = N'Nguyễn Văn Mạnh' AND HOADON.MANV = NHANVIEN.MANV

21.Đưa ra số phịng, tình trạng của các phịng có giá nhỏ hơn 1500 và cịn trống
Đại số quan hệ
SOPHONG ( GIA < 1500 AND TINHTRANG = ‘Còn trống’
LOAIPHONG.MALOAIPHONG = PHONG.MALOAIPHONG

(LOAIPHONG x PHONG))

Truy vấn SQL

SELECT SOPHONG
FROM PHONG AS P,LOAIPHONG AS LP
WHERE GIA < 1500 AND TINHTRANG = N'Còn trống' AND
P.MALOAIPHONG = LP.MALOAIPHONG

22.Đưa ra ngày trả phòng 12 của khách hàng mã KH124
Đại số quan hệ
NGAYTRAPHONG (SOPHONG='12' AND MAKH='KH124' AND
PHIEUDATPHONG.MAPHIEUDATPHONG=CHITIETPHIEUDAT. MAPHIEUDATPHONG


(PHIEUDATPHONG x CHITIETPHIEUDAT))
Truy vấn SQL

SELECT NGAYTRAPHONG
FROM PHIEUDATPHONG PDP,CHITIETPHIEUDAT CTPD
WHERE PDP.MAPHIEUDATPHONG = CTPD.MACHITIETPHIEUDAT
AND SOPHONG = '12' AND MAKH = 'KH124'

23.Đưa ra mã nhân viên, họ tên đầy đủ của nhân viên tên là Khánh có lập hố
đơn vào ngày 06-03-2007
Đại số quan hệ
(
HOADON.MANV(NHANVIEN x HOADON))

NHANVIEN.MANV, TENNV NGAYLAP = ‘2007-03-06’ AND TENNV = ‘%Khánh’ AND NHANVIEN.MANV =

Truy vấn SQL

SELECT NHANVIEN.MANV,TENNV
FROM NHANVIEN, HOADON

20


WHERE NGAYLAP = '2007-03-06' AND TENNV LIKE N'%Khánh'
AND NHANVIEN.MANV = HOADON.MANV

24.Đưa ra tên nhân viên đã lập phiếu đặt phòng cho khách hàng mã KH124
Đại số quan hệ

( NHANVIEN.MANV=PHIEUDATPHONG.MANV AND MAKH = 'KH124'
(NHANVIEN x PHIEUDATPHONG))
NHANVIEN.MANV,TENNV

Truy vấn SQL

SELECT NV.MANV,TENNV
FROM NHANVIEN NV, PHIEUDATPHONG PDP
WHERE NV.MANV=PDP.MANV AND MAKH = 'KH124'

25.Đưa ra tổng tiền mà khách hàng mã KH124 phải trả
Đại số quan hệ
TONGTIEN ( KH.MAKH = 'KH124' AND KHACHHANG.MAKH=PHIEUDATPHONG.MAPHIEUDATPHONG
AND PHIEUDATPHONG.MAPHIEUDATPHONG = HOADON.MAPHIEUDATPHONG (KHACHHANG
x HOADON X PHIEUDATPHONG))
Truy vấn SQL

SELECT TONGTIEN
FROM KHACHHANG KH,HOADON HD,PHIEUDATPHONG PDP
WHERE KH.MAKH = PDP.MAKH AND PDP.MAPHIEUDATPHONG =
HD.MAPHIEUDATPHONG
AND KH.MAKH = 'KH124'

26.Đưa ra tên, số điện thoại của khách hàng trả hoá đơn mã 123
Đại số quan hệ
TENKH,SDT( MAHOADON = 'HD884' AND
PHIEUDATPHONG.MAKH = KHACHHANG.MAKH AND PHIEUDATPHONG.MAPHIEUDATPHONG =

(KHACHHANG x HOADON x
PHIEUDATPHONG))

HOADON.MAPHIEUDATPHONG

Truy vấn SQL

SELECT TENKH,SDT
FROM KHACHHANG KH,HOADON HD,PHIEUDATPHONG PDP
WHERE KH.MAKH = PDP.MAKH AND PDP.MAPHIEUDATPHONG =
HD.MAPHIEUDATPHONG AND MAHD = 'HD884'

27.Đưa ra mã, tên khách hàng đã thuê phòng 21
Đại số quan hệ

21


KHACHHANG.MAKH,TENKH

( SOPHONG = '21'AND CHITIETPHIEUDAT.MAPHIEUDATPHONG =

PHIEUDATPHONG.MAPHIEUDATPHONG AND KHACHHANG.MAKH = KHACHHANG.MAKH

(CHITIETPHIEUDAT x KHACHHANG x PHIEUDATPHONG))
Truy vấn SQL

SELECT KH.MAKH,TENKH
FROM CHITIETPHIEUDAT CTPD,PHIEUDATPHONG PDP,KHACHHANG KH
WHERE CTPD.MAPHIEUDATPHONG = PDP.MAPHIEUDATPHONG AND KH.MAKH =
PDP.MAKH AND SOPHONG = '21'

28.Đưa ra các nhân viên có mức lương lớn hơn mức trung bình

Đại số quan hệ
MANV,TENNV( MANV > ℑ AVG(LUONG) (NHANVIEN) (NHANVIEN))
Truy vấn SQL
SELECT MANV,TENNV FROM NHANVIEN WHERE LUONG >
(SELECT AVG(LUONG) FROM NHANVIEN)

29.Đưa ra số người tối đa có thể ở phòng số 120
Đại số quan hệ
SONGUOITOIDA( SOPHONG = ‘120’(PHONG x LOAIPHONG))
Truy vấn SQL

SELECT SONGUOITOIDA
FROM PHONG,LOAIPHONG
WHERE SOPHONG = '120' AND PHONG.MALOAIPHONG =
LOAIPHONG.MALOAIPHONG

30.Đưa ra các phòng được trả vào ngày 17-11-2020 và trong tình trạng chưa
được dọn dẹp
Đại số quan hệ
PHONG.SOPHONG ( PHONG.SOPHONG = CHITIETPHIEUDAT.SOPHONG AND TINHTRANG = N'CHƯA
ĐƯỢC DỌN DẸP' AND NGAYTRAPHONG = '2020-11-17' (PHONG x
CHITIETPHIEUDAT))
Truy vấn SQL

SELECT PHONG.SOPHONG
FROM PHONG, CHITIETPHIEUDAT
WHERE PHONG.SOPHONG = CHITIETPHIEUDAT.SOPHONG AND TINHTRANG =
N'CHƯA ĐƯỢC DỌN DẸP' AND NGAYTRAPHONG = '2020-11-17'

3.3 Khai thác dữ liệu bằng ngôn ngữ TSQL

1. Tạo thủ tục đưa ra tổng tiền hoá đơn trong một ngày cho trước
22


Câu lệnh
CREATE PROC TONGHD(@NGAY DATE)
AS
BEGIN
SELECT SUM(TONGTIEN)
FROM HOADON
WHERE NGAYLAP=@NGAY
END
Thực thi
EXEC TONGHD @NGAY = '2019-12-25'
2. Tạo thủ tục đưa ra số người tối đa, tình trạng của một phịng
Câu lệnh
CREATE PROC SONGUOI(@SOPHONG CHAR(10))
AS
BEGIN
SELECT SONGUOITOIDA, TINHTRANG
FROM LOAIPHONG,PHONG
WHERE PHONG.MALOAIPHONG =
LOAIPHONG.MALOAIPHONG AND SOPHONG = @SOPHONG
END
Thực thi
EXEC SONGUOI @SOPHONG = '1'
3. Tạo thủ tục tìm kiếm bệnh nhân theo tất cả các trường:
Câu lệnh
CREATE PROC TK_KH1
(

@MA CHAR(10),
@TEN NVARCHAR(50),
@GT NVARCHAR(3),
@NS DATE,
@SDT NVARCHAR(20),
@CMND NVARCHAR(20),
@DIACHI NVARCHAR(50),
23


@QT NVARCHAR(50)
)
AS
BEGIN
SELECT MAKH as N'Mã khách hàng',
TENKH as N'Tên khách hàng', NS as N'Ngày Sinh',
GIOITINH as N'Giới Tính', SDT as N'SĐT',
SOCMND as 'CMND', DIACHI as N'Địa Chỉ' ,
QUOCTICH as N'Quốc tịch'
FROM KHACHHANG
WHERE
(MAKH = @MA OR @MA = '')
AND (TENKH LIKE N'%'+ @TEN + '%' OR @TEN = '')
AND (GIOITINH = @GT OR @GT = '')
AND (NS = @NS OR @NS = '' OR @NS = '')
AND (SDT LIKE '%' + @SDT + '%' OR @SDT = '')
AND (SOCMND LIKE '%' + @CMND + '%' OR @CMND =
'')
AND (DIACHI LIKE '%' + @DIACHI + '%' OR @DIACHI =
'')

AND (QUOCTICH = @QT OR @QT = '')
END
Thực thi
exec TK_KH1 '',N'khánh','','','','','',''
4. Tạo hàm có một tham số là @MANV kiểu CHAR(10), thực hiện
thống kê số hoá đơn theo mã nhân viên nhập vào, nếu giá trị biến
@MANV nhập vào là trống hoặc NULL thì thống kê số hoá đơn đã
lập cho từng nhân viên
Câu lệnh
CREATE FUNCTION ThongKeHD (@MANV CHAR(10))
RETURNS @BangThongKe TABLE
(
MANV CHAR(10),
TENNV NVARCHAR(50),
TongSoHD INT
)
AS
BEGIN
IF(@MANV IS NULL) OR (@MANV = '')
24


INSERT INTO @BangThongKe
SELECT NV.MANV, TENNV, COUNT(MAHD)
FROM NHANVIEN NV, HOADON HD
WHERE NV.MANV = HD.MANV
GROUP BY NV.MANV, TENNV
ELSE
INSERT INTO @BangThongKe
SELECT NV.MANV, TENNV, COUNT(MAHD)

FROM NHANVIEN NV, HOADON HD
WHERE NV.MANV = HD.MANV AND NV.MANV =
@MANV
GROUP BY NV.MANV, TENNV
RETURN
END
Thực thi
SELECT * FROM ThongKeHD('')
SELECT * FROM ThongKeHD('NV21')
5. Đưa ra dịch vụ được sử dụng nhiều nhất trong n ngày gần đây
Câu lệnh
CREATE PROC DV_NHIEUNHAT (@DAY INT)
AS
BEGIN
SELECT TOP(1) WITH TIES MADV,COUNT(MADV) AS
SOLAN
FROM CHITIETPHEUDV CTDV,PHIEUDICHVU PDV
WHERE CTDV.MAPHIEUDV = PDV.MAPHIEUDV AND
DATEADD(DAY,-@DAY,GETDATE())GROUP BY MADV
ORDER BY COUNT(MADV) DESC
END
Thực thi
EXEC DV_NHIEUNHAT @DAY=30
6. Thống kê số lần dịch vụ x được sử dụng từng tháng trong năm
Câu lệnh
CREATE FUNCTION THONGKEDV (@MADV
CHAR(10),@YEAR CHAR(4))
25



×