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!

lOMoARcPSD|37054152
Mc lc
Mc lc......................................................................................1
I. Đặt vn đ............................................................................2
1. Nhu cu và tm quan trng ca d án................................2
2. V trí và nhim v, d liu khi trin khai d án....................2
3. Các đối tượng tham gia s dng d án...............................2
II. Phân tích...............................................................................3
1. Các chức năng chính của h thng.....................................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 tng v trí thc hin d án...........4
4. Chức năng ở máy ch.........................................................4
5. Chức năng ở máy trm.......................................................4
6. Phân tích CSDL...................................................................5
6.1. c đ liên kết thc th...............................................5
6.2. c đ quan h............................................................6
7. Bng tn sut truy cp.......................................................6
III. Thiết kế..............................................................................7
1. Thiết kế h thng mng tng quan.....................................7
2. Thiết kế CSDL ca h thng................................................8
3. c đ quan h liên kết..................................................12
IV. Cài Đặt.............................................................................22
1, Cài đặt SQL Server 2019 bn Developer.....................22
2. To 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 cu và tm quan trng ca d án
- Những năm gần đây, th trường điện nh tr giá hơn 100 triu USD ca Vit
Nam đang trở thành miếng bánh hp dn trong mắt các nhà đầu tư. Số
ng phòng chiếu phim trên c ớc m 2020 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 rp chiếu phim phát trin mnh dn ti vic nhu cu xây mi
rp chiếu phim ngày căng tăng, kéo theo đó vấn đề qun rp chiếu
phim: làm sao để qun lý s bán ra, s nv trong h thống,… Để đảm bo
lưu trữ đưc s ng d liu lớn như vậy mà vn đm bo thi gian truy
vn d liu nhanh gia các rp trong cùng 1 h thng thì chúng ta phi
tiến hành pn mảnh cho cơ sở d liu qun lý rp chiếu phim.
2. V trí và nhim v, d liu khi trin khai d án
D án được trin khai trong ni b công ty vi 10 chi nhánh rp và 1 máy ch
tng.
Cơ sở d liu qun lý rp chiếu phim bao gm các nhim v chính:
- Phân tích d liu, to bng d liu, thiết lp quan h ca d liu.
- Phân tích chức năng chính của h thng.
- Phân tích và thiết kế cơ sở d liu phân tán.
- Qun lý CSDL ti mi site phân tán.
Cài đặt cơ sở d liu phân tán, thc thi
3. Các đối tượng tham gia s dng d án
- Nhân viên
- Khách hàng
- Qun lý
II. Phân tích
1. Các chức năng chính của h thng
- Qun lý các rp chi nhánh (thêm, sa, xoá, thng kê).
- Qun lý nhân viên (thêm, sa, xoá, thng kê).
- Qun lý khách hàng (thêm, sa, xoá, thng kê).
- Qun lý phòng chiếu (thêm, sa, xoá, thng kê).
- Qun lý lch chiếu phim (thêm, sa, xoá, thng kê).
- Qun lý phim (thêm, sa, xoá, thng kê).
- Quản lý hoá đơn, vé xem phim (thêm, sa, xoá, thng kê).
lOMoARcPSD|37054152
- Thng 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
+ 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 tng v trí thc hin d án
- D án được trin khai trong ni b công ty vi 10 chi nhánh rp 1 máy
ch tng, bao gm:
+ Rp 1 (Ti Hà Ni)
+ Rp 2 (Tại Đà Nng)
+ Rp 3 (Ti Cn Thơ)
+ Rp 4 (Ti Biên Hoà)
+ Rp 5 (Ti Hi Phòng)
+ Rp 6 (Ti Nha Trang) + Rp 7
(Ti Hải Dương)
lOMoARcPSD|37054152
+ Rp 8 (Ti Bc Ninh)
+ Rp 9 (Ti Thanh Hoá)
+ Rp 10 (Ti Thành ph H Chí Minh) - Ti server
máy ch:
+ Đặt máy chủ, lưu trữ d liu ca toàn h thống. Đồng b hoá d liu
trên toàn h thng
+ Ly d liu t máy trm ti các chi nhánh chuyn d liu xung các
máy trm ti các chi nhánh khác khi có yêu cu
4. Chức năng ở máy ch
- Đặt máy chủ, lưu trữ d liu ca toàn b h thống. Đồng b hóa d liu
trên toàn h thng
- Ly d liu t máy trm ti các rp và chuyn d liu xung các máy trm
ti các chi nhánh khi có yêu cu
- Thêm/sa/xoá các thc th có trong toàn b h thng, to báo cáo thng
kê theo yêu cu.
- Phân quyn cho tng máy trạm tương ứng
5. Chức năng ở máy trm
Ti các rạp tương ứng vi các máy trm (3 máy trm)
- Mi khi nhp d liu ca 1 giao dch xong hoc thêm mi thông tin (khách
hàng, nn viên,…) s gi d liu lên máy ch.
- Lưu trữ d liu bán vé và các dch v khác ca rp chiếu phim.
- Khi cn d liu t các chi nhánh khác s truy vấn đến máy ch đ ly các
d liu cn thiết.
lOMoARcPSD|37054152
6. Phân tích CSDL
6.1. Lược đ liên kết thc th
6.2. Lược đ quan h
lOMoARcPSD|37054152
7. Bng tn sut truy cp
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: to mi và ghi
- E: sa
- D: xóa
- H: tn s cao
- L: tn s thp
III. Thiết kế
1. Thiết kế h thng mng tng quan
- Chi nhánh Hà Nội: Đặt máy trm thc hin chức năng và lưu toàn bộ CSDL
thuc Hà Ni.
- Chi nhánh Đà Nẵng: Đặt máy trm thc hin chức năng lưu toàn b
CSDL thuộc Đà Nẵng.
- Chi nhánh TP. H Chí Minh: Đặt máy trm thc hin chức năng và lưu toàn
b CSDL thuc TP.H Chí Minh.
2. Thiết kế CSDL ca h thng
Rp phim
STT
Tên thuc tín h
Kiu
Ràng buc
Khóa
1
MaRap
varchar(255)
Not null
PK
2
Ten
nvarchar(255
)
Not null
lOMoARcPSD|37054152
3
DiaChi
nvarchar(255
)
Not null
Địa ch rp phim
Khách hàng
STT
Tên thuc tí nh
Kiu
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 đin thoi khách hàng
5
Ngaysinh
date
Ngày sinh khách hà ng
Nhân viên
STT
Tên thuc tí nh
Kiu
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 qun lý
3
MaRapPhim
varchar(255
)
Not null
FK
Mã rp phim
4
Ten
nvarchar(25
5)
Not null
Tên khách hàng
5
DiaChi
nvarchar(25 5)
Not null
Địa ch khách hàng
6
SDT
varchar(255
)
Not null
S đin thoi khách hàng
7
NgaySinh
date
Not null
Ngày sinh khách hà ng
lOMoARcPSD|37054152
8
ChucVu
nvarchar(25
5)
Not null
Chc v ca nhân vi ên
9
TenDangNha p
varchar(255
)
Not null
Tên đăng nhập ca nhân
viên
10
MatKhau
varchar(255
)
Not null
Mt khẩu đăng nhập ca
nhân viên
STT
Tên thuc tín h
Kiu
Ràng buc
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ã lch chiếu
phim
4
MaBanVe
varchar(255)
FK
Mã bán vé
5
ThoiGian
datetime
Not null
Thi gian
6
GiaVe
oat
Not null
Giá vé
Hoá đơn
STT
Tên thuc tín h
Kiu
Ràng bu
c
Khóa
Mô t
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
Tng s tiền hoá đơn
4
GiamGia
oat
Not null
Gim giá
5
ThanhTien
oat
Not null
Thành tiền hoá đ ơn
lOMoARcPSD|37054152
6
ThoiGian
datetime
Not null
Thi gian tạo hoá đơn
Phòng
STT
Tên thuc tín h
Kiu
Ràng buc
Khóa
Mô t
1
MaPhong
varchar(255)
Not null
PK
Mã khách hà ng
2
MaRap
varchar(255)
Not null
FK
Mã rp 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 thuc tín h
Kiu
Ràng buc
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
ca ghế
4
Cot
int(10)
Not null
S th t ct
ca ghế trong
hàng
Phim
STT
Tên thuc tín h
Kiu
Ràng bu
c
Khóa
Mô t
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 loi
5
MaNCC
varchar(255)
Not null
FK
Nhà cung cp p him
6
XuatXu
nvarchar(255
)
Xut x ca phim
7
MoTa
nvarchar(255
)
Mô t phim
Nhà cung cp
STT
Tên thuc tín h
Kiu
Ràng bu
c
Khóa
Mô t
1
MaNCC
varchar(255)
Not null
PK Mã nhà cung cp
2
Ten
nvarchar(25 5)
Not null
Tên nhà cung c p
3
DiaChi
nvarchar(25 5)
Not null
Địa ch nhà cung cp
4
SDT
nvarchar(25 5)
Not null
S đin thoi ca
nhà cung cp
Bán vé
STT
Tên thuc tín h
Kiu
Ràng buc
Khóa
Mô t
1
MaBV
varchar(255)
Not null
PK
Mã bán vé
2
ThoiGian
datetime
Not null
Thi gian bán
3
MaKH
varchar(255)
Not null
FK
Mã KH mua
4
MaNV
varchar(255)
Not null
FK
Mã NV bán
Chiếu
STT
Tên thuc tín h
Kiu
Ràng buc
Khóa
1
MaChieu
varchar(255)
Not null
PK
lOMoARcPSD|37054152
2
ThoiGianChie u
datetime
Not null
3
GiaSuatChieu
oat
Not null
4
MaPhong
varchar(255)
Not null
FK
5
MaPhim
varchar(255)
Not null
FK
3. c đ quan h liên kết
lOMoARcPSD|37054152
2.2.5 Thiết kế phân mnh ngang và nhân bn
- Bng Phim, Rp phim s đưc chung cho các Site, nhưng chỉ đưc cp nht,
sa, xóa ti máy ch tng.
- Bao gm các bng Nhân viên, Khách hàng, Vé, Phòng, Ghế s đưc dùng riêng
ti mi Site. Site nào có quyn qun lý các bng của Site đó.
a. Thiết kế h thng thông tin v CSDL cho phân mnh ngang
- Máy trm ti Hà Nội, Đà nẵng, Tp. HCM ch được lưu trữ các bn ghi d liu
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 ti site mình.
- Các d liu v Phim, Rp phim s ợc lưu thay đổi to server ti các
trm có th nhân bn.
lOMoARcPSD|37054152
b. c đ phc v cho phân mnh ngang
c. Phân mnh d liu
Phân mnh ngang nguyên thy phân mnh ngang dn xuất để chia
quan h tng th thành 4 mảnh đặt ti 4 v trí như sau:
+ V trí 1: D liu đt ti máy ch i lý tng).
+ V trí 2: D liu đt ti trm 1 (Hà Ni).
+ V trí 3: D liu đt ti trạm 2 (Đà Nẵng).
+ V trí 4: D liu đt ti trm 3 (H Chí Minh)
Mn
h
Serv
er
CSDL
Phân mnh
nguyên thy
Phân mnh dn xut
1
1
Qun
lý rp
chiếu
phim
- Bng phân
mnh Rap
- Điu kin
phân tán: Rap1 =
σ
ma=“RAP1”
(Rap)
- Bng phân mnh
NhanVien
- Điu kin dn xut:
NhanVien1 = NhanVien
Rap1
- Bng phân mnh BanVe - Điu
kin dn xut:
BanVe1 = BanVe NhanVien1
lOMoARcPSD|37054152
- Bng phân mnh Ve -
Điu kin dn xut:
Ve1 = Ve Chieu1
Bng phân mnh HoaDon -
Điu kin dn xut:
HoaDon1 = HoaDon BanVe1
- Bng phân mnh Phong-
Điu kin dn xut:
- Phong1 = Phong Rap1
- Bng phân mnh Chieu-
Điu kin dn xut:
- Chieu1 = Chieu Phong1
- Bng phân mnh Ghe-
Điu kin dn xut:
- Ghe1 = Ghe Phong1
2
2
Qun
lý rp
chiếu
phim
- Bng phân
mnh Rap
- Điu kin
phân tán: Rap2 =
σ
ma=“RAP2”
(Rap)
- Bng phân mnh
NhanVien
- Điu kin dn xut:
NhanVien2 = NhanVien
Rap2
- Bng phân mnh BanVe - Điu
kin dn xut:
BanVe2 = BanVe NhanVien2
- Bng phân mnh Ve -
Điu kin dn xut:
Ve2 = Ve Chieu2
- Bng phân mnh Phong - Điu
kin dn xut:
lOMoARcPSD|37054152
- Phong2 = Phong Rap2
- Bng phân mnh Chieu-
Điu kin dn xut:
- Chieu2 = Chieu Phong2
- Bng phân mnh Ghe-
Điu kin dn xut:
- Ghe = Ghe Phong
3
3
Qun
lý rp
chiếu
phim
- Bng phân
mnh Rap
- Điu kin
phân tán: Rap1 =
σ
ma=“RAP3”
(Rap)
- Bng phân mnh
NhanVien
- Điu kin dn xut:
NhanVien3 = NhanVien Rap3
- Bng phân mnh BanVe - Điu
kin dn xut:
BanVe3 = BanVe NhanVien3
- Bng phân mnh Ve -
Điu kin dn xut:
Ve3 = Ve Chieu3
- Bng phân mnh Phong-
Điu kin dn xut:
- Phong3 = Phong Rap3
- Bng phân mnh Chieu-
Điu kin dn xut:
- Chieu3 = Chieu Phong3
- Bng phân mnh Ghe-
Điu kin dn xut:
- Ghe3 = Ghe Phong3
d. c đ ánh x phân mnh
lOMoARcPSD|37054152
e. Sơ đồ định v
lOMoARcPSD|37054152
2.2.4 Thiết kế vt lý ti các trm
lOMoARcPSD|37054152
IV. Cài Đặt
1, Cài đặt SQL Server 2019 bn Developer
Chn Select All
Chn Named instance và nhp tên tùy chn
lOMoARcPSD|37054152
Chn Mixed mode và to mt khu tùy chn
Tiếp theo chn Add Current User -> Add
Chn Tabular Mode -> Add Current User -> Add
lOMoARcPSD|37054152
Chn 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 ni các máy
Vào Windows Defender Firewall để tắt tường la
Tiếp tc chn mc Advanced Settings
lOMoARcPSD|37054152
Chn Inbound Rules -> New rules -> Port -> Next
Nhp cng 1433
lOMoARcPSD|37054152
Chn tên tùy chnh và nhn 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 liu vi Server name: Window Authentication
lOMoARcPSD|37054152
Sau khi kết ni thành công, m Security -> Logins -> sa
Chut phi vào sachn Properties. Nhp mt khu và xác nhn mt khu.
Tiếp theo chn Status bên trái và Enable mc Logins.
lOMoARcPSD|37054152
Khi đó thể kết nối được vi tài khon sa va to bng cách chn Server name:
SQL Server Authentication.
M Radmin VPN, join phòng kim tra xem tt c các máy đã ping đưc vi
nhau hay chưa
lOMoARcPSD|37054152
Tiếp theo m SQL Server Con 昀椀 g -> Protocols for
SERVER_NAME -> TCP/IP -> Properties
Chn mc IP Address, copy IP Address t Radmin paste vào tng IP trong
danh sách, sau đó Enable cho tng IP. Chú ý để 1433 cho TCP Port.
lOMoARcPSD|37054152
Tr v SQL Server Services và restart SQL Server(SERVER_NAME) và SQL
Server Argent.
Đối vi máy trm, có th kết ni vi tt c các máy ch còn li bng các dùng IP
Address cho Server name, tài khon và mt khẩu bên dưới là ca máy ch đang
cần được kết ni.
lOMoARcPSD|37054152
1. To 昀椀 le cha data
- Tạo 1 folder có tên RELDATA để cha các d liệu trao đổi trong quá
trình update d liu t các phân mnh v cơ sở d liu gc, và t cơ
s d liu gc đến các phân mnh.
Chut phi vào folder -> chn Properties -> Sharing -> Share
lOMoARcPSD|37054152
Chn Everyone -> Add -> chn Read/Write cho Everyone
lOMoARcPSD|37054152
lOMoARcPSD|37054152
2. To CSDL cho Server máy trạm và đồng b CSDL cho các máy ch
Chn Replication -> chut phi vào Local Publication -> New Publication
lOMoARcPSD|37054152
Chn 1 CSDL
Chn Merge Publication
lOMoARcPSD|37054152
B chn sysdiagrams
Ti ô Filter, ch WHERE[MaRap]=’RAP11’ để đồng b CSDL cho máy ch
RAP11
lOMoARcPSD|37054152
Chn mc con cn lc
To tài khon mt khu sa
lOMoARcPSD|37054152
Đặt tên cho máy ch
lOMoARcPSD|37054152
Chut phi vào máy ch va to, chn New Subsriptions…
lOMoARcPSD|37054152
lOMoARcPSD|37054152
Nhp tên cho Database name
lOMoARcPSD|37054152
Nhp tài khon sa ca máy ch
Chn run continuosly
lOMoARcPSD|37054152
Finish
4, To 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 mc Security, chn Be made using this security context -> nhp tài
khon và mt khu.
Chn True mc 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: chuyn t tiếng Vit thành ch cái không du
- Procedure tìm khách hàng theo tên, vi n khách hàng không phân bit hoa,
thường và có b du tiếng Vit
- Procedure to d liu cho bng Bán vé khi thc hin vic bán ra vé
lOMoARcPSD|37054152
- Procedure tìm lch chiếu theo tên phim, vi tên phim không phân bit hoa,
thường và có b du tiếng Vit
- Procedure to vé, vi id gm 8 ch cái đầu định danh tương ng vi
rp, các s sau tương ứng vi s th t ca vé
lOMoARcPSD|37054152
- Procedure tạo hoá đơn
Giao diện đăng nhập ca nhân viên:
lOMoARcPSD|37054152
Giao din chn khách hàng
Giao din chn phim:
lOMoARcPSD|37054152
Giao diện hoá đơn
lOMoARcPSD|37054152
| 1/57

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