-
Thông tin
-
Hỏi đáp
Bài báo cáo môn Cơ sở dữ liệu phân tán đề tài "Quản lý rạp chiếu phim"
Bài báo cáo môn Cơ sở dữ liệu phân tán đề tài "Quản lý rạp chiếu phim" của Học viện Công nghệ Bưu chính Viễn thông với những kiến thức và thông tin bổ ích giúp sinh viên tham khảo, ôn luyện và phục vụ nhu cầu học tập của mình cụ thể là có định hướng ôn tập, nắm vững kiến thức môn học và làm bài tốt trong những bài kiểm tra, bài tiểu luận, bài tập kết thúc học phần, từ đó học tập tốt và có kết quả cao cũng như có thể vận dụng tốt những kiến thức mình đã học vào thực tiễn cuộc sống. Mời bạn đọc đón xem!
Preview text:
lOMoARcPSD| 37054152 Mục lục
Mục lục......................................................................................1 I.
Đặt vấn đề............................................................................2
1. Nhu cầu và tầm quan trọng của dự án................................2
2. Vị trí và nhiệm vụ, dữ liệu khi triển khai dự án....................2
3. Các đối tượng tham gia sử dụng dự án...............................2 II.
Phân tích...............................................................................3
1. Các chức năng chính của hệ thống.....................................3
2. Phân quyền cho các nhóm đối tượng..................................3
3. Phân tích chức năng của từng vị trí thức hiện dự án...........4
4. Chức năng ở máy chủ.........................................................4
5. Chức năng ở máy trạm.......................................................4
6. Phân tích CSDL...................................................................5
6.1. Lược đồ liên kết thực thể...............................................5
6.2. Lược đồ quan hệ............................................................6
7. Bảng tần suất truy cập.......................................................6 III.
Thiết kế..............................................................................7
1. Thiết kế hệ thống mạng tổng quan.....................................7
2. Thiết kế CSDL của hệ thống................................................8
3. Lược đồ quan hệ liên kết..................................................12 IV.
Cài Đặt.............................................................................22
1, Cài đặt SQL Server 2019 bản Developer.....................22
2. Tạo CSDL cho Server máy trạm và đồng bộ CSDL cho các
máy chủ................................................................................35
3. Trigger...............................................................................45
4. Procedure..........................................................................51 I. Đặt vấn đề
1. Nhu cầu và tầm quan trọng của dự án
- Những năm gần đây, thị trường điện ảnh trị giá hơn 100 triệu USD của Việt
Nam đang trở thành miếng bánh hấp dẫn trong mắt các nhà đầu tư. Số
lượng phòng chiếu phim trên cả nước năm 2020 là 901 phòng với 130.900
ghế, ước tính doanh thu chiếu phim thương mại là 3.500 tỷ đồng. lOMoARcPSD| 37054152
- Thị trường rạp chiếu phim phát triển mạnh dẫn tới việc nhu cầu xây mới
rạp chiếu phim ngày căng tăng, kéo theo đó là vấn đề quản lý rạp chiếu
phim: làm sao để quản lý số vé bán ra, số nv trong hệ thống,… Để đảm bảo
lưu trữ được số lượng dữ liệu lớn như vậy mà vẫn đảm bảo thời gian truy
vấn dữ liệu nhanh giữa các rạp trong cùng 1 hệ thống thì chúng ta phải
tiến hành phân mảnh cho cơ sở dữ liệu quản lý rạp chiếu phim.
2. Vị trí và nhiệm vụ, dữ liệu khi triển khai dự án
Dự án được triển khai trong nội bộ công ty với 10 chi nhánh rạp và 1 máy chủ tổng.
Cơ sở dữ liệu quản lý rạp chiếu phim bao gồm các nhiệm vụ chính:
- Phân tích dữ liệu, tạo bảng dữ liệu, thiết lập quan hệ của dữ liệu.
- Phân tích chức năng chính của hệ thống.
- Phân tích và thiết kế cơ sở dữ liệu phân tán.
- Quản lý CSDL tại mỗi site phân tán.
Cài đặt cơ sở dữ liệu phân tán, thực thi
3. Các đối tượng tham gia sử dụng dự án - Nhân viên - Khách hàng - Quản lý II. Phân tích
1. Các chức năng chính của hệ thống
- Quản lý các rạp chi nhánh (thêm, sửa, xoá, thống kê).
- Quản lý nhân viên (thêm, sửa, xoá, thống kê).
- Quản lý khách hàng (thêm, sửa, xoá, thống kê).
- Quản lý phòng chiếu (thêm, sửa, xoá, thống kê).
- Quản lý lịch chiếu phim (thêm, sửa, xoá, thống kê).
- Quản lý phim (thêm, sửa, xoá, thống kê).
- Quản lý hoá đơn, vé xem phim (thêm, sửa, xoá, thống kê). lOMoARcPSD| 37054152 - Thống kê
2. Phân quyền cho các nhóm đối tượng
Nhóm đối tượng quản lý - Nhân viên quản lý:
+ Quản lý nhân viên tại chi nhánh
+ Xem các báo cáo thống kê - Nhân viên:
+ Quản lý thông tin khách hàng + Thực hiện bán vé
+ Thực hiện tạo hóa đơn
Nhóm đối tượng cần được quản lý:
- Nhân viên: các thông tin của nhân viên
- Phim: các thông tin của phim
- Nhà cung cấp: các thông tin của nhà cung cấp
- Phòng: các thông tin của phòng
- Khách hàng: các thông tin của khách hàng
- Hóa đơn bán: các thông tin về các vé được bán, chi phí phải thanh toán,...
3. Phân tích chức năng của từng vị trí thức hiện dự án
- Dự án được triển khai trong nội bộ công ty với 10 chi nhánh rạp và 1 máy chủ tổng, bao gồm: + Rạp 1 (Tại Hà Nội) + Rạp 2 (Tại Đà Nẵng) + Rạp 3 (Tại Cần Thơ) + Rạp 4 (Tại Biên Hoà)
+ Rạp 5 (Tại Hải Phòng)
+ Rạp 6 (Tại Nha Trang) + Rạp 7 (Tại Hải Dương) lOMoARcPSD| 37054152 + Rạp 8 (Tại Bắc Ninh) + Rạp 9 (Tại Thanh Hoá)
+ Rạp 10 (Tại Thành phố Hồ Chí Minh) - Tại server máy chủ:
+ Đặt máy chủ, lưu trữ dữ liệu của toàn hệ thống. Đồng bộ hoá dữ liệu trên toàn hệ thống
+ Lấy dữ liệu từ máy trạm tại các chi nhánh và chuyển dữ liệu xuống các
máy trạm tại các chi nhánh khác khi có yêu cầu
4. Chức năng ở máy chủ
- Đặt máy chủ, lưu trữ dữ liệu của toàn bộ hệ thống. Đồng bộ hóa dữ liệu trên toàn hệ thống
- Lấy dữ liệu từ máy trạm tại các rạp và chuyển dữ liệu xuống các máy trạm
tại các chi nhánh khi có yêu cầu
- Thêm/sửa/xoá các thực thể có trong toàn bộ hệ thống, tạo báo cáo thống kê theo yêu cầu.
- Phân quyền cho từng máy trạm tương ứng
5. Chức năng ở máy trạm
Tại các rạp tương ứng với các máy trạm (3 máy trạm)
- Mỗi khi nhập dữ liệu của 1 giao dịch xong hoặc thêm mới thông tin (khách
hàng, nhân viên,…) sẽ gửi dữ liệu lên máy chủ.
- Lưu trữ dữ liệu bán vé và các dịch vụ khác của rạp chiếu phim.
- Khi cần dữ liệu từ các chi nhánh khác sẽ truy vấn đến máy chủ để lấy các dữ liệu cần thiết. lOMoARcPSD| 37054152 6. Phân tích CSDL
6.1. Lược đồ liên kết thực thể 6.2. Lược đồ quan hệ lOMoARcPSD| 37054152
7. Bảng tần suất truy cập Trụ sở chính Chi nhánh Rap H.R L.EWD H.R NhanVien H.R L.EWD H.R L.EWD KhachHang H.R L.EWD H.REW L.D Phim H.RW L.ED H.R NhaCungCap H.R L.EWD H.R Phong H.R H.R L.EDW lOMoARcPSD| 37054152 Ghe H.R H.R L.EDW Ve H.R H.WR L.ED BanVe H.R H.WR L.ED Chieu H.R H.WR L.ED HoaDon H.R H.WR L.ED Trong đó: - R: đọc - W: tạo mới và ghi - E: sửa - D: xóa - H: tần số cao - L: tần số thấp III. Thiết kế
1. Thiết kế hệ thống mạng tổng quan
- Chi nhánh Hà Nội: Đặt máy trạm thực hiện chức năng và lưu toàn bộ CSDL thuộc Hà Nội.
- Chi nhánh Đà Nẵng: Đặt máy trạm thực hiện chức năng và lưu toàn bộ CSDL thuộc Đà Nẵng.
- Chi nhánh TP. Hồ Chí Minh: Đặt máy trạm thực hiện chức năng và lưu toàn
bộ CSDL thuộc TP.Hồ Chí Minh.
2. Thiết kế CSDL của hệ thống Rạp phim STT Tên thuộc tín h Kiểu Ràng buộc Khóa Mô tả 1 MaRap varchar(255) Not null PK Mã rạp phim 2 Ten nvarchar(255 Not null Tên rạp phim ) lOMoARcPSD| 37054152 3 DiaChi nvarchar(255 Not null Địa chỉ rạp phim ) Khách hàng STT Tên thuộc tí nh Kiểu Ràng bu ộc Khóa Mô tả 1 MaKH varchar(25 5) Not null PK Mã khách hàng 2 Ten nvarchar(2 55) Not null Tên khách hàng 3 DiaChi nvarchar(2 55) Not null Địa chỉ khách hàng 4 SDT varchar(25 5)
Số điện thoại khách hàng 5 Ngaysinh Ngày sinh khách hà ng date Nhân viên STT Tên thuộc tí nh Kiểu Ràng bu ộc Khóa Mô tả 1 MaNV varchar(255 Not null PK Mã khách hàng ) 2 MaNVQuanL y varchar(255 FK Mã nhân viên quản lý ) 3 MaRapPhim varchar(255 Not null FK Mã rạp phim ) 4 Ten nvarchar(25 Not null Tên khách hàng 5) 5 DiaChi nvarchar(25 5) Not null Địa chỉ khách hàng 6 SDT varchar(255 Not null
Số điện thoại khách hàng ) 7 NgaySinh Not null Ngày sinh khách hà ng date lOMoARcPSD| 37054152 8 ChucVu nvarchar(25 Not null
Chức vụ của nhân vi ên 5) 9 TenDangNha p varchar(255 Not null
Tên đăng nhập của nhân ) viên 10 MatKhau varchar(255 Not null
Mật khẩu đăng nhập của ) nhân viên Vé STT Tên thuộc tín h Kiểu Ràng buộc Khóa Mô tả 1 MaVe varchar(255) Not null PK Mã vé 2 MaGhe varchar(255) Not null FK Mã phim 3 MaChieu varchar(255) Not null FK Mã lịch chiếu phim 4 MaBanVe varchar(255) FK Mã bán vé 5 ThoiGian datetime Not null Thời gian 6 GiaVe 昀氀 oat Not null Giá vé Hoá đơn STT Tên thuộc tín h Kiểu Ràng buộ Khóa Mô tả c 1 MaHoaDon varchar(25 5) Not null PK Mã hoá đơn 2 MaBanVe varchar(25 5) Not null FK Mã bán vé 3 TongTien 昀氀 oat Not null Tổng số tiền hoá đơn 4 GiamGia 昀氀 oat Not null Giảm giá 5 ThanhTien 昀氀 oat Not null Thành tiền hoá đ ơn lOMoARcPSD| 37054152 6 ThoiGian datetime Not null Thời gian tạo hoá đơn Phòng STT Tên thuộc tín h Kiểu Ràng buộc Khóa Mô tả 1 MaPhong varchar(255) Not null PK Mã khách hà ng 2 MaRap varchar(255) Not null FK Mã rạp phim 3 SoHang int(10) Not null Số hàng ghế 4 SoCot int(10) Not null Số ghế trên 1 hàng Ghế STT Tên thuộc tín h Kiểu Ràng buộc Khóa Mô tả 1 MaGhe varchar(255) Not null PK Mã ghế 2 MaPhong varchar(255) Not null FK Mã phòng 3 Hang int(10) Not null Số thứ tự hàng của ghế 4 Cot int(10) Not null Số thứ tự cột của ghế trong hàng Phim STT Tên thuộc tín h Kiểu Ràng buộ Khóa Mô tả c 1 MaPhim varchar(255) Not null PK Mã phim 2 TenPhim nvarchar(255 Not null Tên phim ) 3 ThoiLuong 昀氀 oat Not null Thời lượng lOMoARcPSD| 37054152 4 TheLoai nvarchar(255 Not null Thể loại ) 5 MaNCC varchar(255) Not null FK Nhà cung cấp p him 6 XuatXu nvarchar(255 Xuất xứ của phim ) 7 MoTa nvarchar(255 Mô tả phim ) Nhà cung cấp STT Tên thuộc tín h Kiểu Ràng buộ Khóa Mô tả c 1 MaNCC varchar(255) Not null PK Mã nhà cung cấp 2 Ten nvarchar(25 5) Not null Tên nhà cung cấ p 3 DiaChi nvarchar(25 5) Not null Địa chỉ nhà cung cấp 4 SDT nvarchar(25 5) Not null Số điện thoại của nhà cung cấp Bán vé STT Tên thuộc tín h Kiểu Ràng buộc Khóa Mô tả 1 MaBV varchar(255) Not null PK Mã bán vé 2 ThoiGian datetime Not null Thời gian bán vé 3 MaKH varchar(255) Not null FK Mã KH mua vé 4 MaNV varchar(255) Not null FK Mã NV bán vé Chiếu STT Tên thuộc tín h Kiểu Ràng buộc Khóa Mô tả 1 MaChieu varchar(255) Not null PK Mã chiếu phim lOMoARcPSD| 37054152 2 ThoiGianChie u datetime Not null Thời gian chiếu 3 GiaSuatChieu 昀氀 oat Not null Giá suất chiếu 4 MaPhong varchar(255) Not null FK Mã phòng chiếu của suất chiếu 5 MaPhim varchar(255) Not null FK Mã phim được chiếu
3. Lược đồ quan hệ liên kết lOMoARcPSD| 37054152
2.2.5 Thiết kế phân mảnh ngang và nhân bản -
Bảng Phim, Rạp phim sẽ được chung cho các Site, nhưng chỉ được cập nhật,
sửa, xóa tại máy chủ tổng. -
Bao gồm các bảng Nhân viên, Khách hàng, Vé, Phòng, Ghế sẽ được dùng riêng
tại mỗi Site. Site nào có quyển quản lý các bảng của Site đó.
a. Thiết kế hệ thống thông tin về CSDL cho phân mảnh ngang -
Máy trạm tại Hà Nội, Đà nẵng, Tp. HCM chỉ được lưu trữ các bản ghi dữ liệu
về khách hàng, nhân viên, được đăng kí tại site mình và phòng, ghế cũng như
vé được bán tại site mình. -
Các dữ liệu về Phim, Rạp phim sẽ dược lưu và thay đổi tạo server và tại các trạm có thể nhân bản. lOMoARcPSD| 37054152
b. Lược đồ phục vụ cho phân mảnh ngang c. Phân mảnh dữ liệu
Phân mảnh ngang nguyên thủy và phân mảnh ngang dẫn xuất để chia
quan hệ tổng thể thành 4 mảnh đặt tại 4 vị trí như sau:
+ Vị trí 1: Dữ liệu đặt tại máy chủ (Đại lý tổng).
+ Vị trí 2: Dữ liệu đặt tại trạm 1 (Hà Nội).
+ Vị trí 3: Dữ liệu đặt tại trạm 2 (Đà Nẵng).
+ Vị trí 4: Dữ liệu đặt tại trạm 3 (Hồ Chí Minh) Mản Serv CSDL Phân mảnh Phân mảnh dẫn xuất h er nguyên thủy 1 1 Quản - Bảng phân - Bảng phân mảnh lý rạp mảnh Rap NhanVien chiếu - Điều kiện
- Điều kiện dẫn xuất: phim phân tán: Rap1 = NhanVien1 = NhanVien ⋉ σma=“RAP1”(Rap) Rap1
- Bảng phân mảnh BanVe - Điều kiện dẫn xuất: BanVe1 = BanVe ⋉ NhanVien1 lOMoARcPSD| 37054152 - Bảng phân mảnh Ve - Điều kiện dẫn xuất: Ve1 = Ve ⋉ Chieu1 Bảng phân mảnh HoaDon - Điều kiện dẫn xuất: HoaDon1 = HoaDon ⋉ BanVe1 - Bảng phân mảnh Phong- Điều kiện dẫn xuất: - Phong1 = Phong ⋉ Rap1 - Bảng phân mảnh Chieu- Điều kiện dẫn xuất: - Chieu1 = Chieu ⋉ Phong1 - Bảng phân mảnh Ghe- Điều kiện dẫn xuất: - Ghe1 = Ghe ⋉ Phong1 2 2 Quản - Bảng phân - Bảng phân mảnh lý rạp mảnh Rap NhanVien chiếu - Điều kiện
- Điều kiện dẫn xuất: phim phân tán: Rap2 = NhanVien2 = NhanVien ⋉ σma=“RAP2”(Rap) Rap2
- Bảng phân mảnh BanVe - Điều kiện dẫn xuất: BanVe2 = BanVe ⋉ NhanVien2 - Bảng phân mảnh Ve - Điều kiện dẫn xuất: Ve2 = Ve ⋉ Chieu2
- Bảng phân mảnh Phong - Điều kiện dẫn xuất: lOMoARcPSD| 37054152 - Phong2 = Phong ⋉ Rap2 - Bảng phân mảnh Chieu- Điều kiện dẫn xuất: - Chieu2 = Chieu ⋉ Phong2 - Bảng phân mảnh Ghe- Điều kiện dẫn xuất: - Ghe = Ghe ⋉ Phong 3 3 Quản - Bảng phân - Bảng phân mảnh lý rạp mảnh Rap NhanVien chiếu - Điều kiện
- Điều kiện dẫn xuất: phim phân tán: Rap1 = NhanVien3 = NhanVien ⋉ Rap3 σma=“RAP3”(Rap)
- Bảng phân mảnh BanVe - Điều kiện dẫn xuất: BanVe3 = BanVe ⋉ NhanVien3 - Bảng phân mảnh Ve - Điều kiện dẫn xuất: Ve3 = Ve ⋉ Chieu3 - Bảng phân mảnh Phong- Điều kiện dẫn xuất: - Phong3 = Phong ⋉ Rap3 - Bảng phân mảnh Chieu- Điều kiện dẫn xuất: - Chieu3 = Chieu ⋉ Phong3 - Bảng phân mảnh Ghe- Điều kiện dẫn xuất: - Ghe3 = Ghe ⋉ Phong3
d. Lược đồ ánh xạ phân mảnh lOMoARcPSD| 37054152 e. Sơ đồ định vị lOMoARcPSD| 37054152
2.2.4 Thiết kế vật lý tại các trạm lOMoARcPSD| 37054152 IV. Cài Đặt
1, Cài đặt SQL Server 2019 bản Developer Chọn Select All
Chọn Named instance và nhập tên tùy chọn lOMoARcPSD| 37054152
Chọn Mixed mode và tạo mật khẩu tùy chọn
Tiếp theo chọn Add Current User -> Add
Chọn Tabular Mode -> Add Current User -> Add lOMoARcPSD| 37054152 Chọn Install
Hoàn thành cài đặt SQL Server 2019 lOMoARcPSD| 37054152
2, Tắt tường lửa và cài đặt Radmin VPN để kết nối các máy
Vào Windows Defender Firewall để tắt tường lửa
Tiếp tục chọn mục Advanced Settings lOMoARcPSD| 37054152
Chọn Inbound Rules -> New rules -> Port -> Next Nhập cổng 1433 lOMoARcPSD| 37054152
Chọn tên tùy chỉnh và nhấn Finish
Mở Radmin VPN (download tại trang https://www.radmin-vpn.com/ ), tạo
phòng, join phòng và kiểm tra xem tất cả các máy đã ping được với nhau hay chưa. lOMoARcPSD| 37054152
3, Con 昀椀 g database
Kết nối vào cơ sở dữ liệu với Server name: Window Authentication lOMoARcPSD| 37054152
Sau khi kết nối thành công, mở Security -> Logins -> sa
Chuột phải vào sa và chọn Properties. Nhập mật khẩu và xác nhận mật khẩu.
Tiếp theo chọn Status bên trái và Enable mục Logins. lOMoARcPSD| 37054152
Khi đó có thể kết nối được với tài khoản sa vừa tạo bằng cách chọn Server name:
SQL Server Authentication.
Mở Radmin VPN, join phòng và kiểm tra xem tất cả các máy đã ping được với nhau hay chưa lOMoARcPSD| 37054152
Tiếp theo mở SQL Server Con 昀椀 g -> Protocols for
SERVER_NAME -> TCP/IP -> Properties
Chọn mục IP Address, copy IP Address từ Radmin và paste vào từng IP trong
danh sách, sau đó Enable cho từng IP. Chú ý để 1433 cho TCP Port. lOMoARcPSD| 37054152
Trở về SQL Server Services và restart SQL Server(SERVER_NAME) và SQL Server Argent.
Đối với máy trạm, có thể kết nối với tất cả các máy chủ còn lại bằng các dùng IP
Address cho Server name, tài khoản và mật khẩu bên dưới là của máy chủ đang cần được kết nối. lOMoARcPSD| 37054152
1. Tạo 昀椀 le chứa data
- Tạo 1 folder có tên RELDATA để chứa các dữ liệu trao đổi trong quá
trình update dữ liệu từ các phân mảnh về cơ sở dữ liệu gốc, và từ cơ
sở dữ liệu gốc đến các phân mảnh.
Chuột phải vào folder -> chọn Properties -> Sharing -> Share lOMoARcPSD| 37054152
Chọn Everyone -> Add -> chọn Read/Write cho Everyone lOMoARcPSD| 37054152 lOMoARcPSD| 37054152
2. Tạo CSDL cho Server máy trạm và đồng bộ CSDL cho các máy chủ
Chọn Replication -> chuột phải vào Local Publication -> New Publication lOMoARcPSD| 37054152 Chọn 1 CSDL
Chọn Merge Publication lOMoARcPSD| 37054152
Bỏ chọn sysdiagrams
Tại ô Filter, chỗ WHERE[MaRap]=’RAP11’ để đồng bộ CSDL cho máy chủ RAP11 lOMoARcPSD| 37054152 Chọn mục con cần lọc
Tạo tài khoản mật khẩu sa lOMoARcPSD| 37054152 Đặt tên cho máy chủ lOMoARcPSD| 37054152
Chuột phải vào máy chủ vừa tạo, chọn New Subsriptions… lOMoARcPSD| 37054152 lOMoARcPSD| 37054152
Nhập tên cho Database name lOMoARcPSD| 37054152
Nhập tài khoản sa của máy chủ Chọn run continuosly lOMoARcPSD| 37054152 Finish 4, Tạo link Server
Chuột phải vào Logins -> chọn New Login… lOMoARcPSD| 37054152
Cài login name và mật khẩu
Bỏ tích chọn ở mục User must change… lOMoARcPSD| 37054152 Chọn Database Enable cho Login… lOMoARcPSD| 37054152
Ở mục Server Objects, chuột phải vào Linked Server và chọn New Linked Server. lOMoARcPSD| 37054152
Trong mục Security, chọn Be made using this security context -> nhập tài khoản và mật khẩu. Chọn True ở mục RPC Out lOMoARcPSD| 37054152
SELECT * FROM LINK.QL_RAPPHIM_LONG 3. Trigger Trigger: nhanvienTrigger
create trigger nhanvienTrigger on [dbo].[NhanVien] after insert, update AS lOMoARcPSD| 37054152 declare @ide varchar(50)
set @ide = (select MaNV from inserted)
--Khoi tao bien dem, neu bang 1 thi la may khach declare @dem int
set @dem = (select count(MaRap) from dbo.RapPhim) declare @id varchar(50) if(@dem>1) --tai may chu begin print('ok') end else
--tai may khach begin declare @bID varchar(50) = (select MaRap from
dbo.RapPhim) declare @check varchar(50) set @check = @bID +'%' if(@ide like @check)
-- kiem tra neu xuat phat dung ma ma rap thi nhan begin print('Ok')
end else begin print('ID khong hop le, ') rollback tran end end phongTrigger
create trigger phongTrigger on [dbo].[Phong] after insert, update AS declare @ide varchar(50)
set @ide = (select MaPhong from inserted)
--Khoi tao bien dem, neu bang 1 thi la may khach declare @dem int
set @dem = (select count(MaRap) from dbo.RapPhim) declare @id varchar(50) if(@dem>1) --tai may chu begin print('ok') end else
--tai may khach begin declare @bID varchar(50) = (select MaRap from
dbo.RapPhim) declare @check varchar(50) set @check = @bID +'%' if(@ide like @check)
-- kiem tra neu xuat phat dung ma ma rap thi nhan begin print('Ok')
end else begin print('ID khong hop le, ') rollback tran end end veTrigger
create trigger veTrigger on [dbo].[Ve] after insert, update AS declare @ide varchar(50)
set @ide = (select MaVe from inserted)
--Khoi tao bien dem, neu bang 1 thi la may khach declare @dem int
set @dem = (select count(MaRap) from dbo.RapPhim) declare @id varchar(50) if(@dem>1) --tai may chu begin print('ok') end lOMoARcPSD| 37054152 else
--tai may khach begin declare @bID varchar(50) = (select MaRap from
dbo.RapPhim) declare @check varchar(50) set @check = @bID +'%' if(@ide like @check)
-- kiem tra neu xuat phat dung ma ma rap thi nhan begin print('Ok')
end else begin print('ID khong hop le, ') rollback tran end end hoadonTrigger
create trigger hoadonTrigger on [dbo].[HoaDon] after insert, update AS declare @ide varchar(50)
set @ide = (select MaHD from inserted)
--Khoi tao bien dem, neu bang 1 thi la may khach declare @dem int
set @dem = (select count(MaRap) from dbo.RapPhim) declare @id varchar(50) if(@dem>1) --tai may chu begin print('ok') end else
--tai may khach begin declare @bID varchar(50) = (select MaRap from
dbo.RapPhim) declare @check varchar(50) set @check = @bID +'%' if(@ide like @check)
-- kiem tra neu xuat phat dung ma ma rap thi nhan begin print('Ok')
end else begin print('ID khong hop le, ') rollback tran end end banveTrigger
create trigger banveTrigger on [dbo].[BanVe] after insert, update AS declare @ide varchar(50)
set @ide = (select MaBanVe from inserted)
--Khoi tao bien dem, neu bang 1 thi la may khach declare @dem int
set @dem = (select count(MaRap) from dbo.RapPhim) declare @id varchar(50) if(@dem>1) --tai may chu begin print('ok') end else
--tai may khach begin declare @bID varchar(50) = (select MaRap from
dbo.RapPhim) declare @check varchar(50) set @check = @bID +'%' if(@ide like @check) lOMoARcPSD| 37054152
-- kiem tra neu xuat phat dung ma ma rap thi nhan begin print('Ok')
end else begin print('ID khong hop le, ') rollback tran end end chieuTrigger
create trigger chieuTrigger on [dbo].[Chieu] after insert, update AS declare @ide varchar(50)
set @ide = (select MaChieu from inserted)
--Khoi tao bien dem, neu bang 1 thi la may khach declare @dem int
set @dem = (select count(MaRap) from dbo.RapPhim) declare @id varchar(50) if(@dem>1) --tai may chu begin print('ok') end else
--tai may khach begin declare @bID varchar(50) = (select MaRap from
dbo.RapPhim) declare @check varchar(50) set @check = @bID +'%' if(@ide like @check)
-- kiem tra neu xuat phat dung ma ma rap thi nhan begin print('Ok')
end else begin print('ID khong hop le, ') rollback tran end end addSeatTrigger
create trigger addSeat on [dbo].[Phong] after insert AS
declare @Hang int declare @Cot int
declare @MaPhong varchar(255) set @Hang =
(select SoHang from inserted) set @Cot =
(select SoCot from inserted) set @MaPhong =
(select MaPhong from inserted) declare @i int = 1 declare @j int = 1
if(@Hang > 0 and @Cot > 0) begin while(@i <= @Hang) begin while(@j <= @Cot) begin declare @MaGhe varchar(255)
set @MaGhe = (@MaPhong + '_' + CONVERT(varchar(10), @i) +
'_' + CONVERT(varchar(10), @j))
insert into [dbo].[Ghe](MaGhe, MaPhong, Hang, Cot) lOMoARcPSD| 37054152
values(@MaGhe, @MaPhong, @i, @j) set @j = @j+1 end set @i = @i+1 set @j = 1 end print('OK') end else begin
print('So hang hoac so cot khong hop le') rollback tran end
checkZoomConflictTrigger
create trigger checkZoomConflict on [dbo].Chieu after insert
AS declare @ThoiLuong datetime declare @BatDau datetime declare @KetThuc datetime
declare @MaPhong varchar(255) = (select MaPhong from inserted)
declare @insertedId varchar(255) = (select MaChieu from inserted)
set @ThoiLuong = (select ThoiLuong from Phim where MaPhim = (select MaPhim from inserted))
set @BatDau = (select ThoiGian from inserted)
set @KetThuc = DATEADD(mi, cast(@ThoiLuong as int), @BatDau) print(@BatDau) print(@KetThuc)
if exists( select * from ( select C.ThoiGian as BD, DATEADD(mi, cast(P.ThoiLuong as
int), C.ThoiGian) as KT from (select * from Chieu where MaPhong = @MaPhong and
MaChieu <> @insertedId) as C, Phim as P where C.MaPhim = P.MaPhim
) AS TMP where @BatDau <= TMP.KT and @KetThuc >= TMP.BD ) begin print('Lich chieu bi trung') rollback tran end else begin print('OK') end nccTrigger
DROP trigger IF EXISTS NCCTrigger go
create trigger NCCTrigger on [dbo].[NhaCungCap]
after delete, update, insert AS
if ((select count(*) from [dbo].[RapPhim]) > 1) --tai may chu begin print('ok') end else --tai may khach begin
print('Khong duoc xoa, sua, hoac them') rollback tran end protectPhimTrigger
DROP trigger IF EXISTS ProtectPhimTrigger go
create trigger ProtectPhimTrigger on [dbo].[Phim]
after delete, update, insert AS
if ((select count(*) from [dbo].[RapPhim]) > 1) --tai may chu begin print('ok') end else --tai may khach begin
print('Khong duoc xoa, sua, hoac them') rollback tran end protectRapTrigger lOMoARcPSD| 37054152
DROP trigger IF EXISTS ProtectRapTrigger go
create trigger ProtectRapTrigger on [dbo].[RapPhim]
after delete, update, insert AS
if ((select count(*) from [dbo].[RapPhim]) > 1) --tai may chu begin print('ok') end else --tai may khach begin
print('Khong duoc xoa, sua, hoac them') rollback tran end 4. Procedure
Function: fnRemoveAccents: chuyển từ tiếng Việt thành chữ cái không dấu
- Procedure tìm khách hàng theo tên, với tên khách hàng không phân biệt hoa,
thường và có bỏ dấu tiếng Việt
- Procedure tạo dữ liệu cho bảng Bán vé khi thực hiện việc bán ra vé lOMoARcPSD| 37054152
- Procedure tìm lịch chiếu theo tên phim, với tên phim không phân biệt hoa,
thường và có bỏ dấu tiếng Việt
- Procedure tạo vé, với id gồm 8 chữ cái đầu là mã định danh tương ứng với
rạp, các số sau tương ứng với số thứ tự của vé lOMoARcPSD| 37054152 - Procedure tạo hoá đơn
Giao diện đăng nhập của nhân viên: lOMoARcPSD| 37054152
Giao diện chọn khách hàng Giao diện chọn phim: lOMoARcPSD| 37054152 Giao diện hoá đơn lOMoARcPSD| 37054152