Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 14 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
14
Dung lượng
347,69 KB
Nội dung
1 THIẾT KẾ ỨNG DỤNG 1. Giới thiệu chức năng Ứng dụng quản lý sản xuất nhiều phân xưởng được áp dụng để minh họa về những gì tìm hiểu được về cơ sở dữ liệu phân tán áp dụng vào thực tế. Sơ đồ chức năng hệ thống quản lý sản xuất nhiều phân xưởng. 2. Các bảng cho CSDL tập trung Hệ thống gồm 4 bảng với các quan hệ như hình sau: Các bảng cho CSDL tập trung cho hệ thống quản lý sản xuất nhiều phân xưởng. Giả sử ứng dụng cần thống kê tính toán tình hình sản xuất tại các phân xương thuộc một địa phương (TinhTP) 3. Thiết kế phân mảnh ngang Giả sử ứng dụng được đặt ở 2 nơi Hà Nội và HCM là 2 nơi đặt phân xưởng sản xuất. Ta thiết kế “Phanxuong” phân mảnh ngang dựa theo TinhTP giả sử TinhTP có 2 giá trị “HN”, “HCM” đại diện cho 2 nơi. “Nhanvien” được phân mảnh ngang dẫn xuất theo “Phanxuong” dựa vào MaPX “Sanxuat “ được phân mảnh ngang dẫn xuất theo “Phanxuong” dựa vào MaPX “Sanpham” được nhân bản ở 2 nơi và được đồng bộ dữ liệu. Ta có các mảnh ngang như sau: PhanxuongHCM= σ TinhTP=’HCM’ (Phanxuong) PhanxuongHN= σ TinhTP=’HN’ (Phanxuong) Chương trình QL Sản xuất Quản lý nhân viên Quản lý SP xuất xưởng Cập nhập thông tin Thống kế tình hình SX Cập nhật SP xuất xưởng 2 NhanvienHCM=Nhanvien < PhanxuongHCM (Phép nữa kết semi Join) NhanvienHN=Nhanvien < PhanxuongHN SanxuatHCM=Sanxuat < PhanxuongHCM SanxuatHN=Sanxuat < PhanxuongHN Vẽ cây phân mảnh dẫn xuất 4. Cài đặt CSDL tại các Server 4.1 Cài đặt Server database cho ứng dụng trên ServerHCM ServerHCM cài đặt CSDL QLSanxuatHCM gồm 4 bảng : use master go if exists(Select name from sysdatabases where name='QLSanxuatHCM') drop database QLSanxuatHCM go create database QLSanxuatHCM go use QLSanxuatHCM go Create Table PhanxuongHCM ( MaPX char(4) constraint pk_MaPX primary key, TenPX nvarchar(50) not null, DiachiPX nvarchar(100) null, TinhTP nvarchar(20) constraint chk_Noi check(TinhTP='HCM') ) go PhanxuongHCM SanxuatHCM NhanvienHCM PhanxuongHN SanxuatHN NhanvienHN 3 Create table NhanvienHCM ( MaNV char(6) constraint pk_MaNV primary key, HotenNV nvarchar(50) not null, DiachiNV nvarchar(100) null, MaPX char(4) constraint fk_MaPX1 references PhanxuongHCM(MaPX), Trinhdo nvarchar(30) not null ) go Create table Sanpham ( MaSP char(6) constraint pk_MaSP Primary key, TenSP nvarchar(50) not null, Mota nvarchar(100) null ) go Create table SanxuatHCM ( MaPX char(4) constraint fk_MaPX2 references PhanxuongHCM(MaPX), MaSP char(6) constraint fk_MaSP references Sanpham(MaSP), Ngay smalldatetime not null, Soluong integer constraint chk_Soluong Check(Soluong>=0) , constraint pk_Sanxuat primary key(MaPX,MaSP,Ngay) ) 4.2 Cài đặt Server Database cho ứng dụng trên ServerHN ServerHCM cài đặt CSDL QLSanxuatHCM gồm 4 bảng như sau : use master go if exists(Select name from sysdatabases where name='QLSanxuatHN') drop database QLSanxuatHN go create database QLSanxuatHN go use QLSanxuatHN go 4 Create Table PhanxuongHN ( MaPX char(4) constraint pk_MaPX primary key, TenPX nvarchar(50) not null, DiachiPX nvarchar(100) null, TinhTP nvarchar(20) constraint chk_Noi check(TinhTP='HN') ) go Create table NhanvienHN ( MaNV char(6) constraint pk_MaNV primary key, HotenNV nvarchar(50) not null, DiachiNV nvarchar(100) null, MaPX char(4) constraint fk_MaPX1 references PhanxuongHN(MaPX), Trinhdo nvarchar(30) not null ) go Create table Sanpham ( MaSP char(6) constraint pk_MaSP Primary key, TenSP nVarchar(50) not null, Mota nvarchar(100) null ) go Create table SanxuatHN ( MaPX char(4) constraint fk_MaPX2 references PhanxuongHN(MaPX), MaSP char(6) constraint fk_MaSP references Sanpham(MaSP), Ngay smalldatetime not null, Soluong integer constraint chk_Soluong Check(Soluong>=0), constraint pk_Sanxuat primary key(MaPX,MaSP,Ngay)) 4.3 Cài đặt linkserver Server đặt tại TP.HCM có tên PHET cài đặt Database QLSanxuatHCM (Chứa thông tin quản lý sản xuất tại TP.HCM) gồm 4 bảng : PhanxuongHCM,NhanvienHCM, SanxuatHCM, Sanpham Server đặt tại TP.HN có tên KHOA cài đặt Database QLSanxuatHN (Chứa thông tin quản lý sản xuất tại Hà Nội ) gồm 4 bảng : PhanxuongHN, NhanvienHN, SanxuatHN, Sanpham Tại ServerHCM (PHET) cài đặt linkserver đến ServerHN (KHOA) bằng đoạn mã sau (Thực thi trong Query Analyzer) use master go Exec sp_addlinkedserver @server='Khoa', @srvproduct='SQLServer OLEDB Provider', @provider='SQLOLEDB', 5 @data go Exec sp_addlinkedsrvlogin 'Khoa','false',NULL,'sa','sa' Để kiểm tra select * from Khoa.QLSanxuatHN.dbo.PhanxuongHN Tương tự tại ServerHN (KHOA) cài đặt linkserver đến ServerHCM (PHET) bằng đoạn mã sau (Thực thi trong Query Analyzer) use master go Exec sp_addlinkedserver @server='PHET', @srvproduct='SQLServer OLEDB Provider', @provider='SQLOLEDB', @datasrc='PHET' go Exec sp_addlinkedsrvlogin 'PHET','false',NULL,'sa','sa' Để kiểm tra select * from Khoa.QLSanxuatHCM.dbo.PhanxuongHCM 5. Cài đặt các khung nhìn phân tán 5.1. Trên serverHCM (Phet) Cài đặt các khung nhìn phân tán use QLSanxuatHCM Create View Phanxuong as Select * from PhanxuongHCM Union Select * from Khoa.QLSanxuatHN.dbo.PhanxuongHN Create View Nhanvien as Select * from NhanvienHCM Union Select * from Khoa.QLSanxuatHN.dbo.NhanvienHN Create View Sanxuat as Select * from SanxuatHCM Union Select * from Khoa.QLSanxuatHN.dbo.SanxuatHN Create View SanphamSX as Select Sp.MaSp,TenSP,Mota,MaPX,Ngay,Soluong from Sanpham SP , Sanxuat SX Where Sp.MaSP=SX.MaSP 5.2. Trên serverHN (Khoa) Cài đặt các khung nhìn phân tán use QLSanxuatHN 6 Create View Phanxuong as Select * from PhanxuongHN Union Select * from Khoa.QLSanxuatHCM.dbo.PhanxuongHCM Create View Nhanvien as Select * from NhanvienHN Union Select * from Khoa.QLSanxuatHCM.dbo.NhanvienHCM Create View Sanxuat as Select * from SanxuatHN Union Select * from Khoa.QLSanxuatHCM.dbo.SanxuatHCM Create View SanphamSX as Select Sp.MaSp,TenSP,Mota,MaPX,Ngay,Soluong from Sanpham SP , Sanxuat SX Where Sp.MaSP=SX.MaSP 6. Cài đặt các Stored Procedure xử lý 6.1. Trên serverHCM (Phet) Cài đặt các Stored Procedure xử lý a. Nhập TinhTP, MaSP, Ngay cho biết số lượng sản phẩm đã sản xuất trên các phân xưởng theo ngày. Create Proc TimSLSanxuat @Noi varchar(10), @MaSP Char(6), @Ngay Varchar(20) As If @Noi='HCM' Local Select SP.MaSP, TenSP, SoLuong From Sanpham SP, SanxuatHCM SX Where SP.MaSP=SX.MaSP and SP.MaSP=@MaSP and Ngay=@Ngay If @Noi='HN' Remote Select SP.MaSP, TenSP, SoLuong From Sanpham SP, Khoa.QLSanxuatHN.dbo.SanxuatHN SX Where SP.MaSP=SX.MaSP and SP.MaSP=@MaSP and Ngay=@Ngay b. Thêm vào bảng Sanxuat thông tin gồm: MaSP, MaPX, Ngay, Soluong Create Proc NhapSPXuatxuong @Noi varchar(10),@MaPX as Char(4), @MaSP Char(6), @Ngay Varchar(20), @Soluong Integer As If @Noi='HCM' Local Insert Into SanxuatHCM(MaPX,MaSP,Ngay,Soluong) 7 values (@MaPX, @MaSP, @Ngay, @Soluong) If @Noi='HN' Remote Insert Into Khoa.QLSanxuatHN.dbo.SanxuatHN(MaPX,MaSP,Ngay,Soluong) values (@MaPX, @MaSP, @Ngay, @Soluong) c. Xóa 1 dòng ra khỏi bảng Sanxuat Create Proc XoaSPXuatxuong @Noi varchar(10),@MaPX as Char(4), @MaSP Char(6), @Ngay Varchar(20) As If @Noi='HCM' Local Delete From SanxuatHCM Where MaPX=@MaPX and MaSP=@MaSP and Ngay=@Ngay If @Noi='HN' Remote Delete From Khoa.QLSanxuatHN.dbo.SanxuatHN Where MaPX=@MaPX and MaSP=@MaSP and Ngay=@Ngay d. Cập nhật dữ liệu trong bảng sản xuất (MaSP, MaPX, Ngay, Soluong) Create Proc SuaSPXuatxuong @Noi varchar(10),@MaPXCu as Char(4), @MaSPCu Char(6), @NgayCu Varchar(20), @Soluong Integer, @MaPXMoi as Char(4), @MaSPMoi Char(6), @NgayMoi Varchar(20) As If @Noi='HCM' Local Update SanxuatHCM Set MaPX=@MaPXMoi,MaSP=@MaSPMoi, Ngay=@NgayMoi,Soluong=@Soluong where MaPX=@MaPXCu and MaSP=@MaSPCu and Ngay=@NgayCu If @Noi='HN' Remote Update Khoa.QLSanxuatHN.dbo.SanxuatHN Set MaPX=@MaPXMoi,MaSP=@MaSPMoi, Ngay=@NgayMoi,Soluong=@Soluong where MaPX=@MaPXCu and MaSP=@MaSPCu and Ngay=@NgayCu e. Thêm vào bảng Nhanvien ( MaNV, HoTenNV, DiachiNV, MaPX, Trinhdo) Create Proc NhapNV @MaNV Char(6), @HotenNV nvarchar(50), @MaPX varchar(4),@Trinhdo nVarchar(30) As Declare @Noi varchar(20) Lay gia tri Noi cua phan xuong trong Khung nhin phan tan Select @Noi=TinhTP From Phanxuong where MaPX=@MaPX If @Noi='HCM' Local Insert Into NhanvienHCM(MaNV,HotenNV,DiachiNV,MaPX,Trinhdo) values (@MaNV, @HotenNV, @DiachiNV, @MaPX, @Trinhdo) If @Noi='HN' Remote Insert Into NhanvienHN(MaNV,HotenNV,DiachiNV,MaPX,Trinhdo) values (@MaNV, @HotenNV, @DiachiNV, @MaPX, @Trinhdo) f. Cập nhật thông tin phân xưởng 8 Create Proc DieuchinhPX @Ma Char(4), @Noi varchar(20), @Ten nvarchar(50),@Diachi nvarchar(100) as Declare @Noicu varchar(20), @Tencu nvarchar(50), @Diachicu nvarchar(100) Lay gia tri Noicu, Tencu,Diachicu Select @Noicu=TinhTP, @Tencu = TenPX, @Dichicu=DiachiPX From Phanxuong Khung nhin phan tan Where MaPX=@Ma If(@Noi=@Noicu) chi cap nhat TenPX,DiachiPX tren khung nhin phan tan If(@Ten<>@Tencu) Update Phanxuong Set TenPX=@Ten where MaPX=@Ma else Begin If(@Noi='HCM' Chuyen tu ServerHN(Khoa) sang ServerHCM(Phet) Begin Them vao Bang PhanxuongHCM Insert into PhanxuongHCM(MaPX,TenPX,DiachiPX,TinhTP) Values(@Ma, @Ten, @Diachi, 'HCM') Them vao Bang NhanvienHCM Insert into NhanvienHCM(MaNV,HotenNV,DichiNV, MaPX, Trinhdo) Select MaNV,HotenNV,DiachiNV,@Ma, trinhdo From Khoa.QLsanxuatHN.dbo.NhanvienHN where MaPX=@Ma Them vao Bang SanxuatHCM Insert into SanxuatHCM(MaPX,MaSP,Ngay,Soluong) Select @Ma,MaSp,Ngay,Soluong From Khoa.QLsanxuatHN.dbo.SanxuatHN where MaPX=@Ma Xoa ra khoi Bang NhanvienHN Delete From Khoa.QLSanxuatHN.dbo.NhanvienHN where MaPX=@Ma Xoa ra khoi Bang SanxuatHN Delete From Khoa.QLSanxuatHN.dbo.SanxuatHN where MaPX=@Ma End Else Chuyen tu ServerHCM(Phet) sang ServerHN(Khoa) Begin Them vao Bang PhanxuongHN Insert into PhanxuongHN(MaPX,TenPX,DiachiPX,TinhTP) Values(@Ma, @Ten, @Diachi, 'HN') Them vao Bang NhanvienHN Insert into NhanvienHN(MaNV,HotenNV,DichiNV, MaPX, Trinhdo) Select MaNV,HotenNV,DiachiNV,@Ma, trinhdo From Phet.QLsanxuatHN.dbo.NhanvienHN where MaPX=@Ma Them vao Bang SanxuatHCM Insert into SanxuatHN(MaPX,MaSP,Ngay,Soluong) Select @Ma,MaSp,Ngay,Soluong 9 From Phet.QLsanxuatHCM.dbo.SanxuatHCM where MaPX=@Ma Xoa ra khoi Bang NhanvienHCM Delete From Phet.QLSanxuatHCM.dbo.NhanvienHCM where MaPX=@Ma Xoa ra khoi Bang SanxuatHCM Delete From Phet.QLSanxuatHCM.dbo.SanxuatHCM where MaPX=@Ma End End 6.2. Trên serverHCM (Phet) Cài đặt các Procedure xử lý a. Nhập TinhTP, MaSP, Ngay cho biết số lượng sản phẩm đã sản xuất trên các phân xưởng theo ngày. Create Proc TimSLSanxuat @Noi varchar(10), @MaSP Char(6), @Ngay Varchar(20) As If @Noi='HN' Local Select SP.MaSP, TenSP, SoLuong From Sanpham SP, SanxuatHCM SX Where SP.MaSP=SX.MaSP and SP.MaSP=@MaSP and Ngay=@Ngay If @Noi='HCM' Remote Select SP.MaSP, TenSP, SoLuong From Sanpham SP, Phet.QLSanxuatHCM.dbo.SanxuatHCM SX Where SP.MaSP=SX.MaSP and SP.MaSP=@MaSP and Ngay=@Ngay b. Thêm vào bảng Sanxuat thông tin gồm : MaSP, MaPX, Ngay, Soluong Create Proc NhapSPXuatxuong @Noi varchar(10),@MaPX as Char(4), @MaSP Char(6), @Ngay Varchar(20), @Soluong Integer As If @Noi='HN' Local Insert Into SanxuatHN(MaPX,MaSP,Ngay,Soluong) values (@MaPX, @MaSP, @Ngay, @Soluong) If @Noi='HCM' Remote Insert Into Phet.QLSanxuatHCM.dbo.SanxuatHCM(MaPX,MaSP,Ngay,Soluong) values (@MaPX, @MaSP, @Ngay, @Soluong) c. Xóa 1 dòng ra khỏi bảng Sanxuat Create Proc XoaSPXuatxuong @Noi varchar(10),@MaPX as Char(4), @MaSP Char(6), @Ngay Varchar(20) As If @Noi='HN' Local Delete From SanxuatHN Where MaPX=@MaPX and MaSP=@MaSP and Ngay=@Ngay If @Noi='HCM' Remote 10 Delete From Phet.QLSanxuatHCM.dbo.SanxuatHCM Where MaPX=@MaPX and MaSP=@MaSP and Ngay=@Ngay d. Cập nhật dữ liệu trong bảng sản xuất (MaSP, MaPX, Ngay, Soluong) Create Proc SuaSPXuatxuong @Noi varchar(10),@MaPXCu as Char(4), @MaSPCu Char(6), @NgayCu Varchar(20), @Soluong Integer, @MaPXMoi as Char(4), @MaSPMoi Char(6), @NgayMoi Varchar(20) As If @Noi='HN' Local Update SanxuatHN Set MaPX=@MaPXMoi,MaSP=@MaSPMoi,Ngay=@NgayMoi,Soluong=@Soluong where MaPX=@MaPXCu and MaSP=@MaSPCu and Ngay=@NgayCu If @Noi='HCM' Remote Update PHET.QLSanxuatHCM.dbo.SanxuatHCM Set MaPX=@MaPXMoi,MaSP=@MaSPMoi,Ngay=@NgayMoi,Soluong=@Soluong where MaPX=@MaPXCu and MaSP=@MaSPCu and Ngay=@NgayCu e. Thêm vào bảng Nhanvien ( MaNV, HoTenNV, DiachiNV, MaPX, Trinhdo) Create Proc NhapNV @MaNV Char(6), @HotenNV nvarchar(50), @MaPX varchar(4),@Trinhdo nVarchar(30) As Declare @Noi varchar(20) Lay gia tri Noi cua phan xuong trong Khung nhin phan tan Select @Noi=TinhTP From Phanxuong where MaPX=@MaPX If @Noi='HCM' Local Insert Into NhanvienHCM(MaNV,HotenNV,DiachiNV,MaPX,Trinhdo) values (@MaNV, @HotenNV, @DiachiNV, @MaPX, @Trinhdo) If @Noi='HN' Remote Insert Into NhanvienHN(MaNV,HotenNV,DiachiNV,MaPX,Trinhdo) values (@MaNV, @HotenNV, @DiachiNV, @MaPX, @Trinhdo) f. Cập nhật thông tin phân xưởng Create Proc DieuchinhPX @Ma Char(4), @Noi varchar(20), @Ten nvarchar(50),@Diachi nvarchar(100) as Declare @Noicu varchar(20), @Tencu nvarchar(50), @Diachicu nvarchar(100) Lay gia tri Noicu, Tencu,Diachicu Select @Noicu=TinhTP, @Tencu = TenPX, @Dichicu=DiachiPX From Phanxuong Khung nhin phan tan Where MaPX=@Ma If(@Noi=@Noicu) chi cap nhat TenPX,DiachiPX tren khung nhin phan tan If(@Ten<>@Tencu) Update Phanxuong Set TenPX=@Ten where MaPX=@Ma else [...]... chứa Phân xưởng bị hỏng thì hệ thống cũng không hoạt động được (vấn đề nhân bản dữ liệu) • Chưa giải quyết vần đề các giao dịch đồng thời xảy ra • Chưa quan tâm đến việc Commit các giao dịch thành công và Rollback các giao dịch thất bại • Và còn một số vấn đề khác nữa Trên đây là những vần đề quan trọng khi thực hiện một ứng dụng phân tán, nhưng do thời gian hạn hẹp nên chỉ thực hiện dược một ứng dụng. .. số vấn đề khác nữa Trên đây là những vần đề quan trọng khi thực hiện một ứng dụng phân tán, nhưng do thời gian hạn hẹp nên chỉ thực hiện dược một ứng dụng nhỏ đơn giản: Giải quyết được các vần đề truy xuất dữ liệu, cập nhật dữ liệu giữa các mảnh Trong tương lai sẽ phát triển hoàn thiện hơn 14 . 1 THIẾT KẾ ỨNG DỤNG 1. Giới thiệu chức năng Ứng dụng quản lý sản xuất nhiều phân xưởng được áp dụng để minh họa về những gì tìm hiểu được về cơ sở dữ liệu phân tán áp dụng vào thực. quản lý sản xuất nhiều phân xưởng. 2. Các bảng cho CSDL tập trung Hệ thống gồm 4 bảng với các quan hệ như hình sau: Các bảng cho CSDL tập trung cho hệ thống quản lý sản xuất nhiều phân xưởng. . trình QL Sản xuất Quản lý nhân viên Quản lý SP xuất xưởng Cập nhập thông tin Thống kế tình hình SX Cập nhật SP xuất xưởng 2 NhanvienHCM=Nhanvien < PhanxuongHCM (Phép nữa kết semi