Báo cáo bài tập lớn môn Cơ sở dữ liệu phân tán đề tài "Xây dựng hệ thống quản lý bán điện thoại"

Báo cáo bài tập lớn môn Cơ sở dữ liệu phân tán đề tài "Xây dựng hệ thống quản lý bán điện thoại" 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
Mục lục
I. Đặt vấn ề ........................................................................................................................ 1
1.1. Nhu cầu và tầm quan trọng của dự án ..................................................................
1
1.2. Sơ lược về dự án ...................................................................................................
1
1.3. Vị trí và nhiệm v , dữ liệu khi triển khai dự án
................................................... 2
1.4. Các ối tượng tham gia sử d ng dự án
................................................................. 2
II. Phân tích ........................................................................................................................
3
2.1. Phân tích các chức năng chính của hệ thống ........................................................
3
2.2. Phân quyền cho các nhóm ối tượng thực hiện dự án .......................................... 3
2.3. Phân tích chức năng của từng vị trí thực hiện dự án ............................................
4
2.3.1. Tr sở chính
................................................................................................... 4
2.3.2. Các chi nhánh ................................................................................................
4 2.4. Chức năng của máy trạm và máy
chủ................................................................... 5
2.4.1. Chức năng của máy trạm ...............................................................................
5
2.4.2. Chức năng của máy chủ ................................................................................
6
2.5. Phân tích cơ sở dữ liệu .........................................................................................
7
2.5.1. Mô hình thực thể liên kết ERD ..................................................................... 7
2.5.2. Mô hình quan hệ RDM .................................................................................. 8
2.6. Bảng tần suất truy cập tại các vị trí ......................................................................
8
lOMoARcPSD|37054152
III. Thiết kế .........................................................................................................................
9
3.1. Thiết kế hệ thống mạng tổng quan .......................................................................
9
3.2. Thiết kế CSDL của hệ thống ..............................................................................
10
3.2.1. Cấu trúc các bảng của hệ thống ................................................................... 10
3.2.2. Quan hệ giữa các bảng ................................................................................ 12
3.3. Thiết kế CSDLPT ...............................................................................................
13
3.3.1. Lược ồ ph c v cho phân mảnh ngang dẫn xuất
....................................... 13
3.3.2. Thiết kế phân mảnh ngang, nhân bản ..........................................................
14
3.3.3. Thiết kế lược ồ ánh xạ ............................................................................... 18
3.4. Thiết kế và vẽ sơ ồ ịnh vị ............................................................................... 19
3.4.1. Thiết kế sơ ồ ịnh vị .................................................................................. 19
3.4.2. Vẽ sơ ồ ịnh vị .......................................................................................... 21
3.5. Thiết kế lược ồ nhân bản, ồng bộ hóa .......................................................... 21
3.6. Thiết kế vật lý tại các trạm .................................................................................
22
IV. Cài ặt ......................................................................................................................... 23
4.1. Cài ặt SQL Server ............................................................................................. 23
4.1.1. Cài ặt SQL Server 2019 Evaluation .......................................................... 23
4.1.2. Cài ặt SQL Server Management Studio Tools (SSMS) ............................ 32
4.2. Cài ặt tường lửa và thiết lập cổng Port ............................................................. 34
4.3. Tạo thư m c phân tán
......................................................................................... 40
4.4. Tạo tài khoản sa trên SQL Server Management Studio .....................................
44
4.5. Cài ặt Radmin VPN .......................................................................................... 46
4.6. Cài ặt cổng SQL cho phép các máy kết nối từ xa ............................................ 51
4.7. Tạo CSDL quản lý bán iện thoại ...................................................................... 53
lOMoARcPSD|37054152
4.7.1. Tạo các bảng ................................................................................................
53
4.7.2. Tạo liên kết giữa các bảng ...........................................................................
54
4.7.3. Kết quả ........................................................................................................ 55
4.7.4. Dữ liệu các bảng .......................................................................................... 55
4.8. Configure Distribution ........................................................................................
58
4.8.1. Đăng nhập và bật SQL Server Agent .........................................................
59
4.8.2. Configure Distribution ................................................................................ 60
4.9. Tạo Publications ................................................................................................. 65
4.9.1. Tạo Transactional publication ..................................................................... 65
4.9.2. Tạo Merge publication ................................................................................ 71
4.10. Tạo Subscription ............................................................................................... 80
4.10.1. Thông tin các máy trạm .............................................................................
80
4.10.2. Các bước tạo subscription .........................................................................
80
4.11. Tạo Linked Servers ...........................................................................................
90
4.11.1 Tạo tài khoản HTKN ..................................................................................
90
4.11.2. Tạo Linked Servers ................................................................................... 92
V. Triggers ........................................................................................................................
95
5.1. Trigger thêm mới, kiểm tra cập nhật CHI_NHANH ..........................................
95
5.2. Trigger thêm mới, kiểm tra cập nhật CUA_HANG ...........................................
96
5.3. Trigger thêm mới, kiểm tra cập nhật NHAN_VIEN ..........................................
98
5.4. Trigger thêm mới, kiểm tra cập nhật GIAO_DICH .........................................
101
lOMoARcPSD|37054152
5.5. Trigger thêm mới, kiểm tra cập nhật KHACH_HANG ...................................
103
5.6. Trigger thêm mới, kiểm tra cập nhật SAN_PHAM .........................................
105
VI. Stored Procedures ....................................................................................................
109
6.1. Tổng số nhân viên của từng khu vực ................................................................
109
6.2. Tổng số cửa hàng tại từng khu vực ..................................................................
109
6.3. Tổng doanh thu tại từng khu vực ......................................................................
110
VII. Transactions ............................................................................................................
111
7.1. Giao tác phân tán thêm thông tin giữa các máy trạm .......................................
111
7.2. Giao tác phân tán giữa máy trạm và máy chủ ..................................................
112
lOMoARcPSD|37054152
1
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
I. Đặt vấn ề
1.1. Nhu cầu và tầm quan trọng của dự án
Thế giới ngày càng hội nhập, tạo ra cho doanh nghiệp thêm rất nhiều cơ hội. Một
trong những cơ hội ó là mở rộng thị trường kinh doanh thành các chi nhánh ặt tại nhiều ịa
iểm khác nhau, nhằm xây dựng hệ thống làm việc chuyên nghiệp, ph c v và áp ứng
tốt nhất yêu cầu của người dùng nhằm tối a hoá lợi nhuận, mang lại hiệu quả kinh tế cao
nhất. Hiện nay có rất nhiều doanh nghiệp lớn bán iện thoại như Thế giới di ộng,
Cellphones, … ã áp d ng chiến lược kinh doanh trên.
Tuy nhiên, việc mở rộng thành các chuỗi chi nhánh gây khó khăn cho việc quản lý
khi số lượng các giao dịch và mặt hàng tăng lên, khi ó khối lượng công việc theo từng
ngày sẽ rất lớn lên rất nhanh. Việc ặt cơ sở dữ liệu nội bộ tại các chi nhánh lại rất tốn kém
và em lại nhiều bất hợp lý. Trong những năm gần ây, thuật ngữ CSDL phân tán ã trở nên
gần gũi với những người làm công tác tin học. Việc ứng d ng CSDL phân tán vào các
lĩnh vực ời sống xã hội, vào các ngành kinh doanh, hàng không, ường sắt, thương mại, …
làm giảm thiểu tối a chi phí quản lý dữ liệu cũng như giúp người sử d ng có thể mua
nhanh chóng và thuận tiện hơn.
Việc xây dựng CSDL phân tán cho chuỗi cửa hàng bán iện thoại làm ơn giản hóa
việc lập các hóa ơn thống kê doanh thu cũng như việc lưu trữ chúng, cung cấp thông tin
nhanh chóng và chính xác, ph c v hữu hiệu cho việc quản lý và phát triển của chuỗi
cửa hàng.
Hệ thống quản lý cơ sở dữ liệu các chi nhánh bán iện thoại ph c v cho việc
quản lý thông tin nhân viên, thông tin các loại iện thoại và quản lý các giao dịch, quản lý
doanh thu cũng như số lượng iện thoại ược bán mỗi ngày tại từng chi nhánh. Các chi
nhánh có thể sử d ng toàn bộ dữ liệu của cả hệ thống và chuỗi cửa hàng ể quản lý ược
dữ liệu của mình. Khách hàng có thể thực hiện giao dịch ặt mua iện thoại tại tất cả các chi
nhánh trên cả nước.
1.2. Sơ lược về dự án
- Sản phẩm và khách hàng là dữ liệu chung của hệ thống sẽ ược cập nhật tại máy
chủ.
- Chi nhánh, cửa hàng, nhân viên, giao dịch là dữ liệu riêng của từng trạm và có thể
cập nhật tại máy trạm, và máy chủ.
- Dự án ược triển khai với 1 vùng quản lý tại 8 vùng xử lý.
lOMoARcPSD|37054152
2
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
a) Tr sở chính Hà Nội: nơi ặt máy chủ - Chức năng: quản lý dữ
liệu toàn hệ thống.
- Dữ liệu: tất cả dữ liệu.
- Nguồn dữ liệu: ược nhân viên nhập cũng như các máy trạm trả về.
- Dữ liệu vận chuyển ến: các máy trạm.
- Đối tượng sử d ng: nhân viên quản lý hệ thống, ược phép quản lý (thêm, sửa,
xóa) tất cả các dữ liệu.
b) Hải Phòng, Cần Thơ, Đà Nẵng, TP.Hồ Chí Minh, Huế, Bình
Dương, Nam Định, Vũng
Tàu: nơi ặt máy trạm
- Chức năng: quản lý dữ liệu của tất cả các ối tượng của tr sở ó (trừ sản phẩm) -
Dữ liệu: Chi nhánh, Cửa hàng, Nhân viên, Giao dịch và thông tin dữ liệu chung:
Sản phẩm và Khách hàng
- Nguồn dữ liệu: ược nhân viên nhập cũng như máy chủ gửi ến.
- Dữ liệu vận chuyển ến: máy chủ.
1.3. Vị trí và nhiệm vụ, dữ liệu khi triển khai dự án
Dự án ược triển khai trên toàn quốc với 9 vùng xử lý và 1 vùng quản lý
Vị trí 1: Server tổng ặt tại Hà Nội, dùng ể quản lý CSDL các trạm
Vị trí 2: Server chi nhánh, dùng ể quản lý CSDL tại chi nhánh Nam Định
Vị trí 3: Server chi nhánh, dùng ể quản lý CSDL tại chi nhánh Huế
Vị trí 4: Server chi nhánh, dùng ể quản lý CSDL tại chi nhánh Đà Nẵng
Vị trí 5: Server chi nhánh, dùng ể quản lý CSDL tại chi nhánh Bình Dương
Vị trí 6: Server chi nhánh, dùng ể quản lý CSDL tại chi nhánh Vũng Tàu
Vị trí 7: Server chi nhánh, dùng ể quản lý CSDL tại chi nhánh TP Hồ Chí Minh
Vị trí 8: Server chi nhánh, dùng ể quản lý CSDL tại chi nhánh Cần Thơ
Vị trí 9: Server chi nhánh, dùng ể quản lý CSDL tại chi nhánh Hải Phòng
1.4. Các ối tượng tham gia sử dụng dự án
a) Nhân viên bán hàng tại các cửa hàng:
- Có quyền xem thông tin của khách hàng và các sản phẩm ược ặt thuộc cửa hàng
của mình
- Có thể thêm, sửa và xóa thông tin của khách hàng
lOMoARcPSD|37054152
3
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
b) Nhân viên quản lý cửa hàng:
- Quản lý tất cả các quyền của nhân viên tại một cửa hàng
- Tạo báo cáo thống kê tại cửa hàng
c) Nhân viên quản lý chi nhánh:
- Quản lý tất cả các quyền của nhân viên tại một chi nhánh
- Tạo báo cáo thống kê tại chi nhánh
d) Tổng giám ốc:
- Có tất cả các quyền của ba loại nhân viên trên
- Có quyền thêm, sửa, xóa thông tin của sản phẩm
- Có quyền báo cáo thống kê chung của các chi nhánh
II. Phân tích
2.1. Phân tích các chức năng chính của hệ thống
- Quản lý thông tin nhân viên
- Quản lý thông tin cửa hàng
- Quản lý thông tin khách hàng
- Quản lý thông tin sản phẩm ( iện thoại)
- Quản lý dữ liệu giao dịch ặt mua iện thoại
- Thống kê doanh thu
2.2. Phân quyền cho các nhóm ối tượng thực hiện dự án
a) Nhân viên bán hàng tại cửa hàng
- Xem thông tin của bản thân
- Thêm, sửa thông tin giao dịch
- Xem thông tin sản phẩm
- Thêm, xem, sửa thông tin khách hàng
b) Nhân viên quản lí cửa hàng
- Xem thông tin của bản thân
- Xem thông tin cửa hàng
- Thêm, sửa, xóa thông tin giao dịch
lOMoARcPSD|37054152
4
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
- Thêm, sửa, xóa thông tin nhân viên bán hàng
- Xem thông tin sản phẩm
- Thêm, xem, sửa thông tin khách hàng
- Tạo báo cáo thống kê của cửa hàng
c) Nhân viên quản lí chi nhánh
- Có các quyền và có thể thêm, sửa, xóa thông tin của hai loại nhân viên trên
- Có thể xem, sửa, xóa thông tin của các cửa hàng
- Tạo báo cáo thống kê của chi nhánh
- Kiểm soát các thông tin giao dịch của chi nhánh
d) Tổng giám ốc
- Truy cập vào dữ liệu có trong hệ thống, cũng như có tất cả các quyền của các ối
tượng trên
- Thêm sửa xóa thông tin của tất cả dữ liệu
- Xem báo cáo chung của các chi nhánh
2.3. Phân tích chức năng của từng vị trí thực hiện dự án
2.3.1. Trụ sở chính
- Quản lý thông tin về các chi nhánh ( ọc).
- Quản lý tất cả thông tin ( ọc, thêm, sửa, xoá) về cửa hàng và sản phẩm của tất cả
các chi nhánh.
- Có thể xem ược tất cả các thông tin về nhân viên, khách hàng và giao dịch của tất
cả các chi nhánh.
- Thêm thông tin về sản phẩm rồi tự ộng cập nhật về cho các chi nhánh: Hà Nội,
TP Hồ Chí Minh, Nam Định, Huế, Đà Nẵng, Hải Phòng, Cần Thơ, Bình Dương,
Vũng Tàu
2.3.2. Các chi nhánh
- Các chi nhánh có quyền ọc, thêm, sửa, xoá thông tin của nhân viên. Các thông tin
này sẽ ược cập nhật lên chi nhánh tổng.
- Các chi nhánh có quyền xem, thêm, sửa thông tin khách hàng.
- Các chi nhánh có quyền xem, thêm, sửa, xóa thông tin giao dịch
- Thông tin về giao dịch sẽ ược cập nhật lên chi nhánh tổng
lOMoARcPSD|37054152
5
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
2.4. Chức năng của máy trạm và máy chủ
2.4.1. Chức năng của máy trạm
2.4.1.1. Chức năng quản lý khách hàng
- Giúp các nhân viên thực hiện các thao tác như thêm, ọc, sửa các thông tin của khách
hàng. Các thông tin sẽ ược lưu trong cơ sở dữ liệu.
- Các thông tin quản lý bao gồm:
Mã khách hàng
Nhập tên khách hàng
Nhập số iện thoại
Nhập ịa chỉ
2.4.1.2. Chức năng quản lý nhân viên
- Giúp quản lý thực hiện ược các thao tác như thêm, ọc, sửa, xóa thông tin của nhân
viên. Các thông tin sẽ ược lưu trong cơ sở dữ liệu.
- Các thông tin của nhân viên bao gồm:
Mã nhân viên: theo cú pháp “CHNVyyy
Ví d : Nhân viên mã 870 tại cửa hàng mã BD24 sẽ có mã BD24NV870
Tên nhân viên
Giới tính
Số iện thoại
Mã cửa hàng làm việc tương ứng của nhân viên
2.4.1.3. Chức năng quản lý sản phẩm
- Giúp quản lý thực hiện ược các thao tác như ọc thông tin của sản phẩm. Các thông
tin sẽ ược lưu trong cơ sở dữ liệu.
- Các thông tin của sản phẩm bao gồm:
Mã sản phẩm: theo cú pháp bắt ầu bằng IP với các máy dòng Apple hoặc SG với
dòng Samsung Galaxy
Tên sản phẩm
Loại sản phẩm
Giá
lOMoARcPSD|37054152
6
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
2.4.1.4. Chức năng quản lý giao dịch
- Giúp nhân viên bán hàng thực hiện các thao tác bán iện thoại, chọn phương
thức thanh toán và cập nhật thông tin giao dịch.
- Các thông tin của giao dịch bao gồm:
Mã giao dịch
Mã khách hàng
Mã sản phẩm
Số lượng
2.4.2. Chức năng của máy chủ
2.4.2.1. Có toàn bộ chức năng của các máy trạm 2.4.2.2. Chức năng quản lý thông tin các
chi nhánh
- Giúp người quản lý thực hiện các thao tác như ọc các thông tin chi tiết của chi
nhánh. Các thông tin sẽ ược lưu trữ trong cơ sở dữ liệu. Dữ liệu của chi nhánh thêm
vào tại chi nhánh Hà Nội sẽ ược chuyển ến máy trạm tương ứng tại chi nhánh Hải
Phòng, TP Hồ Chí Minh, Huế, Nam Định, Đà Nẵng, Bình Dương, Vũng Tàu, Cần
Thơ.
- Các thông tin của chi nhánh bao gồm:
Mã chi nhánh: tên viết tắt của tỉnh thành ó (VD: Hà Nội -> HN)
Tên chi nhánh
Số iện thoại
2.4.2.3. Chức năng quản lý thông tin sản phẩm
- Giúp người quản lý thực hiện các thao tác như thêm, ọc, sửa, xóa các thông tin chi
tiết của sản phẩm. Các thông tin sẽ ược lưu trữ trong cơ sở dữ liệu. Dữ liệu của sản
phẩm thêm vào tại chi nhánh Hà Nội sẽ ược chuyển ến máy trạm tương ứng tại chi
nhánh Hải Phòng, TP Hồ Chí Minh, Huế, Nam Định, Đà Nẵng, Bình Dương, Vũng
Tàu, Cần Thơ.
- Các thông tin của sản phẩm bao gồm:
Mã sản phẩm: theo cú pháp bắt ầu bằng IP với các máy dòng Apple hoặc SG với
dòng Samsung Galaxy
Tên sản phẩm
Loại sản phẩm
Giá
lOMoARcPSD|37054152
7
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
2.4.2.4. Chức năng quản lý thông tin nhân viên
- Giúp người quản lý thực hiện các thao tác như ọc các thông tin chi tiết của nhân
viên. Các thông tin sẽ ược lưu trữ trong cơ sở dữ liệu. Dữ liệu của nhân viên tại chi
nhánh Hà Nội sẽ ược chuyển ến máy trạm tương ứng tại chi nhánh Hải Phòng tương
tự ối với các chi nhánh TP Hồ Chí Minh, Huế, Nam Định, Đà Nẵng, Bình Dương,
Vũng Tàu, Cần Thơ.
- Các thông tin của nhân viên bao gồm:
Mã nhân viên: theo cú pháp “CHNVyyy
Ví d : Nhân viên mã 870 tại cửa hàng mã BD24 sẽ có mã BD24NV870
Tên nhân viên
Giới tính
Số iện thoại
Mã cửa hàng làm việc tương ứng của nhân viên
2.5. Phân tích cơ sở dữ liệu
2.5.1. Mô hình thực thể liên kết ERD
lOMoARcPSD|37054152
8
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
lOMoARcPSD|37054152
9
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
2.5.2. Mô hình quan hệ RDM
2.6. Bảng tần suất truy cập tại các vị trí
Thực thể
Tr sở chính
Chi nhánh
CHI_NHANH
H.R, L.W.E.D
H.R
CUA_HANG
H.R, L.W.E.D
H.R, L.W.E.D
NHAN_VIEN
H.R, L.W.E.D
H.R.W.E.D
lOMoARcPSD|37054152
10
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
GIAO_DICH
H.R.W.E.D
H.R.W.E.D
SAN_PHAM
H.R.W.E.D
H.R
KHACH_HANG
H.R
H.R.W.E.D
Trong ó:
W: Tạo mới và ghi
E: Sửa
R: Đọc
D: Xóa
H: Tần suất cao L: Tần suất thấp
III. Thiết kế
3.1. Thiết kế hệ thống mạng tổng quan
- Chi nhánh Hà Nội: Đặt máy Server DK thực hiện các chức năng và lưu CSDL của
toàn hệ thống.
- Chi nhánh Hải Phòng: Đặt máy trạm 1 và các client tương ứng thực hiện chức
năng và lưu toàn bộ CSDL thuộc Hải Phòng
- Chi nhánh Nam Định: Đặt máy trạm 2 và các client tương ứng thực hiện chức năng
và lưu toàn bộ CSDL thuộc Nam Định
- Chi nhánh Huế: Đặt máy trạm 3 và các client tương ứng thực hiện chức năng và
lưu toàn bộ CSDL thuộc Huế
- Chi nhánh Đà Nẵng: Đặt máy trạm 4 và các client tương ứng thực hiện chức năng
và lưu toàn bộ CSDL thuộc Đà Nẵng
- Chi nhánh Bình Dương: Đặt máy trạm 5 và các client tương ứng thực hiện chức
năng và lưu toàn bộ CSDL thuộc Bình Dương
- Chi nhánh TP Hồ Chí Minh: Đặt máy trạm 6 và các client tương ứng thực hiện
chức năng và lưu toàn bộ CSDL thuộc TP Hồ Chí Minh
- Chi nhánh Vũng Tàu: Đặt máy trạm 7 và các client tương ứng thực hiện chức năng
và lưu toàn bộ CSDL thuộc Vũng Tàu
- Chi nhánh Cần Thơ: Đặt máy trạm 8 và các client tương ứng thực hiện chức năng
và lưu toàn bộ CSDL thuộc Cần Thơ.
lOMoARcPSD|37054152
11
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
3.2. Thiết kế CSDL của hệ thống
3.2.1. Cấu trúc các bảng của hệ thống
- Trong quá trình thiết kế phân mảnh cho hệ thống, chúng ta chỉ sử d ng phân mảnh
ngang ể phân tán dữ liệu tạo nên cấu trúc vật lý của các bảng dữ liệu tại các trạm ều giống
nhau. Các bảng dữ liệu tương ứng với các thực thể và mối quan hệ trong hệ thống như
sau: Các ký hiệu dùng ể mô tả:
Null: ược rỗng, Not Null (không ược rỗng)
PK (Primary key): Khóa chính FK (Foreign key): Khóa
ngoại
a) Thực thể CHI_NHANH
- Dùng ể lưu trữ thông tin về các chi nhánh
STT
Tên thuộc tính
Kiểu dữ liệu
Ràng buộc
Mô tả
1
MA_CN
nvarchar(50)
Not null
Mã chi nhánh
2
TEN_CN
nvarchar(50)
Not null
Tên chi nhánh
3
SDT
nvarchar(50)
Not null
Số iện thoại tổng của
chi nhánh ó
- MA_CN ược ặt theo mã viết tắt của thành phố ó, ví d :
Chi nhánh Hà Nội: HN
Chi nhánh Thành phố Hồ Chí Minh: HCM
b) Thực thể CUA_HANG
- Dùng ể lưu trữ thông tin về các cửa hàng
STT
Tên thuộc tính
Kiểu dữ liệu
Ràng buộc
Mô tả
1
MA_CH
nvarchar(50)
Not null
Mã cửa hàng
2
SDT_CH
nvarchar(50)
Not null
Số iện thoại cửa hàng
3
DIA_CHI
nvarchar(50)
Not null
Địa chỉ cửa hàng
4
MA_CN
Nvarchar(50)
Not null
Mã chi nhánh
- MA_CH ược ặt theo mã chi nhánh và thêm 2 số nguyên ở sau, ví d :
Cửa hàng mã 47 ở Huế: HUE47
lOMoARcPSD|37054152
12
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
c) Thực thể NHAN_VIEN
- Dùng ể lưu trữ thông tin về các nhân viên
STT
Tên thuộc tính
Kiểu dữ liệu
Ràng buộc
Khóa
Mô tả
1
MA_NV
nvarchar(50)
Not null
PK
Mã nhân viên
2
TEN_NV
nvarchar(50)
Not null
Tên nhân viên
3
GIOITINH
nvarchar(50)
Not null
Giới tính
4
SDT
nvarchar(50)
Not null
Số iện thoại
5
MA_CH
nvarchar(50)
Not null
FK
Mã cửa hàng
- MA_NV có dạng “CHxNVy”, trong ó:
- VD: Nhân viên mã số 870 ở cửa hàng BD24 sẽ có mã là BD24NV870
d) Thực thể GIAO_DICH
- Dùng ể lưu trữ thông tin về các giao dịch
STT
Tên thuộc tính
Kiểu dữ liệu
Ràng buộc
Khóa
Mô tả
1
MA_SP
nvarchar(50)
Not null
FK
Mã sản phẩm
2
MA_KH
nvarchar(50)
Not null
FK
Mã khách hàng
3
MA _NV
nvarchar(50)
Not null
FK
Mã nhân viên
4
SO_LUONG
int
Not null
Số lượng
e) Thực thể SAN_PHAM
- Dùng ể lưu trữ thông tin về các sản phẩm
STT
Tên thuộc tính
Kiểu dữ liệu
Ràng buộc
Mô tả
1
MA_SP
varchar(50)
Not null
Mã sản phẩm
2
TEN_SP
nvarchar(50)
Not null
Tên sản phẩm
3
LOAI
nvarchar(50)
Not null
Loại sản phẩm
4
GIA
int
Not null
Giá sản phẩm
- MA_SP sẽ bắt ầu bằng “IP” tương ứng với Iphone và “SG” ứng với Samsung
Galaxy, ví d
Iphone 12 => IP12
Samsung Galaxy Z => SGZ
lOMoARcPSD|37054152
13
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
f) Thực thể KHACH_HANG
- Dùng ể lưu trữ thông tin về các khách hàng
STT
Tên thuộc tính
Kiểu dữ liệu
Ràng buộc
Khóa
Mô tả
1
MA_KH
nvarchar(50)
Not null
PK
Mã khách hàng
2
TEN_KH
nvarchar(50)
Not null
Tên khách hàng
3
SO_DIEN_THOAI
nvarchar(50)
Not null
Số iện thoại
4
DIA_CHI
nvarchar(50)
Not null
Địa chỉ
- Ma_KH có ịnh dạng là XXX-NNN-NNN
Với X là các chữ cái (từ A->Z viết hoa)
N là các số tự nhiên (0->9)
VD: TQM-472-002
3.2.2. Quan hệ giữa các bảng
lOMoARcPSD|37054152
14
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
3.3. Thiết kế CSDLPT
3.3.1. Lược ồ phục vụ cho phân mảnh ngang dẫn xuất
lOMoARcPSD|37054152
15
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
3.3.2. Thiết kế phân mảnh ngang, nhân bản
Mảnh
Tr
Sở
Cơ sở dữ
liệu
Phân mảnh ngang nguyên
thủy
Phân mảnh ngang dẫn
xuất
1
Nam
Định
Quản lý bán
iện thoại
Nam Định
- Bảng phân mảnh:
CHI_NHANH
- Điều kiện phân tán:
CHI_NHANH_ND =
σ
MA_CN
=
ND
(CHI_NHANH)
- Bảng phân mảnh:
CUA_HANG
- Điều kiện dẫn xuất:
CUA_HANG1 =
CUA_HANG
CHI_NHANH_ND
- Bảng phân mảnh:
NHAN_VIEN
- Điều kiện dẫn xuất:
NHAN_VIEN1 =
NHAN_VIEN
CUA_HANG
- Bảng phân mảnh:
GIAO_DICH
- Điều kiện dẫn xuất:
GIAO_DICH1=
GIAO_DICH
NHAN_VIEN
2
Hải
Phòng
Quản lý bán
iện thoại Hải
Phòng
- Bảng phân mảnh:
CHI_NHANH
- Điều kiện phân tán:
CHI_NHANH_HP =
σ
MA_CN
=
HP
(CHI_NHANH)
- Bảng phân mảnh:
CUA_HANG
- Điều kiện dẫn xuất:
CUA_HANG2 =
CUA_HANG
CHI_NHANH_HP
lOMoARcPSD|37054152
16
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
- Bảng phân mảnh:
NHAN_VIEN
- Điều kiện dẫn xuất:
NHAN_VIEN2 =
NHAN_VIEN
CUA_HANG
- Bảng phân mảnh:
GIAO_DICH
- Điều kiện dẫn xuất:
GIAO_DICH2 =
GIAO_DICH
NHAN_VIEN
3
Đà
Nẵng
Quản lý bán
iện thoại Đà
Nẵng
- Bảng phân mảnh:
CHI_NHANH
- Điều kiện phân tán:
CHI_NHANH_DN =
σ
MA_CN
=
DN
(CHI_NHANH)
- Bảng phân mảnh:
CUA_HANG
- Điều kiện dẫn xuất:
CUA_HANG3 =
CUA_HANG
CHI_NHANH_DN
- Bảng phân mảnh:
NHAN_VIEN
- Điều kiện dẫn xuất:
NHAN_VIEN3 =
NHAN_VIEN
CUA_HANG
lOMoARcPSD|37054152
17
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
- Bảng phân mảnh:
GIAO_DICH
- Điều kiện dẫn xuất:
GIAO_DICH3 =
GIAO_DICH
NHAN_VIEN
4
Huế
Quản lý bán
iện thoại
Huế
- Bảng phân mảnh:
CHI_NHANH
- Điều kiện phân tán:
CHI_NHANH_HUE =
- Bảng phân mảnh:
CUA_HANG
- Điều kiện dẫn xuất:
σ
MA_CN
=
HUE
(CHI_NHANH)
CUA_HANG4 =
CUA_HANG
CHI_NHANH_HUE
- Bảng phân mảnh:
NHAN_VIEN
- Điều kiện dẫn xuất:
NHAN_VIEN4 =
NHAN_VIEN
CUA_HANG
- Bảng phân mảnh:
GIAO_DICH
- Điều kiện dẫn xuất:
GIAO_DICH4 =
GIAO_DICH
NHAN_VIEN
lOMoARcPSD|37054152
18
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
5
Bình
Dương
Quản lý bán
iện thoại
Bình Dương
- Bảng phân mảnh:
CHI_NHANH
- Điều kiện phân tán:
CHI_NHANH_BD =
σ
MA_CN
=
BD
(CHI_NHANH)
- Bảng phân mảnh:
CUA_HANG
- Điều kiện dẫn xuất:
CUA_HANG5 =
CUA_HANG
CHI_NHANH_BD
- Bảng phân mảnh:
NHAN_VIEN
- Điều kiện dẫn xuất:
NHAN_VIEN5 =
NHAN_VIEN
CUA_HANG
- Bảng phân mảnh:
GIAO_DICH
- Điều kiện dẫn xuất:
GIAO_DICH5 =
GIAO_DICH
NHAN_VIEN
6
TP.Hồ
Chí
Minh
Quản lý bán
iện thoại
TP.Hồ Chí
Minh
- Bảng phân mảnh:
CHI_NHANH
- Điều kiện phân tán:
CHI_NHANH_HCM =
σ
MA_CN
=
HCM
(CHI_NHANH)
- Bảng phân mảnh:
CUA_HANG
- Điều kiện dẫn xuất:
CUA_HANG6 =
CUA_HANG
CHI_NHANH_HCM
lOMoARcPSD|37054152
19
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
- Bảng phân mảnh:
NHAN_VIEN
- Điều kiện dẫn xuất:
NHAN_VIEN6 =
NHAN_VIEN
CUA_HANG
- Bảng phân mảnh:
GIAO_DICH
- Điều kiện dẫn xuất:
GIAO_DICH6 =
GIAO_DICH
NHAN_VIEN
7
Cần
Thơ
Quản lý bán
iện thoại
Cần Thơ
- Bảng phân mảnh:
CHI_NHANH
- Điều kiện phân tán:
CHI_NHANH_CT =
σ
MA_CN
=
CT
(CHI_NHANH)
- Bảng phân mảnh:
CUA_HANG
- Điều kiện dẫn xuất:
CUA_HANG7 =
CUA_HANG
CHI_NHANH_CT
- Bảng phân mảnh:
NHAN_VIEN
- Điều kiện dẫn xuất:
NHAN_VIEN7 =
NHAN_VIEN
CUA_HANG
lOMoARcPSD|37054152
20
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
- Bảng phân mảnh:
GIAO_DICH
- Điều kiện dẫn xuất:
GIAO_DICH7 =
GIAO_DICH
NHAN_VIEN
8
Vũng
Tàu
Quản lý bán
iện thoại
Vũng Tàu
- Bảng phân mảnh:
CHI_NHANH
- Điều kiện phân tán:
CHI_NHANH_VT =
σ
MA_CN
=
VT
(CHI_NHANH)
- Bảng phân mảnh:
CUA_HANG
- Điều kiện dẫn xuất:
CUA_HANG8 =
CUA_HANG
CHI_NHANH_VT
- Bảng phân mảnh:
NHAN_VIEN
- Điều kiện dẫn xuất:
NHAN_VIEN8 =
NHAN_VIEN
CUA_HANG
- Bảng phân mảnh:
GIAO_DICH
- Điều kiện dẫn xuất:
GIAO_DICH8 =
GIAO_DICH
NHAN_VIEN
3.3.3. Thiết kế lược ồ ánh xạ
lOMoARcPSD|37054152
21
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
3.4. Thiết kế và vẽ sơ ồ ịnh vị
3.4.1. Thiết kế sơ ồ ịnh vị
- 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 8 mảnh ặt tại 8 chi nhánh sau:
Server chính ặt tại Hà Nội chứa thông tin của toàn bộ hệ thống: Các
CHI_NHANH, CUA_HANG, NHAN_VIEN, GIAO_DICH, KHACH_HANG,
SAN_PHAM của toàn bộ hệ thống
Chi nhánh Hải Phòng: Máy trạm ặt tại Hải Phòng chứa thông tin của chi nhánh ó;
Các CHI_NHANH, CUA_HANG, NHAN_VIEN, GIAO_DICH,
KHACH_HANG, SAN_PHAM của chi nhánh ó.
Chi nhánh Nam Định: Máy trạm ặt tại Nam Định chứa thông tin của chi nhánh
lOMoARcPSD|37054152
22
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
ó; Các CHI_NHANH, CUA_HANG, NHAN_VIEN, GIAO_DICH, KHACH_HANG,
SAN_PHAM của chi nhánh ó.
Chi nhánh Huế: Máy trạm ặt tại Huế chứa thông tin của chi nhánh ó; Các
CHI_NHANH, CUA_HANG, NHAN_VIEN, GIAO_DICH, KHACH_HANG,
SAN_PHAM của chi nhánh ó.
Chi nhánh Đà Nẵng: Máy trạm ặt tại Đà Nẵng chứa thông tin của chi nhánh ó;
Các CHI_NHANH, CUA_HANG, NHAN_VIEN, GIAO_DICH,
KHACH_HANG, SAN_PHAM của chi nhánh ó.
Chi nhánh Bình Dương: Máy trạm ặt tại Bình Dương chứa thông tin của chi nhánh
ó; Các CHI_NHANH, CUA_HANG, NHAN_VIEN, GIAO_DICH,
KHACH_HANG, SAN_PHAM của chi nhánh ó.
Chi nhánh Vũng Tàu: Máy trạm ặt tại Vũng Tàu chứa thông tin của chi nhánh ó;
Các CHI_NHANH, CUA_HANG, NHAN_VIEN, GIAO_DICH,
KHACH_HANG, SAN_PHAM của chi nhánh ó.
Chi nhánh Cần Thơ: Máy trạm ặt tại Cần Thơ chứa thông tin của chi nhánh ó;
Các CHI_NHANH, CUA_HANG, NHAN_VIEN, GIAO_DICH,
KHACH_HANG, SAN_PHAM của chi nhánh ó.
Chi nhánh TP.HCM: Máy trạm ặt tại TP.HCM chứa thông tin của chi nhánh ó;
Các CHI_NHANH, CUA_HANG, NHAN_VIEN, GIAO_DICH,
KHACH_HANG, SAN_PHAM của chi nhánh ó.
lOMoARcPSD|37054152
23
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
3.4.2. Vẽ sơ ồ ịnh vị
3.5. Thiết kế lược ồ nhân bản, ồng bộ hóa
- Thông tin tại máy chủ: Các Sản phẩm và Khách hàng tại máy chủ sẽ ược nhân bản
tại các máy trạm ( ồng bộ hóa về máy trạm mỗi khi có sự thay ổi từ máy chủ).
Nhân bản có thể thực thi giữa những CSDL trên cùng một server hay những server
khác nhau ược kết nối bởi mạng LANs,WANs hay Internet.
- Nếu tại máy chủ có sự cập nhật thông tin Chi nhánh, Cửa hàng, Nhân viên, Giao
dịch thì sẽ ược ồng bộ hóa về tr sở nó thuộc về.
lOMoARcPSD|37054152
24
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
- Thông tin tại máy trạm: Chi nhánh, Cửa hàng, Nhân viên, Giao dịch, Khách hàng
ược cập nhật thì sẽ ược ồng bộ hóa về máy chủ mỗi khi có thông tin
3.6. Thiết kế vật lý tại các trạm
STT
Tên bảng
Ý nghĩa
1
CHI_NHANH
Chi nhánh, chứa thông tin liên quan ến chi nhánh ph c
v cho công tác quản lý chi nhánh
2
SAN_PHAM
Sản phẩm, chứa thông tin liên quan ến sản phẩm ph c
v cho công tác quản lý thông tin sản phẩm
3
KHACH_HANG
Khách hàng, chứa thông tin liên quan ến khách hàng ph c
v cho công tác quản lý thông tin khách hàng
4
NHAN_VIEN
Nhân viên, chứa thông tin liên quan ến nhân viên ph c
v cho công tác quản lý nhân viên
5
GIAO_DICH
Giao dịch, chứa thông tin liên quan ến giao dịch ph c v
cho công tác quản lý giao dịch
6
CUA_HANG
Cửa hàng, chứa thông tin liên quan ến cửa hàng ph c v
cho công tác quản lý cửa hàng
IV. Cài ặt
4.1. Cài ặt SQL Server
4.1.1. Cài ặt SQL Server 2019 Evaluation
Bước: Truy cập vào ường link ể tải (tải bản developer):
https://www.microsoft.com/en-us/sql-server/sql-server-downloads
lOMoARcPSD|37054152
25
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Mở file SQL2019-SSEI-Dev vừa tải về
Chọn Download Media
Chọn dạng tải về là ISO và chọn ường dẫn rồi ấn download
lOMoARcPSD|37054152
26
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Sau khi tải xong, ấn close
lOMoARcPSD|37054152
27
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Download và chạy file SETUP.EXE
Installation -> “New SQL ...”
lOMoARcPSD|37054152
28
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Next cho ến Installation Type.
Chọn “Perform a new installation of SQL Server 2019” nếu muốn tạo server mới hoặc
Chọn “Add features to an existing instance of SQL Server or want to install shared” nếu
muốn các thư viện vào SERVER cũ.
Chọn “Perform a new installation of SQL Server 2019”
lOMoARcPSD|37054152
29
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Đặt tên SQL server là CSDLPTNHOM1 và Next
Next
lOMoARcPSD|37054152
30
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Chọn Mixed Mode -> tạo password cho tài khoản sa -> chọn Add current user -> next
lOMoARcPSD|37054152
31
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Nhấn Add Current User ể thêm tài khoản
Chọn Install
Cài ặt xong SQL Server
lOMoARcPSD|37054152
32
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Sau khi cài ặt SQL Server thành công, tiếp t c cài SSMS
lOMoARcPSD|37054152
33
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
4.1.2. Cài ặt SQL Server Management Studio Tools (SSMS)
Nhấn Free Download for SSMS 19.0.2, sau ó mở thư m c tải về và chạy file SSMS-
Setup-ENU
lOMoARcPSD|37054152
34
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Khi giao diện cài ặt hiển thị chọn install
4.2. Cài ặt tường lửa và thiết lập cổng Port
Control Panel\System and Security\Windows Firewall
lOMoARcPSD|37054152
35
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Click chọn theo mũi tên hướng dẫn
Chọn “Advanced setting”
lOMoARcPSD|37054152
36
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Chọn “Inbound Rules”
Chọn “Port” rồi chọn “Next”
lOMoARcPSD|37054152
37
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Chọn next
Chọn TCP
Nhập cổng 1433
lOMoARcPSD|37054152
38
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Đặt tên là tcp
Làm tương tự ể mở cổng UDP 1434
Đặt tên là UDP
Tiếp t c chọn new Rule
lOMoARcPSD|37054152
39
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Tiếp theo chọn ường dẫn ến filesqlservr
lOMoARcPSD|37054152
40
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Nhấn open
Đặt tên và Finish
lOMoARcPSD|37054152
41
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
4.3. Tạo thư mục phân tán
Tạo 1 folder C:\REPLDATA ể 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
Click chuột phải vào folder REPLDATA > Properties
lOMoARcPSD|37054152
42
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Chọn tab Sharing > Share
Chọn Everyone, click Add, và chọn quyền Read/Write như trong hình. Cuối cùng, click
Share.
lOMoARcPSD|37054152
43
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Chọn “Done”
lOMoARcPSD|37054152
44
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
4.4. Tạo tài khoản sa trên SQL Server Management Studio
Chạy SQL Server Management Studio và login bằng Windows Authentication như thông
thường.
Tìm ến Security > Logins > sa
Vào General ể ổi mật khẩu -> B漃漃 check Enforce password policy
lOMoARcPSD|37054152
45
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Sang chọn m c Status -> các m c như trong hình -> ấn Ok
lOMoARcPSD|37054152
46
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
4.5. Cài ặt Radmin VPN
Giới thiệu: phần mềm Radmin VPN là phần mềm dùng ể tạo mạng riêng ảo (VPN).
Cho phép thiết lập kết nối bảo mật giữa các máy tính qua internet như thể các máy tính
này kết nối với nhau trên mạng LAN.
Cài ặt phần mềm Radmin VPN, theo link dưới:
https://www.radmin-vpn.com/
Mở file .exe vừa tải về
Thực hiện cài ặt Radmin VPN
lOMoARcPSD|37054152
47
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Sau khi cài ặt xong
Tạo ường link giữa các mạng với nhau
Máy chủ tạo network
lOMoARcPSD|37054152
48
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Create network
Network name: CSDLPTNHOM1L4
Password: 12345678
Máy trạm tham gia network
Network name: CSDLPTNHOM1L4
lOMoARcPSD|37054152
49
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Password: 12345678
Các máy trạm sẽ kết nối với nhau và kết nối với máy chủ bằng VPN này. Sau khi ã kết
nối ta có giao diện như sau:
Kiểm tra kết nối bằng cách chuột phải vào thành viên và click ping
lOMoARcPSD|37054152
50
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Và kết quả ra như hình sau nghĩa là các máy ã kết nối với nhau thành công
4.6. Cài ặt cổng SQL cho phép các máy kết nối từ xa
Sql Server Configuration Manager ể cấu hình IP cho từng máy
lOMoARcPSD|37054152
51
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Chọn SQL Server Network configuration -> Protocols for CSDLPTNHOM1
Với máy chủ chúng ta phải thêm ip máy chủ vào m c IP1, ip các máy trạm trong VPN
vào các m c còn lại. Tất cả ể TCP port là 1433 và Enabled
lOMoARcPSD|37054152
52
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Restart lại server
lOMoARcPSD|37054152
53
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
4.7. Tạo CSDL quản lý bán iện thoại
4.7.1. Tạo các bảng
a) Tạo bảng Chi nhánh
CREATE TABLE CHI_NHANH(
MA_CN nvarchar(50) NOT NULL,
TEN_CN nvarchar(50) NOT NULL,
SDT nvarchar(50) NOT NULL,
CONSTRAINT PK_CHI_NHANH PRIMARY KEY CLUSTERED (MA_CN ASC)
)
b) Tạo bảng Cửa hàng
CREATE TABLE CUA_HANG(
MA_CH nvarchar(50) NOT NULL,
DIA_CHI nvarchar(50) NOT NULL,
SDT nvarchar(50) NOT NULL,
MA_CN nvarchar(50) NOt NULL,
CONSTRAINT PK_CUA_HANG PRIMARY KEY CLUSTERED (MA_CH ASC)
)
c) Tạo bảng Nhân viên
CREATE TABLE NHAN_VIEN(
MA_NV nvarchar(50) NOT NULL,
TEN_NV nvarchar(50) NOT NULL,
SDT nvarchar(50) NOT NULL,
GIOI_TINH nvarchar(50) NOT NULL,
MA_CH nvarchar(50) NOt NULL,
CONSTRAINT PK_NHAN_VIEN PRIMARY KEY CLUSTERED (MA_NV ASC),
)
d) Tạo bảng Khách hàng
CREATE TABLE KHACH_HANG(
lOMoARcPSD|37054152
54
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
MA_KH nvarchar(50) NOT NULL,
TEN_KH nvarchar(50) NOT NULL,
SDT nvarchar(50) NOT NULL,
DIA_CHI nvarchar(50) NOT NULL,
CONSTRAINT PK_KHACH_HANG PRIMARY KEY CLUSTERED (MA_KH ASC),
)
e) Tạo bảng Sản phẩm
CREATE TABLE SAN_PHAM(
MA_SP nvarchar(50) NOT NULL,
TEN_SP nvarchar(50) NOT NULL,
LOAI nvarchar(50) NOT NULL,
GIA int NOT NULL,
CONSTRAINT PK_SAN_PHAM PRIMARY KEY CLUSTERED (MA_SP ASC),
)
f) Tạo bảng Giao dịch :
CREATE TABLE GIAO_DICH(
MA_NV nvarchar(50) NOT NULL,
MA_KH nvarchar(50) NOT NULL,
MA_SP nvarchar(50) NOT NULL,
SO_LUONG int NOT NULL,
CONSTRAINT PK_GIAO_DICH PRIMARY KEY CLUSTERED (MA_SP
ASC,MA_NV ASC,MA_KH ASC)
)
4.7.2. Tạo liên kết giữa các bảng
a) Tạo liên kết giữa bảng Chi nhánh và Cửa hàng :
ALTER TABLE CUA_HANG WITH CHECK ADD CONSTRAINT
FK_CUA_HANG_CHI_NHANH FOREIGN KEY(MA_CN)
REFERENCES CHI_NHANH (MA_CN)
ALTER TABLE CUA_HANG CHECK CONSTRAINT
FK_CUA_HANG_CHI_NHANH
b) Tạo liên kết giữa bảng Nhân viên và Cửa hàng :
ALTER TABLE NHAN_VIEN WITH CHECK ADD CONSTRAINT
FK_NHAN_VIEN_CUA_HANG FOREIGN KEY(MA_CH)
REFERENCES CUA_HANG (MA_CH)
ALTER TABLE NHAN_VIEN CHECK CONSTRAINT FK_NHAN_VIEN_CUA_HANG
c) Tạo liên kết giữa bảng Giao dịch với Nhân viên , Khách hang , Sản phẩm:
lOMoARcPSD|37054152
55
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
ALTER TABLE GIAO_DICH WITH CHECK ADD CONSTRAINT
FK_GIAO_DICH_NHAN_VIEN FOREIGN KEY(MA_NV)
REFERENCES NHAN_VIEN (MA_NV)
ALTER TABLE GIAO_DICH CHECK CONSTRAINT
FK_GIAO_DICH_NHAN_VIEN
ALTER TABLE GIAO_DICH WITH CHECK ADD CONSTRAINT
FK_GIAO_DICH_SAN_PHAM FOREIGN KEY(MA_SP)
REFERENCES SAN_PHAM (MA_SP)
ALTER TABLE GIAO_DICH CHECK CONSTRAINT FK_GIAO_DICH_SAN_PHAM
ALTER TABLE GIAO_DICH WITH CHECK ADD CONSTRAINT
FK_GIAO_DICH_KHACH_HANG FOREIGN KEY(MA_KH)
REFERENCES KHACH_HANG (MA_KH)
ALTER TABLE GIAO_DICH CHECK CONSTRAINT
FK_GIAO_DICH_KHACH_HANG
4.7.3. Kết quả
4.7.4. Dữ liệu các bảng
a) Bảng CHI_NHANH
lOMoARcPSD|37054152
56
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
b) Bảng CUA_HANG
c) Bảng NHAN_VIEN
lOMoARcPSD|37054152
57
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
d) Bảng GIAO_DICH
lOMoARcPSD|37054152
58
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
e) Bảng KHACH_HANG
f) Bảng SAN_PHAM
4.8. Configure Distribution
Distributor: Là một server mà chứa CSDL phân tán (distribution database) và lưu
trữ metadata,history data và transaction. SQL Server sử d ng CSDL phân tán ể lưu và
lOMoARcPSD|37054152
59
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
chuyển(store_and_forward) dữ liệu nhân bản từ Publisher ến các Subscriber. Có 2 loại
Distributor : Local Distributor và remote Distributor.
4.8.1. Đăng nhập và bật SQL Server Agent
Mở SQL Server và thực hiện việc ăng nhập
Sau khi ăng nhập, chọn m c SQL Server Agent-> Click chuột phải -> Chọn Start
lOMoARcPSD|37054152
60
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Sau ó chọn Yes
4.8.2. Configure Distribution
Sau khi chạy Agent,tiếp theo chọn m c Replication -> Click chuột phải chọn Configure
Distribution
Tiếp t c thực hiện các thao tác Next ến Snapshot Folder
lOMoARcPSD|37054152
61
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
lOMoARcPSD|37054152
62
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Điền ường dẫn của folder REPLDATA tạo trước ó -> ấn Next
lOMoARcPSD|37054152
63
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Ấn Next
lOMoARcPSD|37054152
64
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Tích cả 2 m c, bấm Next
Bấm finish và hoàn thành cài ặt
lOMoARcPSD|37054152
65
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
4.9. Tạo Publications
- Replication Nhân bản dữ liệu: Replication là công nghệ sao chép, phân phối dữ liệu
và là một trong những giải pháp ‘khôi ph c dữ liệu sau thảm họa’ có sẵn trong
SSMS rất hữu ích ể duy trì bản sao thứ hai hoặc bản sao dự phòng của các ối tượng
(Table,
View, Stored Procedure) và CSDL.
- Replication trong Microsoft SQL Server có 4 loại sau:
Snapshot Replication
Transactional Replication
Peer-to-Peer Replication Merge Replication
4.9.1. Tạo Transactional publication
- Giới thiệu : Nhân bản giao dịch một chiều là một kỹ thuật ược sử d ng ể sao chép
tự ộng liên t c hoặc ịnh kỳ các dữ liệu giao dịch (Transaction Data) một chiều từ
Publisher ến Subscriber
Trong m c Replication tìm tới Local Publications . Chuột phải vào Local Publication -
> chọn New Publication…
lOMoARcPSD|37054152
66
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Click “Next”
lOMoARcPSD|37054152
67
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Click “Next”
Chọn Transactional publication ể cho phép nhân bản -> Chọn Next
lOMoARcPSD|37054152
68
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Mở rộng m c table ể xem các bảng có trong database. Tích vào bảng muốn nhân bản,
ây là bảng SAN_PHAM. Tích vào subject -> click Next
Bấm Next
lOMoARcPSD|37054152
69
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Tích chọn “Create a snapshot immediately and keep the snapshot availble to initialize
subscriptions”. Click next
Chọn “Security Setting”
lOMoARcPSD|37054152
70
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Bước: Tích chọn “Run under the SQL Server Agent service account” và “Using the
following SQL Server login:”. Sau ó nhập tài khoản mật khẩu sa (mà nhóm ã thống nhất
từ trước):
Login: sa
Password: 12345678
Chọn next
lOMoARcPSD|37054152
71
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Đặt tên cho nhân bản muốn tạo ra trong ô Publication Name, ở ây là SAN_PHAM. Bấm
Finish
4.9.2. Tạo Merge publication
- Merge replication cho phép nhiều server làm việc ộc lập (online hay ofline) sau ó hợp
nhất dữ liệu ã thay ổi lại dựa vào ộ ưu tiên, thời iểm chỉnh sửa hoặc do người dùng tự
quy ịnh. Subscriber sẽ ồng bộ với publisher khi ược kết nối vào mạng và sẽ chuyển
giao tất cả các row ã thực hiện thay ổi giữa publisher và subscriber kể từ lần ồng bộ
cuối cùng.
- Merge replication thường ược dùng trong các trường hợp sau:
Nhiều subscriber cập nhật cùng một dữ liệu nhiều lần và muốn phân phối những
thay ổi ó tới publisher và các subscriber khác
Subscriber có nhu cầu nhận dữ liệu, thay ổi dữ liệu offline, sau ó ồng bộ hóa những
thay ổi tới publisher và các subscriber khác
Mỗi subscriber yêu cầu một phân vùng dữ liệu khác nhau
Trong m c Replication tìm tới Local Publications . Chuột phải vào Local Publication -
> chọn New Publication…
lOMoARcPSD|37054152
72
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Click “Next”
lOMoARcPSD|37054152
73
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Click “Next”
Chọn “Merge publication” và chọn “Next”
lOMoARcPSD|37054152
74
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Chọn “Next”
Chọn các bảng muốn sử d ng và chọn “Next”
Chọn Add → Add Filter
lOMoARcPSD|37054152
75
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Tạo phân mảnh ngang nguyên thủy
Chọn MA_CN và nhập [MA_CN] = “VT”
Chọn như hình sau ó click “OK”
lOMoARcPSD|37054152
76
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Tiếp t c phân mảnh bảng CUA_HANG
Ở phần joined table chọn bảng CUA_HANG rồi bấm ok
Tương tự phân mảnh các bảng NHAN_VIEN và bảng GIAO_DICH, rồi click next
lOMoARcPSD|37054152
77
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Tích “Create a snapshot immediately” và “Schedule the Snapshot…” (không bắt buộc ) ->
Click Next
Chọn “Security Setting”
lOMoARcPSD|37054152
78
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Bước: Tích chọn “Run under the SQL Server Agent service account” và “Using the
following SQL Server login:”. Sau ó nhập tài khoản mật khẩu sa (mà nhóm ã thống nhất
từ trước):
Login: sa
Password: 12345678
lOMoARcPSD|37054152
79
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Chọn next
Đặt tên chi nhánh sau ó click “Finish”
lOMoARcPSD|37054152
80
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
4.10. Tạo Subscription
4.10.1. Thông tin các máy trạm
Thành viên
Tên Server
Địa iểm
Trần Quang Minh
DESKTOP-VGJK45D\CSDLPTNHOM1
Máy chủ
Phạm Văn Huy
LAPTOP-FNJPN3KK\CSDLPTNHOM1
QLBDT_HCM
Nguyễn Minh Quân
DESKTOP-ATGO6CJ\CSDLPTNHOM1
QLBDT_HP
Nguyễn Sơn Hà
DIAMOND\CSDLPTNHOM1
QLBDT_VT
Ngô Quang Trường
DESKTOP-KAGJ0PN\CSDLPTNHOM1
QLBDT_BD
Lê Xuân Vũ
DESKTOP-J627E4U\CSDLPTNHOM1
QLBDT_DN
Đào Công Văn
DAO-CONG-VAN\CSDLPTNHOM1
QLBDT_HUE
Đỗ Quốc Phong
DESKTOP-L7ELPM7\CSDLPTNHOM1
QLBDT_CT
Nguyễn Đức Duy
HIHI\CSDLPTNHOM1
QLBDT_ND
4.10.2. Các bước tạo subscription
Click chọn chuột phải vào chi nhánh sau ó chọn “New Subscriptions”
lOMoARcPSD|37054152
81
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Click “Next”
Chọn chi nhánh sau ó click “Next”
lOMoARcPSD|37054152
82
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Tại bảng Merge Agent Location chọn “Run all agents the Distributor,...
Chọn Add SQL Server Subscriber
Nhập tên ăng nhập + password sau ó click “OK”
Tài khoản: sa
lOMoARcPSD|37054152
83
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Mật khẩu: 12345678
Chọn “New database”
Nhập tên database
lOMoARcPSD|37054152
84
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Bấm next
Bấm vào dấu …
lOMoARcPSD|37054152
85
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
lOMoARcPSD|37054152
86
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Trong Merge Agent Security tích chọn các nút như hình và ăng nhập tài khoản vào
connect to the subscriber -> click “Ok”
Bấm next
lOMoARcPSD|37054152
87
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Chọn “Run continuously” trong Agent Schedule sau ó click “Next”
lOMoARcPSD|37054152
88
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Chọn “Immediately” trong Initialize When sau ó click “Next”
Chọn next
lOMoARcPSD|37054152
89
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Chọn Next
Cuối cùng chọn Finish
lOMoARcPSD|37054152
90
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
4.11. Tạo Linked Servers
4.11.1 Tạo tài khoản HTKN
Security → Login → Click chuột phải chọn “New Login”
Nhập thông tin rồi click “OK”
lOMoARcPSD|37054152
91
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Chọn “User Mapping” chọn CSDL tương ứng, chọn db_owner → Click “OK”
Chọn status → chọn như hình sau ó bấm chọn “OK”
lOMoARcPSD|37054152
92
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
4.11.2. Tạo Linked Servers
Click chuột phải vào Linked Server → Chọn New Linked Server
Nhập tên server sau ó bấm chọn “OK”
Chọn “Security”
lOMoARcPSD|37054152
93
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Sau ó chọn Be made using this security context
Remote login là HTKN
Password: 12345678
Chọn “Server Options” sau ó set các giá trị true/false như hình và chọn “OK”
Server sau khi link thành công
lOMoARcPSD|37054152
94
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Làm tương tự với các server khác
Thành viên
Tên Server
Tài
khoản
Mật
khẩu
LINK_SERVER
Địa iểm
Trần Quang
Minh
DESKTOP-
VGJK45D\CSDLPTNH
OM1
HTKN
1234
5678
LINK_SERVER_
MINH_MAYCH
U
Máy chủ
Phạm Văn
Huy
LAPTOP-
FNJPN3KK\CSDLPTN
HOM1
HTKN
1234
5678
LINK_SERVER_
HUY_HCM
QLBDT_
HCM
Nguyễn Minh
Quân
DESKTOP-
ATGO6CJ\CSDLPTNH
OM1
HTKN
1234
5678
LINK_SERVER_
HUY_HCM
QLBDT_
HP
Nguyễn Sơn
DIAMOND\CSDLPTN
HOM1
HTKN
1234
5678
LINK_SERVER_
HA_VT
QLBDT_
VT
Ngô Quang
Trường
DESKTOP-
KAGJ0PN\CSDLPTNH
OM1
HTKN
1234
5678
LINK_SERVER_
TRUONG_BD
QLBDT_
BD
lOMoARcPSD|37054152
95
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Lê Xuân Vũ
DESKTOP-
J627E4U\CSDLPTNHO
M1
HTKN
1234
5678
LINK_SERVER_
DN_VU
QLBDT_
DN
Đào Công
Văn
DAO-CONG-
VAN\CSDLPTNHOM1
HTKN
1234
5678
LINK_SERVER_
VAN_HUE
QLBDT_
HUE
Đỗ Quốc
Phong
DESKTOP-
L7ELPM7\CSDLPTNH
OM1
HTKN
1234
5678
LINK_SERVER_
PHONG_CT
QLBDT_
CT
Nguyễn Đức
Duy
HIHI\CSDLPTNHOM1
HTKN
1234
5678
LINK_SERVER_
DUY_ND
QLBDT_
ND
V. Triggers
5.1. Trigger thêm mới, kiểm tra cập nhật CHI_NHANH
Yêu cầu: Số lượng chi nhánh trong bảng không vượt quá 12
CREATE TRIGGER [dbo].[update_CHINHANH1] ON [dbo].[CHI_NHANH]
AFTER INSERT, UPDATE
AS
DECLARE @MA_CN varchar(50)
SET @MA_CN = (SELECT MA_CN FROM inserted)
If(@@ROWCOUNT =0)
BEGIN
Print (N'Table này Không có d liu')
Return
END
IF (select count(*) from dbo.CUA_HANG )>12
BEGIN
PRINT(N'Không đưc phép thêm vì đã quá s ng chi nhanh (>12)’)
RollBack Tran
END
GO
Khi insert không úng:
lOMoARcPSD|37054152
96
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Khi insert úng:
5.2. Trigger thêm mới, kiểm tra cập nhật CUA_HANG Trigger thêm cửa hàng vào
chi nhánh Bình Dương với mã cửa hàng phải th漃漃a mãn: BDxx với xx là 2 số tự nhiên.
Nếu số cửa hàng tại chi nhánh Bình Dương vượt quá 14 trả về thông báo lỗi
CREATE TRIGGER [dbo].[update_CUAHANG]
ON [dbo].[CUA_HANG]
AFTER INSERT, UPDATE
AS
DECLARE @MA_CH varchar(50)
SET @MA_CH = (SELECT MA_CH FROM inserted)
IF(@@ROWCOUNT =0)
BEGIN
PRINT (N'Table này Không có d liu')
Return
END
IF (select count(*) from dbo.CUA_HANG )>14
BEGIN
PRINT(N'Không đưc phép thêm vì đã quá s ng ca hàng (>14)’)
RollBack Tran
END
ELSE IF (@MA_CH like ’BD%’)
BEGIN
PRINT (N'Cp nht thông tin thành công')
lOMoARcPSD|37054152
97
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
END
ELSE
BEGIN
PRINT (N'Cp nht thông tin tht bi')
RAISERROR(N'Li Nhp mã MA_CH không bt đu bng BD', 16, 1)
ROLLBACK TRAN
END
GO
Với trường hợp Insert : Lúc
trước :
Khi insert sai (CỤ THỂ LÀ MÃ BẮT ĐẦU BD) sẽ nhận ược thông báo:
Lúc sau sửa lại mã:
Khi ó thông tin sẽ ược cập nhật:
lOMoARcPSD|37054152
98
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Mỗi chi nhánh chỉ có tối a 14 cửa hàng mà ta thêm 1 tr sở nữa thì trigger sẽ báo lỗi:
5.3. Trigger thêm mới, kiểm tra cập nhật NHAN_VIEN
Trigger thêm nhân viên vào chi nhánh Huế với mã nhân viên phải tha mãn:
HUExNVy trong ó HUEx là mã cửa hàng phải trùng với mã cửa hàng ã tồn tại trong
CSDL, y là số tự nhiên có 3 chữ số. Nếu số nhân viên trong một cửa hàng vượt quá 15 trả
về thông báo
CREATE TRIGGER update_NHAN_VIEN
ON NHAN_VIEN
AFTER INSERT, UPDATE
AS
BEGIN
DECLARE @ma_ch NVARCHAR(50)
SET @ma_ch = (SELECT MA_CH FROM INSERTED)
DECLARE @ma_nv NVARCHAR(50)
SET @ma_nv = (SELECT MA_NV FROM INSERTED)
DECLARE @count INT
SELECT @count = COUNT(*) FROM NHAN_VIEN WHERE MA_CH = @ma_ch
IF(@@ROWCOUNT =0)
BEGIN
Print (N’Table n y Kh ng c d liu’)
Return
END
IF (@count > 15)
BEGIN
lOMoARcPSD|37054152
99
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
RAISERROR(N’Ca h ng %s đã vưt quÆ s ng 15 nh n viŒn! ’,
16, 1, @ma_ch)
ROLLBACK
RETURN
END
IF (@ma_nv LIKE @ma_ch + ’NV[0-9][0-9][0-9]’)
BEGIN
PRINT N’ThŒm nh n viŒn th nh c ng!’
END
ELSE
BEGIN
RAISERROR (N’Mª nh n viên không đúng đnh dng!
HUEx l mª ca h ng vi x l s t nhiŒn c 2 ch s, y l s t
nhiŒn c 3 ch số’, 16, 1)
ROLLBACK TRANSACTION
END
END
Với insert (update tương tự):
Nếu thực hiện insert úng ịnh dạng mã nhân viên và số lượng nhân viên của cửa hàng
HUE72 <= 15:
Thông báo trả về
Nếu nhập sai mã nhân viên
lOMoARcPSD|37054152
100
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Sẽ báo lỗi
Bảng NHAN_VIEN ủ 15 nhân viên ở cửa hàng HUE72
Khi thực hiện insert nhân viên thứ 16 ở HUE72
Thông báo trả về
5.4. Trigger thêm mới, kiểm tra cập nhật GIAO_DICH
Yêu cầu: Số lượng sản phẩm trong mã giao dịch phải lớn hơn 0, mã khách hàng, mã sản
phẩm, mã nhân viên phải úng ịnh dạng theo database
CREATE TRIGGER Check_giao_dich
lOMoARcPSD|37054152
101
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
ON GIAO_DICH
FOR INSERT, UPDATE
AS
BEGIN
DECLARE @ID_NV VARCHAR(10) = ’%NV%’
DECLARE @dem int = 0
IF EXISTS (SELECT * FROM inserted WHERE inserted.MA_KH LIKE ’[A-
Z][A-Z][A-Z]-[0-9][0-9][0-9]-[0-9][0-9][0-9]’)
BEGIN
SET @dem += 1
END
ELSE
BEGIN
RAISERROR (N'Mã khách hàng không đúng đnh dng’, 16, 1)
END
IF EXISTS (SELECT * FROM inserted WHERE inserted.MA_NV LIKE @ID_NV)
BEGIN
SET @dem += 1
END
ELSE
BEGIN
RAISERROR (N’Mª nh n viŒn phi cha NV’, 16, 1)
END
IF EXISTS (SELECT * FROM inserted WHERE inserted.MA_SP LIKE ’IP%’
OR inserted.MA_SP LIKE ’SG%’)
BEGIN
SET @dem += 1
END
ELSE
BEGIN
RAISERROR (N’Mª sn phm phi bt đu bng SG hoc IP’, 16, 1)
END
IF EXISTS (SELECT * FROM inserted WHERE inserted.SO_LUONG > 0)
BEGIN
SET @dem += 1
END
ELSE
BEGIN
RAISERROR (N’S ng phi ln hơn 0', 16, 1)
END
IF @dem < 4
BEGIN
RAISERROR (N’D liu cp nht kh ng th nh c ng’, 16, 1)
ROLLBACK TRANSACTION
lOMoARcPSD|37054152
102
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
END
ELSE
BEGIN
PRINT N’D liu cp nht th nh c ng’
END
END
VD Sai :
Kết quả :
Sửa lại :
Kết quả :
5.5. Trigger thêm mới, kiểm tra cập nhật KHACH_HANG
Yêu cầu: ID phải úng ịnh dạng 3 kí tự ầu là chữ cái viết hoa, 6 kí tự còn lại là số, ngăn
cách nhau bởi dấu 3 ôi một
lOMoARcPSD|37054152
103
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
CREATE TRIGGER [dbo].[update_customer]
ON [dbo].[KHACH_HANG]
AFTER INSERT, UPDATE
AS
DECLARE @MaKH NVARCHAR(50)
SET @MaKH=(SELECT MA_KH FROM Inserted)
IF(@@ROWCOUNT=0)
BEGIN
PRINT(N’Table kh ng c d liu’)
RETURN
END
IF(@MaKH LIKE ’[A-Z][A-Z][A-Z]-[0-9][0-9][0-9]-[0-9][0-9][0-9]’)
BEGIN
PRINT(N’Cp nht th ng tin th nh c ng ’ + @MaKH)
END
ELSE
BEGIN
PRINT(N’Cp nht th ng tin tht bi ’ + @MaKH)
RAISERROR(N'Mã nhân viên không đúng đnh dng’, 16, 1)
ROLLBACK TRAN
END
Trước khi cập nhật
Khi insert thành công nhận ược thông báo
lOMoARcPSD|37054152
104
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Lúc sau
Trường hợp nhập ID không úng ịnh dạng
lOMoARcPSD|37054152
105
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Khi ó sẽ không ược cập nhật vào bảng
5.6. Trigger thêm mới, kiểm tra cập nhật SAN_PHAM
CREATE TRIGGER [update_product] ON [dbo].SAN_PHAM
AFTER INSERT, UPDATE
AS
DECLARE @MA_SP NVARCHAR(50)
SET @MA_SP=(SELECT MA_SP FROM Inserted)
IF(@@ROWCOUNT=0)
BEGIN
PRINT(N’Table kh ng c d liu’)
END
IF(@MA_SP LIKE ’IP%’)
BEGIN
PRINT(N’ThŒm sn phm hªng Apple th nh c ng ’ + @MA_SP)
END
ELSE IF(@MA_SP LIKE ’SG%’)
BEGIN
PRINT(N’ThŒm sn phm hªng Samsung th nh c ng ’ + @MA_SP)
END
ELSE
BEGIN
PRINT(N’ThŒm sn phm tht bi ’ + @MA_SP)
RAISERROR(N’Mª sn phm kh ng bt đu bng IP hoc SG’, 16,
1)
ROLLBACK TRAN
end
lOMoARcPSD|37054152
106
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
GO
Trước khi cập nhật
Khi insert thành công nhận ược thông báo
lOMoARcPSD|37054152
107
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Lúc sau
lOMoARcPSD|37054152
108
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Trường hợp nhập ID không úng ịnh dạng (không bắt ầu bằng IP hoặc SG)
lOMoARcPSD|37054152
109
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
Khi ó dữ liệu sẽ không ược cập nhật
VI. Stored Procedures
6.1. Tổng số nhân viên của từng khu vực
CREATE PROCEDURE [dbo].[SUMOFEMPLOYEE]
AS
BEGIN
SELECT dbo.CHI_NHANH.MA_CN, dbo.CHI_NHANH.TEN_CN,
COUNT(dbo.NHAN_VIEN.MA_NV) as tong_nhan_vien_cua_cac_chi_nhanh
FROM (( dbo.NHAN_VIEN INNER JOIN dbo.CUA_HANG ON
dbo.NHAN_VIEN.MA_CH= dbo.CUA_HANG.MA_CH)
INNER JOIN dbo.CHI_NHANH ON dbo.CUA_HANG.MA_CN =
dbo.CHI_NHANH.MA_CN)
Group by dbo.CHI_NHANH.MA_CN, dbo.CHI_NHANH.TEN_CN
END;
EXECUTE [DBO].SUMOFEMPLOYEE
6.2. Tổng số cửa hàng tại từng khu vực
CREATE PROCEDURE [DBO].SUMOFSTORE1
AS
BEGIN
SELECT dbo.CHI_NHANH.MA_CN, dbo.CHI_NHANH.TEN_CN,
COUNT(dbo.CUA_HANG.MA_CH) as tong_cua_hang_cua_cac_chi_nhanh
FROM (CUA_HANG INNER JOIN CHI_NHANH ON CUA_HANG.MA_CN =
CHI_NHANH.MA_CN)
GROUP BY CHI_NHANH.MA_CN , CHI_NHANH.TEN_CN END;
EXECUTE [DBO].SUMOFSTORE1
Kết quả:
lOMoARcPSD|37054152
110
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
6.3. Tổng doanh thu tại từng khu vực
CREATE PROCEDURE [dbo].[doanh_thu]
AS
BEGIN
SELECT ch.MA_CN, cn.TEN_CN, SUM(sp.GIA*GD.SO_LUONG) AS doanh_thu
FROM dbo.CHI_NHANH AS cn, dbo.CUA_HANG AS ch, dbo.NHAN_VIEN AS
NV, dbo.GIAO_DICH AS GD, dbo.SAN_PHAM AS sp
WHERE cn.MA_CN=ch.MA_CN AND ch.MA_CH=nv.MA_CH AND
GD.MA_NV=NV.MA_NV AND GD.MA_SP=sp.MA_SP
GROUP BY ch.MA_CN, cn.TEN_CN
END
EXECUTE [DBO].doanh_thu
Kết quả
lOMoARcPSD|37054152
111
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
VII. Transactions
7.1. Giao tác phân tán thêm thông tin giữa các máy trạm
Từ chi nhánh Vũng Tàu, thử thực hiện insert một cửa hàng vào chi nhánh TPHCM
SET XACT_ABORT ON
BEGIN TRY
BEGIN TRAN
INSERT INTO [LINK-HUY-HCM].[QLBDT-
HCM].[dbo].[CUA_HANG]([MA_CH],[DIA_CHI],[SDT_CH],[MA_CN])
VALUES ( ’HCM09’,N’CH LN’,’01234560000’,’HCM’)
SELECT * FROM [LINK-HUY-HCM].[QLBDT-HCM].[dbo].[CUA_HANG]
COMMIT
END TRY
BEGIN CATCH
PRINT(’ERROR’)
ROLLBACK
END CATCH
GO
Kết quả:
lOMoARcPSD|37054152
112
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
7.2. Giao tác phân tán giữa máy trạm và máy chủ
VD: Thêm 1 cửa hàng từ máy chủ vào máy trạm ở chi nhánh Vũng Tàu
SET XACT_ABORT ON
BEGIN TRY
BEGIN TRAN
INSERT INTO LINK_SERVER_HA_VT.[QLBDT-VT].dbo.CUA_HANG
(
MA_CH,
DIA_CHI, SDT_CH,
MA_CN
)
VALUES
( N’VT89’, -- MA_CH - nvarchar(50)
N’BariaVungTau’, -- DIA_CHI - nvarchar(50)
N’1900561252’, -- SDT_CH - nvarchar(50)
N’VT’
lOMoARcPSD|37054152
113
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
)
SELECT * FROM LINK_SERVER_HA_VT.[QLBDT-VT].dbo.CUA_HANG
SELECT * FROM dbo.CUA_HANG
COMMIT
END TRY
BEGIN CATCH
PRINT(N’Li transactions’)
ROLLBACK TRAN
END CATCH
Kết quả:
Trường hợp transactions bị lỗi (Trùng ID)
lOMoARcPSD|37054152
114
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)
| 1/118

Preview text:

lOMoARcPSD| 37054152 Mục lục
I. Đặt vấn ề ........................................................................................................................ 1
1.1. Nhu cầu và tầm quan trọng của dự án .................................................................. 1
1.2. Sơ lược về dự án ................................................................................................... 1
1.3. Vị trí và nhiệm v甃⌀ , dữ liệu khi triển khai dự án
................................................... 2
1.4. Các ối tượng tham gia sử d甃⌀ ng dự án
................................................................. 2
II. Phân tích ........................................................................................................................ 3
2.1. Phân tích các chức năng chính của hệ thống ........................................................ 3
2.2. Phân quyền cho các nhóm ối tượng thực hiện dự án .......................................... 3
2.3. Phân tích chức năng của từng vị trí thực hiện dự án ............................................ 4 2.3.1. Tr甃⌀ sở chính
................................................................................................... 4
2.3.2. Các chi nhánh ................................................................................................
4 2.4. Chức năng của máy trạm và máy
chủ................................................................... 5
2.4.1. Chức năng của máy trạm ............................................................................... 5
2.4.2. Chức năng của máy chủ ................................................................................ 6
2.5. Phân tích cơ sở dữ liệu ......................................................................................... 7
2.5.1. Mô hình thực thể liên kết ERD ..................................................................... 7
2.5.2. Mô hình quan hệ RDM .................................................................................. 8
2.6. Bảng tần suất truy cập tại các vị trí ...................................................................... 8 lOMoARcPSD| 37054152
III. Thiết kế ......................................................................................................................... 9
3.1. Thiết kế hệ thống mạng tổng quan ....................................................................... 9
3.2. Thiết kế CSDL của hệ thống .............................................................................. 10
3.2.1. Cấu trúc các bảng của hệ thống ................................................................... 10
3.2.2. Quan hệ giữa các bảng ................................................................................ 12
3.3. Thiết kế CSDLPT ............................................................................................... 13
3.3.1. Lược ồ ph甃⌀ c v甃⌀ cho phân mảnh ngang dẫn xuất
....................................... 13
3.3.2. Thiết kế phân mảnh ngang, nhân bản .......................................................... 14
3.3.3. Thiết kế lược ồ ánh xạ ............................................................................... 18
3.4. Thiết kế và vẽ sơ ồ ịnh vị ............................................................................... 19
3.4.1. Thiết kế sơ ồ ịnh vị .................................................................................. 19
3.4.2. Vẽ sơ ồ ịnh vị .......................................................................................... 21
3.5. Thiết kế lược ồ nhân bản, ồng bộ hóa .......................................................... 21
3.6. Thiết kế vật lý tại các trạm ................................................................................. 22
IV. Cài ặt ......................................................................................................................... 23
4.1. Cài ặt SQL Server ............................................................................................. 23
4.1.1. Cài ặt SQL Server 2019 Evaluation .......................................................... 23
4.1.2. Cài ặt SQL Server Management Studio Tools (SSMS) ............................ 32
4.2. Cài ặt tường lửa và thiết lập cổng Port ............................................................. 34
4.3. Tạo thư m甃⌀ c phân tán
......................................................................................... 40
4.4. Tạo tài khoản sa trên SQL Server Management Studio ..................................... 44
4.5. Cài ặt Radmin VPN .......................................................................................... 46
4.6. Cài ặt cổng SQL cho phép các máy kết nối từ xa ............................................ 51
4.7. Tạo CSDL quản lý bán iện thoại ...................................................................... 53 lOMoARcPSD| 37054152
4.7.1. Tạo các bảng ................................................................................................ 53
4.7.2. Tạo liên kết giữa các bảng ........................................................................... 54
4.7.3. Kết quả ........................................................................................................ 55
4.7.4. Dữ liệu các bảng .......................................................................................... 55
4.8. Configure Distribution ........................................................................................ 58
4.8.1. Đăng nhập và bật SQL Server Agent ......................................................... 59
4.8.2. Configure Distribution ................................................................................ 60
4.9. Tạo Publications ................................................................................................. 65
4.9.1. Tạo Transactional publication ..................................................................... 65
4.9.2. Tạo Merge publication ................................................................................ 71
4.10. Tạo Subscription ............................................................................................... 80
4.10.1. Thông tin các máy trạm ............................................................................. 80
4.10.2. Các bước tạo subscription ......................................................................... 80
4.11. Tạo Linked Servers ........................................................................................... 90
4.11.1 Tạo tài khoản HTKN .................................................................................. 90
4.11.2. Tạo Linked Servers ................................................................................... 92
V. Triggers ........................................................................................................................ 95
5.1. Trigger thêm mới, kiểm tra cập nhật CHI_NHANH .......................................... 95
5.2. Trigger thêm mới, kiểm tra cập nhật CUA_HANG ........................................... 96
5.3. Trigger thêm mới, kiểm tra cập nhật NHAN_VIEN .......................................... 98
5.4. Trigger thêm mới, kiểm tra cập nhật GIAO_DICH ......................................... 101 lOMoARcPSD| 37054152
5.5. Trigger thêm mới, kiểm tra cập nhật KHACH_HANG ................................... 103
5.6. Trigger thêm mới, kiểm tra cập nhật SAN_PHAM ......................................... 105
VI. Stored Procedures .................................................................................................... 109
6.1. Tổng số nhân viên của từng khu vực ................................................................ 109
6.2. Tổng số cửa hàng tại từng khu vực .................................................................. 109
6.3. Tổng doanh thu tại từng khu vực ...................................................................... 110
VII. Transactions ............................................................................................................ 111
7.1. Giao tác phân tán thêm thông tin giữa các máy trạm ....................................... 111
7.2. Giao tác phân tán giữa máy trạm và máy chủ .................................................. 112 lOMoARcPSD| 37054152 I. Đặt vấn ề
1.1. Nhu cầu và tầm quan trọng của dự án
Thế giới ngày càng hội nhập, tạo ra cho doanh nghiệp thêm rất nhiều cơ hội. Một
trong những cơ hội ó là mở rộng thị trường kinh doanh thành các chi nhánh ặt tại nhiều ịa
iểm khác nhau, nhằm xây dựng hệ thống làm việc chuyên nghiệp, ph甃⌀ c v甃⌀ và áp ứng
tốt nhất yêu cầu của người dùng nhằm tối a hoá lợi nhuận, mang lại hiệu quả kinh tế cao
nhất. Hiện nay có rất nhiều doanh nghiệp lớn bán iện thoại như Thế giới di ộng,
Cellphones, … ã áp d甃⌀ ng chiến lược kinh doanh trên.
Tuy nhiên, việc mở rộng thành các chuỗi chi nhánh gây khó khăn cho việc quản lý
khi số lượng các giao dịch và mặt hàng tăng lên, khi ó khối lượng công việc theo từng
ngày sẽ rất lớn lên rất nhanh. Việc ặt cơ sở dữ liệu nội bộ tại các chi nhánh lại rất tốn kém
và em lại nhiều bất hợp lý. Trong những năm gần ây, thuật ngữ CSDL phân tán ã trở nên
gần gũi với những người làm công tác tin học. Việc ứng d甃⌀ ng CSDL phân tán vào các
lĩnh vực ời sống xã hội, vào các ngành kinh doanh, hàng không, ường sắt, thương mại, …
làm giảm thiểu tối a chi phí quản lý dữ liệu cũng như giúp người sử d甃⌀ ng có thể mua
nhanh chóng và thuận tiện hơn.
Việc xây dựng CSDL phân tán cho chuỗi cửa hàng bán iện thoại làm ơn giản hóa
việc lập các hóa ơn thống kê doanh thu cũng như việc lưu trữ chúng, cung cấp thông tin
nhanh chóng và chính xác, ph甃⌀ c v甃⌀ hữu hiệu cho việc quản lý và phát triển của chuỗi cửa hàng.
Hệ thống quản lý cơ sở dữ liệu các chi nhánh bán iện thoại ph甃⌀ c v甃⌀ cho việc
quản lý thông tin nhân viên, thông tin các loại iện thoại và quản lý các giao dịch, quản lý
doanh thu cũng như số lượng iện thoại ược bán mỗi ngày tại từng chi nhánh. Các chi
nhánh có thể sử d甃⌀ ng toàn bộ dữ liệu của cả hệ thống và chuỗi cửa hàng ể quản lý ược
dữ liệu của mình. Khách hàng có thể thực hiện giao dịch ặt mua iện thoại tại tất cả các chi nhánh trên cả nước.
1.2. Sơ lược về dự án
- Sản phẩm và khách hàng là dữ liệu chung của hệ thống sẽ ược cập nhật tại máy chủ.
- Chi nhánh, cửa hàng, nhân viên, giao dịch là dữ liệu riêng của từng trạm và có thể
cập nhật tại máy trạm, và máy chủ.
- Dự án ược triển khai với 1 vùng quản lý tại 8 vùng xử lý. 1
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
a) Tr甃⌀ sở chính Hà Nội: nơi ặt máy chủ - Chức năng: quản lý dữ liệu toàn hệ thống.
- Dữ liệu: tất cả dữ liệu.
- Nguồn dữ liệu: ược nhân viên nhập cũng như các máy trạm trả về.
- Dữ liệu vận chuyển ến: các máy trạm.
- Đối tượng sử d甃⌀ ng: nhân viên quản lý hệ thống, ược phép quản lý (thêm, sửa,
xóa) tất cả các dữ liệu.
b) Hải Phòng, Cần Thơ, Đà Nẵng, TP.Hồ Chí Minh, Huế, Bình Dương, Nam Định, Vũng Tàu: nơi ặt máy trạm
- Chức năng: quản lý dữ liệu của tất cả các ối tượng của tr甃⌀ sở ó (trừ sản phẩm) -
Dữ liệu: Chi nhánh, Cửa hàng, Nhân viên, Giao dịch và thông tin dữ liệu chung: Sản phẩm và Khách hàng
- Nguồn dữ liệu: ược nhân viên nhập cũng như máy chủ gửi ến.
- Dữ liệu vận chuyển ến: máy chủ.
1.3. Vị trí và nhiệm vụ, dữ liệu khi triển khai dự án
 Dự án ược triển khai trên toàn quốc với 9 vùng xử lý và 1 vùng quản lý
• Vị trí 1: Server tổng ặt tại Hà Nội, dùng ể quản lý CSDL các trạm
• Vị trí 2: Server chi nhánh, dùng ể quản lý CSDL tại chi nhánh Nam Định
• Vị trí 3: Server chi nhánh, dùng ể quản lý CSDL tại chi nhánh Huế
• Vị trí 4: Server chi nhánh, dùng ể quản lý CSDL tại chi nhánh Đà Nẵng
• Vị trí 5: Server chi nhánh, dùng ể quản lý CSDL tại chi nhánh Bình Dương
• Vị trí 6: Server chi nhánh, dùng ể quản lý CSDL tại chi nhánh Vũng Tàu
• Vị trí 7: Server chi nhánh, dùng ể quản lý CSDL tại chi nhánh TP Hồ Chí Minh
• Vị trí 8: Server chi nhánh, dùng ể quản lý CSDL tại chi nhánh Cần Thơ
• Vị trí 9: Server chi nhánh, dùng ể quản lý CSDL tại chi nhánh Hải Phòng
1.4. Các ối tượng tham gia sử dụng dự án
a) Nhân viên bán hàng tại các cửa hàng:
- Có quyền xem thông tin của khách hàng và các sản phẩm ược ặt thuộc cửa hàng của mình
- Có thể thêm, sửa và xóa thông tin của khách hàng 2
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
b) Nhân viên quản lý cửa hàng:
- Quản lý tất cả các quyền của nhân viên tại một cửa hàng
- Tạo báo cáo thống kê tại cửa hàng
c) Nhân viên quản lý chi nhánh:
- Quản lý tất cả các quyền của nhân viên tại một chi nhánh
- Tạo báo cáo thống kê tại chi nhánh d) Tổng giám ốc:
- Có tất cả các quyền của ba loại nhân viên trên
- Có quyền thêm, sửa, xóa thông tin của sản phẩm
- Có quyền báo cáo thống kê chung của các chi nhánh II. Phân tích
2.1. Phân tích các chức năng chính của hệ thống
- Quản lý thông tin nhân viên
- Quản lý thông tin cửa hàng
- Quản lý thông tin khách hàng
- Quản lý thông tin sản phẩm ( iện thoại)
- Quản lý dữ liệu giao dịch ặt mua iện thoại - Thống kê doanh thu
2.2. Phân quyền cho các nhóm ối tượng thực hiện dự án
a) Nhân viên bán hàng tại cửa hàng
- Xem thông tin của bản thân
- Thêm, sửa thông tin giao dịch - Xem thông tin sản phẩm
- Thêm, xem, sửa thông tin khách hàng
b) Nhân viên quản lí cửa hàng
- Xem thông tin của bản thân - Xem thông tin cửa hàng
- Thêm, sửa, xóa thông tin giao dịch 3
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
- Thêm, sửa, xóa thông tin nhân viên bán hàng - Xem thông tin sản phẩm
- Thêm, xem, sửa thông tin khách hàng
- Tạo báo cáo thống kê của cửa hàng
c) Nhân viên quản lí chi nhánh
- Có các quyền và có thể thêm, sửa, xóa thông tin của hai loại nhân viên trên
- Có thể xem, sửa, xóa thông tin của các cửa hàng
- Tạo báo cáo thống kê của chi nhánh
- Kiểm soát các thông tin giao dịch của chi nhánh d) Tổng giám ốc
- Truy cập vào dữ liệu có trong hệ thống, cũng như có tất cả các quyền của các ối tượng trên
- Thêm sửa xóa thông tin của tất cả dữ liệu
- Xem báo cáo chung của các chi nhánh
2.3. Phân tích chức năng của từng vị trí thực hiện dự án 2.3.1. Trụ sở chính
- Quản lý thông tin về các chi nhánh ( ọc).
- Quản lý tất cả thông tin ( ọc, thêm, sửa, xoá) về cửa hàng và sản phẩm của tất cả các chi nhánh.
- Có thể xem ược tất cả các thông tin về nhân viên, khách hàng và giao dịch của tất cả các chi nhánh.
- Thêm thông tin về sản phẩm rồi tự ộng cập nhật về cho các chi nhánh: Hà Nội,
TP Hồ Chí Minh, Nam Định, Huế, Đà Nẵng, Hải Phòng, Cần Thơ, Bình Dương, Vũng Tàu 2.3.2. Các chi nhánh
- Các chi nhánh có quyền ọc, thêm, sửa, xoá thông tin của nhân viên. Các thông tin
này sẽ ược cập nhật lên chi nhánh tổng.
- Các chi nhánh có quyền xem, thêm, sửa thông tin khách hàng.
- Các chi nhánh có quyền xem, thêm, sửa, xóa thông tin giao dịch
- Thông tin về giao dịch sẽ ược cập nhật lên chi nhánh tổng 4
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
2.4. Chức năng của máy trạm và máy chủ
2.4.1. Chức năng của máy trạm
2.4.1.1. Chức năng quản lý khách hàng

- Giúp các nhân viên thực hiện các thao tác như thêm, ọc, sửa các thông tin của khách
hàng. Các thông tin sẽ ược lưu trong cơ sở dữ liệu.
- Các thông tin quản lý bao gồm: • Mã khách hàng • Nhập tên khách hàng • Nhập số iện thoại • Nhập ịa chỉ
2.4.1.2. Chức năng quản lý nhân viên -
Giúp quản lý thực hiện ược các thao tác như thêm, ọc, sửa, xóa thông tin của nhân
viên. Các thông tin sẽ ược lưu trong cơ sở dữ liệu. -
Các thông tin của nhân viên bao gồm:
• Mã nhân viên: theo cú pháp “CHNVyyy”
Ví d甃⌀ : Nhân viên mã 870 tại cửa hàng mã BD24 sẽ có mã BD24NV870 • Tên nhân viên • Giới tính • Số iện thoại
• Mã cửa hàng làm việc tương ứng của nhân viên
2.4.1.3. Chức năng quản lý sản phẩm
- Giúp quản lý thực hiện ược các thao tác như ọc thông tin của sản phẩm. Các thông
tin sẽ ược lưu trong cơ sở dữ liệu.
- Các thông tin của sản phẩm bao gồm:
• Mã sản phẩm: theo cú pháp bắt ầu bằng IP với các máy dòng Apple hoặc SG với dòng Samsung Galaxy • Tên sản phẩm • Loại sản phẩm • Giá 5
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
2.4.1.4. Chức năng quản lý giao dịch
- Giúp nhân viên bán hàng thực hiện các thao tác bán iện thoại, chọn phương
thức thanh toán và cập nhật thông tin giao dịch.
- Các thông tin của giao dịch bao gồm: • Mã giao dịch • Mã khách hàng • Mã sản phẩm • Số lượng
2.4.2. Chức năng của máy chủ
2.4.2.1. Có toàn bộ chức năng của các máy trạm 2.4.2.2. Chức năng quản lý thông tin các
chi nhánh
- Giúp người quản lý thực hiện các thao tác như ọc các thông tin chi tiết của chi
nhánh. Các thông tin sẽ ược lưu trữ trong cơ sở dữ liệu. Dữ liệu của chi nhánh thêm
vào tại chi nhánh Hà Nội sẽ ược chuyển ến máy trạm tương ứng tại chi nhánh Hải
Phòng, TP Hồ Chí Minh, Huế, Nam Định, Đà Nẵng, Bình Dương, Vũng Tàu, Cần Thơ.
- Các thông tin của chi nhánh bao gồm:
• Mã chi nhánh: tên viết tắt của tỉnh thành ó (VD: Hà Nội -> HN) • Tên chi nhánh • Số iện thoại
2.4.2.3. Chức năng quản lý thông tin sản phẩm
- Giúp người quản lý thực hiện các thao tác như thêm, ọc, sửa, xóa các thông tin chi
tiết của sản phẩm. Các thông tin sẽ ược lưu trữ trong cơ sở dữ liệu. Dữ liệu của sản
phẩm thêm vào tại chi nhánh Hà Nội sẽ ược chuyển ến máy trạm tương ứng tại chi
nhánh Hải Phòng, TP Hồ Chí Minh, Huế, Nam Định, Đà Nẵng, Bình Dương, Vũng Tàu, Cần Thơ.
- Các thông tin của sản phẩm bao gồm:
• Mã sản phẩm: theo cú pháp bắt ầu bằng IP với các máy dòng Apple hoặc SG với dòng Samsung Galaxy • Tên sản phẩm • Loại sản phẩm • Giá 6
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
2.4.2.4. Chức năng quản lý thông tin nhân viên
- Giúp người quản lý thực hiện các thao tác như ọc các thông tin chi tiết của nhân
viên. Các thông tin sẽ ược lưu trữ trong cơ sở dữ liệu. Dữ liệu của nhân viên tại chi
nhánh Hà Nội sẽ ược chuyển ến máy trạm tương ứng tại chi nhánh Hải Phòng tương
tự ối với các chi nhánh TP Hồ Chí Minh, Huế, Nam Định, Đà Nẵng, Bình Dương, Vũng Tàu, Cần Thơ.
- Các thông tin của nhân viên bao gồm:
• Mã nhân viên: theo cú pháp “CHNVyyy ”
Ví d甃⌀ : Nhân viên mã 870 tại cửa hàng mã BD24 sẽ có mã BD24NV870 • Tên nhân viên • Giới tính • Số iện thoại
• Mã cửa hàng làm việc tương ứng của nhân viên
2.5. Phân tích cơ sở dữ liệu
2.5.1. Mô hình thực thể liên kết ERD
7
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 8
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
2.5.2. Mô hình quan hệ RDM
2.6. Bảng tần suất truy cập tại các vị trí Thực thể Tr甃⌀ sở chính Chi nhánh CHI_NHANH H.R, L.W.E.D H.R CUA_HANG H.R, L.W.E.D H.R, L.W.E.D NHAN_VIEN H.R, L.W.E.D H.R.W.E.D 9
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 GIAO_DICH H.R.W.E.D H.R.W.E.D SAN_PHAM H.R.W.E.D H.R KHACH_HANG H.R H.R.W.E.D Trong ó: • W: Tạo mới và ghi • E: Sửa • R: Đọc • D: Xóa
• H: Tần suất cao L: Tần suất thấp III. Thiết kế
3.1. Thiết kế hệ thống mạng tổng quan
- Chi nhánh Hà Nội: Đặt máy Server DK thực hiện các chức năng và lưu CSDL của toàn hệ thống.
- Chi nhánh Hải Phòng: Đặt máy trạm 1 và các client tương ứng thực hiện chức
năng và lưu toàn bộ CSDL thuộc Hải Phòng
- Chi nhánh Nam Định: Đặt máy trạm 2 và các client tương ứng thực hiện chức năng
và lưu toàn bộ CSDL thuộc Nam Định
- Chi nhánh Huế: Đặt máy trạm 3 và các client tương ứng thực hiện chức năng và
lưu toàn bộ CSDL thuộc Huế
- Chi nhánh Đà Nẵng: Đặt máy trạm 4 và các client tương ứng thực hiện chức năng
và lưu toàn bộ CSDL thuộc Đà Nẵng
- Chi nhánh Bình Dương: Đặt máy trạm 5 và các client tương ứng thực hiện chức
năng và lưu toàn bộ CSDL thuộc Bình Dương
- Chi nhánh TP Hồ Chí Minh: Đặt máy trạm 6 và các client tương ứng thực hiện
chức năng và lưu toàn bộ CSDL thuộc TP Hồ Chí Minh
- Chi nhánh Vũng Tàu: Đặt máy trạm 7 và các client tương ứng thực hiện chức năng
và lưu toàn bộ CSDL thuộc Vũng Tàu
- Chi nhánh Cần Thơ: Đặt máy trạm 8 và các client tương ứng thực hiện chức năng
và lưu toàn bộ CSDL thuộc Cần Thơ. 10
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
3.2. Thiết kế CSDL của hệ thống
3.2.1. Cấu trúc các bảng của hệ thống

- Trong quá trình thiết kế phân mảnh cho hệ thống, chúng ta chỉ sử d甃⌀ ng phân mảnh
ngang ể phân tán dữ liệu tạo nên cấu trúc vật lý của các bảng dữ liệu tại các trạm ều giống
nhau. Các bảng dữ liệu tương ứng với các thực thể và mối quan hệ trong hệ thống như
sau: Các ký hiệu dùng ể mô tả:
• Null: ược rỗng, Not Null (không ược rỗng)
• PK (Primary key): Khóa chính FK (Foreign key): Khóa ngoại a) Thực thể CHI_NHANH
- Dùng ể lưu trữ thông tin về các chi nhánh STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Khóa Mô tả 1 MA_CN nvarchar(50) Not null PK Mã chi nhánh 2 TEN_CN nvarchar(50) Not null Tên chi nhánh 3 SDT nvarchar(50) Not null
Số iện thoại tổng của chi nhánh ó
- MA_CN ược ặt theo mã viết tắt của thành phố ó, ví d甃⌀ : • Chi nhánh Hà Nội: HN
• Chi nhánh Thành phố Hồ Chí Minh: HCM b) Thực thể CUA_HANG
- Dùng ể lưu trữ thông tin về các cửa hàng STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Khóa Mô tả 1 MA_CH nvarchar(50) Not null PK Mã cửa hàng 2 SDT_CH nvarchar(50) Not null
Số iện thoại cửa hàng 3 DIA_CHI nvarchar(50) Not null Địa chỉ cửa hàng 4 MA_CN Nvarchar(50) Not null FK Mã chi nhánh
- MA_CH ược ặt theo mã chi nhánh và thêm 2 số nguyên ở sau, ví d甃⌀ :
Cửa hàng mã 47 ở Huế: HUE47 11
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 c) Thực thể NHAN_VIEN
- Dùng ể lưu trữ thông tin về các nhân viên STT Tên thuộc tính
Kiểu dữ liệu Ràng buộc Khóa Mô tả 1 MA_NV nvarchar(50) Not null PK Mã nhân viên 2 TEN_NV nvarchar(50) Not null Tên nhân viên 3 GIOITINH nvarchar(50) Not null Giới tính 4 SDT nvarchar(50) Not null Số iện thoại 5 MA_CH nvarchar(50) Not null FK Mã cửa hàng
- MA_NV có dạng “CHxNVy”, trong ó:
- VD: Nhân viên mã số 870 ở cửa hàng BD24 sẽ có mã là BD24NV870 d) Thực thể GIAO_DICH
- Dùng ể lưu trữ thông tin về các giao dịch STT Tên thuộc tính
Kiểu dữ liệu Ràng buộc Khóa Mô tả 1 MA_SP nvarchar(50) Not null FK Mã sản phẩm 2 MA_KH nvarchar(50) Not null FK Mã khách hàng 3 MA _NV nvarchar(50) Not null FK Mã nhân viên 4 SO_LUONG int Not null Số lượng e) Thực thể SAN_PHAM
- Dùng ể lưu trữ thông tin về các sản phẩm STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Khóa Mô tả 1 MA_SP varchar(50) Not null PK Mã sản phẩm 2 TEN_SP nvarchar(50) Not null Tên sản phẩm 3 LOAI nvarchar(50) Not null Loại sản phẩm 4 GIA int Not null Giá sản phẩm
- MA_SP sẽ bắt ầu bằng “IP” tương ứng với Iphone và “SG” ứng với Samsung Galaxy, ví d甃⌀ • Iphone 12 => IP12
• Samsung Galaxy Z => SGZ 12
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 f) Thực thể KHACH_HANG
- Dùng ể lưu trữ thông tin về các khách hàng STT Tên thuộc tính
Kiểu dữ liệu Ràng buộc Khóa Mô tả 1 MA_KH nvarchar(50) Not null PK Mã khách hàng 2 TEN_KH nvarchar(50) Not null Tên khách hàng 3 SO_DIEN_THOAI nvarchar(50) Not null Số iện thoại 4 DIA_CHI nvarchar(50) Not null Địa chỉ
- Ma_KH có ịnh dạng là XXX-NNN-NNN
• Với X là các chữ cái (từ A->Z viết hoa)
• N là các số tự nhiên (0->9)  VD: TQM-472-002
3.2.2. Quan hệ giữa các bảng 13
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
3.3. Thiết kế CSDLPT
3.3.1. Lược ồ phục vụ cho phân mảnh ngang dẫn xuất 14
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
3.3.2. Thiết kế phân mảnh ngang, nhân bản Mảnh Tr甃⌀ Cơ sở dữ Phân mảnh ngang nguyên Phân mảnh ngang dẫn Sở liệu thủy xuất 1 Nam
Quản lý bán - Bảng phân mảnh: - Bảng phân mảnh: Định iện thoại CHI_NHANH Nam Định CUA_HANG - Điều kiện phân tán:
- Điều kiện dẫn xuất: CHI_NHANH_ND = CUA_HANG1 =
σMA_CN=‘ND’(CHI_NHANH) CUA_HANG CHI_NHANH_ND - Bảng phân mảnh: NHAN_VIEN
- Điều kiện dẫn xuất: NHAN_VIEN1 = NHAN_VIEN CUA_HANG - Bảng phân mảnh: GIAO_DICH
- Điều kiện dẫn xuất: GIAO_DICH1= GIAO_DICH NHAN_VIEN 2 Hải
Quản lý bán - Bảng phân mảnh: - Bảng phân mảnh: Phòng iện thoại Hải CHI_NHANH Phòng CUA_HANG - Điều kiện phân tán:
- Điều kiện dẫn xuất: CHI_NHANH_HP = CUA_HANG2 =
σMA_CN=‘HP’(CHI_NHANH) CUA_HANG CHI_NHANH_HP 15
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 - Bảng phân mảnh: NHAN_VIEN
- Điều kiện dẫn xuất: NHAN_VIEN2 = NHAN_VIEN CUA_HANG - Bảng phân mảnh: GIAO_DICH
- Điều kiện dẫn xuất: GIAO_DICH2 = GIAO_DICH NHAN_VIEN 3 Đà
Quản lý bán - Bảng phân mảnh: - Bảng phân mảnh: Nẵng iện thoại Đà CHI_NHANH CUA_HANG Nẵng - Điều kiện phân tán:
- Điều kiện dẫn xuất: CHI_NHANH_DN = CUA_HANG3 =
σMA_CN=‘DN’(CHI_NHANH) CUA_HANG CHI_NHANH_DN - Bảng phân mảnh: NHAN_VIEN
- Điều kiện dẫn xuất: NHAN_VIEN3 = NHAN_VIEN CUA_HANG 16
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 - Bảng phân mảnh: GIAO_DICH
- Điều kiện dẫn xuất: GIAO_DICH3 = GIAO_DICH NHAN_VIEN 4 Huế Quản lý bán - Bảng phân mảnh: - Bảng phân mảnh: iện thoại CUA_HANG CHI_NHANH Huế
- Điều kiện dẫn xuất: - Điều kiện phân tán: CHI_NHANH_HUE =
σMA_CN=‘HUE’(CHI_NHANH) CUA_HANG4 = CUA_HANG CHI_NHANH_HUE - Bảng phân mảnh: NHAN_VIEN
- Điều kiện dẫn xuất: NHAN_VIEN4 = NHAN_VIEN CUA_HANG - Bảng phân mảnh: GIAO_DICH
- Điều kiện dẫn xuất: GIAO_DICH4 = GIAO_DICH NHAN_VIEN 17
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 5 Bình
Quản lý bán - Bảng phân mảnh: - Bảng phân mảnh: Dương iện thoại CHI_NHANH Bình Dương CUA_HANG - Điều kiện phân tán:
- Điều kiện dẫn xuất: CHI_NHANH_BD = CUA_HANG5 =
σMA_CN=‘BD’(CHI_NHANH) CUA_HANG CHI_NHANH_BD - Bảng phân mảnh: NHAN_VIEN
- Điều kiện dẫn xuất: NHAN_VIEN5 = NHAN_VIEN CUA_HANG - Bảng phân mảnh: GIAO_DICH
- Điều kiện dẫn xuất: GIAO_DICH5 = GIAO_DICH NHAN_VIEN 6
TP.Hồ Quản lý bán - Bảng phân mảnh: - Bảng phân mảnh: Chí iện thoại CHI_NHANH CUA_HANG Minh
TP.Hồ Chí - Điều kiện phân tán:
- Điều kiện dẫn xuất: Minh CHI_NHANH_HCM = CUA_HANG6 =
σMA_CN=‘HCM’(CHI_NHANH) CUA_HANG CHI_NHANH_HCM 18
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 - Bảng phân mảnh: NHAN_VIEN
- Điều kiện dẫn xuất: NHAN_VIEN6 = NHAN_VIEN CUA_HANG - Bảng phân mảnh: GIAO_DICH
- Điều kiện dẫn xuất: GIAO_DICH6 = GIAO_DICH NHAN_VIEN 7 Cần
Quản lý bán - Bảng phân mảnh: - Bảng phân mảnh: Thơ iện thoại CHI_NHANH Cần Thơ CUA_HANG - Điều kiện phân tán:
- Điều kiện dẫn xuất: CHI_NHANH_CT = CUA_HANG7 =
σMA_CN=‘CT’(CHI_NHANH) CUA_HANG CHI_NHANH_CT - Bảng phân mảnh: NHAN_VIEN
- Điều kiện dẫn xuất: NHAN_VIEN7 = NHAN_VIEN CUA_HANG 19
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 - Bảng phân mảnh: GIAO_DICH
- Điều kiện dẫn xuất: GIAO_DICH7 = GIAO_DICH NHAN_VIEN 8 Vũng
Quản lý bán - Bảng phân mảnh: - Bảng phân mảnh: Tàu iện thoại CHI_NHANH Vũng Tàu CUA_HANG - Điều kiện phân tán:
- Điều kiện dẫn xuất: CHI_NHANH_VT = CUA_HANG8 =
σMA_CN=‘VT’(CHI_NHANH) CUA_HANG CHI_NHANH_VT - Bảng phân mảnh: NHAN_VIEN
- Điều kiện dẫn xuất: NHAN_VIEN8 = NHAN_VIEN CUA_HANG - Bảng phân mảnh: GIAO_DICH
- Điều kiện dẫn xuất: GIAO_DICH8 = GIAO_DICH NHAN_VIEN
3.3.3. Thiết kế lược ồ ánh xạ 20
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
3.4. Thiết kế và vẽ sơ ồ ịnh vị
3.4.1. Thiết kế sơ ồ ịnh vị
- 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 8 mảnh ặt tại 8 chi nhánh sau:
• Server chính ặt tại Hà Nội chứa thông tin của toàn bộ hệ thống: Các
CHI_NHANH, CUA_HANG, NHAN_VIEN, GIAO_DICH, KHACH_HANG,
SAN_PHAM của toàn bộ hệ thống
• Chi nhánh Hải Phòng: Máy trạm ặt tại Hải Phòng chứa thông tin của chi nhánh ó;
Các CHI_NHANH, CUA_HANG, NHAN_VIEN, GIAO_DICH,
KHACH_HANG, SAN_PHAM của chi nhánh ó.
• Chi nhánh Nam Định: Máy trạm ặt tại Nam Định chứa thông tin của chi nhánh 21
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
ó; Các CHI_NHANH, CUA_HANG, NHAN_VIEN, GIAO_DICH, KHACH_HANG, SAN_PHAM của chi nhánh ó.
• Chi nhánh Huế: Máy trạm ặt tại Huế chứa thông tin của chi nhánh ó; Các
CHI_NHANH, CUA_HANG, NHAN_VIEN, GIAO_DICH, KHACH_HANG, SAN_PHAM của chi nhánh ó.
• Chi nhánh Đà Nẵng: Máy trạm ặt tại Đà Nẵng chứa thông tin của chi nhánh ó;
Các CHI_NHANH, CUA_HANG, NHAN_VIEN, GIAO_DICH,
KHACH_HANG, SAN_PHAM của chi nhánh ó.
• Chi nhánh Bình Dương: Máy trạm ặt tại Bình Dương chứa thông tin của chi nhánh
ó; Các CHI_NHANH, CUA_HANG, NHAN_VIEN, GIAO_DICH,
KHACH_HANG, SAN_PHAM của chi nhánh ó.
• Chi nhánh Vũng Tàu: Máy trạm ặt tại Vũng Tàu chứa thông tin của chi nhánh ó;
Các CHI_NHANH, CUA_HANG, NHAN_VIEN, GIAO_DICH,
KHACH_HANG, SAN_PHAM của chi nhánh ó.
• Chi nhánh Cần Thơ: Máy trạm ặt tại Cần Thơ chứa thông tin của chi nhánh ó;
Các CHI_NHANH, CUA_HANG, NHAN_VIEN, GIAO_DICH,
KHACH_HANG, SAN_PHAM của chi nhánh ó.
• Chi nhánh TP.HCM: Máy trạm ặt tại TP.HCM chứa thông tin của chi nhánh ó;
Các CHI_NHANH, CUA_HANG, NHAN_VIEN, GIAO_DICH,
KHACH_HANG, SAN_PHAM của chi nhánh ó. 22
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
3.4.2. Vẽ sơ ồ ịnh vị
3.5. Thiết kế lược ồ nhân bản, ồng bộ hóa
- Thông tin tại máy chủ: Các Sản phẩm và Khách hàng tại máy chủ sẽ ược nhân bản
tại các máy trạm ( ồng bộ hóa về máy trạm mỗi khi có sự thay ổi từ máy chủ).
Nhân bản có thể thực thi giữa những CSDL trên cùng một server hay những server
khác nhau ược kết nối bởi mạng LANs,WANs hay Internet.
- Nếu tại máy chủ có sự cập nhật thông tin Chi nhánh, Cửa hàng, Nhân viên, Giao
dịch thì sẽ ược ồng bộ hóa về tr甃⌀ sở nó thuộc về. 23
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
- Thông tin tại máy trạm: Chi nhánh, Cửa hàng, Nhân viên, Giao dịch, Khách hàng
ược cập nhật thì sẽ ược ồng bộ hóa về máy chủ mỗi khi có thông tin
3.6. Thiết kế vật lý tại các trạm STT Tên bảng Ý nghĩa 1 CHI_NHANH
Chi nhánh, chứa thông tin liên quan ến chi nhánh ph甃⌀ c
v甃⌀ cho công tác quản lý chi nhánh 2 SAN_PHAM
Sản phẩm, chứa thông tin liên quan ến sản phẩm ph甃⌀ c
v甃⌀ cho công tác quản lý thông tin sản phẩm 3
KHACH_HANG Khách hàng, chứa thông tin liên quan ến khách hàng ph甃⌀ c
v甃⌀ cho công tác quản lý thông tin khách hàng 4 NHAN_VIEN
Nhân viên, chứa thông tin liên quan ến nhân viên ph甃⌀ c
v甃⌀ cho công tác quản lý nhân viên 5 GIAO_DICH
Giao dịch, chứa thông tin liên quan ến giao dịch ph甃⌀ c v甃⌀
cho công tác quản lý giao dịch 6 CUA_HANG
Cửa hàng, chứa thông tin liên quan ến cửa hàng ph甃⌀ c v甃⌀
cho công tác quản lý cửa hàng IV. Cài ặt 4.1. Cài ặt SQL Server
4.1.1. Cài ặt SQL Server 2019 Evaluation
Bước: Truy cập vào ường link ể tải (tải bản developer):
https://www.microsoft.com/en-us/sql-server/sql-server-downloads 24
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Mở file SQL2019-SSEI-Dev vừa tải về Chọn Download Media
Chọn dạng tải về là ISO và chọn ường dẫn rồi ấn download 25
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Sau khi tải xong, ấn close 26
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Download và chạy file SETUP.EXE
Installation -> “New SQL ...” 27
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Next cho ến Installation Type.
Chọn “Perform a new installation of SQL Server 2019” nếu muốn tạo server mới hoặc
Chọn “Add features to an existing instance of SQL Server or want to install shared” nếu
muốn các thư viện vào SERVER cũ.
Chọn “Perform a new installation of SQL Server 2019” 28
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Đặt tên SQL server là CSDLPTNHOM1 và Next Next 29
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Chọn Mixed Mode -> tạo password cho tài khoản sa -> chọn Add current user -> next 30
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Nhấn Add Current User ể thêm tài khoản Chọn Install Cài ặt xong SQL Server 31
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Sau khi cài ặt SQL Server thành công, tiếp t甃⌀ c cài SSMS 32
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
4.1.2. Cài ặt SQL Server Management Studio Tools (SSMS)
Nhấn Free Download for SSMS 19.0.2, sau ó mở thư m甃⌀ c tải về và chạy file SSMS- Setup-ENU 33
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Khi giao diện cài ặt hiển thị chọn install
4.2. Cài ặt tường lửa và thiết lập cổng Port
Control Panel\System and Security\Windows Firewall 34
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Click chọn theo mũi tên hướng dẫn Chọn “Advanced setting” 35
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 Chọn “Inbound Rules”
Chọn “Port” rồi chọn “Next” 36
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 Chọn next Chọn TCP Nhập cổng 1433 37
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 Đặt tên là tcp
Làm tương tự ể mở cổng UDP 1434 Đặt tên là UDP
Tiếp t甃⌀ c chọn new Rule 38
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Tiếp theo chọn ường dẫn ến filesqlservr 39
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 Nhấn open Đặt tên và Finish 40
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
4.3. Tạo thư mục phân tán
Tạo 1 folder C:\REPLDATA ể 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
Click chuột phải vào folder REPLDATA > Properties 41
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Chọn tab Sharing > Share
Chọn Everyone, click Add, và chọn quyền Read/Write như trong hình. Cuối cùng, click Share. 42
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 Chọn “Done” 43
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
4.4. Tạo tài khoản sa trên SQL Server Management Studio
Chạy SQL Server Management Studio và login bằng Windows Authentication như thông thường.
Tìm ến Security > Logins > sa
Vào General ể ổi mật khẩu -> B漃漃 check Enforce password policy 44
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Sang chọn m甃⌀ c Status -> các m甃⌀ c như trong hình -> ấn Ok 45
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 4.5. Cài ặt Radmin VPN
 Giới thiệu: phần mềm Radmin VPN là phần mềm dùng ể tạo mạng riêng ảo (VPN).
Cho phép thiết lập kết nối bảo mật giữa các máy tính qua internet như thể các máy tính
này kết nối với nhau trên mạng LAN.
Cài ặt phần mềm Radmin VPN, theo link dưới: https://www.radmin-vpn.com/
Mở file .exe vừa tải về
Thực hiện cài ặt Radmin VPN 46
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 Sau khi cài ặt xong
Tạo ường link giữa các mạng với nhau Máy chủ tạo network 47
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 Create network Network name: CSDLPTNHOM1L4 Password: 12345678 Máy trạm tham gia network Network name: CSDLPTNHOM1L4 48
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 Password: 12345678
Các máy trạm sẽ kết nối với nhau và kết nối với máy chủ bằng VPN này. Sau khi ã kết
nối ta có giao diện như sau:
Kiểm tra kết nối bằng cách chuột phải vào thành viên và click ping 49
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Và kết quả ra như hình sau nghĩa là các máy ã kết nối với nhau thành công
4.6. Cài ặt cổng SQL cho phép các máy kết nối từ xa
Sql Server Configuration Manager ể cấu hình IP cho từng máy 50
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Chọn SQL Server Network configuration -> Protocols for CSDLPTNHOM1
Với máy chủ chúng ta phải thêm ip máy chủ vào m甃⌀ c IP1, ip các máy trạm trong VPN
vào các m甃⌀ c còn lại. Tất cả ể TCP port là 1433 và Enabled 51
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 Restart lại server 52
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
4.7. Tạo CSDL quản lý bán iện thoại 4.7.1. Tạo các bảng
a) Tạo bảng Chi nhánh CREATE TABLE CHI_NHANH( MA_CN nvarchar(50) NOT NULL, TEN_CN nvarchar(50) NOT NULL, SDT nvarchar(50) NOT NULL,
CONSTRAINT PK_CHI_NHANH PRIMARY KEY CLUSTERED (MA_CN ASC) )
b) Tạo bảng Cửa hàng CREATE TABLE CUA_HANG( MA_CH nvarchar(50) NOT NULL,
DIA_CHI nvarchar(50) NOT NULL, SDT nvarchar(50) NOT NULL, MA_CN nvarchar(50) NOt NULL,
CONSTRAINT PK_CUA_HANG PRIMARY KEY CLUSTERED (MA_CH ASC) )
c) Tạo bảng Nhân viên CREATE TABLE NHAN_VIEN( MA_NV nvarchar(50) NOT NULL, TEN_NV nvarchar(50) NOT NULL, SDT nvarchar(50) NOT NULL,
GIOI_TINH nvarchar(50) NOT NULL, MA_CH nvarchar(50) NOt NULL,
CONSTRAINT PK_NHAN_VIEN PRIMARY KEY CLUSTERED (MA_NV ASC), )
d) Tạo bảng Khách hàng CREATE TABLE KHACH_HANG( 53
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 MA_KH nvarchar(50) NOT NULL, TEN_KH nvarchar(50) NOT NULL, SDT nvarchar(50) NOT NULL,
DIA_CHI nvarchar(50) NOT NULL,
CONSTRAINT PK_KHACH_HANG PRIMARY KEY CLUSTERED (MA_KH ASC), )
e) Tạo bảng Sản phẩm CREATE TABLE SAN_PHAM( MA_SP nvarchar(50) NOT NULL, TEN_SP nvarchar(50) NOT NULL, LOAI nvarchar(50) NOT NULL, GIA int NOT NULL,
CONSTRAINT PK_SAN_PHAM PRIMARY KEY CLUSTERED (MA_SP ASC), )
f) Tạo bảng Giao dịch : CREATE TABLE GIAO_DICH( MA_NV nvarchar(50) NOT NULL, MA_KH nvarchar(50) NOT NULL, MA_SP nvarchar(50) NOT NULL, SO_LUONG int NOT NULL,
CONSTRAINT PK_GIAO_DICH PRIMARY KEY CLUSTERED (MA_SP ASC,MA_NV ASC,MA_KH ASC) )
4.7.2. Tạo liên kết giữa các bảng
a) Tạo liên kết giữa bảng Chi nhánh và Cửa hàng :
ALTER TABLE CUA_HANG WITH CHECK ADD CONSTRAINT
FK_CUA_HANG_CHI_NHANH FOREIGN KEY(MA_CN) REFERENCES CHI_NHANH (MA_CN)
ALTER TABLE CUA_HANG CHECK CONSTRAINT FK_CUA_HANG_CHI_NHANH
b) Tạo liên kết giữa bảng Nhân viên và Cửa hàng :
ALTER TABLE NHAN_VIEN WITH CHECK ADD CONSTRAINT
FK_NHAN_VIEN_CUA_HANG FOREIGN KEY(MA_CH) REFERENCES CUA_HANG (MA_CH)
ALTER TABLE NHAN_VIEN CHECK CONSTRAINT FK_NHAN_VIEN_CUA_HANG
c) Tạo liên kết giữa bảng Giao dịch với Nhân viên , Khách hang , Sản phẩm: 54
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
ALTER TABLE GIAO_DICH WITH CHECK ADD CONSTRAINT
FK_GIAO_DICH_NHAN_VIEN FOREIGN KEY(MA_NV) REFERENCES NHAN_VIEN (MA_NV)
ALTER TABLE GIAO_DICH CHECK CONSTRAINT FK_GIAO_DICH_NHAN_VIEN
ALTER TABLE GIAO_DICH WITH CHECK ADD CONSTRAINT
FK_GIAO_DICH_SAN_PHAM FOREIGN KEY(MA_SP) REFERENCES SAN_PHAM (MA_SP)
ALTER TABLE GIAO_DICH CHECK CONSTRAINT FK_GIAO_DICH_SAN_PHAM
ALTER TABLE GIAO_DICH WITH CHECK ADD CONSTRAINT
FK_GIAO_DICH_KHACH_HANG FOREIGN KEY(MA_KH) REFERENCES KHACH_HANG (MA_KH)
ALTER TABLE GIAO_DICH CHECK CONSTRAINT FK_GIAO_DICH_KHACH_HANG 4.7.3. Kết quả
4.7.4. Dữ liệu các bảng a) Bảng CHI_NHANH 55
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 b) Bảng CUA_HANG c) Bảng NHAN_VIEN 56
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 d) Bảng GIAO_DICH 57
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 e) Bảng KHACH_HANG f) Bảng SAN_PHAM
4.8. Configure Distribution
Distributor: Là một server mà chứa CSDL phân tán (distribution database) và lưu
trữ metadata,history data và transaction. SQL Server sử d甃⌀ ng CSDL phân tán ể lưu và 58
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
chuyển(store_and_forward) dữ liệu nhân bản từ Publisher ến các Subscriber. Có 2 loại
Distributor : Local Distributor và remote Distributor.
4.8.1. Đăng nhập và bật SQL Server Agent
Mở SQL Server và thực hiện việc ăng nhập
Sau khi ăng nhập, chọn m甃⌀ c SQL Server Agent-> Click chuột phải -> Chọn Start 59
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 Sau ó chọn Yes
4.8.2. Configure Distribution
Sau khi chạy Agent,tiếp theo chọn m甃⌀ c Replication -> Click chuột phải chọn Configure Distribution
Tiếp t甃⌀ c thực hiện các thao tác Next ến Snapshot Folder 60
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 61
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Điền ường dẫn của folder REPLDATA tạo trước ó -> ấn Next 62
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 Ấn Next 63
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Tích cả 2 m甃⌀ c, bấm Next
Bấm finish và hoàn thành cài ặt 64
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
4.9. Tạo Publications
- Replication – Nhân bản dữ liệu: Replication là công nghệ sao chép, phân phối dữ liệu
và là một trong những giải pháp ‘khôi ph甃⌀ c dữ liệu sau thảm họa’ có sẵn trong
SSMS rất hữu ích ể duy trì bản sao thứ hai hoặc bản sao dự phòng của các ối tượng (Table,
View, Stored Procedure) và CSDL.
- Replication trong Microsoft SQL Server có 4 loại sau: • Snapshot Replication • Transactional Replication
• Peer-to-Peer Replication Merge Replication
4.9.1. Tạo Transactional publication
- Giới thiệu : Nhân bản giao dịch một chiều là một kỹ thuật ược sử d甃⌀ ng ể sao chép
tự ộng liên t甃⌀ c hoặc ịnh kỳ các dữ liệu giao dịch (Transaction Data) một chiều từ Publisher ến Subscriber
Trong m甃⌀ c Replication tìm tới Local Publications . Chuột phải vào Local Publication -
> chọn New Publication… 65
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 Click “Next” 66
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 Click “Next”
Chọn Transactional publication ể cho phép nhân bản -> Chọn Next 67
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Mở rộng m甃⌀ c table ể xem các bảng có trong database. Tích vào bảng muốn nhân bản, ở
ây là bảng SAN_PHAM. Tích vào subject -> click Next Bấm Next 68
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Tích chọn “Create a snapshot immediately and keep the snapshot availble to initialize subscriptions”. Click next Chọn “Security Setting” 69
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Bước: Tích chọn “Run under the SQL Server Agent service account” và “Using the
following SQL Server login:”. Sau ó nhập tài khoản mật khẩu sa (mà nhóm ã thống nhất từ trước): Login: sa Password: 12345678 Chọn next 70
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Đặt tên cho nhân bản muốn tạo ra trong ô Publication Name, ở ây là SAN_PHAM. Bấm Finish
4.9.2. Tạo Merge publication
- Merge replication cho phép nhiều server làm việc ộc lập (online hay ofline) sau ó hợp
nhất dữ liệu ã thay ổi lại dựa vào ộ ưu tiên, thời iểm chỉnh sửa hoặc do người dùng tự
quy ịnh. Subscriber sẽ ồng bộ với publisher khi ược kết nối vào mạng và sẽ chuyển
giao tất cả các row ã thực hiện thay ổi giữa publisher và subscriber kể từ lần ồng bộ cuối cùng.
- Merge replication thường ược dùng trong các trường hợp sau:
• Nhiều subscriber cập nhật cùng một dữ liệu nhiều lần và muốn phân phối những
thay ổi ó tới publisher và các subscriber khác
• Subscriber có nhu cầu nhận dữ liệu, thay ổi dữ liệu offline, sau ó ồng bộ hóa những
thay ổi tới publisher và các subscriber khác
• Mỗi subscriber yêu cầu một phân vùng dữ liệu khác nhau
Trong m甃⌀ c Replication tìm tới Local Publications . Chuột phải vào Local Publication -
> chọn New Publication… 71
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 Click “Next” 72
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 Click “Next”
Chọn “Merge publication” và chọn “Next” 73
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 Chọn “Next”
Chọn các bảng muốn sử d甃⌀ ng và chọn “Next” Chọn Add → Add Filter 74
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Tạo phân mảnh ngang nguyên thủy
Chọn MA_CN và nhập [MA_CN] = “VT”
Chọn như hình sau ó click “OK” 75
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Tiếp t甃⌀ c phân mảnh bảng CUA_HANG
Ở phần joined table chọn bảng CUA_HANG rồi bấm ok
Tương tự phân mảnh các bảng NHAN_VIEN và bảng GIAO_DICH, rồi click next 76
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Tích “Create a snapshot immediately” và “Schedule the Snapshot…” (không bắt buộc ) -> Click Next Chọn “Security Setting” 77
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Bước: Tích chọn “Run under the SQL Server Agent service account” và “Using the
following SQL Server login:”. Sau ó nhập tài khoản mật khẩu sa (mà nhóm ã thống nhất từ trước): Login: sa Password: 12345678 78
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 Chọn next
Đặt tên chi nhánh sau ó click “Finish” 79
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 4.10. Tạo Subscription
4.10.1. Thông tin các máy trạm
Thành viên Tên Server Địa iểm Trần Quang Minh DESKTOP-VGJK45D\CSDLPTNHOM1 Máy chủ Phạm Văn Huy LAPTOP-FNJPN3KK\CSDLPTNHOM1 QLBDT_HCM
Nguyễn Minh Quân DESKTOP-ATGO6CJ\CSDLPTNHOM1 QLBDT_HP Nguyễn Sơn Hà DIAMOND\CSDLPTNHOM1 QLBDT_VT
Ngô Quang Trường DESKTOP-KAGJ0PN\CSDLPTNHOM1 QLBDT_BD Lê Xuân Vũ DESKTOP-J627E4U\CSDLPTNHOM1 QLBDT_DN Đào Công Văn DAO-CONG-VAN\CSDLPTNHOM1 QLBDT_HUE Đỗ Quốc Phong DESKTOP-L7ELPM7\CSDLPTNHOM1 QLBDT_CT Nguyễn Đức Duy HIHI\CSDLPTNHOM1 QLBDT_ND
4.10.2. Các bước tạo subscription
Click chọn chuột phải vào chi nhánh sau ó chọn “New Subscriptions” 80
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 Click “Next”
Chọn chi nhánh sau ó click “Next” 81
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Tại bảng Merge Agent Location chọn “Run all agents the Distributor,...
Chọn Add SQL Server Subscriber
Nhập tên ăng nhập + password sau ó click “OK” Tài khoản: sa 82
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 Mật khẩu: 12345678 Chọn “New database” Nhập tên database 83
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 Bấm next Bấm vào dấu … 84
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 85
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Trong Merge Agent Security tích chọn các nút như hình và ăng nhập tài khoản vào
connect to the subscriber -> click “Ok” Bấm next 86
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Chọn “Run continuously” trong Agent Schedule sau ó click “Next” 87
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Chọn “Immediately” trong Initialize When sau ó click “Next” Chọn next 88
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 Chọn Next Cuối cùng chọn Finish 89
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 4.11. Tạo Linked Servers
4.11.1 Tạo tài khoản HTKN
Security → Login → Click chuột phải chọn “New Login”
Nhập thông tin rồi click “OK” 90
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Chọn “User Mapping” chọn CSDL tương ứng, chọn db_owner → Click “OK”
Chọn status → chọn như hình sau ó bấm chọn “OK” 91
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
4.11.2. Tạo Linked Servers
Click chuột phải vào Linked Server → Chọn New Linked Server
Nhập tên server sau ó bấm chọn “OK” Chọn “Security” 92
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Sau ó chọn Be made using this security context Remote login là HTKN Password: 12345678
Chọn “Server Options” sau ó set các giá trị true/false như hình và chọn “OK”
Server sau khi link thành công 93
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Làm tương tự với các server khác Thành viên Tên Server Tài
Mật LINK_SERVER Địa iểm khoản khẩu Trần Quang DESKTOP-
HTKN 1234 LINK_SERVER_ Máy chủ Minh VGJK45D\CSDLPTNH 5678 MINH_MAYCH OM1 U Phạm Văn LAPTOP- HTKN 1234 LINK_SERVER_ QLBDT_ Huy FNJPN3KK\CSDLPTN 5678 HUY_HCM HCM HOM1 Nguyễn Minh DESKTOP- HTKN 1234 LINK_SERVER_ QLBDT_ Quân ATGO6CJ\CSDLPTNH 5678 HUY_HCM HP OM1 Nguyễn Sơn DIAMOND\CSDLPTN HTKN 1234 LINK_SERVER_ QLBDT_ Hà HOM1 5678 HA_VT VT Ngô Quang DESKTOP- HTKN 1234 LINK_SERVER_ QLBDT_ Trường KAGJ0PN\CSDLPTNH 5678 TRUONG_BD BD OM1 94
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 Lê Xuân Vũ DESKTOP- HTKN 1234 LINK_SERVER_ QLBDT_ J627E4U\CSDLPTNHO 5678 DN_VU DN M1 Đào Công DAO-CONG- HTKN 1234 LINK_SERVER_ QLBDT_ Văn VAN\CSDLPTNHOM1 5678 VAN_HUE HUE Đỗ Quốc DESKTOP- HTKN 1234 LINK_SERVER_ QLBDT_ Phong L7ELPM7\CSDLPTNH 5678 PHONG_CT CT OM1
Nguyễn Đức HIHI\CSDLPTNHOM1 HTKN 1234 LINK_SERVER_ QLBDT_ Duy 5678 DUY_ND ND V. Triggers
5.1. Trigger thêm mới, kiểm tra cập nhật CHI_NHANH

Yêu cầu: Số lượng chi nhánh trong bảng không vượt quá 12
CREATE TRIGGER [dbo].[update_CHINHANH1] ON [dbo].[CHI_NHANH] AFTER INSERT, UPDATE AS DECLARE @MA_CN varchar(50)
SET @MA_CN = (SELECT MA_CN FROM inserted) If(@@ROWCOUNT =0) BEGIN
Print (N'Table này Không có dữ liệu') Return END
IF (select count(*) from dbo.CUA_HANG )>12 BEGIN
PRINT(N'Không được phép thêm vì đã quá số lượng chi nhanh (>12)’) RollBack Tran END GO Khi insert không úng: 95
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 Khi insert úng:
5.2. Trigger thêm mới, kiểm tra cập nhật CUA_HANG Trigger thêm cửa hàng vào
chi nhánh Bình Dương với mã cửa hàng phải th漃漃a mãn: BDxx với xx là 2 số tự nhiên.
Nếu số cửa hàng tại chi nhánh Bình Dương vượt quá 14 trả về thông báo lỗi
CREATE TRIGGER [dbo].[update_CUAHANG] ON [dbo].[CUA_HANG] AFTER INSERT, UPDATE AS DECLARE @MA_CH varchar(50)
SET @MA_CH = (SELECT MA_CH FROM inserted) IF(@@ROWCOUNT =0) BEGIN
PRINT (N'Table này Không có dữ liệu') Return END
IF (select count(*) from dbo.CUA_HANG )>14 BEGIN
PRINT(N'Không được phép thêm vì đã quá số lượng cửa hàng (>14)’) RollBack Tran END
ELSE IF (@MA_CH like ’BD%’) BEGIN
PRINT (N'Cập nhật thông tin thành công') 96
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 END ELSE BEGIN
PRINT (N'Cập nhật thông tin thất bại')
RAISERROR(N'Lỗi Nhập mã MA_CH không bắt đầu bằng BD', 16, 1) ROLLBACK TRAN END GO
Với trường hợp Insert : Lúc trước :
Khi insert sai (CỤ THỂ LÀ MÃ BẮT ĐẦU BD) sẽ nhận ược thông báo: Lúc sau sửa lại mã:
Khi ó thông tin sẽ ược cập nhật: 97
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Mỗi chi nhánh chỉ có tối a 14 cửa hàng mà ta thêm 1 tr甃⌀ sở nữa thì trigger sẽ báo lỗi:
5.3. Trigger thêm mới, kiểm tra cập nhật NHAN_VIEN
Trigger thêm nhân viên vào chi nhánh Huế với mã nhân viên phải th漃漃a mãn:
HUExNVy trong ó HUEx là mã cửa hàng phải trùng với mã cửa hàng ã tồn tại trong
CSDL, y là số tự nhiên có 3 chữ số. Nếu số nhân viên trong một cửa hàng vượt quá 15 trả về thông báo
CREATE TRIGGER update_NHAN_VIEN ON NHAN_VIEN AFTER INSERT, UPDATE AS BEGIN DECLARE @ma_ch NVARCHAR(50)
SET @ma_ch = (SELECT MA_CH FROM INSERTED) DECLARE @ma_nv NVARCHAR(50)
SET @ma_nv = (SELECT MA_NV FROM INSERTED) DECLARE @count INT
SELECT @count = COUNT(*) FROM NHAN_VIEN WHERE MA_CH = @ma_ch IF(@@ROWCOUNT =0) BEGIN
Print (N’Table n y Kh ng c dữ liệu’) Return END IF (@count > 15) BEGIN 98
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
RAISERROR(N’Cửa h ng %s đã vượt quÆ số lượng 15 nh n viŒn! ’, 16, 1, @ma_ch) ROLLBACK RETURN END
IF (@ma_nv LIKE @ma_ch + ’NV[0-9][0-9][0-9]’) BEGIN
PRINT N’ThŒm nh n viŒn th nh c ng!’ END ELSE BEGIN
RAISERROR (N’Mª nh n viên không đúng định dạng!
HUEx l mª cửa h ng với x l số tự nhiŒn c 2 chữ số, y l số tự
nhiŒn c 3 chữ số’, 16, 1) ROLLBACK TRANSACTION END END
Với insert (update tương tự):
Nếu thực hiện insert úng ịnh dạng mã nhân viên và số lượng nhân viên của cửa hàng HUE72 <= 15: Thông báo trả về
Nếu nhập sai mã nhân viên 99
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 Sẽ báo lỗi
Bảng NHAN_VIEN ủ 15 nhân viên ở cửa hàng HUE72
Khi thực hiện insert nhân viên thứ 16 ở HUE72 Thông báo trả về
5.4. Trigger thêm mới, kiểm tra cập nhật GIAO_DICH
Yêu cầu: Số lượng sản phẩm trong mã giao dịch phải lớn hơn 0, mã khách hàng, mã sản
phẩm, mã nhân viên phải úng ịnh dạng theo database
CREATE TRIGGER Check_giao_dich 100
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 ON GIAO_DICH FOR INSERT, UPDATE AS BEGIN
DECLARE @ID_NV VARCHAR(10) = ’%NV%’ DECLARE @dem int = 0
IF EXISTS (SELECT * FROM inserted WHERE inserted.MA_KH LIKE ’[A-
Z][A-Z][A-Z]-[0-9][0-9][0-9]-[0-9][0-9][0-9]’) BEGIN SET @dem += 1 END ELSE BEGIN
RAISERROR (N'Mã khách hàng không đúng định dạng’, 16, 1) END
IF EXISTS (SELECT * FROM inserted WHERE inserted.MA_NV LIKE @ID_NV) BEGIN SET @dem += 1 END ELSE BEGIN
RAISERROR (N’Mª nh n viŒn phải chứa NV’, 16, 1) END
IF EXISTS (SELECT * FROM inserted WHERE inserted.MA_SP LIKE ’IP%’
OR inserted.MA_SP LIKE ’SG%’) BEGIN SET @dem += 1 END ELSE BEGIN
RAISERROR (N’Mª sản phẩm phải bắt đầu bằng SG hoặc IP’, 16, 1) END
IF EXISTS (SELECT * FROM inserted WHERE inserted.SO_LUONG > 0) BEGIN SET @dem += 1 END ELSE BEGIN
RAISERROR (N’Số lượng phải lớn hơn 0', 16, 1) END IF @dem < 4 BEGIN
RAISERROR (N’Dữ liệu cập nhật kh ng th nh c ng’, 16, 1) ROLLBACK TRANSACTION 101
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 END ELSE BEGIN
PRINT N’Dữ liệu cập nhật th nh c ng’ END END VD –Sai : Kết quả : Sửa lại : Kết quả :
5.5. Trigger thêm mới, kiểm tra cập nhật KHACH_HANG
Yêu cầu: ID phải úng ịnh dạng 3 kí tự ầu là chữ cái viết hoa, 6 kí tự còn lại là số, ngăn
cách nhau bởi dấu – 3 ôi một 102
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
CREATE TRIGGER [dbo].[update_customer] ON [dbo].[KHACH_HANG] AFTER INSERT, UPDATE AS DECLARE @MaKH NVARCHAR(50)
SET @MaKH=(SELECT MA_KH FROM Inserted) IF(@@ROWCOUNT=0) BEGIN
PRINT(N’Table kh ng c dữ liệu’) RETURN END
IF(@MaKH LIKE ’[A-Z][A-Z][A-Z]-[0-9][0-9][0-9]-[0-9][0-9][0-9]’) BEGIN
PRINT(N’Cập nhật th ng tin th nh c ng ’ + @MaKH) END ELSE BEGIN
PRINT(N’Cập nhật th ng tin thất bại ’ + @MaKH)
RAISERROR(N'Mã nhân viên không đúng định dạng’, 16, 1) ROLLBACK TRAN END Trước khi cập nhật
Khi insert thành công nhận ược thông báo 103
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 Lúc sau
Trường hợp nhập ID không úng ịnh dạng 104
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Khi ó sẽ không ược cập nhật vào bảng
5.6. Trigger thêm mới, kiểm tra cập nhật SAN_PHAM
CREATE TRIGGER [update_product] ON [dbo].SAN_PHAM AFTER INSERT, UPDATE AS DECLARE @MA_SP NVARCHAR(50)
SET @MA_SP=(SELECT MA_SP FROM Inserted) IF(@@ROWCOUNT=0) BEGIN
PRINT(N’Table kh ng c dữ liệu’) END IF(@MA_SP LIKE ’IP%’) BEGIN
PRINT(N’ThŒm sản phẩm hªng Apple th nh c ng ’ + @MA_SP) END
ELSE IF(@MA_SP LIKE ’SG%’) BEGIN
PRINT(N’ThŒm sản phẩm hªng Samsung th nh c ng ’ + @MA_SP) END ELSE BEGIN
PRINT(N’ThŒm sản phẩm thất bại ’ + @MA_SP)
RAISERROR(N’Mª sản phẩm kh ng bắt đầu bằng IP hoặc SG’, 16, 1) ROLLBACK TRAN end 105
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 GO Trước khi cập nhật
Khi insert thành công nhận ược thông báo 106
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 Lúc sau 107
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Trường hợp nhập ID không úng ịnh dạng (không bắt ầu bằng IP hoặc SG) 108
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
Khi ó dữ liệu sẽ không ược cập nhật VI. Stored Procedures
6.1. Tổng số nhân viên của từng khu vực
CREATE PROCEDURE [dbo].[SUMOFEMPLOYEE] AS BEGIN
SELECT dbo.CHI_NHANH.MA_CN, dbo.CHI_NHANH.TEN_CN,
COUNT(dbo.NHAN_VIEN.MA_NV) as tong_nhan_vien_cua_cac_chi_nhanh
FROM (( dbo.NHAN_VIEN INNER JOIN dbo.CUA_HANG ON
dbo.NHAN_VIEN.MA_CH= dbo.CUA_HANG.MA_CH)
INNER JOIN dbo.CHI_NHANH ON dbo.CUA_HANG.MA_CN = dbo.CHI_NHANH.MA_CN)
Group by dbo.CHI_NHANH.MA_CN, dbo.CHI_NHANH.TEN_CN END;
 EXECUTE [DBO].SUMOFEMPLOYEE
6.2. Tổng số cửa hàng tại từng khu vực
CREATE PROCEDURE [DBO].SUMOFSTORE1 AS BEGIN
SELECT dbo.CHI_NHANH.MA_CN, dbo.CHI_NHANH.TEN_CN,
COUNT(dbo.CUA_HANG.MA_CH) as tong_cua_hang_cua_cac_chi_nhanh
FROM (CUA_HANG INNER JOIN CHI_NHANH ON CUA_HANG.MA_CN = CHI_NHANH.MA_CN)
GROUP BY CHI_NHANH.MA_CN , CHI_NHANH.TEN_CN END;  EXECUTE [DBO].SUMOFSTORE1 Kết quả: 109
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
6.3. Tổng doanh thu tại từng khu vực
CREATE PROCEDURE [dbo].[doanh_thu] AS BEGIN
SELECT ch.MA_CN, cn.TEN_CN, SUM(sp.GIA*GD.SO_LUONG) AS doanh_thu
FROM dbo.CHI_NHANH AS cn, dbo.CUA_HANG AS ch, dbo.NHAN_VIEN AS
NV, dbo.GIAO_DICH AS GD, dbo.SAN_PHAM AS sp
WHERE cn.MA_CN=ch.MA_CN AND ch.MA_CH=nv.MA_CH AND
GD.MA_NV=NV.MA_NV AND GD.MA_SP=sp.MA_SP GROUP BY ch.MA_CN, cn.TEN_CN END  EXECUTE [DBO].doanh_thu Kết quả 110
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 VII. Transactions
7.1. Giao tác phân tán thêm thông tin giữa các máy trạm
Từ chi nhánh Vũng Tàu, thử thực hiện insert một cửa hàng vào chi nhánh TPHCM SET XACT_ABORT ON BEGIN TRY BEGIN TRAN
INSERT INTO [LINK-HUY-HCM].[QLBDT-
HCM].[dbo].[CUA_HANG]([MA_CH],[DIA_CHI],[SDT_CH],[MA_CN])
VALUES ( ’HCM09’,N’CHỢ LỚN’,’01234560000’,’HCM’)
SELECT * FROM [LINK-HUY-HCM].[QLBDT-HCM].[dbo].[CUA_HANG] COMMIT END TRY BEGIN CATCH PRINT(’ERROR’) ROLLBACK END CATCH GO Kết quả: 111
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152
7.2. Giao tác phân tán giữa máy trạm và máy chủ
VD: Thêm 1 cửa hàng từ máy chủ vào máy trạm ở chi nhánh Vũng Tàu SET XACT_ABORT ON BEGIN TRY BEGIN TRAN
INSERT INTO LINK_SERVER_HA_VT.[QLBDT-VT].dbo.CUA_HANG ( MA_CH, DIA_CHI, SDT_CH, MA_CN ) VALUES
( N’VT89’, -- MA_CH - nvarchar(50)
N’BariaVungTau’, -- DIA_CHI - nvarchar(50)
N’1900561252’, -- SDT_CH - nvarchar(50) N’VT’ 112
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 )
SELECT * FROM LINK_SERVER_HA_VT.[QLBDT-VT].dbo.CUA_HANG SELECT * FROM dbo.CUA_HANG COMMIT END TRY BEGIN CATCH
PRINT(N’Lỗi transactions’) ROLLBACK TRAN END CATCH Kết quả:
Trường hợp transactions bị lỗi (Trùng ID) 113
Downloaded by Jiisaa Miliana (milihisa22@gmail.com) lOMoARcPSD| 37054152 114
Downloaded by Jiisaa Miliana (milihisa22@gmail.com)