Báo cáo bài tập lớn: Quản lý thông tin bệnh nhân tại bệnh viện theo chuẩn dữ liệu 3NF

MỤC LỤC

Chuẩn hóa 3NF

 Đạt chuẩn 2NF: Các thuộc tính không khóa là “Ngày bắt đầu”, “Ngày kết thúc” đều phụ thuộc đầy đủ vào khóa chính là “Mã dùng phòng”.  Đạt chuẩn 3NF: Các thuộc tính không khóa là “Ngày bắt đầu”, “Ngày kết thúc” đều phụ thuộc trực tiếp vào khóa chính là “Mã dùng phòng”.  Đạt chuẩn 2NF, 3NF: Vì cả hai thuộc tính hợp thành một khóa chính nên không có thuộc tính không khóa nào, do đó thỏa mãn các thuộc tính không khóa phụ thuộc đầy đủ (2NF) và trực tiếp (3NF) vào khóa chính.

 Đạt chuẩn 2NF, 3NF: Vì cả hai thuộc tính hợp thành một khóa chính nên không có thuộc tính không khóa nào, do đó thỏa mãn các thuộc tính không khóa phụ thuộc đầy đủ (2NF) và trực tiếp (3NF) vào khóa chính.  Đạt chuẩn 2NF: Các thuộc tính không khóa là “Số lượng”, “Ngày thanh toán” đều phụ thuộc đầy đủ vào khóa chính là “Mã thanh toán”.  Đạt chuẩn 3NF: Các thuộc tính không khóa là “Số lượng”, “Ngày thanh toán” đều phụ thuộc trực tiếp vào khóa chính là “Mã thanh toán”.

 Đạt chuẩn 2NF: Các thuộc tính không khóa là “Ngày xét nghiệm”, “Kết quả xét nghiệm” đều phụ thuộc đầy đủ vào khóa chính là “Mã xét nghiệm”.  Đạt chuẩn 3NF: Các thuộc tính không khóa là “Ngày xét nghiệm”, “Kết quả xét nghiệm” đều phụ thuộc trực tiếp vào khóa chính là “Mã xét nghiệm”.

Lược đồ quan hệ sau khi chuẩn hóa

 Đạt chuẩn 1NF: Có khóa chính, các thuộc tính đều là nguyên tố, không có thuộc tính dẫn xuất, đa trị.  Đạt chuẩn 2NF: Thuộc tính không khóa là “Tên dịch vụ”, “Đơn giá” phụ thuộc đầy đủ vào khóa chính là “Mã CLS”.  Đạt chuẩn 3NF: Chỉ có duy nhất 1 thuộc tính không khóa và thuộc tính này phụ thuộc trực tiếp vào khóa chính là “Mã CLS”.

 Đạt chuẩn 1NF: Có khóa chính, các thuộc tính đều là nguyên tố, không có thuộc tính dẫn xuất, đa trị.  Đạt chuẩn 2NF: Thuộc tính không khóa là “Kết quả bình thường” phụ thuộc đầy đủ vào khóa chính là “X-mã CLS”.  Đạt chuẩn 3NF: Chỉ có duy nhất 1 thuộc tính không khóa và thuộc tính này phụ thuộc trực tiếp vào khóa chính là “X-mã CLS”.

 Đạt chuẩn 1NF: Có khóa chính, các thuộc tính đều là nguyên tố, không có thuộc tính dẫn xuất, đa trị.  Đạt chuẩn 3NF: Chỉ có duy nhất 1 thuộc tính không khóa và thuộc tính này phụ thuộc trực tiếp vào khóa chính là “C-mã CLS”.

CÀI ĐẶT HỆ THỐNG

Tạo database và các bảng, thêm dữ liệu vào từng bảng

FOREIGN KEY REFERENCES BENHNHAN(MaBenhNhan), KetQua nvarchar(255) NOT NULL,. NgayBatDau date NOT NULL, NgayKetThuc date NULL, ). MaThuoc varchar(255) PRIMARY KEY, TenThuoc nvarchar(255) NOT NULL, DonVi nvarchar(255) NOT NULL, CachDung nvarchar(255) NOT NULL, DonGia int NOT NULL,.

Các câu truy vấn, ứng dụng của hệ thống

BN.HoTen AS [Bệnh nhân], KHAM.NgayKham AS [Ngày Khám], BACSI.HocVi AS [Trình Độ], BACSI.HoTen AS [Bác Sĩ], KHOA.TenKhoa AS [Khoa]. ThôCng kê sôC lâAn khám và sôC lâAn điêAu trị cuả môRi bác sĩ từ ngày 01-01-2022 đêCn ngày hôm quả, sắCp xêCp theo giảm dâAn sôC lâAn khám, sôC lâAn điêAu trị. AND DATEADD(DAY, -1, GETDATE())) AS [Sổ` lâSn khám], (SELECT COUNT(*) FROM DIEUTRI WHERE DIEUTRI.MaBacSi = BACSI.MaBacSi.

BACSI.MaKhoa AS MaKhoa, COUNT(*) AS cnt. FROM DIEUTRI INNER JOIN BACSI ON BACSI.MaBacSi = DIEUTRI.MaBacSi. GROUP BY BACSI.MaKhoa. ) AS DT ON DT.MaKhoa = KHOA.MaKhoa. LâCy tình trạng hiện tại cuả các phòng bệnh WITH DangDung AS (. WHERE DUNG.NgayKetThuc IS NULL GROUP BY DUNG.MaKhoa, DUNG.TenPhong ). LEFT JOIN DangDung ON (DangDung.[Mã Khoa] = PHONGBENH.MaKhoa AND DangDung.[Phòng] = PHONGBENH.TenPhong) ORDER BY KHOA.TenKhoa.

BENH.TenBenh AS [Bệnh], KHAM.NgayKham AS [Ngày Khám], BACSI.HocVi AS [Học Vị], BACSI.HoTen AS [Bác Sĩ], KHOA.TenKhoa AS [Khoa]. INNER JOIN KHOA ON KHOA.MaKhoa = BACSI.MaKhoa WHERE ((KHAM.NgayKham BETWEEN DIEUTRI.NgayBatDau AND DIEUTRI.NgayKetThuc). INNER JOIN GOM ON GOM.MaKeDon = KEDON.MaKeDon INNER JOIN THUOC ON THUOC.MaThuoc = GOM.MaThuoc INNER JOIN BACSI ON KEDON.MaBacSi = BACSI.MaBacSi INNER JOIN KHOA ON KHOA.MaKhoa = BACSI.MaKhoa WHERE ((KEDON.NgayKeDon BETWEEN DIEUTRI.NgayBatDau AND DIEUTRI.NgayKetThuc).

INNER JOIN THANHTOAN ON KHOANCHIPHI.MaKhoanCP = THANHTOAN.MaKhoanCP INNER JOIN BENHNHAN ON BENHNHAN.MaBenhNhan = THANHTOAN.MaBenhNhan INNER JOIN DIEUTRI ON DIEUTRI.MaBenhNhan = BENHNHAN.MaBenhNhan WHERE ((THANHTOAN.NgayThanhToan >= DIEUTRI.NgayBatDau). AND (KEDON.NgayKeDon <= DIEUTRI.NgayKetThuc OR DIEUTRI.NgayKetThuc IS NULL )). AND DIEUTRI.MaBenhNhan = KEDON.MaBenhNhan ) AS [TiêSn Thuổ`c], (SELECT. WHERE ((LAMXETNGHIEM.NgayXetNghiem >= DIEUTRI.NgayBatDau) AND (LAMXETNGHIEM.NgayXetNghiem <= DIEUTRI.NgayKetThuc. OR DIEUTRI.NgayKetThuc IS NULL )). AND DIEUTRI.MaBenhNhan = LAMXETNGHIEM.MaBenhNhan) AS [TiêSn Xét Nghiệm],.

AND (THANHTOAN.NgayThanhToan <= DIEUTRI.NgayKetThuc OR DIEUTRI.NgayKetThuc IS NULL )). AND DIEUTRI.MaBenhNhan = THANHTOAN.MaBenhNhan) AS [Các Chi Phí]. AND ((KHAM.NgayKham BETWEEN DIEUTRI.NgayBatDau AND DIEUTRI.NgayKetThuc) OR (KHAM.NgayKham >= DIEUTRI.NgayBatDau AND DIEUTRI.NgayKetThuc IS NULL )). SUM (THANHTOAN.SoLuong * KHOANCHIPHI.DonGia) AS [Các chi phí]. INNER JOIN KHOANCHIPHI ON THANHTOAN.MaKhoanCP = KHOANCHIPHI.MaKhoanCP. GROUP BY THANHTOAN.MaBenhNhan. ) AS CP ON CP.MaBenhNhan = BENHNHAN.MaBenhNhan LEFT JOIN(.

SUM (THUOC.DonGia * GOM.SoLuong) AS [TiêSn Thuổ`c]. INNER JOIN GOM ON GOM.MaKeDon = KEDON.MaKeDon INNER JOIN THUOC ON THUOC.MaThuoc = GOM.MaThuoc GROUP BY KEDON.MaBenhNhan. ) AS TT ON TT.MaBenhNhan = BENHNHAN.MaBenhNhan LEFT JOIN(. SUM (CANLAMSANG.DonGia) AS [TiêSn Xét Nghiệm]. INNER JOIN CANLAMSANG ON CANLAMSANG.MaCLS = LAMXETNGHIEM.MaCLS. GROUP BY LAMXETNGHIEM.MaBenhNhan. ) AS XN ON XN.MaBenhNhan = BENHNHAN.MaBenhNhan ORDER BY [Tổ,ng TiêSn] DESC.