MỤC LỤC I. LỜI NÓI ĐẦU 3 II. NỘI DUNG CHÍNH 6 1. THIếT Kế CSDL PHÂN TÁN CHO Hệ THốNG 6 1.1. Khảo sát nghiệp vụ 6 1.2. Bài toán 7 1.3. Thiết kế cơ sở dữ liệu tập trung cho hệ thống 8 1.4. Thiết kế mô hình csdl phân tán cho hệ thống 8 2. XÂY DựNG CSDL PHÂN TÁN TRONG Hệ QUảN TRị CSDL SQL SERVER 13 2.1. Cấu trúc các bảng dữ liệu 13 2.2. Mô hình CSDL phân tán 18 2.3. Một số truy vấn phân tán trong hệ quản trị CSDL 23 3. CÀI ĐặT Hệ THốNG TRÊN CSDL PHÂN TÁN 24 3.1. Yêu cầu phần cứng và phần mềm 24 3.2. Thiết kế giao diện chương trình trên các trạm 24 3.3. Cài đặt và thử nghiệm 24
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
o0o LỚP HỆ THỐNG THÔNG TIN – KHÓA 7
Bài tập lớn : Cơ sở dữ liệu phân tán
Đề tài : Thiết kế và cài đặt cơ sở dữ liệu phân tán bằng hệ quản trị cơ sở
dữ liệu SQL Server cho quản lí giao dịch tại ngân hàng theo phân mảng ngang trên địa chỉ ở Đà Nẵng, Hà Nội, Sài Gòn
Người thực hiện :
- Lê Tuấn Ngọc : Thiết kế CSDLPT, Xây dựng CSDLPT trongHQT CSDL SQL Server, Cài đặt hệ thống
- Nguyễn Thị Nguyên : Thiết kế CSDLPT
- Lê Thị Duyên : Thiết kế CSDLPT
Giáo viên hướng dẫn :
- Th.S Nguyễn Thị Thanh Huyền
Trang 2MỤC LỤC
I LỜI NÓI ĐẦU 3
II NỘI DUNG CHÍNH 6
1 THIẾT KẾ CSDL PHÂN TÁN CHO HỆ THỐNG 6
1.1 Khảo sát nghiệp vụ 6
1.2 Bài toán 7
1.3 Thiết kế cơ sở dữ liệu tập trung cho hệ thống 8
1.4 Thiết kế mô hình csdl phân tán cho hệ thống 8
2 XÂY DỰNG CSDL PHÂN TÁN TRONG HỆ QUẢN TRỊ CSDL SQL SERVER 13
2.1 Cấu trúc các bảng dữ liệu 13
2.2 Mô hình CSDL phân tán 18
2.3 Một số truy vấn phân tán trong hệ quản trị CSDL 23
3 CÀI ĐẶT HỆ THỐNG TRÊN CSDL PHÂN TÁN 24
3.1 Yêu cầu phần cứng và phần mềm 24
3.2 Thiết kế giao diện chương trình trên các trạm 24
3.3 Cài đặt và thử nghiệm 24
Trang 3I LỜI NÓI ĐẦU
Ngân Hàng TMCP Công Thương Việt Nam (VietinBank) được thành lập
từ năm 1988 sau khi tách ra từ Ngân hàng Nhà nước Việt Nam
Là Ngân hàng thương mại lớn, giữ vai trò quan trọng, trụ cột của ngànhNgân hàng Việt Nam
Có hệ thống mạng lưới trải rộng toàn quốc với 01 Sở giao dịch, 151 Chinhánh và trên 1000 Phòng giao dịch/ Quỹ tiết kiệm Các chi nhánh được
phân theo 3 khu vực chính trên cả nước là Hà Nội, Đà Nẵng và Sài Gòn.
Các hoạt động chính của ngân hàng
- Phát hành kỳ phiếu, trái phiếu
Cho vay, đầu tư
- Cho vay ngắn hạn bằng VNĐ và ngoại tệ
- Cho vay trung, dài hạn bằng VNĐ và ngoại tệ
- Tài trợ xuất, nhập khẩu; chiết khấu bộ chứng từ hàng xuất
- Đồng tài trợ và cho vay hợp vốn đối với những dự án lớn, thờigian hoàn vốn dài
- Cho vay tài trợ, uỷ thác theo chương trình: Đài Loan (SMEDF);Việt Đức (DEG, KFW) và các hiệp định tín dụng khung
- Thấu chi, cho vay tiêu dùng
- Hùn vốn liên doanh, liên kết với các tổ chức tín dụng và các địnhchế tài chính trong nước và quốc tế
- Đầu tư trên thị trường vốn, thị trường tiền tệ trong nước và quốctế
Trang 4Bảo lãnh
- Bảo lãnh, tái bảo lãnh (trong nước và quốc tế): Bảo lãnh dự thầu;Bảo lãnh thực hiện hợp đồng; Bảo lãnh thanh toán
Thanh toán và Tài trợ thương mại
- Phát hành, thanh toán thư tín dụng nhập khẩu; thông báo, xácnhận, thanh toán thư tín dụng nhập khẩu
- Nhờ thu xuất, nhập khẩu (Collection); Nhờ thu hối phiếu trả ngay(D/P) và nhờ thu chấp nhận hối phiếu (D/A)
- Chuyển tiền trong nước và quốc tế
- Chuyển tiền nhanh Western Union
- Thanh toán uỷ nhiệm thu, uỷ nhiệm chi, séc
- Chi trả lương cho doanh nghiệp qua tài khoản, qua ATM
- Chi trả Kiều hối…
Ngân quỹ
- Mua, bán ngoại tệ (Spot, Forward, Swap…)
- Mua, bán các chứng từ có giá (trái phiếu chính phủ, tín phiếu khobạc, thương phiếu…)
- Thu, chi hộ tiền mặt VNĐ và ngoại tệ
- Cho thuê két sắt; cất giữ bảo quản vàng, bạc, đá quý, giấy tờ cógiá, bằng phát minh sáng chế
Thẻ và ngân hàng điện tử
- Phát hành và thanh toán thẻ tín dụng nội địa, thẻ tín dụng quốc tế(VISA, MASTER CARD…)
- Dịch vụ thẻ ATM, thẻ tiền mặt (Cash card)
- Internet Banking, Phone Banking, SMS Banking
Trang 5Hoạt động khác
- Khai thác bảo hiểm nhân thọ, phi nhân thọ
- Tư vấn đầu tư và tài chính
- Cho thuê tài chính
- Môi giới, tự doanh, bảo lãnh phát hành, quản lý danh mục đầu tư,
tư vấn, lưu ký chứng khoán
- Tiếp nhận, quản lý và khai thác các tài sản xiết nợ qua Công tyQuản lý nợ và khai thác tài sản
Để hoàn thiện các dịch vụ liên quan hiện có nhằm đáp ứng nhu cầu ngàycàng cao của khách hàng, đồng thời tạo đà cho sự phát triển và hội nhậpvới các nước trong khu vực và quốc tế, VietinBank luôn có tầm nhìn chiếnlược trong đầu tư và phát triển, tập trung ở 3 lĩnh vực:
- Phát triển nguồn nhân lực
- Phát triển công nghệ
- Phát triển kênh phân phối
Với quy mô lớn như hiện nay, công tác quản lý giao dịch tại các chi nhánhcủa ngân hàng gặp rất nhiều khó khăn, do nhu cầu thu thập, lưu trữ, xử lý
và trao đổi thông tin ngày càng tăng, các hệ thống xử lý tập trung này đãbộc lộ rất nhiều nhược điểm
Vì thế xây dựng một hệ thống phân tán để thay thế hệ thống tập trung
truyền thống là điều tất yếu, nhóm chúng em đề xuất “Thiết kế và cài đặt
cơ sở dữ liệu phân tán bằng hệ quản trị cơ sở dữ liệu SQL Server cho quản
lí giao dịch tại ngân hàng theo phân mảng ngang trên địa chỉ ở Đà Nẵng,
Hà Nội, Sài Gòn”
Trang 6II NỘI DUNG CHÍNH
Thiết kế và cài đặt cơ sở dữ liệu phân tán bằng hệ quản trị cơ sở dữ liệu SQL Server cho quản lí giao dịch tại ngân hàng theo phân mảng ngang trên địa chỉ ở Đà Nẵng, Hà Nội, Sài Gòn
- Trạm 1 : Các chi nhánh khu vực Hà Nội
- Trạm 2 : Các chi nhánh khu vực Đà Nẵng
- Trạm 3 : Các chi nhánh khu vực Sài Gòn
Nội dung chính gồm 3 chương :
- Chương 1 : Thiết kế CSDL phân tán cho hệ thống
- Chương 2 : Xây dựng CSDL phân tán trong hệ quản trị CSDL
- Chương 3 : Cài đặt hệ thống trên CSDL phân tán
1 Thiết kế CSDL phân tán cho hệ thống
1.1 Khảo sát nghiệp vụ
Khi khách hàng đến sử dụng dịch vụ của ngân hàng thì khách hàng sẽ nhận được một mẫu đăng kí sử dụng dịch vụ (Một trong số các dịch vụ mà ngân hàng cung cấp) Đối với mỗi loại dịch vụ có một mẫu phiếu đăng kí riêng, nhưng các mẫu phiếu đăng kí có các nội dung chung sau:
Số phiếu:
Mã DV:
Tên khách:
Địa chỉ:
Mã khách:
Số tài khoản:
Ngày đăng kí TK:… ………… (Các nội dung riêng của từng dịch vụ) Ngày đăng kí sử dụng dịch vụ:
Trang 7Mã NV: Tên NV: Sau khi nhân phiếu đăng kí sử dụng dịch vụ từ khách hàng Nhân viên tiếpnhận cập nhật thông tin của khách hàng vào cơ sở dữ liệu khách hàng Sau
đó cập nhật mã khách hàng và các thông tin riêng của dich vụ vào cơ sở dữliệu của dịch vụ đó Cuối cùng, khách hàng nộp tiền (nếu cần) và nhận biênlai giao dịch
Chính vì thế ứng dụng quản lý mà ta cần thiết kế phải có khả năng truy cập
và cập nhật vào cơ sở dữ liệu từ xa, đồng thời cũng có các chức năng in ấnbáo cáo
Hiện nay có rất nhiều ngôn ngữ có thể làm được các công việc trên Tuynhiên nhóm em thấy Visual C# là thích hợp hơn cả Sau đây nhóm em xintrình bày tư tưởng cài đặt hệ thống
Hệ thống gồm 2 chương trình:
- Server: đặt tại một máy tính có địa chỉ mạng xác định có nhiệm
vụ nhận các yêu cầu cập nhật cũng như lấy thông tin từ các máyclient của ngân hàng đặt tại các địa điểm khác nhau
- Máy trạm : đặt trên các máy tính của các chi nhánh Chương trìnhclient có một giao diện xuất nhập tốt bao gồm các nút và các formnhập dữ liệu
Trang 81.3 Thiết kế cơ sở dữ liệu tập trung cho hệ thống
1.4 Thiết kế mô hình csdl phân tán cho hệ thống
Trang 9Tập vị từ đơn giản khởi đầu là Pr = {p1, p2, p3} Áp dụng thuật toánCOM_MIN với i = 1 làm giá trị khởi đầu tạo ra Pr’ = {p1, p2, p3} là tập đầy
Kết quả phân mảnh ngang nguyên thủy ChiNhanhtạo ra 3 mảnh
ChiNhanh = { ChiNhanh 1 , ChiNhanh 2 , ChiNhanh 3 }
ChiNhanh1= σ DiaChi = “Hà Nội” (ChiNhanh)
ChiNhanh2= σ DiaChi = “Đà Nẵng” (ChiNhanh)
ChiNhanh3 = σ DiaChi = “Sài Gòn” (ChiNhanh)
Phân mảnh ngang dẫn xuất ChiNhanh – KhachHang ta được 3 trạm:
KhachHang1 = KhachHang |›‹ ChiNhanh1
KhachHang2 = KhachHang |›‹ ChiNhanh2
KhachHang3 = KhachHang |›‹ ChiNhanh3
Phân mảnh ngang dẫn xuất ChiNhanh – NhanVien ta được 3 trạm:
NhanVien1 = NhanVien|›‹ ChiNhanh1
Trang 10NhanVien2 = NhanVien|›‹ ChiNhanh2
NhanVien3 = NhanVien|›‹ ChiNhanh3
Phân mảnh ngang dẫn xuất ChiNhanh – PhieuChuyenTien ta được 3 trạm:
PhieuChuyenTien1 = PhieuChuyenTien |›‹ ChiNhanh1
PhieuChuyenTien2 = PhieuChuyenTien |›‹ ChiNhanh2
PhieuChuyenTien3 = PhieuChuyenTien |›‹ ChiNhanh3
Phân mảnh ngang dẫn xuất ChiNhanh – PhieuNopTien ta được 3 trạm:
PhieuNopTien1 = PhieuNopTien |›‹ ChiNhanh1
PhieuNopTien2 = PhieuNopTien |›‹ ChiNhanh2
PhieuNopTien3 = PhieuNopTien |›‹ ChiNhanh3
Phân mảnh ngang dẫn xuất ChiNhanh – PhieuRutTien ta được 3 trạm:
PhieuRutTien1 = PhieuRutTien |›‹ ChiNhanh1
PhieuRutTien2 = PhieuRutTien |›‹ ChiNhanh2
PhieuRutTien3 = PhieuRutTien |›‹ ChiNhanh3
Sau khi phân mảnh ta có 3 trạm như sau:
- Trạm 1
Trang 11- Trạm 2
- Trạm 3
Trang 121.4.2 Mô tả về sử dụng dữ liệu cho mỗi chi nhánh
- Server : Có quyền thay đổi thông tin, cập nhật toàn bộ dữ liệu trên hệthống
- Máy trạm : Mỗi trạm (chi nhánh) chỉ được cập nhật dữ liệu trongphạm vi chi nhánh đó
1.4.3 Mô tả quá trình nghiệp vụ cho mỗi chi nhánh
- Chức năng cập nhật dữ liệu dịch vụ có nhiệm vụ tiếp nhận các điềuchỉnh về dịch vụ từ bộ phận quản lý cấp trên và cập nhật nó vào hệthống Công việc này bao gồm: Thêm một dịch vụ mới vào hệ thống
và thay đổi một dịch vụ đang cung cấp (Ví dụ: tăng giảm lãi suất,thời hạn trả lãi,…)
- Chức năng quản lý sử dụng dịch vụ: là nơi giao tiếp với khách hàng
và có nhiệm vụ cập nhật thông tin của khách hàng cũng như cácthông tin về sử dụng dịch vụ của khách hàng
- Chức năng thống kê báo cáo có nhiệm vụ tổng hợp và báo cáo thôngtin theo yêu cầu của bộ phận quản lý cấp trên
Trang 132 Xây dựng CSDL phân tán trong hệ quản trị CSDL SQL Server 2.1 Cấu trúc các bảng dữ liệu
2.1.1 Bảng Chi nhánh
2.1.2 Bảng Phòng ban
Trang 142.1.4 Bảng Khách hàng
2.1.5 Bảng Nhân viên
Trang 15MaChiNhanh Int Mã chi nhánh
2.1.6 Bảng Phiếu chuyển tiền
2.1.7 Bảng Phiếu nộp tiền
Trang 16MaPhieuNopTien Int Mã phiếu nộp tiền
2.1.8 Bảng Phiếu rút tiền
Trang 17SoTien Decimal(18,0) Số tiền nộp
2.2 Mô hình CSDL phân tán
Trang 182.2.1 Một số Trigger
====================================== Create T-SQL Trigger trg_ChiNhanh_Tram1
====================================== USE VietinBank1
DECLARE @DiaChi nvarchar(250)
SET @DiaChi = (SELECT DiaChi FROM inserted) IF(@DiaChi LIKE N'%Hà Nội%')
PRINT N'Thành công' ELSE
BEGIN
PRINT N'Không thành công' END
GO
Trang 19IF OBJECT_ID ('trg_NhanVien_Tram1','TR') IS NOT NULL
DROP TRIGGER trg_NhanVien_Tram1
DECLARE @MaChiNhanh int
SET @MaChiNhanh = (SELECT MaChiNhanh FROM inserted)
DECLARE @DiaChi nvarchar(250)
SET @DiaChi = (SELECT DiaChi FROM ChiNhanh WHERE MaChiNhanh =
@MaChiNhanh)
IF(@DiaChi LIKE N'%Hà Nội%')
PRINT N'Thành công' ELSE
Trang 20IF OBJECT_ID ('trg_PhieuNopTien_Tram1','TR') IS NOT NULL
DROP TRIGGER trg_PhieuNopTien_Tram1
DECLARE @MaChiNhanh int
SET @MaChiNhanh = (SELECT MaChiNhanh FROM inserted)
DECLARE @DiaChi nvarchar(250)
SET @DiaChi = (SELECT DiaChi FROM ChiNhanh WHERE MaChiNhanh =
@MaChiNhanh)
DECLARE @MaNhanVien int
SET @MaNhanVien = (SELECT MaNhanVien FROM inserted)
DECLARE @MaChiNhanhNV int
SET @MaChiNhanhNV = (SELECT MaChiNhanh FROM NhanVien WHERE MaNhanVien
= @MaChiNhanhNV)
DECLARE @DiaChiNV nvarchar(250)
SET @DiaChiNV = (SELECT DiaChi FROM ChiNhanh WHERE MaChiNhanh =
@MaChiNhanhNV)
IF(@DiaChi LIKE N'%Hà Nội%' AND @DiaChiNV LIKE N'%Hà Nội%')
PRINT N'Thành công' ELSE
BEGIN
PRINT N'Không thành công' END
GO
Trang 21IF OBJECT_ID ('trg_PhieuRutTien_Tram1','TR') IS NOT NULL
DROP TRIGGER trg_PhieuRutTien_Tram1
DECLARE @MaChiNhanh int
SET @MaChiNhanh = (SELECT MaChiNhanh FROM inserted)
DECLARE @DiaChi nvarchar(250)
SET @DiaChi = (SELECT DiaChi FROM ChiNhanh WHERE MaChiNhanh =
@MaChiNhanh)
DECLARE @MaNhanVien int
SET @MaNhanVien = (SELECT MaNhanVien FROM inserted)
DECLARE @MaChiNhanhNV int
SET @MaChiNhanhNV = (SELECT MaChiNhanh FROM NhanVien WHERE MaNhanVien
= @MaChiNhanhNV)
DECLARE @DiaChiNV nvarchar(250)
SET @DiaChiNV = (SELECT DiaChi FROM ChiNhanh WHERE MaChiNhanh =
@MaChiNhanhNV)
IF(@DiaChi LIKE N'%Hà Nội%' AND @DiaChiNV LIKE N'%Hà Nội%')
PRINT N'Thành công' ELSE
BEGIN
PRINT N'Không thành công' END
GO
Trang 222.3 Một số truy vấn phân tán trong hệ quản trị CSDL
2.3.1 Tạo Link Server
2.3.2 Thực hiện đồng bộ dữ liệu từ Server
USE master
GO
exec sp_addlinkedserver @server = 'LINK_ChiNhanh1', @srvproduct = '', @provider = 'SQLNCLI',
@datasrc = ‘CHINHANH1', @catalog = ‘VietinBank1’
GO
exec sp_addlinkedserver @server = 'LINK_ChiNhanh2', @srvproduct = '', provider = 'SQLNCLI',
@datasrc = ‘CHINHANH2', @catalog = ‘VietinBank2’
GO
exec sp_addlinkedserver @server = 'LINK_ChiNhanh3', @srvproduct = '', @provider = 'SQLNCLI',
@datasrc = ‘CHINHANH3', catalog = ‘VietinBank3’
GO
Truy vấn qua LinkServer
use master
GO
select * from LINK_ChiNhanh1.VietinBank1.dbo.NhanVien
select * from LINK_ChiNhanh2.VietinBank2.dbo.NhanVien
select * from LINK_ChiNhanh3.VietinBank3.dbo.NhanVien
EXEC msdb.dbo.sp_start_job N’SERVER-PC-VietinBank-rep-ChiNhanh1’
EXEC msdb.dbo.sp_start_job N’SERVER-PC-VietinBank-rep-ChiNhanh2’
EXEC msdb.dbo.sp_start_job N’SERVER-PC-VietinBank-rep-ChiNhanh3’
Trang 233 Cài đặt hệ thống trên CSDL phân tán
3.1 Yêu cầu phần cứng và phần mềm
3.2 Thiết kế giao diện chương trình trên các trạm 3.3 Cài đặt và thử nghiệm