1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo bài tập lớn nhóm 2 quản lý cho thuê phòng khách sạn

50 2 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Quản lý cho thuê phòng khách sạn
Tác giả Nguyễn Thị Hương, Phạm Xuân Tú, Đoàn Ngô Hiếu, Vi Thị Khánh Huyền
Người hướng dẫn Ths Trịnh Thị Xuân
Trường học Trường Đại học Mở Hà Nội
Chuyên ngành Hệ Quản Trị Cơ Sở Dữ Liệu
Thể loại Bài tập lớn
Năm xuất bản 2019
Thành phố Hà Nội
Định dạng
Số trang 50
Dung lượng 1,81 MB

Cấu trúc

  • I. Phát biểu bài toán (4)
  • II. Thiết kế CSDL mức khái niệm 1. Xác định các thực thể và thuộc tính (4)
    • 2. Xác định các liên kết (5)
  • III. Thiết kế CSDL mức logic – mô hình quan hệ 1. Chuyển đổi thực thể mạnh (5)
    • 2. Chuyển đổi quan hệ 1 – n (5)
    • 3. Chuyển đổi quan hệ m – n (6)
    • 4. Cơ sở dữ liệu sau khi chuyển (6)
    • 5. Danh sách các bảng (6)
  • IV. Tạo cơ sở dữ liệu 1. Tạo sơ đồ liên kết giữa các bảng (10)
    • 2. Nhập dữ liệu cho từng bảng (10)
  • V. Xây dựng các View cho cơ sở dữ liệu (0)
  • VI. Xây dựng các Procedure cho cơ sở dữ liệu (0)
  • VII. Xây dựng các Trigger cho cơ sở dữ liệu (0)
  • VIII. Phân quyền và bảo mật cơ sở dữ liệu (0)
  • IX. Phân tán cơ sở dữ liệu (42)

Nội dung

PHÂN CÔNG VÀ KẾ HOẠCH THỰC HIỆNPhát biểu bài toánThiết kế CSDL mức khái niệmThiết kế CSDL mức logic – mô hình quan hệCả nhómTạo cơ sở dữ liệuXây dựng các View cho cơ sở dữ liệu Đoàn Ngô

Phát biểu bài toán

Khách sạn là một công trình kiến trúc kiên cố, có nhiều tầng, nhiều phòng ngủ được trang bị các thiết bị, tiện nghi, đồ đạc chuyên dùng nhằm mục đích kinh doanh các dịch vụ lưu trú, phục vụ ăn uống và các dịch vụ.

Mỗi khách hàng khi đến thuê phòng của khách sạn sẽ được lưu trữ với thông tin về mã khách hàng, chứng minh nhân dân, họ tên khách hàng, ngày sinh, giới tính,quốc tịch, số điện thoại Mỗi khách hàng được phân biệt nhau bởi mã khách hàng.

Mỗi nhân viên trong khách sạn được lưu trữ các thông tin cá nhân: mã nhân viên, họ tên nhân viên, ngày sinh, giới tính, số điện thoại Mỗi nhân viên được phân biệt với nhau bởi mã nhân viên.

Mỗi chức vụ có nhiều nhân viên, mỗi chức vụ gồm có: mã chức vụ, tên chức vụ, hệ số lương

Khách hàng thuê phòng với các thông tin của phòng: mã phòng, số điện thoại phòng, tình trạng của phòng Mỗi phòng được phân biệt với nhau bởi mã phòng.

Mỗi phòng thuộc 1 loại phòng Mỗi loại phòng bao gồm nhiều phòng, mỗi loại phòng gồm có: mã loại phòng, tên loại phòng, số người ở được tối đa, giá phòng.

Khi khách hàng đến thuê phòng, nhân viên khách sạn sẽ lưu thông tin của khách hàng vào hệ thống Và khi khách hàng có yêu cầu trả phòng, nhân viên sẽ lập hóa đơn cho khách hàng, mỗi nhân viên có thể lập được nhiều hóa đơn, mỗi hóa đơn bao gồm các thông tin: mã hóa đơn, số người khách hàng tới, ngày đến, ngày dự kiến đi, ngày lập hóa đơn và số tiền đặt cọc. Mỗi hóa đơn có thể thuê được nhiều phòng, được kê trong bảng chi tiết hóa đơn với các thông tin liên quan. Để đáp ứng đầy đủ các yêu cầu để phục vụ khách hàng, khách sạn có mở thêm các gói dịch vụ, với mỗi gói dịch vụ sẽ có thông tin: mã dịch vụ, tên dịch vụ, giá dịch vụ Mỗi phiếu chi tiết hóa đơn sẽ có nhiều dịch vụ khác nhau được kê trong bảng dịch vụ sử dụng trong đó ghi rõ số lượng sử dụng dịch vụ và ngày sử dụng dịch vụ của khách hàng.

Thiết kế CSDL mức khái niệm 1 Xác định các thực thể và thuộc tính

Xác định các liên kết

CHỨC VỤ - Có - NHÂN VIÊN: 1-n

NHÂN VIÊN - Lập - HÓA ĐƠN: 1-n

HÓA ĐƠN - Chứa - DỊCH VỤ: m-n

KHÁCH HÀNG - Có - HÓA ĐƠN: 1-n

Thiết kế CSDL mức logic – mô hình quan hệ 1 Chuyển đổi thực thể mạnh

Chuyển đổi quan hệ 1 – n

R1.1: tblNhanVien (MaNV,TenNV,NgaySinh,GioiTinh,Sdt_NV, MaCV)

R4.1: tblPhong (MaP,SDt_P, TinhTrang, MaLP)

R7.1:tblHoaDon(MaHD,SoNguoi,NgayDen,NgayDKDi,NgayLap,TienDat Coc, MaNV)

R7.2:tblHoaDon(MaHD,SoNguoi,NgayDen,NgayDKDi,NgayLap,TienDatCoc,MaNV, MaKH)

Chuyển đổi quan hệ m – n

Cách chuyển: Cho mỗi mối liên kết MN, sinh ra một quan hệ mới R, chuyển khóa chính của hai quan hệ phía M và N thành khóa ngoại của quan hệ R Khóa chính của R là sự kết hợp của hai khóa ngoại

Cơ sở dữ liệu sau khi chuyển

R1: tblNhanVien (MaNV,TenNV,NgaySinh,GioiTinh,Sdt_NV, MaCV) R2: tblChucVu (MaCV, TenCV, HSL)

R3:tblKhachHang(MaKH,CMND,TenKH,NgaySinh,GioiTinh,Sdt_KH) R4: tblPhong (MaP, Sdt_P, TinhTrang, MaLP)

R5: tblLoaiPhong (MaLP, TenLP, SoNguoiMax, GiaP )

R7:tblHoaDon(MaHD,SoNguoi,NgayDen,NgayDKDi,NgayLap,TienDatCoc, MaNV, MaKH)

Danh sách các bảng

tblNhanVien: lưu trữ thông tin của nhân viên

T Tên trường Kiểu dữ liệu Ràng buộc Ghi chú

1 sMaNV varchar(10) PK mã nhân viên

2 sTenNV Nvarchar(25) tên nhân viên

4 sGioitinh nvarchar(3) chỉ nhận giá trị

“nam” hoặc “nữ” giới tính

5 sMaCV varchar(10) FK mã chức vụ

6 sSdt_NV nvarchar(10) số điện thoại của nhân viên tblChucVu:

STT Tên trường Kiểu dữ liệu Ràng buộc Ghi chú

1 sMaCV varchar(10) PK mã chức vụ

2 sTenCV Nvarchar(25) tên chức vụ

3 fHSL float hệ số lương tblKhachHang

STT Tên trường Kiểu dữ liệu Ràng buộc Ghi chú

1 sMaKH varchar(10) PK mã khách hàng

3 sTenKH Nvarchar(25) tên khách hàng

5 sGioitinh nvarchar(3) chỉ nhận giá trị

“nam” hoặc “nữ” Giới tính

6 sSdt_KH nvarchar(10) số điện thoại của khách hàng

T Tên trường Kiểu dữ liệu Ràng buộc Ghi chú

1 sMaP varchar(10) PK mã phòng

3 sTinhtrang Nvarchar(3) Chỉ nhận giá trị

‘Còn’ hoặc ‘Hết’ tình trạng còn phòng hay hết phòng

4 sMaLP varchar(10) FK mã loại phòng tblLoaiPhong

STT Tên trường Kiểu dữ liệu Ràng buộc Ghi chú

1 sMaLP varchar(10) PK mã loại phòng

2 sTenLP Nvarchar(25) tên loại phòng

3 iSonguoima x int số người max

4 fGiaphong float giá phòng tblDichVu

STT Tên trường Kiểu dữ liệu Ràng buộc Ghi chú

1 sMaDV varchar(10) PK mã dịch vụ

2 sTenDV Nvarchar(25) tên dịch vụ

3 fGiaDV float giá dịch vụ

STT Tên trường Kiểu dữ liệu Ràng buộc Ghi chú

1 sMaHD varchar(10) PK mã hóa đơn

4 dNgayDKDI datetime ngày đăng kí đi

6 fTiendatcoc float tiền đặt cọc

7 sMaNV varchar(10) FK mã nhân viên

8 sMaKH varchar(10) FK mã khách hàng tblDichVuSuDung

STT Tên trường Kiểu dữ liệu Ràng buộc Ghi chú

1 sMaHD varchar(10) PK mã HĐ

2 sMaDV varchar(10) FK mã dịch vụ

3 iSoluong int số lượng tblCTHD

STT Tên trường Kiểu dữ liệu Ràng buộc Ghi chú

1 sMaHD varchar(10) PK mã HĐ

2 sMaP varchar(10) FK mã phòng

Tạo cơ sở dữ liệu 1 Tạo sơ đồ liên kết giữa các bảng

Nhập dữ liệu cho từng bảng

INSERT INTO tblNhanVien sMaNV sTenNV dNS sGioitinh sMaCV sSdt_NV ( , , , , , ) VALUES('NV1' ,'Nguyen Van Hoang', '1999/04/16' 'Nam' 'CV2' '0982860164' , , , ), ('NV2' ,'Nguyen Thuy Duong', '2002/01/01' 'Nu' 'CV3' '0901012002' , , , ), ('NV3' ,'Hoang Bao An', '2000/08/11' 'Nu' 'CV5' '0962091604' , , , ),

( 'NV4' ,'Pham Tien Dat', '1995/01/01' 'Nam' 'CV6' '0935465845' , , , ),

('NV5' ,'Bui Dinh Dat', '1998/05/25' 'Nam' 'CV7' '0984654851' , , , ),

('NV6' ,'Le Huong Lan', '1996/08/11' 'Nu' 'CV1' '0945156354' , , , ),

('NV7' ,'Luu Phuong Anh', '1999/10/06' 'Nu' 'CV9' '0962512032' , , , ),

( 'NV8' ,'Doan Hai Nam', '1996/02/20' 'Nam' 'CV10' '0984251203' , , , ),

( 'NV9' ,'Dinh Cong Hai', '1997/11/11' 'Nam' 'CV8' '0985654212' , , , ),

('NV10' ,'Hoang Thao Quyen', '1989/08/25' 'Nu' 'CV6' '0975654215' , , , )

INSERT INTO tblChucVu sMaCV sTenCV fHSL ( , , )

INSERT INTO tblKhachHang sMaKH sCMND sTenKH sNgaysinh sGioitinh sSdt_KH ( , , , , , )

VALUES('KH1' '123456789' , ,'Hoang Tung Phong', '1995/02/05' 'Nam' '0985456985' , , ), ('KH2' '987654321' , ,'Pham Van Tien', '1999/05/04' 'Nam' '0975654254' , , ), ( 'KH3' '678954321' , ,'Nguyen Thi Hanh', '2000/06/20' 'Nu' '0964254265' , , ), ( 'KH4' '654845321' , ,'Nguyen Thuy Hanh', '1998/05/24' 'Nu' '0965254152' , , ), ( 'KH5' '521000213' , ,'Bui Hoang Oanh', '2000/04/29' 'Nu' '0984654215' , , ), ('KH6' '589789987' , ,'Nguyen Thuy Linh', '1990/12/31' 'Nu' '0965485658' , , ), ( 'KH7' '654456546' , ,'Pham Tien Dat', '1997/09/15' 'Nam' '0984654254' , , ), ( 'KH8' '666688888' , ,'Pham Xuan Tu', '1999/04/16' 'Nam' '0988886666' , , ), ('KH9' '987456085' , ,'Phan Phuong Linh', '1996/10/20' 'Nu' '0974652102' , , ), ( 'KH10' '963258741' , ,'Hoang Thuy Dung', '2001/01/20' 'Nu' '0966668888' , , )

12SQL Server – Nhóm 2 d Kết quả: e Cấp quyền INSERT vào bảng tblKhachHang, tblNhanVien cho người dùng dnh:

3 Tạo tài khoản cho Nguyễn Thị Hương: a Tạo tài khoản:

CREATE LOGIN nguyenhuong WITH PASSWORD = '123456' b Tạo người dùng tương ứng:

CREATE USER nth FOR LOGIN nguyenhuong c Đăng nhập: d Kết quả:

40SQL Server – Nhóm 2 e Cấp quyền exec thủ tục cho người dùng nth:

GRANT EXECUTE ON prDemPhong_SDDV TO nth

GRANT EXECUTE ON prDSKH_NamSinh TO nth

GRANT EXECUTE ON dbo.prGiamgiaDV TO nth

4 Tạo tài khoản cho Vi Thị Khánh Huyền: a Tạo tài khoản:

CREATE LOGIN khanhhuyen WITH PASSWORD = '123456' b Tạo người dùng tương ứng:

CREATE USER vtkh FOR LOGIN khanhhuyen c Đăng nhập: d Kết quả:

41SQL Server – Nhóm 2 e Cấp quyền chỉ xem cho cho người dùng btkh:

IX Phân tán cơ sở dữ liệu:

Tạo 1 linkserver kết nối từ máy chủ sang máy ảo có tên 'MAY1':

@datasrc = '192.168.52.128'; a Kiểm tra kết nối:

EXEC sp_linkedservers b Đăng nhập kết nối:

EXEC master.dbo.sp_addlinkedsrvlogin

Tạo 1 linkserver kết nối từ máy chủ sang máy ảo có tên 'MAY2':

@datasrc = '192.168.52.129'; a Kiểm tra kết nối:

42SQL Server – Nhóm 2 b Đăng nhập kết nối:

EXEC master.dbo.sp_addlinkedsrvlogin

Phân tán ngang bảng tblDichVu

Thủ tục thêm mới dịch vụ, phân tán ngang bảng tblDichVu:

CREATE PROC prInsertDV(@MaDV varchar(10), @TenDV nvarchar(25), @GiaDV float)

IF EXISTS (SELECT * FROM tblDichVu WHERE sMaDV @MaDV)

PRINT N'Tồn tại mã dịch vụ: ' + @MaDV END

BEGIN INSERT INTO tblDichVu(sMaDV,sTenDV,fGiaDV)

INSERT INTO MAY1.BTL_SQLServer_Nhom_2.dbo.tblDichVu(sMaDV,sTenDV,fGia DV)

VALUES(@MaDV, @TenDV, @GiaDV) PRINT N'Đã thêm vào máy 1 thành công dịch vụ mã: ' +@MaDV

BEGIN INSERT INTO tblDichVu(sMaDV,sTenDV,fGiaDV)

INSERT INTO MAY2.BTL_SQLServer_Nhom_2.dbo.tblDichVu(sMaDV,sTenDV,fGia DV)

VALUES(@MaDV, @TenDV, @GiaDV) PRINT N'Đã thêm vào máy 2 thành công dịch vụ mã: ' +@MaDV

CREATE DATABASE BTL_SQLServer_Nhom_2 COLLATE

CREATE TABLE tblKhachHang( sMaKH varchar(10) NOT NULL PRIMARY KEY, sTenKH nvarchar(25)

CREATE TABLE tblDichVu( sMaDV varchar(10) NOT NULL PRIMARY KEY, sTenDV nvarchar(25), fGiaDV float

CREATE DATABASE BTL_SQLServer_Nhom_2 COLLATE

CREATE TABLE tblKhachHang( sMaKH varchar(10) NOT NULL PRIMARY KEY, sCMND nvarchar(25), sNgaysinh datetime, sGioitinh nvarchar(3) CHECK (sGioitinh=N'Nam' or sGioitinh=N'Nu'), sSdt_KH nvarchar(10)

CREATE TABLE tblDichVu( sMaDV varchar(10) NOT NULL PRIMARY KEY, sTenDV nvarchar(25), fGiaDV float

- Nếu giá dịch vụ lớn hơn 1500 thì thêm vào máy 1:

- Ngược lại thêm vào máy 2:

EXEC prInsertDV 'DV12','Ca Nhac','500'

Phân tán dọc bảng tblKhachHang

Thủ tục thêm mới khách hàng, phân tán dọc bảng tblKhachHang

CREATE PROC prInsertKH(@MaKH varchar(10), @CMND nvarchar(25), @TenKH nvarchar(25), @Ngaysinh datetime,

@Gioitinh varchar(3),@Sdt_KH nvarchar(10))

IF EXISTS (SELECT * FROM tblKhachHang WHERE sMaKH @MaKH)

PRINT N'Tồn tại mã khách hàng: ' + @MaKH END

INSERT INTO tblKhachHang(sMaKH,sTenKH,sCMND,sNgaysinh,sGioitinh,sSdt_KH)

VALUES(@MaKH,@TenKH, @CMND, @Ngaysinh,

INSERT INTO MAY1.BTL_SQLServer_Nhom_2.dbo.tblKhachHang(sMaKH,sTenKH)

INSERT INTO MAY2.BTL_SQLServer_Nhom_2.dbo.tblKhachHang(sMaKH,sCMND,s Ngaysinh,sGioitinh,sSdt_KH)

VALUES(@MaKH, @CMND, @Ngaysinh, @Gioitinh,

PRINT N'Thêm thành công khách hàng mã: ' + @MaKH END

CREATE DATABASE BTL_SQLServer_Nhom_2 COLLATE

CREATE TABLE tblKhachHang( sMaKH varchar(10) NOT NULL PRIMARY KEY, sTenKH nvarchar(25)

CREATE TABLE tblDichVu( sMaDV varchar(10) NOT NULL PRIMARY KEY, sTenDV nvarchar(25), fGiaDV float

CREATE DATABASE BTL_SQLServer_Nhom_2 COLLATE

CREATE TABLE tblKhachHang( sMaKH varchar(10) NOT NULL PRIMARY KEY, sCMND nvarchar(25), sNgaysinh datetime, sGioitinh nvarchar(3) CHECK (sGioitinh=N'Nam' or sGioitinh=N'Nu'), sSdt_KH nvarchar(10)

CREATE TABLE tblDichVu( sMaDV varchar(10) NOT NULL PRIMARY KEY, sTenDV nvarchar(25), fGiaDV float

- Máy 1: mã khách hàng, tên khách hàng

Phân tán cơ sở dữ liệu

Tạo 1 linkserver kết nối từ máy chủ sang máy ảo có tên 'MAY1':

@datasrc = '192.168.52.128'; a Kiểm tra kết nối:

EXEC sp_linkedservers b Đăng nhập kết nối:

EXEC master.dbo.sp_addlinkedsrvlogin

Tạo 1 linkserver kết nối từ máy chủ sang máy ảo có tên 'MAY2':

@datasrc = '192.168.52.129'; a Kiểm tra kết nối:

42SQL Server – Nhóm 2 b Đăng nhập kết nối:

EXEC master.dbo.sp_addlinkedsrvlogin

Phân tán ngang bảng tblDichVu

Thủ tục thêm mới dịch vụ, phân tán ngang bảng tblDichVu:

CREATE PROC prInsertDV(@MaDV varchar(10), @TenDV nvarchar(25), @GiaDV float)

IF EXISTS (SELECT * FROM tblDichVu WHERE sMaDV @MaDV)

PRINT N'Tồn tại mã dịch vụ: ' + @MaDV END

BEGIN INSERT INTO tblDichVu(sMaDV,sTenDV,fGiaDV)

INSERT INTO MAY1.BTL_SQLServer_Nhom_2.dbo.tblDichVu(sMaDV,sTenDV,fGia DV)

VALUES(@MaDV, @TenDV, @GiaDV) PRINT N'Đã thêm vào máy 1 thành công dịch vụ mã: ' +@MaDV

BEGIN INSERT INTO tblDichVu(sMaDV,sTenDV,fGiaDV)

INSERT INTO MAY2.BTL_SQLServer_Nhom_2.dbo.tblDichVu(sMaDV,sTenDV,fGia DV)

VALUES(@MaDV, @TenDV, @GiaDV) PRINT N'Đã thêm vào máy 2 thành công dịch vụ mã: ' +@MaDV

CREATE DATABASE BTL_SQLServer_Nhom_2 COLLATE

CREATE TABLE tblKhachHang( sMaKH varchar(10) NOT NULL PRIMARY KEY, sTenKH nvarchar(25)

CREATE TABLE tblDichVu( sMaDV varchar(10) NOT NULL PRIMARY KEY, sTenDV nvarchar(25), fGiaDV float

CREATE DATABASE BTL_SQLServer_Nhom_2 COLLATE

CREATE TABLE tblKhachHang( sMaKH varchar(10) NOT NULL PRIMARY KEY, sCMND nvarchar(25), sNgaysinh datetime, sGioitinh nvarchar(3) CHECK (sGioitinh=N'Nam' or sGioitinh=N'Nu'), sSdt_KH nvarchar(10)

CREATE TABLE tblDichVu( sMaDV varchar(10) NOT NULL PRIMARY KEY, sTenDV nvarchar(25), fGiaDV float

- Nếu giá dịch vụ lớn hơn 1500 thì thêm vào máy 1:

- Ngược lại thêm vào máy 2:

EXEC prInsertDV 'DV12','Ca Nhac','500'

Phân tán dọc bảng tblKhachHang

Thủ tục thêm mới khách hàng, phân tán dọc bảng tblKhachHang

CREATE PROC prInsertKH(@MaKH varchar(10), @CMND nvarchar(25), @TenKH nvarchar(25), @Ngaysinh datetime,

@Gioitinh varchar(3),@Sdt_KH nvarchar(10))

IF EXISTS (SELECT * FROM tblKhachHang WHERE sMaKH @MaKH)

PRINT N'Tồn tại mã khách hàng: ' + @MaKH END

INSERT INTO tblKhachHang(sMaKH,sTenKH,sCMND,sNgaysinh,sGioitinh,sSdt_KH)

VALUES(@MaKH,@TenKH, @CMND, @Ngaysinh,

INSERT INTO MAY1.BTL_SQLServer_Nhom_2.dbo.tblKhachHang(sMaKH,sTenKH)

INSERT INTO MAY2.BTL_SQLServer_Nhom_2.dbo.tblKhachHang(sMaKH,sCMND,s Ngaysinh,sGioitinh,sSdt_KH)

VALUES(@MaKH, @CMND, @Ngaysinh, @Gioitinh,

PRINT N'Thêm thành công khách hàng mã: ' + @MaKH END

CREATE DATABASE BTL_SQLServer_Nhom_2 COLLATE

CREATE TABLE tblKhachHang( sMaKH varchar(10) NOT NULL PRIMARY KEY, sTenKH nvarchar(25)

CREATE TABLE tblDichVu( sMaDV varchar(10) NOT NULL PRIMARY KEY, sTenDV nvarchar(25), fGiaDV float

CREATE DATABASE BTL_SQLServer_Nhom_2 COLLATE

CREATE TABLE tblKhachHang( sMaKH varchar(10) NOT NULL PRIMARY KEY, sCMND nvarchar(25), sNgaysinh datetime, sGioitinh nvarchar(3) CHECK (sGioitinh=N'Nam' or sGioitinh=N'Nu'), sSdt_KH nvarchar(10)

CREATE TABLE tblDichVu( sMaDV varchar(10) NOT NULL PRIMARY KEY, sTenDV nvarchar(25), fGiaDV float

- Máy 1: mã khách hàng, tên khách hàng

Ngày đăng: 08/04/2024, 12:53

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w