Cơ sở dữ liệu phân tán UTT. Hy vọng các bạn sẽ đạt được điểm cao sau khi đọc tài liệu này. Hãy tải xuống nếu như cảm thấy tài liệu hay và có ích đối với bạn nhé!. Chúc các bạn học tốt!
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ GTVT KHOA CÔNG NGHỆ THÔNG TIN -o0o - BÁO CÁO MÔN CSDL PHÂN TÁN TÊN ĐỀ TÀI: QUẢN LÝ KHÁM BỆNH TẠI BỆNH VIỆN GIÁO VIÊN HƯỚNG DẪN: NGUYỄN THỊ NHƯ NHÓM THỰC HIỆN: NHÓM 15 THÀNH VIÊN TỰC HIỆN: Hy Tiến Sơn Nguyễn Quốc Việt Nguyễn Đức Nam LỚP: 72DCTT21 Hà Nội, 2024 Mục lục I.Phát biểu toán .1 II.Mơ hình sở liệu quan hệ .1 1.Xác định thực thể, thuộc tính ràng buộc 2.Các bảng xác định cấu trúc sau: III.Tạo sở liệu IV.Xây dựng view cho CSDL .10 1.Tạo view cho biết hoá đơn lập năm 2000 .10 2.Tạo view cho biết hố đơn có tổng tiền 100000 11 3.Tạo view cho biết bệnh nhân nữ HN .11 4.Tạo view cho biết tên thuốc có số lượng bán lớn 12 5.Tạo view cho biết tên bệnh nhân, sđt tổng tiền lớn 12 V.Xây dựng Procedure cho CSDL 12 Tạo Proc tính tổng tiền mua hàng bệnh theo Mã bệnh nhân 12 Tạo Proc cho biết tên thuốc mua bệnh nhân (Theo số điện thoại) 13 Tạo Pro cho biết tổng số tiền Thuốc bán tháng, năm 14 VI Xây dựng Trigger cho CSDL 14 1.Trigger đảm bảo ngày xuất hóa đơn phải lớn ngày .15 Trigger kiểm tra tính xác nhập số điện thoại bệnh nhân .15 3.Trigger đảm bảo giá nhập hàng lớn .15 Trigger đảm bảo giới tính bệnh nhân nam nữ .16 5.Trigger đảm bảo hóa đơn DV khơng q dịch vụ 16 VII.Phân quyền bảo vệ sở liệu .17 1.Tạo tài khoản 17 2.Tạo user cho thành viên 17 Cấp quyền cho thành viên 17 VIII.Phân tán CSDL 20 1.Phân mảnh bảng tblBenhNhan sở liệu với điều kiện giới tính 20 2.Máy trạm sau phân tán 20 Máy trạm 21 4.Tạo linkserver từ máy trạm -> máy trạm 22 5.Khai thác Cơ sở liệu 23 LỜI NÓI ĐẦU Trong bối cảnh sống ngày nay, hệ thống y tế ngày đối mặt với thách thức lớn việc quản lý thông tin khám bệnh cung cấp dịch vụ chăm sóc sức khỏe hiệu Đặc biệt, với gia tăng số lượng bệnh nhân, phức tạp ca bệnh, nhu cầu ngày cao linh hoạt đồng quản lý thông tin, việc áp dụng sở liệu phân tán trở thành giải pháp hiệu để nâng cao chất lượng hiệu suất hệ thống y tế Chính lẽ đó, khn khổ mơn học Cơ sở liệu phân tán, chọn đề tài "Quản lý khám bệnh bệnh viện" để nghiên cứu triển khai hệ thống sở liệu phân tán, nhằm tối ưu hóa q trình ghi nhận thơng tin bệnh nhân, lên lịch khám, quản lý liệu y tế Báo cáo không kết học tập nghiên cứu sâu rộng lĩnh vực sở liệu phân tán, mà cịn đóng góp chúng tơi vào việc giải thách thức thực tế mà bệnh viện phải đối mặt Chúng tin báo cáo mang lại nhìn tổng quan ưu điểm thách thức việc áp dụng sở liệu phân tán lĩnh vực quản lý khám bệnh, đồng thời đề xuất cải tiến phát triển tương lai Phát biểu toán Qua khảo sát hoạt động bệnh viện ta thấy cần phải quản lý liệu thông tin Bác Sĩ làm việc bệnh, Dịch Vụ khám cung cấp, loại Thuốc, thông tin BệnhNhân Hóa Đơn đóng tiền sử dụng dịch vụ để giúp việc quản lý khám bệnh dễ dàng sau này: - Bác sĩ: mã bác sĩ, tên bác sĩ, chuyên ngành Quy định bác sĩ có mã bác sĩ - Bệnh nhân: người đến khám bệnh sử dụng dịch vụ Mỗi bệnh nhân đến khám bệnh cần khai báo thông tin để dễ dàng hướng dẫn đến phòng khám phù hợp, lập đơn thuốc hóa đơn Mỗi bệnh nhân bao gồm thơng tin: mã bệnh nhân, tên bệnh nhân, giới tỉnh, ngày sinh, địa chỉ, số điện thoại, tình trạng sức khỏe - Các Dịch Vụ khám xác định bởi: mã dịch vụ, tên dịch vụ, đơn giả - Còn Thuốc bao gồm thông tin: mã thuốc, tên thuốc đơn giả - Bệnh nhân cần có đơn thuốc phiếu bác sĩ lập gồm có: mã đơn thuốc,mã bác sĩ, mã bệnh nhân Từ đơn thuốc yêu cầu có đơn thuốc chi tiết có mã đơn thuốc, mã thuốc, số lượng để quản lý loại thuốc phát cho ai, - Bệnh nhân cần qua phận tốn để nộp phí khám bệnh Hóa Đơn bảng có mẫu sau: mã hóa đơn, mã đơn thuốc, mã bệnh nhân, ngày lập, tổng tiền Từ hóa đơn phải có chi tiết Hóa Đơn- Dịch Vụ gồm: mã hóa đơn, mã dịch vụ, số lượng để biết chi tiết dịch vụ sử dụng I.Mơ hình sở liệu quan hệ Xác định thực thể, thuộc tính ràng buộc • tblBENHNHAN(sMaBN, sTenBN, sGioiTinh, dNgaySinh, sDiaChi, iSodienthoai, sTinhtrangsuckhoe) • tblBACSI(sMaBS, sTenBS, sChuyenNganh) • tblTHUOC(sMaThuoc, sTenThuoc, fGiaThuoc) • tblDONTHUOC(sMaDT, sMaBS, sMaBN) • tblCT_DONTHUOC(sMaDT, sMaThuoc, iSoLuong) • tblDICHVUKHAM(sMaDV, sTenDV, fDonGia) • tblHOADON(sMaHD, sMaDT, sMaBN, dNgayLap, fTongtien) • tblHOADONDV(sMaHD, sMaDV fSoLuong) • *tblBENHNHAN: lưu trữ thơng tin BỆNH NHÂN Các băng xác định cấu trúc sau: *tblBACSI: lưu trữ thông tin BÁC SĨ *tblTHUOC: lưu trữ thông tin THUỐC *tblDONTHUOC: lưu trữ thông tin ĐƠN THUỐC *tblCT_DONTHUOC: *tblDICHVUKHAM(sMaDV, sTenDV, fDonGia) *tblHOADON: lưu trữ thông tin hóa đơn *tblHOADONDV III Tạo sở liệu Tao database create database qlyKhamBenh use qlyKhamBenh go Tạo bảng bệnh nhân viên ràng buộc create table tblBenhNhan ( sMaBN VARCHAR (10) primary key not null, sTenBN nvarchar (30) null, sGioiTinh bit null, dNgaySinh date null, sDiaChi nvarchar (255) iSodienthoai varchar (10) null, sTinhtrangsuckhoe nvarchar(255) ) alter table tblBenh Nhan alter column sGioiTinh nvarchar(5) Tạo bảng bác sĩ create table tblBacSi( ); Tạo bảng thuốc sMaBS varchar (10) primary key not null, sTenBS Nvarchar (30) null, sChuyenNganh nvarchar (30) null create table tblDichVuKham ); sMaDV varchar (10) primary key not null, sTenDV nvarchar (30) null, fDonGia float Tạo bảng đơn thuốc ràng buộc create table tblDonThuoc( sMaDT varchar (10) primary key not null, sMaBS varchar (10) references tblBacSi(sMaBS), sMaBN varchar(10) references tblBenhNhan(sMaBN), ); Tạo bảng chi tiết đơn thuốc ràng buộc create table tblCT_DonThuoc( ); sMaDT varchar (10) not null, sMaThuoc varchar (10)not null, iSoLuong int check (iSoLuong>0) constraint PK_Ma primary key (sMaDT,sMaThuoc) foreign key (sMaThuoc) references tbl Thuoc(sMaThuoc), foreign key (sMaDT) references tblDonThuoc(sMaDT) Tạo bảng dịch vụ khám create table tblDichVuKham sMaDV varchar (10) primary key not null, sTenDV nvarchar (30) null, fDonGia float ); Tạo bảng hoá đơn create table tblHoaDon sMaHD varchar (10) primary key not null, sMaDT varchar (10) not null references tblDonThuoc(sMaDT), sMaBN varchar (10) not null references tblBenhNhan (sMaBN), ); dNgayLap date null, fTongTien float Tạo bảng hoá đơn_dịch vụ create table tblHoaDon_DV( sMaHD varchar (10)not null, sMaDV varchar (10) not null, fSoLuong float check (fSoLuong>0), constraint PK_hoadon_DV primary key (sMaHD, sMaDV), foreign key (sMaHD) references tblHoaDon (sMaHD), foreign key (sMaDV) references tblDichVuKham (sMaDV) ); *Chèn liệu cho bảng chèn liệu vào bảng tblBenhNhan INSERT INTO tblBenhNhansMaBN_sTenBN_sGioiTinh_dNgay Sinh sDiaChi_iSodienthoai_sTinhtr angsuckhoe) VALUES (BN01',N'Nguyễn Ngọc NNữ 06/03/1999' NHà Nội ','023772457',N'Sót') ('BN02' NNguyễn Lan NNữ 07/05/1994 N Quảng Ninh','025452457',N'Ho'), ('BN03',N'Nguyễn Hoa NNữ 03/03/1996',N'Hải Phòng ''023452457',N'Viêm xoang), ('BN04',N'Nguyễn Hồng Hoa NNữ 06/05/1999'NHà Nội ','033452457',N'Sót'), (BN05',N'Nguyễn Hùng',N'Nam' '08/03/1989',N'Thái Bình ''093452457',N'Co giật), ('BN06_NĐặng Trang NNữ 06/03/1977',N'Thái Bình ''093452457',N'Sốt), (BN07 NNguyễn Hiếu _NNam' 06/03/2000',N'Hà Nội ''02332457',N'Viêm phổi) ('BN08'N Lê Hoàng N'Nam','06/03/2002'N'Nam Định ''097452457'N'Ung thư phổi) chén liệu vào bảng tblBacSi INSERT INTO tblBacSi(sMaBS sTenBS sChuyen Nganh) VALUES (BS01'NNguyễn Tuấn NĐa khoa), ('BS02' NNguyễn Tuấn',N'Tai Mũi Họng), ('BS03'NNguyễn Tuấn' N'Răng hàm mặt"), ('BS04'NNguyễn Tuấn',N'Nội xương khớp), (BS05',N'Nguyễn Tuấn',N'Da liễu) chèn liệu vào tblThuoc INSERT INTO tblThuoc(sMaThuoc, sTenThuoc fGiaThuoc) VALUES ('T01',N'Vitamin','43000'), (T02',N'Kháng sinh','80000'), ('T03'_N'Tiêu hóa''50000') (T04',N'Tim mach', '400000'), ('T05'NHuyết áp' '100000') chèn liệu vào bảng tblDonThuoc INSERT INTO tblDonThuoc(sMaDT SMABS,sMaBN) VALUES ('DT01','BS01','BN02'), ('DT02','BS01', 'BN01'), (DT03', 'BS02', 'BN07'), ('DT04','BS04', 'BN05'), (DT05', 'BS05', 'BN03') chèn liệu vào bảng tblCT_DT INSERT INTO tblCT_DonThuoc (sMaDT sMaThuoc.iSoLuong) VALUES ('DT02','T01',5), ('DT01','T02',4), ('DT03', 'T03',7), ('DT05', 'T04',4), ('DT04', 'T05',9) chén liệu vào bảng tblDichVuKham INSERT INTO tblDichVuKham(sMaDV¸sTenDV fDonGia) VALUES ('DVO1'N'Xét nghiệm 400000) ('DV02',N'Khám lâm sàng',700000), (DV03',N'Siêu âm' 500000), (DV04',N'X Quang' 550000) (DV05',N'cơ xương khớp' 990000) (DV06',N'Nội soi,560000) chèn liệu vào bảng tblHoaDon INSERT INTO tblHoaDon(sMaHD,sMaBN sMaDT dNgayLap.fTongTien) VALUES (HD01','BN01','DT01', '06/08/2021',708000), ('HD02', 'BN02','DT02','06/08/2020',5550000), ('HD03','BN04','DT03','06/08/2021,7300000), ('HD04','BN05','DT04','06/08/2020',900000), ('HD05', 'BN03', 'DT05', '06/08/2021,5500000) - Chèn liệu vào bảng tblCT_HD INSERT INTO tblHoaDon_DV(sMaHD sMaDV,fSoLuong) VALUES ('HD01','DV01',3), ('HD02','DV02',5), ('HD03', 'DV03',3), ('HD04','DV04',6), ('HD05','DV05',2); 2 Tạo view cho biết hố đơn có tổng tiền 1000000 CREATE VIEW vvHoaDonTongTien 1000000 AS SELECT * FROM dbo.tblHoaDon WHERE fTongTien>1000000 SELECT * FROM vvHoaDonTongTien 1000000 120 % SELECT * FROM vvHoaDonTongTien1000000 Tạo view cho biết bệnh nữ Hà Nội SELECT * FROM dbo.tblBenhNhan CREATE VIEW vvKhachHangNuHaNoi AS SELECT * FROM dbo.tblBenhNhan WHERE sGioiTinh=N'Nữ AND sDiaChi=N'Hà Nội SELECT * FROM vvKhachHangNuHaNoi Tạo view cho biết tên thuốc có số lượng bán Lớn CREATE VIEW vvTenthuoctren6 AS SELECT sTenThuoc FROM dbo.tblCT DonThuoc,dbo.tblThuoc WHERE iSoLuong>6 AND tblCT_DonThuoc.sMaThuoc-tblThuoc.sMaThuoc SELECT *FROM vvTenthuoctren6 Tạo view cho biết tên bệnh nhân, số điện thoại có tổng tiền lớn CREATE VIEW vvBenNhanTongTienMax AS SELECT sTenBN, iSodienthoai FROM dbo.tblBenhNhan,dbo.tblHoaDon WHERE fTongTien = (SELECT MAX(fTongTien) FROM dbo.tblHoaDon) AND tblHoaDon.sMaBN tblBenhNhan.sMaBN SELECT * FROM vvBenNhan TongTienMax V Xây dựng Procedure cho CSDL Tạo Proc tính tổng tiền mua hàng bệnh theo Mã bệnh nhân CREATE PROC prsumTienBenhNhanTheoMa(@maBN nchar(30)) AS BEGIN DECLARE @fsum FLOAT SELECT @fsum = SUM(iSoLuong*fGiaThuoc) FROM dbo.tblThuoc,dbo.tblCT DonThuoc,dbo.tblDonThuoc WHERE tblCT DonThuoc.sMaThuoc-tblThuoc.sMaThuoc AND dbo.tblCT DonThuoc.sMaDT=dbo.tblDonThuoc.sMaDT AND @maBN=sMaBN SELECT @fsum AS[Tổng Tiên] END EXEC prsumTienBenhNhan TheoMa 'BN01' SELECT * FROM dbo.tblBenhNhan Tạo Proc cho biết tên thuốc mua bệnh nhân (Theo số điện thoại) CREATE PROC prTenThuoc (@sdt int) AS BEGIN SELECT sTenThuoc FROM dbo.tblBenhNhan, dbo.tblThuoc, dbo.tblCT DonThuoc,dbo.tblDonThuoc WHERE dbo.tblBenhNhan.sMaBN=dbo.tblDonThuoc.sMaBN AND dbo.tblDonThuoc.sMaDT= dbo.tblCT DonThuoc.sMaDT AND dbo.tblCT_DonThuoc.sMaThuoc-dbo.tblThuoc.sMaThuoc AND @sdt =iSodienthoai END EXEC prTenThuoc 023772457 SELECT * FROM dbo.tblBenhNhan Tạo Pro cho biết tổng số tiền Thuốc bán tháng, năm CREATE PROC prTienThuocTheoNam@nam int, @thang int ) AS BEGIN END DECLARE @fsumTien float SELECT @fsumTien = fTongTien FROM dbo.tblHoaDon WHERE @nam = YEAR(dNgayLap) AND @thang = MONTH(dNgayLap) SELECT @fsumTien EXEC prTienThuoc TheoNam 2020,6 SELECT * FROM dbo.tblHoaDon VI Xây dựng Trigger cho CSDL Trigger đảm bảo ngày xuất hóa đơn phải lớn ngày CREATE TRIGGER trg_ngaylap on tblHoaDon INSTEAD OF INSERT, UPDATE AS BEGIN DECLARE @dNgayLap datetime SELECT @dNgaylap = dNgayLap FROM inserted BEGIN IF(@dNgayLap