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 (1.81 MB, 50 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
<b>Nhóm 2: Quản lý cho thuê phòng khách sạn</b>
Giảng viên hướng dẫn: Ths Trịnh Thị Xuân Sinh viên: Nguyễn Thị Hương – 1710A02
Phạm Xn Tú –1710A01 Đồn Ngơ Hiếu – 1710A02 Vi Thị Khánh Huyền – 1710A02
Hà Nội – 2019
</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2"><b>Danh mục:</b>
<b>I. Phát biểu bài toán...4</b>
<b>II. Thiết kế CSDL mức khái niệm</b> <i><small>1. Xác định các thực thể và thuộc tính...4</small></i>
<i><small>2. Xác định các liên kết...5</small></i>
<b>III. Thiết kế CSDL mức logic – mơ hình quan hệ</b> <i><small>1. Chuyển đổi thực thể mạnh...5</small></i>
<i><small>2. Chuyển đổi quan hệ 1 – n...5</small></i>
<i><small>3. Chuyển đổi quan hệ m – n...6</small></i>
<i><small>4. Cơ sở dữ liệu sau khi chuyển...6</small></i>
<i><small>5. Danh sách các bảng...6</small></i>
<b>IV. Tạo cơ sở dữ liệu</b> <i><small>1. Tạo sơ đồ liên kết giữa các bảng...10</small></i>
<i><small>2. Nhập dữ liệu cho từng bảng...10</small></i>
<b>V. Xây dựng các View cho cơ sở dữ liệu...17</b>
<b>VI. Xây dựng các Procedure cho cơ sở dữ liệu...24</b>
<b>VII. Xây dựng các Trigger cho cơ sở dữ liệu...31</b>
<b>VIII. Phân quyền và bảo mật cơ sở dữ liệu...36</b>
<b>IX. Phân tán cơ sở dữ liệu...41</b>
<small>2</small>
</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3"><b>PHÂN CÔNG VÀ KẾ HOẠCH THỰC HIỆN</b>
Phát biểu bài toán
Thiết kế CSDL mức khái niệm
Thiết kế CSDL mức logic – mơ hình quan hệ
Cả nhóm
Tạo cơ sở dữ liệu
Xây dựng các View cho cơ sở dữ liệu
<b>ĐÁNH GIÁ BTL THAM KHẢO</b>
Lại Tiến Đạt Trình bày rõ ràng, đầy đủ các yêu cầu đề bài đặt ra
Nguyễn Tiến Dũng
<small>3</small>
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">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 th 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ó 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ể th đượ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
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5"><b>KHÁCH HÀNG: Mã khách hàng, chứng minh nhân dân, họ tên khách</b>
hàng, ngày sinh, giới tính, quốc tịch, số điện thoại.
<b>PHỊNG: Mã phịng, số điện thoại phịng, tình trạng.</b>
<b>LOẠI PHỊNG: Mã loại phịng, tên loại phịng, số người tối đa, giá phịng.HĨA ĐƠN: Mã hóa đơn, số người, ngày đến, ngày dự kiến đi, ngày lập,</b>
tiền đặt cọc.
<b>DỊCH VỤ: Mã dịch vụ, tên dịch vụ, giá dịch vụ.</b>
<i>2. Xác định các liên kết:</i>
Cách chuyển: Mỗi thực thể trong mơ hình ER trở thành một quan hệ. Quan hệ đó bao gồm tất cả các thuộc tính đơn giản và thuộc tính tổ hợp của thực thể. Thuộc tính định danh của thực thể là khóa chính của quan hệ( khơng chứa các thuộc tính đa trị và suy dẫn)
R1: tblNhanVien (MaNV,TenNV,NgaySinh,GioiTinh,Sdt_NV) R2: tblChucVu (MaCV, TenCV, HSL)
R3: tblKhachHang (MaKH, CMND, TenKH, NgaySinh, GioiTinh, SDt_KH) R4: tblPhong (MaP, SDt_P, TinhTrang)
R5: tblLoaiPhong (MaLP, TenLP, SoNguoiMax, GiaP ) R6: tblDichVu (MaDV,TenDV,GiaDV)
R7: tblHoaDon (MaHD, SoNguoi, NgayDen,NgayDKDi,NgayLap, TienDatCoc)
<i>2. Chuyển đổi quan hệ 1 - n:</i>
Liên kết tblChucVu – tblNhanVien:
R1.1: tblNhanVien (MaNV,TenNV,NgaySinh,GioiTinh,Sdt_NV, MaCV) Liên kết tblLoaiPhong – tblPhong:
R4.1: tblPhong (MaP,SDt_P, TinhTrang, MaLP)
<small>5</small>
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">Liên kết tblNhanVien – tblHoaDon:
<i>3.Chuyển đổi quan hệ m - n:</i>
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
Liên kết tblPhong – tblHoaDon: R8: tblCTHD(MaHD, MaP)
<i>4. Cơ sở dữ liệu sau khi chuyển:</i>
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 )
<small>6</small>
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">4 sGioitinh nvarchar(3) chỉ nhận giá trị
“nam” hoặc “nữ” <sup>giới tính</sup>
5 sGioitinh nvarchar(3) chỉ nhận giá trị
“nam” hoặc “nữ” <sup>Giới tính</sup>
khách hàng
<small>7</small>
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">STT Tên trường Kiểu dữ liệu Ràng buộc Ghi chú
3 iSonguoima
STT Tên trường Kiểu dữ liệu Ràng buộc Ghi chú
<small>8</small>
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">STT Tên trường Kiểu dữ liệu Ràng buộc Ghi chú
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10"><i>1. Tạo sơ đồ liên kết giữa các bảng:</i>
<i>2. Nhập dữ liệu cho từng bảng :Bảng tblNhanVien :</i>
- Câu lệnh:
<small>INSERT INTOtblNhanVien sMaNV sTenNV dNS sGioitinh sMaCV sSdt_NV(,,,,,)</small>
<small>VALUES('NV1','Nguyen Van Hoang','1999/04/16' 'Nam' 'CV2' '0982860164',,,),</small>
<small> ('NV2','Nguyen Thuy Duong','2002/01/01' 'Nu' 'CV3' '0901012002',,,),</small>
<small> ('NV3','Hoang Bao An','2000/08/11' 'Nu' 'CV5' '0962091604',,,), ('NV4','Pham Tien Dat','1995/01/01' 'Nam' 'CV6' '0935465845',,,),</small>
<small>('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',,,),</small>
<small>('NV10','Hoang Thao Quyen','1989/08/25' 'Nu' 'CV6' '0975654215',,,)</small>
<small>10</small>
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">- Kết quả:
SELECT * FROM tblNhanVien
<i>Bảng tblChucVu :</i>
- Câu lệnh:
<small>INSERT INTOtblChucVu sMaCV sTenCV fHSL(,,)</small>
<small>VALUES('CV1','Thu Ngan', ),5</small>
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12"><i>Bảng tblKhachHang :</i>
- Câu lệnh:
<small>INSERT INTO</small>
<small>tblKhachHang sMaKH sCMND sTenKH sNgaysinh sGioitinh sSdt_KH(,,,,,)</small>
<small>VALUES('KH1' '123456789',,'Hoang Tung Phong','1995/02/05' 'Nam' '0985456985',,),</small>
<small> ('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',,),</small>
<small> ('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',,),</small>
<small> ('KH9' '987456085',,'Phan Phuong Linh','1996/10/20' 'Nu' '0974652102',,), ('KH10' '963258741',,'Hoang Thuy Dung','2001/01/20' 'Nu' '0966668888',,)</small>
- Kết quả:
SELECT * FROM tblKhachHang
<i>Bảng tblPhong :</i>
<small>12</small>
</div><span class="text_page_counter">Trang 40</span><div class="page_container" data-page="40">ON tblNhanVien TO dnh
<i>3. Tạo tài khoản cho Nguyễn Thị Hương:a. Tạo tài khoản:</i>
<i><small>b.</small>Tạo người dùng tương ứng:</i>
<i>c. Đăng nhập:</i>
<i>d. Kết quả:</i>
<small>40</small>
</div><span class="text_page_counter">Trang 41</span><div class="page_container" data-page="41"><i>e. Cấp quyền exec thủ tục cho người dùng nth:</i>
GRANT EXECUTE ON prDemPhong_SDDV TO nth GRANT EXECUTE ON prDSKH_NamSinh TO nth GRANT EXECUTE ON dbo.prGiamgiaDV TO nth
<i>4. Tạo tài khoản cho Vi Thị Khánh Huyền:a. Tạo tài khoản:</i>
<i><small>b.</small>Tạo người dùng tương ứng:</i>
<i>c. Đăng nhập:</i>
<i>d. Kết quả:</i>
<small>41</small>
</div><span class="text_page_counter">Trang 42</span><div class="page_container" data-page="42"><i>e. Cấp quyền chỉ xem cho cho người dùng btkh:</i>
GRANT SELECT TO vtkh
<i>Tạo 1 linkserver kết nối từ máy chủ sang máy ảo có tên 'MAY1':</i>
</div><span class="text_page_counter">Trang 43</span><div class="page_container" data-page="43"><i>Thủ tục thêm mới dịch vụ, phân tán ngang bảng tblDichVu:</i>
CREATE PROC prInsertDV(@MaDV varchar(10), @TenDV nvarchar(25), @GiaDV float)
VALUES(@MaDV, @TenDV, @GiaDV) PRINT N'Đã thêm vào máy 1 thành công dịch vụ mã: ' +@MaDV
<small>43</small>
</div><span class="text_page_counter">Trang 44</span><div class="page_container" data-page="44">VALUES(@MaDV, @TenDV, @GiaDV) PRINT N'Đã thêm vào máy 2 thành công dịch vụ
CREATE TABLE tblKhachHang(
sMaKH varchar(10) NOT NULL PRIMARY KEY, sTenKH nvarchar(25)
CREATE TABLE tblDichVu(
sMaDV varchar(10) NOT NULL PRIMARY KEY,
</div><span class="text_page_counter">Trang 45</span><div class="page_container" data-page="45">Use BTL_SQLServer_Nhom_2 GO
CREATE TABLE tblKhachHang(
sMaKH varchar(10) NOT NULL PRIMARY KEY,
CREATE TABLE tblDichVu(
sMaDV varchar(10) NOT NULL PRIMARY KEY, sTenDV nvarchar(25),
fGiaDV float )
Tiến hành phân tán:
<i>- Nếu giá dịch vụ lớn hơn 1500 thì thêm vào máy 1:</i>
EXEC prInsertDV 'DV11','MASSAGE','1500'
<small>45</small>
</div><span class="text_page_counter">Trang 46</span><div class="page_container" data-page="46"><i>- Ngược lại thêm vào máy 2:</i>
EXEC prInsertDV 'DV12','Ca Nhac','500'
<small>46</small>
</div><span class="text_page_counter">Trang 47</span><div class="page_container" data-page="47">Phân tán dọc bảng tblKhachHang Máy chủ:
<i>Thủ tục thêm mới khách hàng, phân tán dọc bảng tblKhachHang</i>
CREATE PROC prInsertKH(@MaKH varchar(10), @CMND nvarchar(25), @TenKH nvarchar(25), @Ngaysinh datetime, @Gioitinh varchar(3),@Sdt_KH nvarchar(10))
</div><span class="text_page_counter">Trang 48</span><div class="page_container" data-page="48">CREATE TABLE tblKhachHang(
sMaKH varchar(10) NOT NULL PRIMARY KEY, sTenKH nvarchar(25)
CREATE TABLE tblDichVu(
sMaDV varchar(10) NOT NULL PRIMARY KEY,
</div><span class="text_page_counter">Trang 49</span><div class="page_container" data-page="49">Use BTL_SQLServer_Nhom_2 GO
CREATE TABLE tblKhachHang(
sMaKH varchar(10) NOT NULL PRIMARY KEY,
CREATE TABLE tblDichVu(
sMaDV varchar(10) NOT NULL PRIMARY KEY,
</div><span class="text_page_counter">Trang 50</span><div class="page_container" data-page="50">- Máy 2: mã khách hàng, chứng minh nhân dân, ngày sinh, giới tính, số điện thoại
<small>50</small>
</div>