Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 86

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP.

HCM
KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO ĐỒ ÁN HỌC PHẦN


CƠ SỞ DỮ LIỆU NÂNG CAO

HỆ THỐNG QUẢN LÝ KHU ĐIỀU TRỊ


BỆNH NHÂN MẮC COVID-19 TẠI TP.HCM

Sinh viên thực hiện: Nguyễn Xuân Nhân MSSV: 2011060729


Lớp: 20DTHA5
Ngành: Công nghệ thông tin
Giảng viên hướng dẫn: ThS. Võ Hoàng Khang

TP. Hồ Chí Minh, tháng 01/2023


LỜI NÓI ĐẦU
Công nghệ thông tin trong giai đoạn hiện nay đang có những bước phát triển như
vũ bão trên mọi lĩnh vực hoạt động khắp toàn thế giới, điều này xảy ra trong vòng nhiều
năm qua ở Việt Nam nói chung và thế giới nói riêng là những sự đầu từ ồ ạt vào công
nghệ. Đặc biệt tin học ngày nay càng có vai trò quan trọng, trong vấn đề quản lý tại các
cơ quan, tổ chức nhất là trong lĩnh vực công nghệ thông tin. Nhiều công việc lao động
chân tay thuần túy sẽ được thay thế bằng máy, các công việc sẽ đòi hỏi người lao động có
chất lượng cao, chuyên môn nghiệp vụ cao hơn, có khả năng ứng dụng công nghệ, có khả
năng nghiên cứu, sáng tạo và có trình độ đáp ứng sự thay đổi của thực tiễn. Đối với Việt
Nam, tuy công nghệ thông tin mới phát triển trong vòng vài năm trở lại đây và đang từng
bước phát triển theo từng này, điều đó cho thấy Việt Nam là đất nước có tiềm năng to lớn
về lĩnh vực công nghệ thông tin. Ngành Công nghệ thông tin ngày càng trở nên mạnh mẽ
hơn và đóng vai trò rất lớn trong cách mạng công nghiệp 4.0, là một mắt xích kết nối
những mảng của sự phát triển công nghệ. Người làm trong nghề công nghệ thông tin luôn
hiểu về giá trị to lớn sau mỗi cuộc cách mạng công nghiệp toàn cầu.
Hiện nay, các thiết bị di động như điên thoại di động, máy tính bảng… đang dần
trở nên phổ biến trong cuộc sống. Với sự phát triển nhanh chóng của công nghệ nhu cầu
giải trí trên những thiết bị số ngày càng phát triển mạnh mẽ và nhanh chóng. Ngày nay ta
có thể thấy rõ được sự phát triển nhanh chóng của ngành công nghệ thông tin với sự ứng
dụng vô cùng quan trọng đối với các ngành khác, góp phần thúc đẩy sự phát triển của đất
nước. Một trong những ứng dụng của ngành công nghệ thông tin đó là xu hướng tin học
hoá hệ thống nói chung và hệ thống quản lý nói riêng. Ứng dụng đã được sử dụng trong
hầu hết các lĩnh vực kinh tế - xã hội, trong đó phải kể đến ứng dụng trong ngành y học,
giáo dục và đào tạo. Xu hướng tin học hoá trong việc quản lý cách ly và truy vết F0 tại
TP.HCM ở các ngày vừa qua đã làm tăng nên hiệu quả to lớn trong công cuộc đẩy lùi
dịch bệnh hiện nay, kể đến các dự án tin học như: Hệ thống quản lý thẻ xanh, hệ thông
quản lý di chuyển của người dân, hệ thống quản lý bệnh nhân mắc Covid-19,…. Do đó ở
đồ án này ta sẽ phân tích và thiết kế hệ thống quản lý bệnh nhân mắc Covid-19 tại
TP.HCM.
Sinh viên thực hiện

1
Nguyễn Xuân Nhân

MỤC LỤC
Khảo sát hiện trạng..........................................................................................................3
Tính khả thi của bài toán.................................................................................................3
Mô tả và tóm tắt bài toán cần quản lý............................................................................3
Đề nghị cơ sở dữ liệu thích hợp.......................................................................................6
Loại thực thể 6
Loại thực thể cơ bản 6
Loại thực thể đối tượng ngoài 6
Loại thực thể nghiệp vụ 7
Mô hình ERD 7
Mô hình ERD được biểu diễn qua Toad Data Modeler 8
Mô hình Use Case8
Cấp 0: Tổng quát 8
Cấp 1: Quản lý đối tượng ngoài 9
Cấp 1: Quản lý danh mục cơ bản 9
Cấp 1: Quản lý nghiệp vụ 10
Cấp 1: Tìm kiếm 10
Cấp 1: Thống kê 11
Mô hình Class Diagram 11
Mô hình quan hệ 12
Mô tả các RBTV 17
RBTV trên 1 quan hệ (trên 1 bảng) 17
RBTV liên quan đến miền giá trị 17
RBTV liên thuộc tính 26
RBTV liên bộ 28
RBTV trên nhiều loại quan hệ33
RBTV tham chiếu (khoá ngoại/phụ thuộc tồn tại) 33
RBTV liên thuộc tính-liên quan hệ 39
RBTV do thuộc tính tổng hợp 42
RBTV do sự hiện diện của chu trình 43
Mô hình cơ sở dữ liệu.....................................................................................................43
2
Xây dụng đồ thị quan hệ 62

3
1. Khảo sát hiện trạng
Cùng với sự phát triển chóng mặt của Khoa học kỹ thuật và công nghệ, một kỷ
nguyên số đã làm thay đổi không ít những thói quen trong cuộc sống của chúng ta.
Hiện nay, dịch bệnh Covid-19 tại TP.HCM ngày càng phức tạp số lượng ca bệnh
mắc phải Covid-19 ngày càng cao, số người tử vong vì bệnh Covid-19 thì cũng tăng
không kém. Các cơ sở điều trị bệnh nhân mắc Covid-19 ngày càng quá tải. Nếu như chỉ
quản lý bằng tay, ghi chép qua sổ sách hay làm trên Excel thì hầu như là không thể. Một
số bệnh viện dã chiến khi lập ra chưa có hệ thống quản lý bệnh nhân mắc Covid-19. Vì
vậy chúng ta cần phải tin học hoá hệ thống quản lý bệnh nhân mắc Covid-19 ở bệnh viện
dã chiến và cũng như các cơ sở điều trị bệnh nhân mắc Covid-19 khác trên địa bàn
TP.HCM.
Việc tin học hoá hệ thống quản lý bệnh nhân mắc Covid-19 ở TP.HCM nói chung
cũng như các tỉnh thành khác là điều nhất thiết cần phải được triển khai, nhờ đó mà cơ
quan nhà nước có thể kiểm soát dịch bệnh một cách chặt chẽ hơn.
2. Tính khả thi của bài toán
Như khảo sát hiện trạng thực tế, ta thấy việc thiết lập hệ thống quản lý khu điều trị
bệnh nhân mắc Covid-19 có thể khả thi giải quyết các vấn đề sau:
- Về mặt quản lý bệnh nhân, hệ quản trị sẽ quản lý được thông tin của bệnh nhân,
phòng bệnh mà bệnh nhân nằm, thuốc uống chữa bệnh của bệnh nhân và có thể
quản lý việc tiêm vắc xin nhờ đó có thể theo dõi được tình trạng của bệnh nhân.
- Về mặt quản lý nhân viên, hệ quản trị sẽ quản lý được thông tin của các nhân viên
làm trong bệnh viện đó, chức vụ nhân viên và nơi công tác của nhân viên đó.
- Về mặt quản lý bệnh viện, hệ quản trị sẽ quản lý được thông tin của bệnh viện,
đơn vị phụ trách bệnh viện ấy.
- Về mặt triển khai, hệ quản trị quản lý khu điều trị bệnh nhân mắc Covid-19 tại
TP.HCM ta có thể triển khai trên các ứng dụng desktop, mobile (PC-Covid, Sổ
sức khoẻ điện tử) và website.
3. Mô tả tóm tắt bài toán cần quản lý
Trong làn sóng đại dịch Covid-19 hoành hành tại TP.HCM từ những tháng qua, đã
có hàng trăm nghìn ca mắc bệnh. Từ đó TP.HCM đã thành lập nhiều khu cách ly điều trị
Covid-19 cho các bệnh nhân mắc Covid-19 và người tiếp xúc với F0 điển hình là các
4
bệnh viện dã chiến. Do đó ta tin học hoá khâu quản lý khu điều trị bệnh nhân mắc Covid-
19 tại các khu cách ly như sau:
TP.HCM có nhiều khu cách ly, điều trị dành cho bệnh nhân mắc Covid-19 chẳng
hạn như bệnh viện trung ương, trạm y tế, bệnh viện dã chiến, bệnh viện quận/huyện.
Thông tin các khu cách ly, điều trị dành cho bệnh nhân mắc Covid-19 được phân biệt
bằng mã bệnh viện, tên bệnh viện, địa chỉ, số điện thoại, ngày thành lập, ngày giải thể,
sức chứa. Lưu ý: Số điện thoại bệnh viện là hotline riêng của bệnh viện đó, chứ không
phải là số điện thoại cấp cứu 115.
Mỗi bệnh viện có thể có nhiều đơn vị tham gia phụ trách điều trị và chăm sóc cho
bệnh nhân mắc Covid-19. Đơn vị phụ trách là các trung tâm y tế do sở y tế chỉ định và
được phân biệt qua mã đơn vị, tên đơn vị, địa chỉ, ngày thành lập. Trong mỗi bệnh viện
ngoài có các nhân viên làm việc như bác sĩ, điều dưỡng, y tá,… của bệnh viện đó thì còn
có sự hỗ trợ của các quân y, các cán bộ, học sinh, sinh viên y khoa từ các trường đại học,
các bác sĩ, điều dưỡng, y tá từ các bệnh viện khác,... Để tránh bị lây nhiếm chéo nhân
viên làm bệnh viện nào chỉ làm ở bệnh viện đó mà thôi, không được làm việc hoặc hỗ trợ
bệnh viện khác. Thông tin các nhân viên được phân biệt qua mã nhân viên, họ tên, phái,
ngày sinh, số điện thoại.
Mỗi nhân viên có thể bị quản lý bởi nhân viên khác, ví dụ như: “y tá có thể được
quản lý bởi y tá trưởng, bác sĩ thì quản lý bởi các bác sĩ trưởng” và các nhân viên quản lý
được phân biệt qua mã nhân viên quản lý. Chức vụ của nhân viên đó được phân biệt qua
mã chức vụ, tên chức vụ, mô tả chức vụ. Các nhân viên làm việc trong khu điều trị bệnh
nhân mắc Covid-19 đều có những nơi công tác khác nhau, đối với các bác sĩ từ bệnh khác
thì nơi công tác sẽ là bệnh viện mà họ đang công tác, đối với cán bộ, học sinh và sinh
viên của trường đại học y khoa thì nơi công tác chính là trường đại học của cán bộ, học
sinh và sinh viên ấy. Còn đối với quân y thì nơi công tác sẽ là trung tâm quốc phòng mà
quân y ấy làm việc. Nơi công tác sẽ được phân biệt qua mã nơi công tác, tên nơi công tác
và địa chỉ nơi công tác.
Mỗi bệnh viện có nhiều phòng khác nhau để đáp ứng việc điều trị bệnh nhân bị
mắc Covid-19, mỗi phòng được phân biệt số phòng, số giường, mô tả phòng, trạng thái
phòng. Mỗi phòng sẽ có một hoặc nhiều bác sĩ đảm nhiệm chăm sóc các bệnh nhân trong

5
phòng bệnh ấy. Và mỗi bác sĩ chỉ đảm nhiệm đúng một phòng để tránh lây nhiễm chéo
trong khu điều trị Covid-19.
Tuỳ vào mức độ bệnh của bệnh nhân nặng hay nhẹ thì ở mỗi bệnh viện chia các
phòng ra từng loại phòng (chẳng hạn như: loại phòng chuyên điều trị bệnh nhân nặng,
loại phòng điều trị bệnh nhân có mức độ bệnh nhẹ,…) để điều trị cho các bệnh nhân có
mức độ bệnh khác nhau và được phân biệt qua mã loại phòng, tên loại phòng, mô tả loại
phòng và trạng thái loại phòng.
Mỗi bệnh nhân mắc Covid-19 khi được cơ sở điều trị Covid-19 tiếp nhận đều phải
cung cấp thông tin để lập hồ sơ như: bệnh nhân như họ tên, ngày sinh, phái, địa chỉ, số
điện thoại, loại bệnh nhân. Sau khi cung cấp đầy đủ thông tin thì được cơ sở thành lập hồ
sơ bệnh án để quản lý bệnh nhân và mỗi hồ sơ đều được phân biệt qua mã hồ sơ, ngày lập
hồ sơ, ngày hết hạn hồ sơ. Mọi thông tin trên đều được lưu bên trong hồ sơ bệnh nhân.
Khi nhập viện bệnh nhân sẽ có phiếu nhập xuất viện được phân biệt qua mã phiếu,
ngày nhập viện, ngày xuất viện. Mỗi bệnh nhân trong khu điều trị có thể sở hữu thẻ bảo
hiểm y tế (BHYT) để có thể được hỗ trợ trong việc điều trị Covid-19 mà mỗi thẻ BHYT
đều có số thẻ, ngày cấp, ngày hết hạn, đơn vị cấp.
Khi tiếp nhận bệnh nhân thì bác sĩ trong bệnh viện sẽ tiến hành khám sàng lọc để
phân loại bệnh nhân theo tình trạng bệnh nặng, nhẹ nhằm cho việc xếp phòng và kê
thuốc, mọi thông tin khám sàng lọc sẽ được lưu vào phiếu khám, các thông tin trong
phiếu khám như số phiếu khám, ngày lập, tình trạng, triệu chứng bệnh.
Mỗi bệnh nhân sau khi khám có nhiều triệu chứng khác nhau như ho, cảm, sốt, co
giật, mệt mỏi,… Mỗi triệu chứng được phân biệt qua mã triệu chứng, tên triệu chứng, mô
tả triệu chứng. Sau khi khám sàng lọc bác sĩ sẽ kê toa thuốc cho bệnh nhân tuỳ vào mức
độ bệnh mà bác sĩ sẽ kê toa thuốc khác nhau, thông tin của toa thuốc như số phiếu khám,
ngày lập toa thuốc.
Mỗi bệnh nhân sau khi dùng thuốc có nhiều phản ứng khác nhau như: sốc thuốc,
dị ứng với thuốc,… Thông tin phản ứng sau khi dùng thuốc được phân biệt qua mã phản
ứng, tên phản ứng, mô tả phản ứng và mức độ phản ứng. Thông tin về loại thuốc mà sẽ
được phân biệt qua mã thuốc, tên thuốc, xuất xứ, hướng dẫn sử dụng. Trong chi tiết toa
thuốc sẽ lưu thông tin số lượng, ghi chú. Lưu ý: Các loại thuốc trên là loại thuốc chỉ dành
cho việc điều trị Covid-19.

6
Có nhiều loại vắc xin chống Covid-19 đã được triển khai tiêm cho toàn dân như
AstraZeneca, Gam-COVID-Vac, Vero Cell, Pfizer,.. được phân biệt qua mã loại vắc xin,
tên loại vắc xin, xuất xứ, mô tả vắc xin. Mỗi bệnh nhân trong khu điều trị đã có thể được
tiêm vắc xin phòng ngừa Covid-19, mỗi người có thể đã được tiêm từ 1 đến 3 mũi, thông
tin tiêm chủng sẽ được bệnh viện bổ sung vào lịch sử tiêm chủng với các thông tin như
mã hồ sơ, ngày tiêm, lần tiêm (Đối với lần tiêm sẽ là thuộc tính tự động tăng). Trong chi
tiết tiêm sẽ cung cấp thông tin đơn vị tiêm chủng.
Mỗi lần tiêm thì bệnh nhân sẽ có các phản ứng khác nhau, mỗi thông tin về phản
ứng sau khi tiêm của bệnh nhân được phân biệt qua mã phản ứng, tên phản ứng, mô tả
phản ứng và mức độ phản ứng. Nhằm xác định bệnh nhân đã hết mắc Covid-19 hay khỏi
bệnh hay chưa thì bệnh viện sẽ tiến hành xét nghiệm lấy mẫu, thông tin xét nghiệm sẽ
được lưu trong phiếu xét nghiệm với các thông tin như số phiếu, tên xét nghiệm, ngày xét
nghiệm và kết quả xét nghiệm (kết quả xét nghiệm là âm tính hoặc dương tính). Trong
trường hợp xấu nhất, nếu như bệnh nhân không may qua khỏi thì bệnh viện tiến hành lập
giấy báo tử để thông báo cho gia đình với các thông tin như số giấy, ngày mất và nguyên
nhân.
4. Đề nghị cơ sở dữ liệu thích hợp
4.1. Loại thực thể
4.1.1. Loại thực thể cơ bản:
- PHONG(SoPhong, TrangThai, SoGiuong, MoTa)
- LOAIPHONG(MaLP, TenLP, TrangThai, MoTa)
- TRIEUCHUNG(MaTC, TenTrieuChung, MoTaTC)
- THUOC(MaThuoc, TenThuoc, XuatXu, HuongDanSuDung)
- PHANUNGDUNGTHUOC(MaPhaUng, TenPhanUng, MoTaPhanUng,
MucDoPhanUng)
- LOAIVACXIN(MaLoaiVC, TenLoaiVC, XuatXu, MoTaVC)
- CHUCVU(MaCV, TenCV, MoTaCV)
- CTTIEMCHUNG(LanTiem, MaHS, LoaiVacXin, DonViTiem)
- CTTOATHUOC(MaThuoc, SoPhieuKham, SoLuong, GhiChu)
- PHANUNGSAUTIEM(MaPhanUng, TenPhanUng, MoTaPhanUng, MucDoPhanUng)

7
4.1.2. Loại thực thể đối tượng ngoài
- NHANVIEN(MaNV, NTNS, HoTen, SDT, Phai)
- HOSOBENHNHAN(MaHS, NgayLap, NgayHetHan, HoTenBN, DiaChi, Phai,
NTNS, SDT)
- BENHVIEN(MaBV, TenBV, SDT, DiaChi, SucChua, NgayTL, NgayGT)
- DONVIPHUTRACH(MaDV, TenDV, DiaChi, NgayTL)
- CONGTAC(MaNCT, TenNCT, DiaChi)
4.1.3. Loại thực thể nghiệp vụ:
- LICHSUTIEMCHUNG(LanTiem, MaHS, NgayTiem)
- PHIEUXETNGHIEM(SoPhieuXN, TenXetNghiem, NgayXetNghiem, KetQua)
- GIAYBAOTU(SoGiay, NguyenNhan, NgayMat)
- BHYT(SoThe, DonViCap, NgayCap, NgayHetHan)
- PHIEUNHAPXUATVIEN(MaPhieu, NgayNhapVien, NgayXuatVien)
- PHIEUKHAM(SoPhieuKham, NgayLap, GhiChu, TinhTrang)
- TOATHUOC(SoPhieuKham, NgayLap)
4.2. Mô hình ERD

Hình 4.1: Mô hình ERD

8
4.3. Mô hình ERD được biểu diễn qua Toad Data Modeler

Hình 4.2: Mô hình ERD được biểu diễn qua Toad Data Modeler

4.4. Mô hình Use Case


4.4.1. Cấp 0: Tổng quát

Hình 4.3: Use Case QLBV tổng quát

9
4.4.2. Cấp 1: Quản lý đối tượng ngoài

Hình 4.4: Use Case QLBV đối tượng ngoài

4.4.3. Cấp 1: Quản lý danh mục cơ bản

Hình 4.5: Use Case QLBV danh mục cơ bản

10
4.4.4. Cấp 1: Quản lý nghiệp vụ

Hình 4.6: Use Case QLBV nghiệp vụ

4.4.5. Cấp 1: Tìm kiếm

Hình 4.7: Use Case QLBV tìm kiếm

11
4.4.6. Cấp 1: Thống kê

Hình 4.8: Use Case QLBV thống kê

4.5. Mô hình Class Diagram

Hình 4.9: Mô hình Class Diagram QLBV

12
4.6. Mô hình quan hệ
Từ mô hình ERD trên, ta chuyển sang mô hình quan hệ của hệ quản trị quản lý
khu điều trị bệnh nhân mắc Covid-19 tại TP.HCM có cấu trúc như sau:

BENHVIEN(MaBV, TenBV, SDT, DiaChi, SucChua, NgayTL, NgayGT,


MaDV)

Tân từ: Mỗi bệnh viện sẽ có mã bệnh viên duy nhất để phân biệt (MaBV), có tên
bệnh viện (TenBV), số điện thoại của bệnh viện (SDT), địa chỉ bệnh viện (DiaChi), công
suất tối đa mà bệnh viện ấy có thể hoạt động hay số giường mà có thể chứa được tối đa
bao nhiêu bệnh nhân (SucChua), ngày thành lập bệnh viện (NgayTL), ngày giải thể bệnh
viện (nếu đó là bệnh viện dã chiến) và mỗi bệnh viện khi điều trị cho bệnh nhân mắc
Covid-19 đều có đơn vị phụ trách và được phân biệt qua (MaDV).
Ràng buộc: Số điện thoại của bệnh viện (SDT) có từ 8 tới 12 là chữ số và khác
NULL, theo cơ quan pháp lý bệnh viện khi thành lập phải có số giường tối thiểu là 30 hay
sức chứa của bệnh viện luôn lớn hơn hoặc bằng 30 (SUCCHUA ≥ 30), NgayTL là thuộc
tính không được để NULL, NgayTL ≤ Ngày hiện tại và NgayTL lớn hơn năm 1894 vì
theo lịch sử bệnh viện đầu tiên ở Việt Nam được thành lập vào năm 1894 và NgayTL <
NgayGT. Tên bệnh viện (TenBV) là thuộc tính không NULL.

DONVIPHUTRACH(MaDV, TenDV, DiaChi, NgayTL)

Tân từ: Mỗi đơn vị phụ trách sẽ phụ trách khu điều trị bệnh nhân mắc Covid-19
tại TP.HCM, được phân biệt qua mã đơn vị phụ trách (MaDV), tên đơn vị (TenDV), địa
chỉ của đơn vị (DiaChi) và ngày thành lập đơn vị (NgayTL).
Ràng buộc: NgayTL và TenDV là thuộc tính không được để NULL, NgayTL <
Ngày hiện tại và NgayTL lớn hơn hoặc bằng năm 1894 vì theo lịch sử bệnh viện đầu tiên
ở Việt Nam được thành lập vào năm 1894.

LOAIPHONG(MaLP, TenLP, TrangThai, MoTa)

Tân từ: Mỗi loại phòng đều được phân biệt qua mã loại phòng (MaLP), tên loại
phòng (TenLP), trạng thái loại phòng (TrangThai) và mô tả (MoTa).

13
Ràng buộc: Trạng thái phòng (TrangThai) là thuộc tính không được để NULL chỉ
tồn tại ở 3 dạng đó là: “Thiếu Phòng”, “Ổn định”, “Thừa Phòng”. Tên loại phòng
(TenLP) là thuộc tính không NULL.

PHONG(SoPhong, TrangThai, SoGiuong, MoTa, MaBV, MaLP)

Tân từ: Mỗi phòng đều có số phòng đề phân biệt (SoPhong), ở mỗi phòng đều có
số lượng bệnh nhân khác nhau, trạng thái phòng (TrangThai) sẽ cho ta biết phòng ấy đã
quá tải bệnh nhân hay chưa, mỗi phòng có số giường (SoGiuong) khác nhau, mô tả
phòng (MoTa) và biết được phòng này ở bệnh viện nào và thuộc loại phòng nào phân biệt
qua mã bệnh viện (MaBV) và mã loại phòng.
Ràng buộc: Trạng thái phòng (TrangThai) là thuộc tính không được để NULL và
chỉ tồn tại ở 2 trạng thái đó là “Còn chỗ” và “Hết chỗ”. SoGiuong > 10 và SoGiuong <
Sức chứa của bệnh viện (SucChua) và tổng số giường ở tất cả các phòng phải bằng sức
chứa ở bệnh viện.

CHUCVU(MaCV, TenCV, MoTaCV)

Tân từ: Mỗi chức vụ được phân biệt qua mã chức vụ (MaCV), tên chức vụ
(TenCV), mô tả chức vụ (MoTaCV).

CONGTAC(MaNCT, TenNCT, DiaChi)


Tân từ: Mỗi nơi công tác được phân biệt qua mã nơi công tác (MaNCT), tên nơi
công tác (TenNCT) và địa chỉ nơi công tác ấy (DiaChi).

NHANVIEN(MaNV, NTNS, HoTen, SDT, Phai, MaBV, MaNCT, MaCV,


MaNVQL)

Tân từ: Mỗi nhân viên đều phân biệt với nhau qua mã nhân viên (MaNV), ngày
tháng năm sinh (NTNS), họ và tên (HọTen), số điện thoại (SDT) và mỗi nhân viên chỉ
được lưu một số điện thoại, khi có thay đổi thì sẽ cập nhật. Để xác định được bệnh viện
mà nhân viên ấy làm việc, nơi công tác, chức vụ thì được phân biệt qua mã bệnh viện
(MaBV), mã nơi công tác (MaNCT), mã chức vụ (MaCV). Mỗi nhân viên có thể bị quản
lý bởi nhân viên khác và được xác định qua mã nhân viên quản lý (MaNVQL).
Ràng buộc: Năm sinh của nhân viên ấy (NTNS) là thuộc tính không NULL và bé
hơn năm hiện tại (NTNS < Ngày hiện tại) và số tuổi của nhân viên phải từ đủ 18 trở lên.

14
Số điện thoại của nhân viên (SDT) là thuộc tính không NULL và có từ 8 tới 12 là chữ số,
phái (Phai) nhân viên là thuộc tính không NULL chỉ thuộc “Nam” hoặc “Nữ”. Nhân viên
quản lý (MaNVQL) phải là nhân viên làm việc trong bệnh viện ấy. Tên nhân viên
(TenNV) là thuộc tính không NULL.

HOSOBENHNHAN(MaHS, NgayLap, NgayHetHan, HoTenBN, DiaChi, Phai,


NTNS, SDT, MaNVLap, SoPhong)

Tân từ: Mỗi hồ sơ bệnh nhân đều được phân biệt qua mã hồ sơ (MaHS), ngày lập
(NgayLap), ngày hết hạn (NgayHetHan), họ tên bệnh nhân (HoTenBN), địa chỉ (DiaChi),
phái (Phai), ngày tháng năm sinh của bệnh nhân (NTNS), mỗi hồ sơ đều được lập bởi
nhân viên làm trong bệnh viện được xác định qua (MaNVLap) và nơi bệnh nhân nằm
(SoPhong).
Ràng buộc: Ngày lập (NgayLap) là thuộc tính không NULL phải nhỏ hơn ngày
hết hạn (NgayHetHan) và phải bé hơn hoặc bằng ngày hiện tại, phái của bệnh nhân (Phai)
là thuộc tính không NULL chỉ thuộc “Nam” hoặc “Nữ”, ngày tháng năm sinh (NTNS) là
thuộc tính không được để NULL phải hơn ngày lập và ngày hết hạn, bé hơn hoặc bằng
ngày hiện tại. Họ tên bệnh nhân (HoTenBN) là thuộc tính không NULL.

PHIEUNHAPXUATVIEN(MaPhieu, NgayNhapVien, NgayXuatVien, MaHS)

Tân từ: Mỗi bệnh nhân khi nhập viện đều có phiếu nhập xuất viện được phân biệt
qua mã phiếu (MaPhieu), ngày nhập viện (NgayNhapVien), ngày xuất viện
(NgayXuatVien) và xác định qua mã hồ sơ bệnh nhân (MaHS).
Ràng buộc: NgayNhapVien là thuộc tính không NULL và NgayNhapVien <
NgayXuatVien. Ngày nhập viện phải nhỏ hơn hoặc bằng ngày hiện tại.

BHYT(SoThe, DonViCap, NgayCap, NgayHetHan, MaHS)

Tân từ: Mỗi loại thẻ đều được phân biệt qua số thẻ (SoThe), đơn vị cấp
(DonViCap), loại thẻ (LoaiThe), ngày cấp (NgayCap) và ngày hết hạn (NgayHetHan).
Xác định qua mã hồ sơ bệnh nhân (MaHS).
Ràng buộc: Số thẻ BHYT là 15 đối với thẻ cũ, ký tự trong đó 2 ký tự đầu là kiểu
chữ để định danh mã đối tượng, ký tiếp theo là số biểu thị mã quyền lợi xác định khoảng
từ 1 đến 5, ký tự tiếp theo là ký tự số được biểu thị mã nơi phát hành thẻ (DonViCap)
được xác định khoảng từ 01 đến 99 hoặc 2 ký tự DN hay DB, còn 10 ký tự cuối này là
15
mã định danh duy nhất của mỗi người trong suốt quá trình tham gia BHY. Đối với thẻ
mới thì mã thẻ BHYT sẽ là 10 số. NgayCap < NgayHetHan. Khi nhập mã thẻ cũ thì đơn
vị cấp (DonViCap) phải khớp với ký tự thứ 4 của số thẻ và khác NULL. NgayCap và
NgayHetHan là các thuộc tính không NULL, NgayCap phải nhỏ hơn hoặc bằng ngày hiện
tại.

PHIEUKHAM(SoPhieuKham, NgayLap, GhiChu, TinhTrang, MaHS, MaBS)

Tân từ: Mỗi phiếu khám được phân biệt qua số phiếu (SoPhieuKham), ngày lập
(NgayLap), ghi chú (GhiChu), tình trạng (TinhTrang). Xác định bệnh nhân khám qua mã
hồ sơn (MaHS) và bác sĩ khám qua mã bác sĩ (MaBS).
Ràng buộc: Ngày lập phiếu khám (NgayLap) là thuộc tính không NULL phải nhỏ
hơn hoặc bằng ngày lập hồ sơ và nhỏ hơn hoặc bằng ngày hiện tại. Tình trạng
(TinhTrang) là thuộc tính không NULL.

TRIEUCHUNG(MaTC, TenTrieuChung, MoTaTC, SoPhieuKham)

Tân từ: Mỗi bệnh nhân sau khi khám đều có nhiều triệu chứng khác nhau, mọi
thông tin về triệu chứng đều được phân biệt qua mã triệu chứng (MaTC), tên triệu chứng
(TenTrieuChung), mô tả triệu chứng (MoTaTC) và triệu chứng đều thuộc ở phiếu khám
nhất định (SoPhieuKham).

TOATHUOC(SoPhieuKham, NgayLap)

Tân từ: Mỗi toa thuốc được phân biệt qua số phiếu khám (SoPhieuKham) và ngày
lập toa thuốc (NgayLap).
Ràng buộc: Ngày lập toa thuốc là thuộc tính không NULL phải lớn hơn hoặc cùng
ngày khám bệnh và trong trường hợp xấu nhất có thể chậm hơn ngày khám là 2 ngày.

THUOC(MaThuoc, TenThuoc, XuatXu, HuongDanSuDung)

Tân từ: Mỗi loại thuốc đều được phân biệt qua mã thuốc (MaThuoc), tên thuốc
(TenThuoc), xuất xứ (XuatXu) và hướng dẫn sử dụng (HuongDanSuDung).
Ràng buộc: Tên thuốc (TenThuoc) và xuất xứ (XuatXu) là thuộc tính không
NULL.
TOATHUOC—(1,n)—Gồm—(1,n)—THUOC
 CTTOATHUOC

16
CTTOATHUOC(SoPhieuKham, MaThuoc, SoLuong, GhiChu)

Tân từ: Chi tiết toa thuốc được phân biệt qua số phiếu khám (SoPhieuKham), mã
thuốc (MaThuoc), số lượng thuốc cung cấp cho bệnh nhân (SoLuong) và ghi chú
(GhiChu).
Ràng buộc: SoLuong > 0 và không NULL.

PHANUNGDUNGTHUOC(MaPhanUng, TenPhanUng, MucDoPhanUng,


MoTaPhanUng, MaThuoc, SoPhieuKham)

Tân từ: Mỗi bệnh nhân sau khi dùng thuốc đều có những phản ứng khác nhau,
mọi thông tin về phản ứng sau khi dùng thuốc đều được phân biệt qua mã phản ứng
(MaPhanUng), tên phản ứng (TenPhanUng), mức độ phản ứng (MucDoPhanUng), mô tả
phản ứng (MoTaPhanUng) và mỗi phản ứng đều thuộc qua mã thuốc (MaThuoc) và số
phiếu khám (SoPhieuKham).

LICHSUTIEMCHUNG(MaHS, LanTiem, NgayTiem)

Tân từ: Mỗi lịch sử tiêm đều được phân biệt qua mã hồ sơ (MaHS), lần tiêm
(LanTiem), ngày tiêm (NgayTiem).
Ràng buộc: Lần tiêm là phải lớn hơn 0 thuộc tính tự động tăng và không được
NULL, ngày tiêm lần thứ 1 cách lần thứ 2 tối thiểu khoảng 1 tháng và từ mũi 3 cách mũi
2 tối thiểu 3 tháng. Ngày tiêm là thuộc tính không NULL và năm bắt đầu Việt Nam triển
khai tiêm vắc xin phòng Covid-19 là 2020 và nhỏ hơn hoặc bằng ngày hiện tại.

LOAIVACXIN(MaLoaiVC, TenVC, XuatXu, MoTaVC)

Tân từ: Mỗi loại vắc xin đều được phân biệt qua mã loại vắc xin (MaLoaiVC),
tên loại vắc xin (TenVC), xuất xứ (XuatXu), mô tả vắc xin (MoTaVC).
LICHSUTIEMCHUNG—(1,n)—Có—(1,n)—LOAIVACXIN
 CTTIEMCHUNG

CTTIEMCHUNG(MaHS, LanTiem, MaLoaiVC, DonViTiem)

Tân từ: Mỗi chi tiết tiêm chủng đều được phân biệt qua mã hồ sơ (MaHS), lần
tiêm (LanTiem), mã loại vắc xin (MaLoaiVC) và đơn vị tiêm.

PHANUNGSAUTIEM(MaPhanUng, TenPhanUng, MoTaPhanUng,


MucDoPhanUng, LanTiem, MaHS, MaLoaiVC)
17
Tân từ: Mỗi bệnh nhân sau khi tiêm sẽ có các phản ứng khác nhau, thông tin về
các phản ứng sau khi tiêm được phân biệt qua mã phản ứng (MaPhanUng), tên phản ứng
(TenPhanUng), mô tả phản ứng (MoTaPhanUng), mức độ phản ứng đấy
(MucDoPhanUng) mỗi phản ứng sau tiêm, các thông tin đều xác định qua trên mỗi hồ sơ
(MaHS), ở mỗi lần tiêm (LanTiem) và loại vắc xin được tiêm (MaLoaiVC).

PHIEUXETNGHIEM(SoPhieu, TenXetNghiem, NgayXetNghiem, KetQua,


MaHS)

Tân từ: Mỗi phiếu xét nghiệm được phân biệt qua số phiếu (SoPhieu), tên xét
nghiệm (TenXetNghiem), ngày xét nghiệm (NgayXetNghiem), kết quả xét nghiệm
(KetQua) và đối tượng xét nghiệm được xác định qua mã hồ sơ (MaHS).
Ràng buộc: Ngày xét nghiệm phải lớn hơn ngày lập hồ sơ và nhỏ hơn hoặc bằng
ngày hiện tại, kết quả xét nghiệm chỉ thuộc “Âm tính” hay “Dương tính”. Tên xét nghiệm
là thuộc tính không NULL.

GIAYBAOTU(SoGiay, NguyenNhan, NgayMat, MaHS)

Tân từ: Mỗi giấy báo tử được phân biệt qua số giấy báo tử (SoGiay), nguyên
nhân mất (NguyenNhan), ngày mất (NgayMat) và người mất được xác định qua mã hồ sơ
(MaHS).
Ràng buộc: Ngày mất phải lớn hơn hoặc bằng ngày lập hồ sơ, nhỏ hơn hoặc bằng
ngày hiện tại và khác NULL.
4.7. Mô tả các RBTV
4.7.1. RBTV trên 1 quan hệ (trên 1 bảng)
a. RBTV liên quan đến miền giá trị
+ R1: Số điện thoại bệnh viện khác NULL có từ 8 đến 12 chữ số
- Nội dung:
Ɐsbv  BENHVIEN: sbv.SDT <> NULL ˄ LEN(sbv.SDT)  {8, 9, 10, 11, 12}
˄ sbv.SDT LIKE [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9]
˄ sbv.SDT LIKE [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9]
˄ sbv.SDT LIKE [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9][0-9]
˄ sbv.SDT LIKE [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9][0-9] [0-9]
˄ sbv.SDT LIKE [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9][0-9] [0-9] [0-9]

18
- Bối cảnh: loại quan hệ BENHVIEN
- Bảng tầm ảnh hưởng:
R1 Thêm Xoá Sửa
BENHVIEN + - + (SDT)
+ R2: Sức chứa của bệnh viện luôn lớn hơn hoặc bằng 30
- Nội dung:
Ɐsc  BENHVIEN: sc.SucChua ≥ 30
- Bối cảnh: loại quan hệ BENHVIEN
- Bảng tầm ảnh hưởng:
R2 Thêm Xoá Sửa
BENHVIEN + - + (SucChua)
+ R3: Ngày thành lập bệnh viện là thuộc tính không NULL phải lớn hơn năm 1894 và bé
hơn hoặc bằng ngày hiện tại
- Nội dung:
Ɐntl  BENHVIEN: ntl.NgayTL ≤ GetDate() ˄ YEAR(ntl.NgayTL) > 1894
- Bối cảnh: loại quan hệ BENHVIEN
- Bảng tầm ảnh hưởng:
R3 Thêm Xoá Sửa
BENHVIEN + - + (NgayTL)
+ R4: Tên bệnh viện khác NULL.
- Nội dung:
Ɐtbv  BENHVIEN: tbv.TenBV <> NULL
- Bối cảnh: loại quan hệ BENHVIEN
- Bảng tầm ảnh hưởng:
R4 Thêm Xoá Sửa
BENHVIEN + - + (TenBV)
+ R5: Tên đơn vị phụ trách khác NULL.
- Nội dung:
Ɐtdv  DONVIPHUTRACH: tdv.TenDV <> NULL
- Bối cảnh: loại quan hệ DONVIPHUTRACH
- Bảng tầm ảnh hưởng:
19
R5 Thêm Xoá Sửa
DONVIPHUTRACH + - + (TenDV)
+ R6: Ngày thành lập đơn vị phụ trách là thuộc tính không NULL phải lớn hơn hoặc bằng
năm 1894 và bé hơn hoặc bằng ngày hiện tại.
- Nội dung:
Ɐntl  DONVIPHUTRACH: ntl.NgayTL ≤ GetDate() ˄ YEAR(ntl.NgayTL) ≥ 1894
- Bối cảnh: loại quan hệ DONVIPHUTRACH
- Bảng tầm ảnh hưởng:
R6 Thêm Xoá Sửa
DONVIPHUTRACH + - + (NgayTL)
+ R7: Trạng thái phòng là thuộc tính không được để NULL và chỉ tồn tại ở 2 trạng thái
đó là “Còn chỗ” và “Hết chỗ”.
- Nội dung:
Ɐtt  PHONG: tt.TrangThai {‘Còn chỗ’, ‘Hết chỗ’} ˄ tt.TrangThai <> NULL
- Bối cảnh: loại quan hệ PHONG
- Bảng tầm ảnh hưởng:
R7 Thêm Xoá Sửa
PHONG + - + (TrangThai)
+ R8: Số giường ở bệnh viện phải lớn hơn 15
- Nội dung:
Ɐsg  PHONG: sg.SoGiuong > 15
- Bối cảnh: loại quan hệ PHONG
- Bảng tầm ảnh hưởng:
R8 Thêm Xoá Sửa
PHONG + - + (SoGiuong)
+ R9: Trạng thái loại phòng là thuộc tính không được để NULL và chỉ tồn tại ở 3 trạng
thái đó là “Thiếu phòng”, “Ổn định” và “Thừa Phòng”.
- Nội dung:
Ɐtt  LOAIPHONG: tt.TrangThai {‘Thiếu phòng’, ‘Ổn định’, ‘Thừa Phòng’} ˄
tt.TrangThai <> NULL
- Bối cảnh: loại quan hệ LOAIPHONG
20
- Bảng tầm ảnh hưởng:
R9 Thêm Xoá Sửa
LOAIPHONG + - + (TrangThai)
+ R10: Tên loại phòng là thuộc tính không NULL.
- Nội dung:
Ɐtlp  LOAIPHONG: tlp.TenLP <> NULL
- Bối cảnh: loại quan hệ LOAIPHONG
- Bảng tầm ảnh hưởng:
R10 Thêm Xoá Sửa
LOAIPHONG + - + (TenLP)
+ R11: Năm sinh của nhân viên ấy là thuộc tính không NULL và bé hơn năm hiện tại và
số tuổi của nhân viên phải từ đủ 18 trở lên.
- Nội dung:
Ɐage  NHANVIEN: age.NTNS < GetDate() ˄ (YEAR(age.NTNS) –
YEAR(GetDate())) ≥ 18 ˄ age.NTNS <> NULL
- Bối cảnh: loại quan hệ NHANVIEN
- Bảng tầm ảnh hưởng:
R11 Thêm Xoá Sửa
NHANVIEN + - + (NTNS)
+ R12: Tên nhân viên là thuộc tính không NULL.
- Nội dung:
Ɐtnv  NHANVIEN: tnv.TenNV <> NULL
- Bối cảnh: loại quan hệ NHANVIEN
- Bảng tầm ảnh hưởng:
R12 Thêm Xoá Sửa
NHANVIEN + - + (TenNV)
+ R13: Số điện thoại của nhân viên là thuộc tính không NULL có từ 8 tới 12 là chữ số.
- Nội dung:
Ɐsnv  NHANVIEN: snv.SDT <> NULL ˄ LEN(snv.SDT)  {8, 9, 10, 11, 12}
˄ snv.SDT LIKE [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9]
˄ snv.SDT LIKE [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9]
21
˄ snv.SDT LIKE [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9][0-9]
˄ snv.SDT LIKE [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9][0-9] [0-9]
˄ snv.SDT LIKE [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9][0-9] [0-9] [0-9]
- Bối cảnh: loại quan hệ NHANVIEN
- Bảng tầm ảnh hưởng:
R13 Thêm Xoá Sửa
NHANVIEN + - + (SDT)
+ R14: Phái của nhân viên là thuộc tính không NULL và chỉ thuộc “Nam” hoặc “Nữ”
- Nội dung:
Ɐgt  NHANVIEN: gt.Phai <> NULL ˄ gt.Phai  {‘Nam’, ‘Nữ’}
- Bối cảnh: loại quan hệ NHANVIEN
- Bảng tầm ảnh hưởng:
R14 Thêm Xoá Sửa
NHANVIEN + - + (Phai)
+ R15: Ngày lập là thuộc tính không NULL và bé hơn hoặc bằng ngày hiện tại.
- Nội dung:
Ɐnl  HOSOBENHNHAN: nl.NgayLap <> NULL ˄ nl.NgayLap ≤ GetDate()
- Bối cảnh: loại quan hệ HOSOBENHNHAN
- Bảng tầm ảnh hưởng:
R15 Thêm Xoá Sửa
HOSOBENHNHAN + - + (NgayLap)
+ R16: Ngày tháng năm sinh của bệnh nhân là thuộc tính không NULL và bé hơn hoặc
bằng ngày hiện tại.
- Nội dung:
Ɐage  HOSOBENHNHAN: age.NTNS <> NULL ˄ age.NTNS ≤ GetDate()
- Bối cảnh: loại quan hệ HOSOBENHNHAN
- Bảng tầm ảnh hưởng:
R16 Thêm Xoá Sửa
HOSOBENHNHAN + - + (NTNS)
+ R17: Phái của bệnh nhân chỉ thuộc “Nam” hoặc “Nữ”
- Nội dung:
22
Ɐgt  HOSOBENHNHAN: gt.Phai <> NULL ˄ gt.Phai  {‘Nam’, ‘Nữ’}
- Bối cảnh: loại quan hệ HOSOBENHNHAN
- Bảng tầm ảnh hưởng:
R17 Thêm Xoá Sửa
HOSOBENHNHAN + - + (Phai)
+ R18: Số điện thoại bệnh nhân khác NULL có từ 8 đến 12 chữ số
- Nội dung:
Ɐsbn  HOSOBENHNHAN: sbn.SDT <> NULL ˄ LEN(sbn.SDT)  {8, 9, 10, 11, 12}
˄ sbn.SDT LIKE [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9]
˄ sbn.SDT LIKE [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9]
˄ sbn.SDT LIKE [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9][0-9]
˄ sbn.SDT LIKE [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9][0-9] [0-9]
˄ sbn.SDT LIKE [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9][0-9] [0-9] [0-9]
- Bối cảnh: loại quan hệ HOSOBENHNHAN
- Bảng tầm ảnh hưởng:
R18 Thêm Xoá Sửa
HOSOBENHNHAN + - + (SDT)
+ R19: Họ tên bệnh nhân là thuộc tính khác NULL.
- Nội dung:
Ɐtbn  HOSOBENHNHAN: tbn.HoTenBN <> NULL
- Bối cảnh: loại quan hệ HOSOBENHNHAN
- Bảng tầm ảnh hưởng:
R19 Thêm Xoá Sửa
HOSOBENHNHAN + - + (HoTenBN)
+ R20: Ngày nhập viện phải nhỏ hơn hoặc bằng ngày hiện tại.
- Nội dung:
Ɐnnv  PHIEUNHAPXUATVIEN: nnv.NgayNhapVien <> NULL ˄
nnv.NgayNhapVien ≤ GetDate()
- Bối cảnh: loại quan hệ PHIEUNHAPXUATVIEN
- Bảng tầm ảnh hưởng:

23
R20 Thêm Xoá Sửa
PHIEUNHAPXUATVIEN + - + (NgayNhapVien)
+ R21: Số thẻ BHYT là 15 đối với thẻ cũ, ký tự trong đó 2 ký tự đầu là kiểu chữ để định
danh mã đối tượng, ký tiếp theo là số biểu thị mã quyền lợi xác định khoảng từ 1 đến 5,
ký tự tiếp theo là ký tự số được biểu thị mã nơi phát hành thẻ (DonViCap) được xác định
khoảng từ 01 đến 99 hoặc 2 ký tự DN hay DB, còn 10 ký tự cuối này là mã định danh
duy nhất của mỗi người trong suốt quá trình tham gia BHY. Đối với thẻ mới thì mã thẻ
BHYT sẽ là 10 số
- Nội dung:
Ɐst  BHYT: st.SoThe <> NULL ˄ LEN(st.SoThe)  {10, 15}
Nếu LEN(st.SoThe) = 15 thì LEFT(st.SoThe, 2)  {‘DN’, ‘HX’, ‘CH’, ‘NN’, ‘TK’,
‘HC’, ‘XK’, ‘HT’, ‘TB’, ‘NO’, ‘CT’, ‘XB’, ‘TN’, ‘CS’, ‘QN’, ‘CA’, ‘CY’, ‘XN’, ‘MS’,
‘CC’, CK’, ‘CB’, ‘KC’, ‘HD’, ‘TE’, ‘BT’, ‘HN’, ‘DT’, ‘DK’, ‘XD’, ‘TS’, ‘TC’, TQ’,
‘TA’, ‘TY’, ‘HG’, ‘LS’, ‘PV’, ‘CN’, ‘HS’, ‘SV’, ‘GB’, ‘GD’} ˄ MID(st.SoThe, 3, 1)
LIKE [1-5] ˄ (MID(st.SoThe, 4, 2) LIKE [0-9][1-9] ˅ MID(st.SoThe, 4, 2)  {‘DN’,
‘DB’})
- Bối cảnh: loại quan hệ BHYT
- Bảng tầm ảnh hưởng:
R21 Thêm Xoá Sửa
BHYT + - + (SoThe)
+ R22: Ngày cấp là thuộc tính không NULL phải nhỏ hơn hoặc bằng ngày hiện tại.
- Nội dung:
Ɐnc  BHYT: nc.NgayCap <> NULL ˄ nc.NgayCap ≤ GetDate()
- Bối cảnh: loại quan hệ BHYT
- Bảng tầm ảnh hưởng:
R22 Thêm Xoá Sửa
BHYT + - + (NgayCap)
+ R23: Đơn vị cấp thẻ BHYT là thuộc tính không NULL.
- Nội dung:
Ɐdvc  BHYT: dvc.DonViCap <> NULL
- Bối cảnh: loại quan hệ BHYT
24
- Bảng tầm ảnh hưởng:
R23 Thêm Xoá Sửa
BHYT + - + (DonViCap)
+ R24: Ngày lập phiếu khám là thuộc tính không NULL phải nhỏ hơn hoặc bằng ngày
hiện tại.
- Nội dung:
Ɐnl  PHIEUKHAM: nl.NgayLap <> NULL ˄ nl.NgayLap ≤ GetDate()
- Bối cảnh: loại quan hệ PHIEUKHAM
- Bảng tầm ảnh hưởng:
R24 Thêm Xoá Sửa
PHIEUKHAM + - + (NgayLap)
+ R25: Tình trạng là thuộc tính không NULL.
- Nội dung:
Ɐtt  PHIEUKHAM: tt.TinhTrang <> NULL
- Bối cảnh: loại quan hệ PHIEUKHAM
- Bảng tầm ảnh hưởng:
R25 Thêm Xoá Sửa
PHIEUKHAM + - + (TinhTrang)
+ R26: Ngày lập toa thuốc là thuộc tính không NULL phải lớn hơn hoặc bằng ngày hiện
tại.
- Nội dung:
Ɐnl  TOATHUOC: nl.NgayLap <> NULL ˄ nl.NgayLap ≥ GetDate()
- Bối cảnh: loại quan hệ TOATHUOC
- Bảng tầm ảnh hưởng:
R26 Thêm Xoá Sửa
TOATHUOC + - + (NgayLap)
+ R27: Số lượng toa thuốc phải lớn hơn 0 và khác NULL.
- Nội dung:
Ɐsl  CTTOATHUOC: sl.SoLuong > 0 ˄ sl.SoLuong <> NULL
- Bối cảnh: loại quan hệ CTTOATHUOC
- Bảng tầm ảnh hưởng:
25
R27 Thêm Xoá Sửa
CTTOATHUOC + - + (SoLuong)
+ R28: Ngày tiêm vắc xin là thuộc tính không NULL, nhỏ hơn hoặc bằng ngày hiện tại
và năm bắt đầu tiêm là 2020.
- Nội dung:
Ɐnt  LICHSUTIEMCHUNG: nt.NgayTiem <> NULL ˄ nt.NgayTiem ≤ GetDate() ˄
YEAR(nt.NgayTiem) ≥ 2020
- Bối cảnh: loại quan hệ LICHSUTIEMCHUNG
- Bảng tầm ảnh hưởng:
R28 Thêm Xoá Sửa
LICHSUTIEMCHUNG + - + (NgayTiem)
+ R29: Lần tiêm là thuộc tính không NULL, lớn hơn 0 và tự động tăng
- Nội dung:
Ɐlt  LICHSUTIEMCHUNG: lt.LanTiem <> NULL ˄ lt.LanTiem > 0
- Bối cảnh: loại quan hệ LICHSUTIEMCHUNG
- Bảng tầm ảnh hưởng:
R29 Thêm Xoá Sửa
LICHSUTIEMCHUNG + - + (LanTiem)
+ R30: Ngày xét nghiệm nhỏ hơn hoặc bằng ngày hiện tại.
- Nội dung:
Ɐnxn  PHIEUXETNGHIEM: nxn.NgayXetNghiem ≤ GetDate()
- Bối cảnh: loại quan hệ PHIEUXETNGHIEM
- Bảng tầm ảnh hưởng:
R30 Thêm Xoá Sửa
PHIEUXETNGHIEM + - + (NgayXetNghiem)
+ R31: Kết quả xét nghiệm là thuộc tính không NULL chỉ thuộc “Âm tính” hoặc “Dương
tính”.
- Nội dung:
Ɐkq  PHIEUXETNGHIEM: kq.KetQua <> NULL ˄ kq.KetQua  {‘Âm tính’, ‘Dương
tính’}
- Bối cảnh: loại quan hệ PHIEUXETNGHIEM
26
- Bảng tầm ảnh hưởng:
R31 Thêm Xoá Sửa
PHIEUXETNGHIEM + - + (KetQua)
+ R32: Tên xét nghiệm là thuộc tính không NULL
- Nội dung:
Ɐtxn  PHIEUXETNGHIEM: txn.TenXetNghiem <> NULL
- Bối cảnh: loại quan hệ PHIEUXETNGHIEM
- Bảng tầm ảnh hưởng:
R32 Thêm Xoá Sửa
PHIEUXETNGHIEM + - + (TenXetNghiem)
+ R33: Ngày mất phải nhỏ hơn hoặc bằng ngày hiện tại và khác NULL.
- Nội dung:
Ɐn  GIAYBAOTU: n.NgayMat <> NULL ˄ n.NgayMat ≤ GetDate()
- Bối cảnh: loại quan hệ GIAYBAOTU
- Bảng tầm ảnh hưởng:
R33 Thêm Xoá Sửa
GIAYBAOTU + - + (NgayMat)
b. RBTV liên thuộc tính
+ R34: Ngày thành lập bệnh viện nhỏ hơn ngày giải thể.
- Nội dung:
Ɐn  BENHVIEN: n.NgayTL < n.NgayGT
- Bối cảnh: loại quan hệ BENHVIEN
- Bảng tầm ảnh hưởng:
R34 Thêm Xoá Sửa
BENHVIEN + - + (NgayTL, NgayGT)
+ R35: Ngày lập phải bé hơn ngày hết hạn.
- Nội dung:
Ɐn  HOSOBENHNHAN: n.NgayLạp < n.NgayHetHan
- Bối cảnh: loại quan hệ HOSOBENHNHAN
- Bảng tầm ảnh hưởng:

27
R35 Thêm Xoá Sửa
HOSOBENHNHAN + - + (NgayLap, NgayHetHan)
+ R36: Ngày nhập viện phải nhỏ hơn ngày xuất viện.
- Nội dung:
Ɐn  PHIEUNHAPXUATVIEN: n.NgayNhapVien < n.NgayXuatVien
- Bối cảnh: loại quan hệ PHIEUNHAPXUATVIEN
- Bảng tầm ảnh hưởng:
R36 Thêm Xoá Sửa
PHIEUNHAPXUATVIEN + - + (NgayNhapVien, NgayXuatVien)
+ R37: Ngày cấp thẻ BHYT phải nhỏ hơn ngày hết hạn thẻ BHYT
- Nội dung:
Ɐn  BHYT: n.NgayCap < n.NgayHetHan
- Bối cảnh: loại quan hệ BHYT
- Bảng tầm ảnh hưởng:
R37 Thêm Xoá Sửa
BHYT + - + (NgayCap, NgayHetHan)
+ R38: Đơn vị cấp phải khớp với 2 ký tự thứ 4 của số thẻ (nếu như nhập số thẻ BHYT
cũ)
- Nội dung:
Ɐdvc  BHYT:
Nếu MID(dvc.BHYT, 4, 2) = ‘01’ thì DonViCap = ‘Thành phố Hà Nội’
Nếu MID(dvc.BHYT, 4, 2) = ‘02’ thì DonViCap = ‘Tỉnh Hà Giang’

Nếu MID(dvc.BHYT, 4, 2) = ‘99’ thì DonViCap = ‘Ban Cơ yếu Chính phủ’
Nếu MID(dvc.BHYT, 4, 2) = ‘DN’ thì DonViCap = ‘TT GĐ BHYT và TTĐT khu vực
phía Nam’
Nếu MID(dvc.BHYT, 4, 2) = ‘DB’ thì DonViCap = ‘TT GĐ BHYT và TTĐT khu vực
phía Bắc’
- Bối cảnh: loại quan hệ BHYT
- Bảng tầm ảnh hưởng:
R38 Thêm Xoá Sửa
28
BHYT + - + (SoThe, DonViCap)
+ R39: Ngày tiêm ở lần tiêm thứ 2 cách lần tiêm thứ 1 tối thiểu là 1 tháng và từ mũi 3
cách mũi 2 tối thiểu 3 tháng.
- Nội dung:
Ɐn  LICHSUTIEMCHUNG:
Nếu n.LanTiem = 2 thì MONTH(NgayTiem) – MONTH(((NgayTiem):LanTiem=1)) ≥ 1
Nếu n.LanTiem = 3 thì MONTH(NgayTiem) – MONTH(((NgayTiem):LanTiem=2)) ≥ 3
- Bối cảnh: loại quan hệ LICHSUTIEMCHUNG
- Bảng tầm ảnh hưởng:
R39 Thêm Xoá Sửa
LICHSUTIEMCHUNG + - + (LanTiem, NgayTiem)
c. RBTV liên bộ
+ R40: Mỗi bệnh viên sẽ có mã bệnh viên duy nhất để phân biệt.
- Nội dung:
Ɐb1, b2  BENHVIEN: Nếu b1 ≠ b2 thì b1.MaBV ≠ b2.MaBV
- Bối cảnh: loại quan hệ BENHVIEN
- Bảng tầm ảnh hưởng:
R40 Thêm Xoá Sửa
BENHVIEN + - + (MaBV)
+ R41: Mỗi đơn vị phụ trách sẽ phụ trách khu điều trị bệnh nhân mắc Covid-19 tại
TP.HCM, được phân biệt qua mã đơn vị phụ trách.
- Nội dung:
Ɐd1, d2  DONVIPHUTRACH: Nếu d1 ≠ d2 thì d1.MaDV ≠ d2.MaDV
- Bối cảnh: loại quan hệ DONVIPHUTRACH
- Bảng tầm ảnh hưởng:
R41 Thêm Xoá Sửa
DONVIPHUTRAC
+ - + (MaDV)
H
+ R42: Mỗi phòng đều có số phòng đề phân biệt.
- Nội dung:
Ɐp1, p2  PHONG: Nếu p1 ≠ p2 thì p1.SoPhong ≠ p2.SoPhong
29
- Bối cảnh: loại quan hệ PHONG
- Bảng tầm ảnh hưởng:
R42 Thêm Xoá Sửa
PHONG + - + (SoPhong)
+ R43: Mỗi loại phòng đều được phân biệt qua mã loại phòng.
- Nội dung:
Ɐlp1, lp2  LOAIPHONG: Nếu lp1 ≠ lp2 thì p1.MaLP ≠ p2.MaLP
- Bối cảnh: loại quan hệ LOAIPHONG
- Bảng tầm ảnh hưởng:
R43 Thêm Xoá Sửa
LOAIPHONG + - + (MaLP)
+ R44: Mỗi nhân viên đều phân biệt với nhau qua mã nhân viên.
- Nội dung:
Ɐnv1, nv2  NHANVIEN: Nếu nv1 ≠ nv2 thì nv1.MaNV ≠ nv2.MaNV
- Bối cảnh: loại quan hệ NHANVIEN
- Bảng tầm ảnh hưởng:
R44 Thêm Xoá Sửa
NHANVIEN + - + (MaNV)
+ R45: Mỗi chức vụ được phân biệt qua mã chức vụ.
- Nội dung:
Ɐcv1, cv2  CHUCVU: Nếu cv1 ≠ cv2 thì cv1.MaCV ≠ cv2.MaCV
- Bối cảnh: loại quan hệ CHUCVU
- Bảng tầm ảnh hưởng:
R45 Thêm Xoá Sửa
CHUCVU + - + (MaCV)
+ R46: Mỗi nơi công tác được phân biệt qua mã nơi công tác.
- Nội dung:
Ɐct1, ct2  CONGTAC: Nếu ct1 ≠ ct2 thì ct1.MaNCT ≠ ct2.MaNCT
- Bối cảnh: loại quan hệ CONGTAC
- Bảng tầm ảnh hưởng:

30
R46 Thêm Xoá Sửa
CONGTAC + - + (MaNCT)
+ R47: Mỗi hồ sơ bệnh nhân đều được phân biệt qua mã hồ sơ.
- Nội dung:
Ɐhs1, hs2  HOSOBENHNHAN: Nếu hs1 ≠ hs2 thì hs1.MaHS ≠ hs2.MaHS
- Bối cảnh: loại quan hệ HOSOBENHNHAN
- Bảng tầm ảnh hưởng:
R47 Thêm Xoá Sửa
HOSOBENHNHAN + - + (MaHS)
+ R48: Mỗi bệnh nhân khi nhập viện đều có phiếu nhập xuất viện được phân biệt qua mã
phiếu.
- Nội dung:
Ɐp1, p2  PHIEUNHAPXUATVIEN: Nếu p1 ≠ p2 thì p1.MaPhieu ≠ p2.MaPhieu
- Bối cảnh: loại quan hệ PHIEUNHAPXUATVIEN
- Bảng tầm ảnh hưởng:
R48 Thêm Xoá Sửa
PHIEUNHAPXUATVIE
+ - + (MaPhieu)
N
+ R49: Mỗi loại thẻ đều được phân biệt qua số thẻ.
- Nội dung:
Ɐst1, st2  BHYT: Nếu st1 ≠ st2 thì st1.SoThe ≠ st2.SoThe
- Bối cảnh: loại quan hệ BHYT
- Bảng tầm ảnh hưởng:
R49 Thêm Xoá Sửa
BHYT + - + (SoThe)
+ R50: Mỗi phiếu khám được phân biệt qua số phiếu.
- Nội dung:
Ɐs1, s2  PHIEUKHAM: Nếu s1 ≠ s2 thì s1.SoPhieu ≠ s2.SoPhieu
- Bối cảnh: loại quan hệ PHIEUKHAM
- Bảng tầm ảnh hưởng:

31
R50 Thêm Xoá Sửa
PHIEUKHAM + - + (SoPhieuKham)
+ R51: Triệu chứng được phân biệt qua mã triệu chứng.
- Nội dung:
Ɐtc1, tc2  TRIEUCHUNG:
Nếu tc1 ≠ tc2 thì tc1.MaTC ≠ tc2.MaTC
- Bối cảnh: loại quan hệ TRIEUCHUNG
- Bảng tầm ảnh hưởng:
R51 Thêm Xoá Sửa
TRIEUCHUNG + - + (MaTC)
+ R52: Mỗi toa thuốc được phân biệt qua SoPhieuKham.
- Nội dung:
Ɐtt1, tt2  TOATHUOC: Nếu tt1 ≠ tt2 thì tt1.SoPhieuKham ≠ tt2.SoPhieuKham
- Bối cảnh: loại quan hệ TOATHUOC
- Bảng tầm ảnh hưởng:
R52 Thêm Xoá Sửa
TOATHUOC + - + (SoPhieuKham)
+ R53: Mỗi phản ứng sau khi dùng thuốc được phân biệt qua mã phản ứng.
- Nội dung:
Ɐp1, p2  PHANUNG:
Nếu p1 ≠ p2 thì p1.MaPhanUng ≠ p2.MaPhanUng
- Bối cảnh: loại quan hệ PHANUNG
- Bảng tầm ảnh hưởng:
R53 Thêm Xoá Sửa
PHANUNGDUNGTHUOC + - + (MaPhanUng)
+ R54: Chi tiết toa thuốc được phân biệt qua mã toa thuốc và mã thuốc.
- Nội dung:
Ɐct1, ct2  CTTOATHUOC:
Nếu ct1 ≠ ct2 thì ct1.SoPhieuKham ≠ ct2.SoPhieuKham ˄ ct1.MaThuoc ≠ ct2.MaThuoc
- Bối cảnh: loại quan hệ CTTOATHUOC
- Bảng tầm ảnh hưởng:
32
R54 Thêm Xoá Sửa
CTTOATHUOC + - + (SoPhieuKham, MaThuoc)
+ R55: Mỗi loại thuốc đều được phân biệt qua mã thuốc.
- Nội dung:
Ɐlt1, lt2  LOAITHUOC: Nếu lt1 ≠ lt2 thì lt1.MaThuoc ≠ lt2.MaThuoc
- Bối cảnh: loại quan hệ TOATHUOC
- Bảng tầm ảnh hưởng:
R55 Thêm Xoá Sửa
LOAITHUOC + - + (MaThuoc)
+ R56: Mỗi phiếu tiêm đều được phân biệt qua mã phiếu tiêm.
- Nội dung:
Ɐlt1, lt2  LICHSUTIEMCHUNG: Nếu lt1 ≠ lt2
Thì (lt1.MaHS ≠ lt2.MaHS) ˄ (lt1.LanTiem ≠ lt2.LanTiem)
- Bối cảnh: loại quan hệ LICHSUTIEMCHUNG
- Bảng tầm ảnh hưởng:
R56 Thêm Xoá Sửa
LICHSUTIEMCHUN
+ - + (MaHS, LanTiem)
G
+ R57: Mỗi loại vắc xin đều được phân biệt qua mã loại vắc xin
- Nội dung:
Ɐp1, p2  LOAIVACXIN:
Nếu p1 ≠ p2 thì p1.MaLoaiVC ≠ p2.MaLoaiVC
- Bối cảnh: loại quan hệ LOAIVACXIN
- Bảng tầm ảnh hưởng:
R57 Thêm Xoá Sửa
LOAIVACXIN + - + (MaLoaiVC)
+ R58: Mỗi chi tiết tiêm chủng đều được phân biệt mã hồ sơ, lần tiêm và mã loại vắc xin.
- Nội dung:
Ɐp1, p2  CTTIEMCHUNG:
Nếu p1 ≠ p2 thì (p1.MaLoaiVC ≠ p2.MaLoaiVC) ˄ (p1.MaHS ≠ p2.MaHS) ˄
(p1.LanTiem ≠ p2.LanTiem)
33
- Bối cảnh: loại quan hệ CTTIEMCHUNG
- Bảng tầm ảnh hưởng:
R58 Thêm Xoá Sửa
CTTIEMCHUNG + - + (MaLoaiVC, MaHS, LanTiem)
+ R59: Mỗi phản ứng sau tiêm đều được phân biệt qua mã phản ứng.
- Nội dung:
Ɐp1, p2  PHANUNGSAUTIEM:
Nếu p1 ≠ p2 thì p1.MaPhanUng ≠ p2.MaPhanUng
- Bối cảnh: loại quan hệ PHANUNGSAUTIEM
- Bảng tầm ảnh hưởng:
R59 Thêm Xoá Sửa
PHANUNGSAUTIEM + - + (MaPhanUng)
+ R60: Mỗi phiếu xét nghiệm được phân biệt qua số phiếu.
- Nội dung:
Ɐxn1, xn2  PHIEUXETNGHIEM: Nếu xn1 ≠ xn2 thì xn1.SoPhieu ≠ xn2.SoPhieu
- Bối cảnh: loại quan hệ PHIEUXETNGHIEM
- Bảng tầm ảnh hưởng:
R60 Thêm Xoá Sửa
PHIEUXETNGHIE
+ - + (SoPhieu)
M
+ R61: Mỗi giấy báo tử được phân biệt qua số giấy báo tử.
- Nội dung:
Ɐb1, b2  GIAYBAOTU: Nếu b1 ≠ b2 thì b1.SoGiay ≠ b2.SoGiay
- Bối cảnh: loại quan hệ GIAYBAOTU
- Bảng tầm ảnh hưởng:
R61 Thêm Xoá Sửa
GIAYBAOTU + - + (SoGiay)
4.7.2. RBTV trên nhiều loại quan hệ
a. RBTV tham chiếu (khoá ngoại/phụ thuộc tồn tại)
+ R62: Mỗi bệnh viện khi điều trị cho bệnh nhân mắc Covid-19 đều có đơn vị phụ trách
và được phân biệt qua mã đơn vị.
34
- Nội dung:
BENHVIEN[MaDV]  DONVIPHUTRACH[MaDV]
- Bối cảnh: loại quan hệ BENHVIEN, DONVIPHUTRACH
- Bảng tầm ảnh hưởng:
R62 Thêm Xoá Sửa
BENHVIEN + - + (MaDV)
DONVIPHUTRAC
- + + (MaDV)
H
+ R63: Để xác định được bệnh viện mà nhân viên ấy làm việc, nơi công tác, chức vụ thì
được phân biệt qua mã bệnh viện.
- Nội dung:
NHANVIEN[MaBV]  BENHVIEN[MaBV]
- Bối cảnh: loại quan hệ NHANVIEN, BENHVIEN
- Bảng tầm ảnh hưởng:
R63 Thêm Xoá Sửa
NHANVIEN + - + (MaBV)
BENHVIEN - + + (MaBV)
+ R64: Mỗi nhân viên có thể bị quản lý bởi nhân viên khác và được xác định qua mã
nhân viên quản lý.
- Nội dung:
NHANVIEN[MaNVQL]  NHANVIEN [MaNV]
- Bối cảnh: loại quan hệ NHANVIEN
- Bảng tầm ảnh hưởng:
R64 Thêm Xoá Sửa
NHANVIEN + - + (MaNQLV)
NHANVIEN - + + (MaNV)
+ R65: Mỗi nhân viên làm việc trong bệnh viện đều có chức vụ.
- Nội dung:
NHANVIEN[MaCV]  CHUCVU[MaCV]
- Bối cảnh: loại quan hệ NHANVIEN, CHUCVU
- Bảng tầm ảnh hưởng:
35
R65 Thêm Xoá Sửa
NHANVIEN + - + (MaCV)
CHUCVU - + + (MaCV)
+ R66: Mỗi nhân viên đều có nơi công tác khác nhau.
- Nội dung:
NHANVIEN[MaNCT]  CONGTAC[MaNCT]
- Bối cảnh: loại quan hệ NHANVIEN, CONGTAC
- Bảng tầm ảnh hưởng:
R66 Thêm Xoá Sửa
NHANVIEN + - + (MaNCT)
CONGTAC - + + (MaNCT)
+ R67: Mỗi hồ sơ bệnh nhân đều được nhân viên lặp và được định danh qua mã nhân
viên lặp.
- Nội dung:
HOSOBENHNHAN[MaNVLap]  NHANVIEN[MaNV]
- Bối cảnh: loại quan hệ NHANVIEN, HOSOBENHNHAN
- Bảng tầm ảnh hưởng:
R67 Thêm Xoá Sửa
HOSOBENHNHAN + - + (MaNVLap)
NHANVIEN - + + (MaNV)
+ R68: Mỗi bệnh nhân có thể sở hữu thẻ bảo hiểm y tế và được phân biệt qua số thẻ.
- Nội dung:
BHYT[MaHS]  HOSOBENHNHAN[MaHS]
- Bối cảnh: loại quan hệ BHYT, HOSOBENHNHAN
- Bảng tầm ảnh hưởng:
R68 Thêm Xoá Sửa
BHYT + - + (MaHS)
HOSOBENHNHAN - + + (MaHS)
+ R69: Mỗi bệnh nhân khi nhập viện đều có phiếu nhập xuất viện được phân biệt qua mã
phiếu.
- Nội dung:
36
PHIEUNHAPXUATVIEN[MaHS]  HOSOBENHNHAN[MaHS]
- Bối cảnh: loại quan hệ PHIEUNHAPXUATVIEN, HOSOBENHNHAN
- Bảng tầm ảnh hưởng:
R69 Thêm Xoá Sửa
PHIEUNHAPXUATVIEN + - + (MaHS)
HOSOBENHNHAN - + + (MaHS)
+ R70: Nơi bệnh nhân ấy nằm đều xác định qua số phòng
- Nội dung:
HOSOBENHNHAN[SoPhong]  PHONG[SoPhong]
- Bối cảnh: loại quan hệ PHONG, HOSOBENHNHAN
- Bảng tầm ảnh hưởng:
R70 Thêm Xoá Sửa
HOSOBENHNHAN + - + (SoPhong)
PHONG - + + (SoPhong)
+ R71: Trong trường hợp xấu nhất, nếu như bệnh nhân không may qua khỏi thì bệnh viện
tiến hành lập giấy báo tử để thông báo cho gia đình.
- Nội dung:
GIAYBAOTU[MaHS]  HOSOBENHNHAN[MaHS]
- Bối cảnh: loại quan hệ GIAYBAOTU, HOSOBENHNHAN
- Bảng tầm ảnh hưởng:
R71 Thêm Xoá Sửa
GIAYBAOTU + - + (MaHS)
HOSOBENHNHAN - + + (MaHS)
+ R72: Để xác định bệnh nhân đã hết mắc Covid-19 hay chưa thì bệnh viên tiến hành xét
nghiệm để kết luận.
- Nội dung:
PHIEUXETNGHIEM[MaHS]  HOSOBENHNHAN[MaHS]
- Bối cảnh: loại quan hệ PHIEUXETNGHIEM, HOSOBENHNHAN
- Bảng tầm ảnh hưởng:
R72 Thêm Xoá Sửa
PHIEUXETNGHIE + - + (MaHS)
37
M
HOSOBENHNHAN - + + (MaHS)
+ R73: Mỗi bệnh nhân trong khu điều trị đã có thể được tiêm vắc xin phòng ngừa Covid-
19, mỗi người có thể đã được tiêm từ 1 đến 3 mũi.
- Nội dung:
LICHSUTIEMCHUNG[MaHS]  HOSOBENHNHAN[MaHS]
- Bối cảnh: loại quan hệ LICHSUTIEMCHUNG, HOSOBENHNHAN
- Bảng tầm ảnh hưởng:
R73 Thêm Xoá Sửa
LICHSUTIEMCHUNG + - + (MaHS)
HOSOBENHNHAN - + + (MaHS)
+ R74: Mỗi chi tiết tiêm đều xác định qua mã hồ sơ, lần tiêm và mã loại vắc xin
- Nội dung:
CTTIEMCHUNG[MaHS, LanTiem]  LICHSUTIEMCHUNG[MaHS, LanTiem]
CTTIEMCHUNG[MaLoaiVC]  LOAIVACXIN[MaLoaiVC]
- Bối cảnh: loại quan hệ LICHSUTIEMCHUNG, CTTIEMCHUNG,
LOAIVACXIN
- Bảng tầm ảnh hưởng:
R74 Thêm Xoá Sửa
CTTIEMCHUNG + - + (MaHS, LanTiem, MaLoaiVC)
LICHSUTIEMCHUNG - + + (MaHS, LanTiem)
LOAIVACXIN + - + (MaLoaiVC)
+ R75: Mỗi phản ứng sau khi tiêm đều xác định qua mã hồ sơ, lần tiêm và loại vắc xin
- Nội dung:
PHANUNGSAUTIEM[MaHS, LanTiem, MaLoaiVC]  CTTIEMCHUNG[MaHS,
LanTiem, MaLoaiVC]
- Bối cảnh: loại quan hệ PHANUNGSAUTIEM, CTTIEMCHUNG
- Bảng tầm ảnh hưởng:
R75 Thêm Xoá Sửa
PHANUNGSAUTIEM + - + (MaHS, LanTiem, MaLoaiVC)
CTTIEMCHUNG - + + (MaHS, LanTiem, MaLoaiVC)
38
+ R76: Mỗi phòng đều thuộc ở các loại phòng khác nhau.
- Nội dung:
PHONG[MaLP]  LOAIPHONG[MaLP]
- Bối cảnh: loại quan hệ PHONG, LOAIPHONG
- Bảng tầm ảnh hưởng:
R76 Thêm Xoá Sửa
PHONG + - + (MaLP)
LOAIPHONG - + + (MaLP)
+ R77: Mỗi phòng đều thuộc ở một bệnh viện và được xác định qua mã bệnh viện
- Nội dung:
PHONG[MaBV]  BENHVIEN[MaBV]
- Bối cảnh: loại quan hệ PHONG, BENHVIEN
- Bảng tầm ảnh hưởng:
R77 Thêm Xoá Sửa
PHONG + - + (MaBV)
BENHVIEN - + + (MaBV)
+ R78: Mỗi bệnh nhân khi nhập viện đều được thăm khám, mọi thông tin khám bệnh đều
được lưu trong phiếu khám.
- Nội dung:
PHIEUKHAM[MaHS]  HOSOBENHNHAN[MaHS]
- Bối cảnh: loại quan hệ PHIEUKHAM, HOSOBENHNHAN
- Bảng tầm ảnh hưởng:
R78 Thêm Xoá Sửa
PHIEUKHAM + - + (MaHS)
HOSOBENHNHAN - + + (MaHS)
+ R79: Mỗi bệnh nhân khi khám không hoặc có nhiều triệu chứng khác nhau.
- Nội dung:
TRIEUCHUNG[SoPhieuKham]  PHIEUKHAM[SoPhieuKham]
- Bối cảnh: loại quan hệ PHIEUKHAM, TRIEUCHUNG
- Bảng tầm ảnh hưởng:
39
R79 Thêm Xoá Sửa
TRIEUCHUNG + - + (SoPhieuKham)
PHIEUKHAM - + + (SoPhieuKham)
+ R80: Mỗi phiếu khám đều có bác sĩ khám.
- Nội dung:
PHIEUKHAM[MaBS]  NHANVIEN[NV]
- Bối cảnh: loại quan hệ NHANVIEN, PHIEUKHAM
- Bảng tầm ảnh hưởng:
R80 Thêm Xoá Sửa
PHIEUKHAM + - + (MaBS)
NHANVIEN - + + (MaNV)
+ R81: Mỗi toa thuốc đều có số phiếu khám khác nhau.
- Nội dung:
TOATHUOC[SoPhieuKham]  PHEUKHAM[SoPhieuKham]
- Bối cảnh: loại quan hệ TOATHUOC, PHIEUKHAM
- Bảng tầm ảnh hưởng:
R81 Thêm Xoá Sửa
TOATHUOC + - + (SoPhieuKham)
PHIEUKHAM - + + (SoPhieuKham)
+ R82: Mỗi bệnh nhân sau khi dùng thuốc không hoặc có những phản ứng khác nhau.
- Nội dung:
PHANUNGDUNGTHUOC[SoPhieuKham, MaThuoc]
 CTTOATHUOC[SoPhieuKham, MaThuoc]
- Bối cảnh: loại quan hệ CTTOATHUOC, PHANUNGDUNGTHUOC
- Bảng tầm ảnh hưởng:
R82 Thêm Xoá Sửa
PHANUNGDUNGTHUOC + - + (SoPhieuKham, MaThuoc)
CTTOATHUOC - + + (SoPhieuKham, MaThuoc)
+ R83: Mỗi chi tiết toa thuốc đều phân biệt qua mã thuốc và số phiếu khám
- Nội dung:
CTTOATHUOC[SoPhieuKham]  TOATHUOC[SoPhieuKham]
40
CTTOATHUOC[MaThuoc]  THUOC[MaThuoc]
- Bối cảnh: loại quan hệ THUOC, CTTOATHUOC, TOATHUOC
- Bảng tầm ảnh hưởng:
R83 Thêm Xoá Sửa
CTTOATHUOC + - + (SoPhieuKham, MaThuoc)
TOATHUOC - + + (SoPhieuKham)
THUOC - + + (MaThuoc)
b. RBTV liên thuộc tính-liên quan hệ
+ R84: Ngày mất trên giấy báo tử phải lớn hơn hoặc bằng ngày tháng năm sinh của bệnh
nhân.
- Nội dung:
nm  GIAYBAOTU:
Nếu ns  HOSOBENHNHAN: nm.MaHS = ns.MaHS thì nm.NgayMat ≥ ns.NTNS
- Bối cảnh: loại quan hệ GIAYBAOTU, HOSOBENHNHAN
- Bảng tầm ảnh hưởng:
R84 Thêm Xoá Sửa
GIAYBAOTU + - + (NgayMat)
HOSOBENHNHA
- + + (NTNS)
N
+ R85: Theo bộ y tế, trẻ 1 tuổi không được xét nghiệm nhằm đảm bảo sức khoẻ.
- Nội dung:
xn  PHIEUXETNGHIEM:
Nếu hs  HOSOBENHNHAN: xn.MaHS = hs.MaHS
Thì YEAR(xn.NgayXetNghiem) – YEAR(hs.NTNS) > 1
- Bối cảnh: loại quan hệ PHIEUXETNGHIEM, HOSOBENHNHAN
- Bảng tầm ảnh hưởng:
R85 Thêm Xoá Sửa
PHIEUXETNGHIE
+ - + (NgayXetNghiem)
M
HOSOBENHNHAN - + + (NTNS)
+ R86: Trẻ từ 4 tuối trở xuống không được tiêm vắc xin.
41
- Nội dung:
hs  HOSOBENHNHAN:
Nếu ls  LICHSUTIEMCHUNG: (hs.MaHS = ls.MaHS)
Thì YEAR(ls.NgayTiem) – YEAR(hs.NTNS) > 4
- Bối cảnh: loại quan hệ LICHSUTIEMCHUNG, HOSOBENHNHAN
- Bảng tầm ảnh hưởng:
R86 Thêm Xoá Sửa
LICHSUTIEMCHUN
+ - + (NgayTiem)
G
HOSOBENHNHAN - + + (NTNS)
+ R87: Trẻ dưới 16 tuổi chỉ được tiêm 1 lần.
- Nội dung:
hs  HOSOBENHNHAN:
Nếu ls  LICHSUTIEMCHUNG: (hs.MaHS = ls.MaHS) ˄ (DATEDIFF(year,
hs.NTNS, GetDate()) ≤ 16)
Thì ls.LanTiem < 2
- Bối cảnh: loại quan hệ LICHSUTIEMCHUNG, HOSOBENHNHAN
- Bảng tầm ảnh hưởng:
R87 Thêm Xoá Sửa
LICHSUTIEMCHUN
+ - + (LanTiem)
G
HOSOBENHNHAN - + + (NTNS)
+ R88: Ngày nhập viện phải lớn hơn hoặc bằng ngày tháng năm sinh của bệnh nhân.
- Nội dung:
hs  HOSOBENHNHAN:
Nếu ph  PHIEUNHAPXUATVIEN: (hs.MaHS = ph.MaHS) ˄ (YEAR(hs.NTNS) -
YEAR(GetDate()) ≤ 16)
Thì ls.LanTiem < 2
- Bối cảnh: loại quan hệ LICHSUTIEMCHUNG, HOSOBENHNHAN
- Bảng tầm ảnh hưởng:
R88 Thêm Xoá Sửa
42
LICHSUTIEMCHUN
+ - + (LanTiem)
G
HOSOBENHNHAN - + + (NTNS)
+ R89: Ngày lập phiếu khám phải lớn hơn hoặc bằng ngày tháng năm sinh của bệnh
nhân.
- Nội dung:
hs  HOSOBENHNHAN:
Nếu pk  PHIEUNKHAM: hs.MaHS = ph.MaHS
Thì hs.NTNS ≤ pk.NgayLap
- Bối cảnh: loại quan hệ PHIEUKHAM, HOSOBENHNHAN
- Bảng tầm ảnh hưởng:
R89 Thêm Xoá Sửa
PHIEUKHAM + - + (NgayLap)
HOSOBENHNHAN - + + (NTNS)
+ R90: Ngày lập toa thuốc phải lớn hơn hoặc bằng ngày khám.
- Nội dung:
pk  PHIEUKHAM:
Nếu tt  TOATHUOC: pk.SoPhieuKham = tt.SoPhieuKham
Thì pk.NgayLap ≤ tt.NgayLap
- Bối cảnh: loại quan hệ PHIEUKHAM, TOATHUOC
- Bảng tầm ảnh hưởng:
R90 Thêm Xoá Sửa
TOATHUOC + - + (NgayLap)
PHIEUKHAM - + + (NgayLap)
+ R91: Trẻ từ 5 đến 17 tuổi chỉ được tiêm vắc xin của “Pfizer”.
- Nội dung:
hs  HOSOBENHNHAN:
Nếu ls  LICHSUTIEMCHUNG: hs.MaHS = ls.MaHS
˄ YEAR(ls.NgayTiem) – YEAR(hs.NTNS) ≥ 5
˄ YEAR(ls.NgayTiem) – YEAR(hs.NTNS) ≤ 17
43
Thì ls.TenLoaiVacXin = ‘Pfizer’
- Bối cảnh: loại quan hệ HOSOBENHNHAN, LICHSUTIEMCHUNG
- Bảng tầm ảnh hưởng:
R91 Thêm Xoá Sửa
HOSOBENHNHAN - + + (NTNS)
LICHSUTIEMCHUN
+ - + (TenLoaiVC)
G
c. RBTV do thuộc tính tổng hợp
+ R92: Tổng số giường ở các phòng bằng sức chứa của bệnh viện
- Nội dung:
bv  BENHVIEN: bv.SucChua = (p  PHONG: p.MaBV = bv.MaBV)(p.SoGiuong)
- Bối cảnh: loại quan hệ BENHVIEN, PHONG
- Bảng tầm ảnh hưởng:
R92 Thêm Xoá Sửa
BENHVIEN - + + (SucChua)
PHONG + - + (SoGiuong)
+ R93: Số bệnh nhân không nằm vượt quá số giường của phòng.
- Nội dung:
p  PHONG: p.SoGiuong ≤ Count(bn  BENHNHAN: bn.SoPhong = p.SoPhong)(*)
- Bối cảnh: loại quan hệ HOSOBENHNHAN, PHONG
- Bảng tầm ảnh hưởng:
R93 Thêm Xoá Sửa
PHONG - + + (SoGiuong)
HOSOBENHNHAN + + + (MaHS)
d. RBTV do sự hiện diện của chu trình
+ R94: Nhân viên quản lý phải là nhân viên của bệnh viện ấy.
- Nội dung:
X = NHANVIEN[MaNV]
Y = NHANVIEN[MaNV]
XY
- Bối cảnh: loại quan hệ NHANVIEN
44
- Bảng tầm ảnh hưởng:
R94 Thêm Xoá Sửa
NHANVIEN - - + (MaNV)
NHANVIEN + - + (MaNVQL)
5. Mô hình cơ sở dữ liệu
+ Xét LĐQH PHONG(SoPhong, TrangThaiPhong, SoGiuong, MoTaPhong, MaLP, TenLP,
TrangThaiLP, MoTaLP)
Tân từ: Mỗi phòng đều có số phòng đề phân biệt (SoPhong), ở mỗi phòng đều có
số lượng bệnh nhân khác nhau, trạng thái phòng (TrangThai) sẽ cho ta biết phòng ấy đã
quá tải bệnh nhân hay chưa, mỗi phòng có số giường (SoGiuong) khác nhau, mô tả
phòng (MoTa), nhằm để phân loại phòng (MaLP) cho bệnh nhân có tình trạng bệnh khác
nhau thì mỗi phòng thuộc loại phòng (TenLP) khác nhau, mỗi loại phòng có trạng thái
khác nhau, và có mô tả khác nhau (MoTaLP)
- Các phụ thuộc hàm:
FPHONG = { f1: SoPhong → TrangThaiPhong, SoGiuong, MoTaPhong;
f2: MaLP → TenLP, TrangThaiLP, MoTaLP;
f3: MaLP, TenLP → TrangThaiLP, MoTaLP }
- Xác định khoá:
N = {SoPhong, MaLP}; TG = {TenLP}; D = {TrangThaiPhong, SoGiuong, MoTaPhong,
TrangThaiLP, MoTaLP}
TenLP Li Xi=NLi Xi+F
0  SoPhong, MaLP = R+
1 TenLP SoPhong, MaLP, TenLP = R+
Có 2 siêu khóa, trong đó {SoPhong, MaLP} là siêu khoá bé nhất nên {SoPhong, MaLP}
là khoá.
- Xác định dạng chuẩn:
Xét f1 TrangThaiPhong, SoGiuong, MoTaPhong là thuộc tính không khoá phụ thuộc vào
TenLP (một phần của khoá SoPhong, MaLP) nên PHONG không đạt dạng chuẩn 2, do
đó PHONG đạt dạng chuẩn 1.
- Chuẩn hoá lược đồ CSDL:
Chọn f2 để phân rã: MaLP → TenLP, TrangThaiLP, MoTaLP
45
Q1(MaLP, TenLP, TrangThaiLP, MoTaLP) với PTH là f2
Q2(MaLP, SoPhong, TrangThaiPhong, SoGiuong, MoTaPhong) với PTH là f1 và f3
Phân rã tiếp Q2. Chọn f1 để phân rã: SoPhong → TrangThaiPhong, SoGiuong,
MoTaPhong
Q21(SoPhong, TrangThaiPhong, SoGiuong, MoTaPhong) với PTH là f1
Q22(MaLP, SoPhong) với PTH là 
Kết quả: C = { <Q1(MaLP, TenLP, TrangThaiLP, MoTaLP), F1 = {f2}>;
<Q21(SoPhong, TrangThaiPhong, SoGiuong, MoTaPhong), F21 = {f1}>;
<Q22(MaLP, SoPhong), F22 = {}> }
- Xét bảo toàn phụ thuộc hàm:
+ F’ = F1F21F22
+ F’\F =  (thoả)
+ F\F’ = {MaLP, TenLP → TrangThaiLP, MoTaLP}
+ Mà MaLP, TenLP → TrangThaiLP, MoTaLP  F’+.
+ Vì MaLP → TrangThaiLP, MoTaLP (Tính phân rã), MaLP, TenLP → TrangThaiLP,
MoTaLP (Giả thiết) và MaLP → TenLP (Tính phân rã).
Kết luận: Bảo toàn phụ thuộc hàm
- Xét bảo toàn thông tin:
Gọi A là: SoPhong,
B là: TrangThaiPhong,
C là: SoGiuong,
D là: MoTaPhong,
E là: MaLP,
G là: TenLP,
H là: TrangThaiLP,
F là: MoTaLP.
T A B C D E G H F
Q1 a1 a2 a3 a4 b1 b2 b3 b4
Q21 b5 b6 b7 a4 a5 a6 a7 a8
Q22 a1 b8 (a2) b9 (a3) b10 (a4) a5 b11 (a6) b12 (a7) b13 (a8)
Chọn SoPhong → TrangThaiPhong, SoGiuong, MoTaPhong:
46
+ b8 biến thành a2
+ b9 biến thành a3
+ b10 biến thành a4
Chọn MaLP → TenLP, TrangThaiLP, MoTaLP:
+ b11 biến thành a6
+ b12 biến thành a7
+ b13 biến thành a8
Kết luận: Có dòng toàn ‘a’ nên bảo toàn thông tin.
- Dùng thuật toán phân rã ta có các bảng dữ liệu sau:
PHONG(SoPhong, TrangThai, SoGiuong, MoTa)
 FPHONG = { f1: SoPhong → TrangThaiPhong, SoGiuong, MoTaPhong }
 Khoá là {SoPhong}
 Đạt dạng chuẩn BCK do vế trái chứa khoá
LOAIPHONG(MaLP, TenLP, TrangThai, MoTa)
 FLOAIPHONG = { f1: MaLP → TenLP, TrangThaiLP, MoTaLP }
 Khoá là {MaLP}
 Đạt dạng chuẩn BCK do vế trái chứa khoá
+ Xét LĐQH LICHSUTIEMCHUNG(LanTiem, MaHS, NgayTiem)
Tân từ: Mỗi lịch sử tiêm đều được phân biệt qua mã hồ sơ (MaHS), lần tiêm
(LanTiem), ngày tiêm (NgayTiem)
- Các phụ thuộc hàm:
FLICHSUTIEMCHUNG = { f1: MaHS, LanTiem → NgayTiem }
- Xác định khoá:
N = {MaHS, LanTiem}; TG = {}; D = {NgayTiem}
Vì không có trung gian, mà chỉ có đích nên khoá là {MaHS, LanTiem}
- Xác định dạng chuẩn:
Vì vế trái chứa khoá LICHSUTIEMCHUNG đạt dạng chuẩn BCK.
+ Xét LĐQH LOAIVACXIN(MaLoaiVC, TenVC, XuatXu, MoTaVC)
Tân từ: Mỗi loại vắc xin đều được phân biệt qua mã loại vắc xin (MaLoaiVC), tên
loại vắc xin (TenVC), xuất xứ (XuatXu), mô tả vắc xin (MoTaVC).
- Các phụ thuộc hàm:
47
FLOAIVACXIN = { f1: MaLoaiVC → TenVC, XuatXu, MoTaVC }
- Xác định khoá:
N = {MaLoaiVC}; TG = {}; D = {TenVC, XuatXu, MoTaVC}
Vì không có trung gian, mà chỉ có đích nên khoá là {MaVC}
- Xác định dạng chuẩn:
Vì vế trái chứa khoá LOAIVACXIN đạt dạng chuẩn BCK.
+ Xét LĐQH CTTIEMCHUNG(MaHS, LanTiem, MaLoaiVC, DonViTiem, MaPhanUng,
TenPhanUng, MoTaPhanUng, MucDoPhanUng)
Tân từ: Mỗi chi tiết tiêm chủng đều được phân biệt qua mã hồ sơ (MaHS), lần
tiêm (LanTiem), mã loại vắc xin (MaLoaiVC) và đơn vị tiêm. Mỗi bệnh nhân sau khi
tiêm sẽ có các phản ứng khác nhau, thông tin về các phản ứng sau khi tiêm được phân
biệt qua mã phản ứng (MaPhanUng), tên phản ứng (TenPhanUng), mô tả phản ứng
(MoTaPhanUng), mức độ phản ứng đấy (MucDoPhanUng) mỗi phản ứng sau tiêm.
- Các phụ thuộc hàm:
FCTTIEMCHUNG = { f1: MaHS, LanTiem, MaLoaiVC → DonViTiem;
f2: MaPhanUng → TenPhanUng, MoTaPhanUng, MucDoPhanUng;
d1: MaHS, LanTiem, MaLoaiVC ↠ MaPhanUng }
- Xác định khoá:
N = {MaHS, LanTiem, MaLoaiVC}; TG = {MaPhanUng}; D = {TenPhanUng, MoTaPhanUng,
MucDoPhanUng}
MaPhanUng Li Xi=NLi Xi+F
MaHS, LanTiem,
0  = R+
MaLoaiVC
MaHS, LanTiem,
1 MaPhanUng MaLoaiVC, = R+
MaPhanUng
Có 2 siêu khóa, trong đó {MaHS, LanTiem, MaLoaiVC} là siêu khoá bé nhất nên
{MaHS, LanTiem, MaLoaiVC} là khoá.
- Xác định dạng chuẩn:
Vì có MaPhanUng là thuộc tính đa trị cho nên, CTTIEMCHUNG không đạt dạng chuẩn
1. Vì vậy CTTIEMCHUNG không được chuẩn hoá.

48
- Chuẩn hoá lược đồ CSDL:
Chọn f2 để phân rã: MaPhanUng → TenPhanUng, MoTaPhanUng, MucDoPhanUng
Q1(MaPhanUng, TenPhanUng, MoTaPhanUng, MucDoPhanUng) với PTH là f2
Q2(MaPhanUng, MaHS, LanTiem, MaLoaiVC, DonViTiem) với PTH là f 1 và d1
Phân rã tiếp Q2. Chọn f1 để phân rã: MaHS, LanTiem, MaLoaiVC → DonViTiem
Q21(MaHS, LanTiem, MaLoaiVC, DonViTiem) với PTH là f1
Q22(MaHS, LanTiem, MaLoaiVC, MaPhanUng) với PTH là d1
Phân rã tiếp Q22. Chọn d1 để phân rã: MaHS, LanTiem, MaLoaiVC ↠ MaPhanUng
Q221(MaHS, LanTiem, MaLoaiVC, MaPhanUng) với PTH là d1
Q222(MaHS, LanTiem, MaLoaiVC) với PTH là 
Kết quả: C = { <Q1(MaPhanUng, TenPhanUng, MoTaPhanUng, MucDoPhanUng), F1 = {f2}>;
<Q21(MaHS, LanTiem, MaLoaiVC, DonViTiem), F21 = {f1}>;
<Q221(MaHS, LanTiem, MaLoaiVC, MaPhanUng), F221 = {d1}>;
<Q222(MaHS, LanTiem, MaLoaiVC), F222 = {}> }
- Xét bảo toàn phụ thuộc hàm:
+ F’ = F1F21F221F222
+ F’\F =  (thoả)
+ F\F’ =  (thoả)
Kết luận: Bảo toàn phụ thuộc hàm
- Xét bảo toàn thông tin:
Gọi A là: MaHS,
B là: LanTiem,
C là: MaLoaiVC,
D là: DonViTiem,
E là: MaPhanUng,
G là: TenPhanUng,
H là: MoTaPhanUng,
F là: MucDoPhanUng
T A B C D E G H F
Q1 b1 b2 b3 b4 a5 a6 a7 a8
Q21 a1 a2 a3 a4 b5 b6 b7 b8
49
Q221 a1 a2 a3 b9 (a4) a5 b10 (a6) b11 (a7) b12 (a8)
Q222 a1 a2 a3 b13 b14 b15 b16 b17
Chọn MaHS, LanTiem, MaLoaiVC → DonViTiem: b9 biến thành a4
Chọn MaPhanUng → TenPhanUng, MoTaPhanUng, MucDoPhanUng:
+ b10 biến thành a6
+ b11 biến thành a7
+ b12 biến thành a8
Kết luận: Có dòng toàn ‘a’ nên bảo toàn thông tin.
- Dùng thuật toán phân rã ta có các bảng dữ liệu sau:
CTTIEMCHUNG(MaHS, LanTiem, MaLoaiVC, DonViTiem)
 FCTTIEMCHUNG = { f1: MaHS, LanTiem, MaLoaiVC → DonViTiem }
 Khoá là {MaHS, LanTiem, MaLoaiVC}
 Đạt dạng chuẩn BCK do vế trái chứa khoá
PHANUNGSAUTIEM(MaPhanUng, TenPhanUng, MoTaPhanUng, MucDoPhanUng)
 FPHANUNGSAUTIEM = { f1: MaPhanUng → TenPhanUng, MoTaPhanUng, MucDoPhanUng }
 Khoá là {MaPhanUng}
 Đạt dạng chuẩn BCK do vế trái chứa khoá
+ Xét LĐQH NHANVIEN(MaNV, NTNS, HoTen, SDT, Phai, MaCV, TenCV,
MoTaCV, MaNCT, TenNCT, DiaChi)
Tân từ: Mỗi nhân viên đều phân biệt với nhau qua mã nhân viên (MaNV), ngày
tháng năm sinh (NTNS), họ và tên (HọTen), số điện thoại (SDT) và mỗi nhân viên chỉ
được lưu một số điện thoại, khi có thay đổi thì sẽ cập nhật. Để xác định được bệnh viện
mà nhân viên ấy làm việc, nơi công tác, chức vụ thì được phân biệt mã nơi công tác
(MaNCT), tên nơi công tác (TenNCT), địa chỉ nơi công tác (DiaChi) và qua chức vụ của
nhân viên ấy bằng các thông tin như mã chức vụ (MaCV), tên chức vụ (TenCV), mô tả
chức vụ (MoTaCV).
- Các phụ thuộc hàm:
FNHANVIEN = { f1: MaNV → HoTen, NTNS, SDT, Phai;
f2: MaCV → TenCV, MoTaCV;
f3: MaNCT → TenNCT, DiaChi }
50
- Xác định khoá:
N = {MaNV, MaCV, MaNCT}; TG = {}; D = {HoTen, NTNS, SDT, Phai, TenCV,
MoTaCV, TenNCT, DiaChi}
Vì không có trung gian, mà chỉ có đích nên khoá là {MaNV, MaCV, MaNCT}
- Xác định dạng chuẩn:
Xét f1 HoTen, NTNS, SDT, Phai là thuộc tính không khoá phụ thuộc vào TenNV (một
phần của khoá MaNV, MaCV, MaNCT) nên NHANVIEN không đạt dạng chuẩn 2, do đó
NHANVIEN đạt dạng chuẩn 1.
- Chuẩn hoá lược đồ CSDL:
Chọn f1 để phân rã: MaNV → HoTen, NTNS, SDT, Phai
Q1(MaNV, HoTen, NTNS, SDT, Phai) với PTH là f1
Q2(MaNV, MaCV, TenCV, MoTaCV, MaNCT, TenNCT, DiaChi) với PTH là f 2 và f3
Phân rã tiếp Q2. Chọn f2 để phân rã: MaCV → TenCV, MoTaCV
Q21(MaCV, TenCV, MoTaCV) với PTH là f2
Q22(MaCV, MaNCT, MaNV, TenNCT, DiaChi) với PTH là f3
Phân rã tiếp Q22. Chọn f3 để phân rã: MaNCT → TenNCT, DiaChi
Q221(MaNCT, TenNCT, DiaChi) với PTH là f3.
Q222(MaNV, MaCV, MaNCT) với PTH là .
Kết quả C = { <Q1(MaNV, HoTen, NTNS, SDT, Phai), F1 = {f1}>;
<Q21(MaCV, TenCV, MoTaCV), F21 = {f2}>;
<Q221(MaNCT, TenNCT, DiaChi), F221 = {f3}>;
<Q222(MaNV, MaCV, MaNCT), F222 = {}> }
- Xét bảo toàn phụ thuộc hàm:
+ F’ = F1F21F22
+ F’\F =  (thoả)
+ F\F’ =  (thoả)
Kết luận: Bảo toàn phụ thuộc hàm
- Xét bảo toàn thông tin:
Gọi A là: MaNV,
B là: NTNS,
C là: HoTen,
51
D là: SDT,
E là: Phai,
G là: MaCV,
H là: TenCV,
F là: MaNCT,
Y là: TenNCT,
X là: MoTaCV,
W là: DiaChi.
T A B C D E G H F Y X W
Q1 a1 a2 a3 a4 a5 b1 b2 b3 b4 b5 b6
Q21 b7 b8 b9 b10 b11 a6 a7 b12 b13 a10 b14
Q221 b15 b16 b17 b18 b19 b20 b21 a8 a9 b22 a11
b23 b24 b25 b26 b27 b28 b29 b30
Q222 a1 a6 a8
(a2) (a3) (a4) (a5) (a7) (a9) (a10) (a11)
Chọn MaCV → TenCV, MoTaCV:
+ b27 biến thành a7
+ b29 biến thành a10
Chọn MaNCT → TenNCT, DiaChi:
+ b28 biến thành a9
+ b30 biến thành a11
Chọn MaNV → HoTen, NTNS, SDT, Phai:
+ b23 biến thành a2
+ b24 biến thành a3
+ b25 biến thành a4
+ b26 biến thành a5
Kết luận: Có dòng toàn ‘a’ nên bảo toàn thông tin.
- Dùng thuật toán phân rã ta có các bảng dữ liệu sau:
NHANVIEN(MaNV, NTNS, HoTen, SDT, Phai)
 FNHANVIEN = { f1: MaNV → HoTen, NTNS, SDT, Phai }
 Khoá là {MaNV}
 Đạt dạng chuẩn BCK vì vế trái chứa khoá
52
CHUCVU(MaCV, TenCV, MoTaCV)
 FCHUCVU = { f1: MaCV → TenCV, MoTaCV }
 Khoá là {MaCV}
 Đạt dạng chuẩn BCK vì vế trái chứa khoá
CONGTAC(MaNCT, TenNCT, DiaChi)
 FCONGTAC = { f1: MaNCT → TenNCT, DiaChi }
 Khoá là {MaNCT}
 Đạt dạng chuẩn BC vì vế trái chứa khoá
+ Xét LĐQH HOSOBENHNHAN(MaHS, NgayLap, NgayHetHan, HoTenBN, DiaChi,
Phai, NTNS, SDT, MaPhieu, NgayNhapVien, NgayXuatVien)
Tân từ: Mỗi hồ sơ bệnh nhân đều được phân biệt qua mã hồ sơ (MaHS), ngày lập
(NgayLap), ngày hết hạn (NgayHetHan), họ tên bệnh nhân (HoTenBN), địa chỉ (DiaChi),
phái (Phai), ngày tháng năm sinh của bệnh nhân (NTNS), mỗi bệnh nhân khi nhập viên
đều có phiếu nhập xuất viện khác nhau được phân biệt qua mã phiếu (MaPhieu), ngày
nhập viện (NgayNhapVien), ngày xuất viện (NgayXuatVien).
- Các phụ thuộc hàm:
FHOSOBENHNHAN = { f1: MaHS → NgayLap, NgayHetHan, HoTenBN, DiaChi, Phai, NTNS, SDT;
f2: MaPhieu → NgayNhapVien, NgayXuatVien }
- Xác định khoá:
N = {MaHS, MaPhieu}; TG = {}; D = { HoTenBN, NgayLap, NgayHetHan, DiaChi,
Phai, NTNS, SDT, NgayNhapVien, NgayXuatVien}
Vì không có trung gian, mà chỉ có đích nên khoá là {MaHS, MaPhieu}
- Xác định dạng chuẩn:
Xét f1 NgayLap, NgayHetHan, HoTenBN là thuộc tính không khoá phụ thuộc vào MaHS
(một phần của khoá MaHS, MaPhieu) nên HOSOBENHNHAN không đạt dạng chuẩn 2,
do đó HOSOBENHNHAN đạt dạng chuẩn 1.
- Chuẩn hoá lược đồ CSDL:
Chọn f2 để phân rã: MaPhieu → NgayNhapVien, NgayXuatVien
Q1(MaPhieu, NgayNhapVien, NgayXuatVien) với PTH là f2
Q2(MaPhieu, MaHS, NgayLap, NgayHetHan, HoTenBN, DiaChi, Phai, NTNS, SDT) với
PTH là f1
53
Phân rã tiếp Q2. Chọn f1 để phân rã: MaHS → NgayLap, NgayHetHan, HoTenBN,
DiaChi, Phai, NTNS, SDT
Q21(MaHS, NgayLap, NgayHetHan, HoTenBN, DiaChi, Phai, NTNS, SDT) với PTH là f 1
Q22(MaPhieu, MaHS) với PTH là 
Kết quả C = { <Q1(MaPhieu, NgayNhapVien, NgayXuatVien), F1 = {f2}>;
<Q21(MaHS, NgayLap, NgayHetHan, HoTenBN, DiaChi, Phai, NTNS,
SDT), F21 = {f1}>;
<Q22(MaPhieu, MaHS), F22 = {}> }
- Xét bảo toàn phụ thuộc hàm:
+ F’ = F1F21F22
+ F’\F =  (thoả)
+ F\F’ =  (thoả)
Kết luận: Bảo toàn phụ thuộc hàm
- Xét bảo toàn thông tin:
Gọi A là: MaHS,
B là: NgayLap,
C là: NgayHetHan,
D là: HoTenBN,
E là: DiaChi,
G là: Phai,
H là: NTNS,
F là: SDT,
Y là: MaPhieu,
X là: NgayNhapVien,
W là: NgayXuatVien.
T A B C D E G H F Y X W
Q1 b1 b2 b3 b4 b5 b6 b7 b8 a9 a10 a11
Q21 a1 a2 a3 a4 a5 a6 a7 a8 b9 b10 b11
b12 b13 b14 b15 b16 b17 b18 b19 b20
Q22 a1 a9
(a2) (a3) (a4) (a5) (a6) (a7) (a8) (a10) (a11)
Chọn MaHS → NgayLap, NgayHetHan, HoTenBN, DiaChi, Phai, NTNS, SDT;
54
+ b12 biến thành a2
+ b13 biến thành a3
+ b14 biến thành a4
+ b15 biến thành a5
+ b16 biến thành a6
+ b17 biến thành a7
+ b18 biến thành a8
Chọn MaPhieu → NgayNhapVien, NgayXuatVien
+ b19 biến thành a10
+ b20 biến thành a11
Kết luận: Có dòng toàn ‘a’ nên bảo toàn thông tin.
- Dùng thuật toán phân rã ta có các bảng dữ liệu sau:
HOSOBENHNHAN(MaHS, NgayLap, NgayHetHan, HoTenBN, DiaChi, Phai, NTNS,
SDT)
 FHOSOBENHNHAN = { f1: MaHS → NgayLap, NgayHetHan, HoTenBN, DiaChi, Phai,
NTNS, SDT }
 Khoá là {MaHS}
 Đạt dạng chuẩn BCK vì vế trái chứa khoá
PHIEUNHAPXUATVIEN(MaPhieu, NgayNhapVien, NgayXuatVien)
 FPHIEUNHANVIEN = { f1: MaPhieu → NgayNhapVien, NgayXuatVien }
 Khoá là {MaPhieu}
 Đạt dạng chuẩn BCK vì vế trái chứa khoá
+ Xét LĐQH GIAYBAOTU(SoGiay, NguyenNhan, NgayMat)
Tân từ: Mỗi giấy báo tử được phân biệt qua số giấy báo tử (SoGiay), nguyên
nhân mất (NguyenNhan), ngày mất (NgayMat).
- Các phụ thuộc hàm:
FGIAYBAOTU = { f1: SoGiay → NguyenNhan, NgayMat }
- Xác định khoá:
N = {SoGiay}; TG = {}; D = {NguyenNhan, NgayMat}
Vì không có trung gian, mà chỉ có đích nên khoá là {SoGiay}
- Xác định dạng chuẩn:
55
Vì vế trái chứa khoá nên GIAYBAOTU đạt dạng chuẩn BCK.
+ Xét LĐQH BHYT(SoThe, DonViCap, NgayCap, NgayHetHan)
Tân từ: Mỗi loại thẻ đều được phân biệt qua số thẻ (SoThe), đơn vị cấp
(DonViCap), loại thẻ (LoaiThe), ngày cấp (NgayCap) và ngày hết hạn (NgayHetHan).
- Các phụ thuộc hàm:
FBHYT = { f1: SoThe → DonViCap, NgayCap, NgayHetHan }
- Xác định khoá:
N = {SoThe}; TG = {}; D = {DonViCap, NgayCap, NgayHetHan}
Vì không có trung gian, mà chỉ có đích nên khoá là {SoThe}
- Xác định dạng chuẩn:
Vì vế trái chứa khoá nên BHYT đạt dạng chuẩn BCK.
+ Xét LĐQH PHIEUXETNGHIEM(SoPhieuXN, TenXetNghiem, NgayXetNghiem, KetQua)
Tân từ: Mỗi phiếu xét nghiệm được phân biệt qua số phiếu (SoPhieu), tên xét
nghiệm (TenXetNghiem), ngày xét nghiệm (NgayXetNghiem), kết quả xét nghiệm
(KetQua).
- Các phụ thuộc hàm:
FPHIEUXETNGHIEM = { f1: SoPhieuXN → TenXetNghiem, NgayXetNghiem, KetQua }
- Xác định khoá:
N = {SoPhieuXN}; TG = {}; D = {TenXetNghiem, NgayXetNghiem, KetQua}
Vì không có trung gian, mà chỉ có đích nên khoá là {SoPhieuXN}
- Xác định dạng chuẩn:
Vì vế trái chứa khoá nên PHIEUXETNGHIEM đạt dạng chuẩn BCK.
+ Xét LĐQH PHIEUKHAM(SoPhieuKham, NgayLap, GhiChu, TinhTrang, MaTrieuChung,
TenTrieuChung, MoTaTC)
Tân từ: Mỗi phiếu khám được phân biệt qua số phiếu (SoPhieuKham), ngày lập
(NgayLap), ghi chú (GhiChu), tình trạng (TinhTrang). Mỗi bệnh nhân sau khi khám đều
có nhiều triệu chứng khác nhau, mọi thông tin về triệu chứng đều được phân biệt qua mã
triệu chứng (MaTC), tên triệu chứng (TenTrieuChung) và mô tả triệu chứng (MoTaTC).
- Các phụ thuộc hàm:
FPHIEUKHAM = { f1: SoPhieuKham → NgayLap, GhiChu, TinhTrang;
f2: MaTrieuChung → TenTrieuChung, MoTaTC;

56
d1: SoPhieuKham ↠ MaTrieuChung }
- Xác định khoá:
N = {SoPhieuKham}; TG = {MaTrieuChung}; D = {NgayLap, GhiChu, TinhTrang,
TenTrieuChung, MoTaTC}
MaTrieuChung Li Xi=NLi Xi+F
0  SoPhieuKham = R+
1 MaTrieuChung SoPhieuKham, MaTrieuChung = R+
Có 2 siêu khóa, trong đó {SoPhieuKham} là siêu khoá bé nhất nên {SoPhieuKham} là
khoá.
- Xác định dạng chuẩn:
Vì có MaTrieuChung là thuộc tính đa trị cho nên, PHIEUKHAM không đạt dạng chuẩn
1. Vì vậy PHIEUKHAM không được chuẩn hoá.
- Chuẩn hoá lược đồ CSDL:
Chọn f2 để phân rã: MaTrieuChung → TenTrieuChung, MoTaTC
Q1(MaTrieuChung, TenTrieuChung, MoTaTC) với PTH là f2
Q2(MaTrieuChung, SoPhieuKham, NgayLap, GhiChu, TinhTrang) với PTH là f1 và d1
Phân rã tiếp Q2. Chọn f1 để phân rã: SoPhieuKham → NgayLap, GhiChu, TinhTrang
Q21(SoPhieuKham, NgayLap, GhiChu, TinhTrang) với PTH là f1
Q22(MaTrieuChung, SoPhieuKham) với PTH là d1
Kết quả: C = { <Q1(MaTrieuChung, TenTrieuChung, MoTaTC), F1 = {f2}>;
<Q21(SoPhieuKham, NgayLap, GhiChu, TinhTrang), F21 = {f1}>;
<Q22(MaTrieuChung, SoPhieuKham), F22 = {d1}> }
- Xét bảo toàn phụ thuộc hàm:
+ F’ = F1F21F22
+ F’\F =  (thoả)
+ F\F’ =  (thoả)
Kết luận: Bảo toàn phụ thuộc hàm
- Xét bảo toàn thông tin:
Gọi A là: SoPhieuKham,
B là: NgayLap,
C là: GhiChu,
57
D là: TinhTrang,
E là: MaTrieuChung,
G là: TenTrieuChung,
H là: MoTaTC.
T A B C D E G H
Q1 b1 b2 b3 b4 a5 a6 a7
Q21 a1 a2 a3 a4 b5 b6 b7
Q22 a1 b8 (a2) b9 (a3) b10 (a4) a5 b11 (a6) b12 (a7)
Chọn SoPhieuKham → NgayLap, GhiChu, TinhTrang:
+ b8 biến thành a2
+ b9 biến thành a3
+ b10 biến thành a4
Chọn MaTrieuChung → TenTrieuChung, MoTaTC:
+ b11 biến thành a6
+ b12 biến thành a7
Kết luận: Có dòng toàn ‘a’ nên bảo toàn thông tin.
- Dùng thuật toán phân rã ta có các bảng dữ liệu sau:
PHIEUKHAM(SoPhieuKham, NgayLap, GhiChu, TinhTrang)
 FPHIEUKHAM = { f1: SoPhieuKham → NgayLap, GhiChu, TinhTrang }
 Khoá là {SoPhieuKham}
 Đạt dạng chuẩn BCK vì vế trái chứa khoá
TRIEUCHUNG(MaTrieuChung, TenTrieuChung, MoTaTC)
 FTRIEUCHUNG = { f1: MaTrieuChung → TenTrieuChung, MoTaTC }
 Khoá là {MaTrieuChung}
 Đạt dạng chuẩn BCK vì vế trái chứa khoá
+ Xét LĐQH BENHVIEN(MaBV, TenBV, SDT, DiaChi, SucChua, NgayTL, NgayGT,
MaDV, TenDV, DiaChi, NgayTLDV)
Tân từ: Mỗi bệnh viện sẽ có mã bệnh viên duy nhất để phân biệt (MaBV), có tên
bệnh viện (TenBV), số điện thoại của bệnh viện (SDT), địa chỉ bệnh viện (DiaChi), công
suất tối đa mà bệnh viện ấy có thể hoạt động hay số giường mà có thể chứa được tối đa
bao nhiêu bệnh nhân (SucChua), ngày thành lập bệnh viện (NgayTL), ngày giải thể bệnh
58
viện (nếu đó là bệnh viện dã chiến) và mỗi bệnh viện khi điều trị cho bệnh nhân mắc
Covid-19 đều có đơn vị phụ trách. Mỗi đơn vị phụ trách sẽ phụ trách khu điều trị bệnh
nhân mắc Covid-19 tại TP.HCM, được phân biệt qua mã đơn vị phụ trách (MaDV), tên
đơn vị (TenDV), địa chỉ của đơn vị (DiaChi) và ngày thành lập đơn vị (NgayTL).
- Các phụ thuộc hàm:
FBENHVIEN = { f1: MaBV → TenBV, SDT, DiaChi, SucChua, NgayTL, NgayGT;
f2: MaDV → TenDV, DiaChi, NgayTLDV;
f3: MaBV → MaDV }
- Xác định khoá:
N = {MaBV}; TG = {MaDV}; D = {TenBV, SDT, DiaChi, SucChua, NgayTL, NgayGT,
TenDV, DiaChi, NgayTLDV}
MaDV Li Xi=NLi Xi+F
0  MaBV = R+
1 MaDV MaBV, MaDV = R+
Có 2 siêu khóa, trong đó {MaBV} là siêu khoá bé nhất nên {MaBV} là khoá.
- Xác định dạng chuẩn:
Ta có:
+ MaBV → MaDV (Giả thiết)
+ MaDV → TenDV (Tính phân rã)
+ MaBV → TenDV (Tính bắc cầu)
Vì có tồn tại phụ thuộc bắc cầu cho nên BENHVIEN không đạt dạng chuẩn 3. Do đó
BENHVIEN đạt dạng chuẩn 2.
- Chuẩn hoá lược đồ CSDL:
Chọn f2 để phân rã: MaDV → TenDV, DiaChi, NgayTLDV
Q1(MaDV, TenDV, DiaChi, NgayTLDV) với PTH là f2
Q2(MaDV, MaBV, TenBV, SDT, DiaChi, SucChua, NgayTL, NgayGT) vơi PTH là f 1 và f3
Phân rã tiếp Q2. Chọn f1 để phân rã: MaBV → TenBV, SDT, DiaChi, SucChua, NgayTL,
NgayGT.
Q21(MaBV, TenBV, SDT, DiaChi, SucChua, NgayTL, NgayGT) với PTH là f1
Q22(MaBV, MaDV) với PTH là f3
Kết quả: C = { <Q1(MaDV, TenDV, DiaChi, NgayTLDV), F1 = {f2}>;

59
<Q21(MaBV, TenBV, SDT, DiaChi, SucChua, NgayTL, NgayGT), F 21 = {f1}>;
<Q22(MaBV, MaDV), F22 = {f3}> }
- Xét bảo toàn phụ thuộc hàm:
+ F’ = F1F21F22
+ F’\F =  (thoả)
+ F\F’ =  (thoả)
Kết luận: Bảo toàn phụ thuộc hàm
- Xét bảo toàn thông tin:
Gọi A là: MaBV,
B là: TenBV,
C là: SDT,
D là: DiaChi,
E là: SucChua,
G là: NgayTL,
H là: NgayGT,
F là: MaDV,
Y là: TenDV,
X là: DiaChi,
W là: NgayTLDV.
T A B C D E G H F Y X W
Q1 b1 b2 b3 b4 b5 b6 b7 a8 a9 a10 a11
Q21 a1 a2 a3 a4 a5 a6 a7 b8 b9 b10 b11
b12 b13 b14 b15 b16 b17 b18 b19 b20
Q22 a1 a8
(a2) (a3) (a4) (a5) (a6) (a7) (a9) (a10) (a11)
Chọn MaBV → TenBV, SDT, DiaChi, SucChua, NgayTL, NgayGT:
+ b12 biến thành a2
+ b13 biến thành a3
+ b14 biến thành a4
+ b15 biến thành a5
+ b16 biến thành a6
+ b17 biến thành a7
60
Chọn MaDV → TenDV, DiaChi, NgayTLDV:
+ b18 biến thành a9
+ b19 biến thành a10
+ b20 biến thành a11
Kết luận: Có dòng toàn ‘a’ nên bảo toàn thông tin.
- Dùng thuật toán phân rã ta có các bảng dữ liệu sau:
BENHVIEN(MaBV, TenBV, SDT, DiaChi, SucChua, NgayTL, NgayGT)
 FBENHVIEN = { f1: MaBV → TenBV, SDT, DiaChi, SucChua, NgayTL, NgayGT }
 Khoá là {MaBV}
 Đạt dạng chuẩn BCK vì vế trái chứa khoá
DONVIPHUTRACH(MaDV, TenDV, DiaChi, NgayTL)
 FDONVIPHUTRACH = { f1: MaDV → TenDV, DiaChi, NgayTL }
 Khoá là {MaDV}
 Đạt dạng chuẩn BCK vì vế trái chứa khoá
+ Xét LĐQH TOATHUOC(SoPhieuKham, NgayLap)
Tân từ: Mỗi toa thuốc được phân biệt qua số phiếu khám (SoPhieuKham) và ngày
lập toa thuốc (NgayLap).
- Các phụ thuộc hàm:
FGIAYBAOTU = { f1: SoPhieuKham → NgayLap }
- Xác định khoá:
N = {SoPhieuKham}; TG = {}; D = {NgayLap}
Vì không có trung gian, mà chỉ có đích nên khoá là {SoPhieuKham}
- Xác định dạng chuẩn:
Vì vế trái chứa khoá nên TOATHUOC đạt dạng chuẩn BCK.
+ Xét LĐQH THUOC(MaThuoc, TenThuoc, XuatXu, HuongDanSuDung)
Tân từ: Mỗi loại thuốc đều được phân biệt qua mã thuốc (MaThuoc), tên thuốc
(TenThuoc), xuất xứ (XuatXu) và hướng dẫn sử dụng (HuongDanSuDung).
- Các phụ thuộc hàm:
FGIAYBAOTU = { f1: MaThuoc → TenThuoc, XuatXu, HuongDanSuDung }
- Xác định khoá:
D = {MaThuoc}; TG = {}; N = {TenThuoc, XuatXu, HuongDanSuDung}
61
Vì không có trung gian, mà chỉ có đích nên khoá là {MaThuoc}
- Xác định dạng chuẩn:
Vì vế trái chứa khoá nên THUOC đạt dạng chuẩn BCK.
+ Xét LĐQH CTTOATHUOC(MaThuoc, SoPhieuKham, SoLuong, GhiChu, MaPhanUng,
TenPhanUng, MoTaPhanUng, MucDoPhanUng)
Tân từ: Chi tiết toa thuốc được phân biệt qua số phiếu khám (SoPhieuKham), mã
thuốc (MaThuoc), số lượng thuốc cung cấp cho bệnh nhân (SoLuong) và ghi chú
(GhiChu). Mỗi bệnh nhân sau khi dùng thuốc đều có những phản ứng khác nhau, mọi
thông tin về phản ứng sau khi dùng thuốc đều được phân biệt qua mã phản ứng
(MaPhanUng), tên phản ứng (TenPhanUng), mức độ phản ứng (MucDoPhanUng), mô tả
phản ứng (MoTaPhanUng).
- Các phụ thuộc hàm:
FCTTOATHUOC = { f1: MaThuoc, SoPhieuKham → SoLuong, GhiChu;
f2: MaPhanUng → TenPhanUng, MoTaPhanUng, MucDoPhanUng;
d1: MaThuoc, SoPhieuKham ↠ MaPhanUng }
- Xác định khoá:
N = {MaThuoc, SoPhieuKham}; TG = {MaPhanUng}; D = {SoLuong, GhiChu,
TenPhanUng, MoTaPhanUng, MucDoPhanUng}
MaPhanUng Li Xi=NLi Xi+F
0  MaThuoc, SoPhieuKham = R+
1 MaPhanUng MaThuoc, SoPhieuKham, MaPhanUng = R+
Có 2 siêu khóa, trong đó {MaThuoc, SoPhieuKham} là siêu khoá bé nhất nên {MaThuoc,
SoPhieuKham} là khoá.
- Xác định dạng chuẩn:
Vì có MaPhanUng là thuộc tính đa trị cho nên, CTTOATHUOC không đạt dạng chuẩn 1.
Vì vậy CTTOATHUOC không được chuẩn hoá.
- Chuẩn hoá lược đồ CSDL:
Chọn f2 để phân rã: MaPhanUng → TenPhanUng, MoTaPhanUng, MucDoPhanUng
Q1(MaPhanUng, TenPhanUng, MoTaPhanUng, MucDoPhanUng) với PTH là f2
Q2(MaPhanUng, MaThuoc, SoPhieuKham, SoLuong, GhiChu) với PTH là f1 và d1
Phân rã tiếp Q2. Chọn f1 để phân rã: MaThuoc, SoPhieuKham → SoLuong, GhiChu

62
Q21(MaThuoc, SoPhieuKham, SoLuong, GhiChu) với PTH là f1
Q22(MaThuoc, SoPhieuKham, MaPhanUng) với PTH là d1
Phân rã tiếp Q22. Chọn d1 để phân rã: MaThuoc, SoPhieuKham ↠ MaPhanUng
Q221(MaThuoc, SoPhieuKham, MaPhanUng) với PTH là d1
Q222(MaThuoc, SoPhieuKham) với PTH là 
Kết quả: C = { <Q1(MaPhanUng, TenPhanUng, MoTaPhanUng, MucDoPhanUng), F1 =
{f2}>;
<Q21(MaThuoc, SoPhieuKham, SoLuong, GhiChu), F21 = {f1}>;
<Q221(MaThuoc, SoPhieuKham, MaPhanUng), F221 = {d1}>;
<Q222(MaThuoc, SoPhieuKham), F222 = {}> }
- Xét bảo toàn phụ thuộc hàm:
+ F’ = F1F21F221F222
+ F’\F =  (thoả)
+ F\F’ =  (thoả)
Kết luận: Bảo toàn phụ thuộc hàm
- Xét bảo toàn thông tin:
Gọi A là: MaThuoc,
B là: SoPhieuKham,
C là: SoLuong,
D là: GhiChu,
E là: MaPhanUng,
G là: TenPhanUng,
H là: MoTaPhanUng,
F là: MucDoPhanUng.
T A B C D E G H F
Q1 b1 b2 b3 b4 a5 a6 a7 a8
Q21 a1 a2 a3 a4 b5 b6 b7 b8
Q221 a1 a2 b9 (a3) b10 (a4) a5 b11 (a6) b12 (a7) b13 (a8)
Q222 a1 a2 b14 b15 b16 b17 b18 b19
Chọn MaThuoc, SoPhieuKham → SoLuong, GhiChu:
+ b9 biến thành a3
63
+ b10 biến thành a4
Chọn MaPhanUng → TenPhanUng, MoTaPhanUng, MucDoPhanUng:
+ b11 biến thành a6
+ b12 biến thành a7
+ b13 biến thành a8
Kết luận: Có dòng toàn ‘a’ nên bảo toàn thông tin.
- Dùng thuật toán phân rã ta có các bảng dữ liệu sau:
CTTOATHUOC(MaThuoc, SoPhieuKham, SoLuong, GhiChu)
 FBENHVIEN = { f1: MaThuoc, SoPhieuKham → SoLuong, GhiChu }
 Khoá là {MaThuoc, SoPhieuKham}
 Đạt dạng chuẩn BCK vì vế trái chứa khoá
PHANUNGDUNGTHUOC(MaPhanUng, TenPhanUng, MoTaPhanUng, MucDoPhanUng)
 FBENHVIEN = { f1: MaPhanUng → TenPhanUng, MoTaPhanUng, MucDoPhanUng }
 Khoá là {MaPhanUng}
 Đạt dạng chuẩn BCK vì vế trái chứa khoá
⇒ Vì vậy dạng chuẩn của LĐCSDL là dạng chuẩn Min(Q i), hay LĐCSDL “Hệ thống
quản lý khu điều trị bệnh nhân mắc covid-19 tại TP.HCM” đạt dạng chuẩn BCK.
6. Xây dựng đồ thị quan hệ
 Bước 1: C là một phân rã đồng nhất Cd
 Bước 2: Mỗi quan hệ trên Qi là một nút
(Q1) DONVIPHUTRACH(MaDV, TenDV, DiaChi, NgayTL)
(Q2) BENHVIEN(MaBV, TenBV, SDT, DiaChi, SucChua, NgayTL, NgayGT, MaDV)
(Q3) CHUCVU(MaCV, TenCV, MoTaCV)
(Q4) CONGTAC(MaNCT, TenNCT, DiaChi)
(Q5) NHANVIEN(MaNV, NTNS, HoTen, SDT, Phai, MaBV, MaNCT, MaCV, MaNVQL)
(Q6) LOAIPHONG(MaLP, TenLP, TrangThai, MoTa)
(Q7) PHONG(SoPhong, TrangThai, SoGiuong, MoTa, MaBV, MaLP)
(Q8) HOSOBENHNHAN(MaHS, NgayLap, NgayHetHan, HoTenBN, DiaChi, Phai, NTNS,
SDT, MaNVLap, SoPhong)
(Q9) PHIEUNHAPXUATVIEN(MaPhieu, NgayNhapVien, NgayXuatVien, MaHS)

64
(Q10) BHYT(SoThe, DonViCap, NgayCap, NgayHetHan, MaHS)
(Q11) PHIEUXETNGHIEM(SoPhieu, TenXetNghiem, NgayXetNghiem, KetQua, MaHS)
(Q12) GIAYBAOTU(SoGiay, NguyenNhan, NgayMat, MaHS)
(Q13) LICHSUTIEMCHUNG(MaHS, LanTiem, NgayTiem, LoaiVacXin, DonViTiem)
(Q14) LOAIVACXIN(MaLoaiVC, TenVC, XuatXu, MoTaVC)
(Q15) CTTIEMCHUNG(MaHS, LanTiem, MaLoaiVC, DonViTiem)
(Q16) PHANUNGSAUTIEM(MaPhanUng, TenPhanUng, MoTaPhanUng, MucDoPhanUng,
LanTiem, MaHS, MaLoaiVC)
(Q17) PHIEUKHAM(SoPhieuKham, NgayLap, GhiChu, TinhTrang, MaHS)
(Q18) TRIEUCHUNG(MaTC, TenTrieuChung, MoTaTC, SoPhieuKham)
(Q19) TOATHUOC(SoPhieuKham, NgayLap)
(Q20) THUOC(MaThuoc, TenThuoc, XuatXu, HuongDanSuDung)
(Q21) CTTOATHUOC(SoPhieuKham, MaThuoc, SoLuong, GhiChu)
(Q22) PHANUNGDUNGTHUOC(MaPhanUng, TenPhanUng, MoTaPhanUng,
MucDoPhanUng, MaThuoc, SoPhieuKham)
 Bước 3: Tạo nút bản lề và quan hệ (nút) bản lề:
(Q12) = MaDV ⇒ Q[MaDV]: không tạo, vì trùng khoá với Q1.
(Q25) = MaBV ⇒ Q[MaBV]: không tạo, vì trùng khoá với Q2.
(Q27) = MaBV ⇒ Q[MaBV]: không tạo, vì trùng khoá với Q2.
(Q35) = MaCV ⇒ Q[MaCV]: không tạo, vì trùng khoá với Q3.
(Q45) = MaNCT ⇒ Q[MaNCT]: không tạo, vì trùng khoá với Q4.
(Q55) = MaNVQL ⇒ Q[MaNV]: không tạo, vì trùng khoá với Q5.
(Q58) = MaNVLap ⇒ Q[MaNV]: không tạo, vì trùng khoá với Q5.
(Q517) = MaBS ⇒ Q[MaNV]: không tạo, vì trùng khoá với Q5.
(Q67) = MaLP ⇒ Q[MaLP]: không tạo, vì trùng khoá với Q6.
(Q78) = SoPhong ⇒ Q[SoPhong]: không tạo, vì trùng khoá với Q7.
(Q89) = MaHS ⇒ Q[MaHS]: không tạo, vì trùng khoá với Q8 hoặc Q13.
(Q810) = MaHS ⇒ Q[MaHS]: không tạo, vì trùng khoá với Q8 hoặc Q13.
(Q811) = MaHS ⇒ Q[MaHS]: không tạo, vì trùng khoá với Q8 hoặc Q13.
(Q812) = MaHS ⇒ Q[MaHS]: không tạo, vì trùng khoá với Q8 hoặc Q13.
(Q813) = MaHS ⇒ Q[MaHS]: không tạo, vì trùng khoá với Q8 hoặc Q13.
65
(Q815) = MaHS ⇒ Q[MaHS]: không tạo, vì trùng khoá với Q8 hoặc Q13.
(Q816) = MaHS ⇒ Q[MaHS]: không tạo, vì trùng khoá với Q8 hoặc Q13.
(Q817) = MaHS ⇒ Q[MaHS]: không tạo, vì trùng khoá với Q8 hoặc Q13.
(Q1315) = MaHS ⇒ Q[MaHS]: không tạo, vì trùng khoá với Q8 hoặc Q13.
(Q1315) = LanTiem ⇒ Q[LanTiem]: không tạo, vì trùng khoá với Q13.
(Q1316) = LanTiem ⇒ Q[LanTiem]: không tạo, vì trùng khoá với Q13.
(Q1415) = MaLoaiVC ⇒ Q[MaLoaiVC]: không tạo, vì trùng khoá với Q14.
(Q1416) = MaLoaiVC ⇒ Q[MaLoaiVC]: không tạo, vì trùng khoá với Q14.
(Q1718) = SoPhieuKham ⇒ Q[SoPhieuKham]: không tạo, vì trùng khoá với Q17 hoặc Q19.
(Q1719) = SoPhieuKham ⇒ Q[SoPhieuKham]: không tạo, vì trùng khoá với Q17 hoặc Q19.
(Q1721) = SoPhieuKham ⇒ Q[SoPhieuKham]: không tạo, vì trùng khoá với Q17 hoặc Q19.
(Q1722) = SoPhieuKham ⇒ Q[SoPhieuKham]: không tạo, vì trùng khoá với Q17 hoặc Q19.
(Q1921) = SoPhieuKham ⇒ Q[SoPhieuKham]: không tạo, vì trùng khoá với Q17 hoặc Q19.
(Q1922) = SoPhieuKham ⇒ Q[SoPhieuKham]: không tạo, vì trùng khoá với Q17 hoặc Q19.
(Q2021) = MaThuoc ⇒ Q[MaThuoc]: không tạo, vì trùng khoá với Q20.
(Q2022) = MaThuoc ⇒ Q[MaThuoc]: không tạo, vì trùng khoá với Q20.
⇒ Tóm lại không tạo nút bảng lề và quan hệ (nút) bản lề nào.
 Bước 4: Tạo cung và quan hệ cung:
(1) DONVIPHUTRACH(MaDV, TenDV, DiaChi, NgayTL)
(2) BENHVIEN(MaBV, TenBV, SDT, DiaChi, SucChua, NgayTL, NgayGT, MaDV)
(3) CHUCVU(MaCV, TenCV, MoTaCV)
(4) CONGTAC(MaNCT, TenNCT, DiaChi)
(5) NHANVIEN(MaNV, NTNS, HoTen, SDT, Phai, MaBV, MaNCT, MaCV,
MaNVQL)
(6) LOAIPHONG(MaLP, TenLP, TrangThai, MoTa)
(7) PHONG(SoPhong, TrangThai, SoGiuong, MoTa, MaBV, MaLP)
(8) HOSOBENHNHAN(MaHS, NgayLap, NgayHetHan, HoTenBN, DiaChi, Phai, NTNS,
SDT, MaNVLap, SoPhong)
(9) PHIEUNHAPXUATVIEN(MaPhieu, NgayNhapVien, NgayXuatVien, MaHS)
(10) BHYT(SoThe, DonViCap, NgayCap, NgayHetHan, MaHS)

66
(11) PHIEUXETNGHIEM(SoPhieu, TenXetNghiem, NgayXetNghiem, KetQua,
MaHS)
(12) GIAYBAOTU(SoGiay, NguyenNhan, NgayMat, MaHS)
(13) LICHSUTIEMCHUNG(MaHS, LanTiem, NgayTiem, LoaiVacXin, DonViTiem)
(14) LOAIVACXIN(MaLoaiVC, TenVC, XuatXu, MoTaVC)
(15) CTTIEMCHUNG(MaHS, LanTiem, MaLoaiVC, DonViTiem)
(16) PHANUNGSAUTIEM(MaPhanUng, TenPhanUng, MoTaPhanUng, MucDoPhanUng,
LanTiem, MaHS, MaLoaiVC)
(17) PHIEUKHAM(SoPhieuKham, NgayLap, GhiChu, TinhTrang, MaHS)
(18) TRIEUCHUNG(MaTC, TenTrieuChung, MoTaTC, SoPhieuKham)
(19) TOATHUOC(SoPhieuKham, NgayLap)
(20) THUOC(MaThuoc, TenThuoc, XuatXu, HuongDanSuDung)
(21) CTTOATHUOC(SoPhieuKham, MaThuoc, SoLuong, GhiChu)
(22) PHANUNGDUNGTHUOC(MaPhanUng, TenPhanUng, MoTaPhanUng,
MucDoPhanUng, MaThuoc, SoPhieuKham)
PTH PTH_Thừa LK LK_Thừa Cung
(Ni) (Ni) (Ni) (Ni) (Ni)
1. DONVIPHUTRACH  - - - 
2. BENHVIEN 1 - - - 1
3. CHUCVU  - - - 
4. CONGTAC  - - - 
2, 3, 4,
5. NHANVIEN - - - 2, 3, 4, 5
5
6. LOAIPHONG  - - - 
7. PHONG 2, 6 - - - 2, 6
8. HOSOBENHNHAN 5, 7 - - - 5, 7
9.
8 - - - 8
PHIEUNHAPXUATVIEN
10. BHYT 8 - - - 8
11. PHIEUXETNGHIEM 8 - - - 8
12. GIAYBAOTU 8 - - - 8
67
13.
8 - - - 8
LICHSUTIEMCHUNG
14. LOAIVACXIN  - - - 
8, 13,
15. CTTIEMCHUNG 8 13, 14 - 13, 14
14
8, 13,
16. PHANUNGSAUTIEM 8, 13, 14 - - 15
14, 15
17. PHIEUKHAM 5, 8 - - - 5, 8
18. TRIEUCHUNG 17 - - - 17
19. TOATHUOC 17 - - - 17
20. THUOC  - - - 
17, 19,
21. CTTOATHUOC 17 19, 20 - 19, 20
20
22.
17, 19,
PHANUNGDUNGTHUO 17, 19, 20 - - 21
20, 21
C
Những nút bản lề:
Q21 = Q2 [KQ2+  KQ1+] = (MaDV  MaDV) = (MaDV),
Q52 = Q5 [KQ5+  KQ2+] = (MaBV  MaBV) = (MaBV),
Q53 = Q5 [KQ5+  KQ3+] = (MaCV  MaCV) = (MaCV),
Q54 = Q5 [KQ5+  KQ4+] = (MaNCT  MaNCT) = (MaNCT),
Q55 = Q5 [KQ5+  KQ5+] = (MaNVQL  MaNV) = (MaNV),
Q72 = Q7 [KQ7+  KQ2+] = (MaBV  MaBV) = (MaBV),
Q76 = Q7 [KQ7+  KQ6+] = (MaLP  MaLP) = (MaLP),
Q85 = Q8 [KQ8+  KQ5+] = (MaNVLap  MaNV) = (MaNV),
Q87 = Q8 [KQ8+  KQ7+] = (SoPhong  SoPhong) = (SoPhong),
Q98 = Q9 [KQ9+  KQ8+] = (MaHS  MaHS) = (MaHS),
Q108 = Q10 [KQ10+  KQ8+] = (MaHS  MaHS) = (MaHS),
Q118 = Q11 [KQ11+  KQ8+] = (MaHS  MaHS) = (MaHS),

68
Q128 = Q12 [KQ12+  KQ8+] = (MaHS  MaHS) = (MaHS),
Q138 = Q13 [KQ13+  KQ8+] = (MaHS  MaHS) = (MaHS),
Q1513 = Q15 [KQ15+  KQ13+] = (MaHS, LanTiem  MaHS, LanTiem) = (MaHS,
LanTiem),
Q1514 = Q15 [KQ15+  KQ14+] = (MaLoaiVC  MaLoaiVC) = (MaLoaiVC),
Q1615 = Q16 [KQ16+  KQ15+] = (MaHS, LanTiem, MaLoaiVC),
Q175 = Q17 [KQ17+  KQ5+] = (MaBS  MaNV) = (MaNV),
Q178 = Q17 [KQ17+  KQ8+] = (MaHS  MaHS) = (MaHS),
Q1817 = Q18 [KQ18+  KQ17+] = (SoPhieuKham  SoPhieuKham) = (SoPhieuKham),
Q1917 = Q19 [KQ19+  KQ17+] = (SoPhieuKham  SoPhieuKham) = (SoPhieuKham),
Q2119 = Q21 [KQ21+  KQ19+] = (SoPhieuKham  SoPhieuKham) = (SoPhieuKham),
Q2120 = Q21 [KQ21+  KQ20+] = (MaThuoc  MaThuoc) = (MaThuoc),
Q2221 = Q22 [KQ22+  KQ21+] = (MaThuoc, SoPhieuKham).
 Bước 5: Hủy những nút bản lề thừa:
Huỷ nút bản lề Q21 (Vì đã có Q1).
Huỷ nút bản lề Q52 (Vì đã có Q2).
Huỷ nút bản lề Q53 (Vì đã có Q3).
Huỷ nút bản lề Q54 (Vì đã có Q4).
Huỷ nút bản lề Q55 (Vì đã có Q5).
Huỷ nút bản lề Q72 (Vì đã có Q2).
Huỷ nút bản lề Q76 (Vì đã có Q6).
Huỷ nút bản lề Q85 (Vì đã có Q5).
Huỷ nút bản lề Q87 (Vì đã có Q7).
Huỷ nút bản lề Q98 (Vì đã có Q8 hoặc Q13).
Huỷ nút bản lề Q108 (Vì đã có Q8 hoặc Q13).
Huỷ nút bản lề Q118 (Vì đã có Q8 hoặc Q13).
Huỷ nút bản lề Q128 (Vì đã có Q8 hoặc Q13).
Huỷ nút bản lề Q138 (Vì đã có Q8 hoặc Q13).
Huỷ nút bản lề Q1514 (Vì đã có Q14).
Huỷ nút bản lề Q175 (Vì đã có Q5).

69
Huỷ nút bản lề Q178 (Vì đã có Q8 hoặc Q13).
Huỷ nút bản lề Q1817 (Vì đã có Q17 hoặc Q19).
Huỷ nút bản lề Q1917 (Vì đã có Q17 hoặc Q19).
Huỷ nút bản lề Q2119 (Vì đã có Q17 hoặc Q19).
Huỷ nút bản lề Q2120 (Vì đã có Q20).
 Bước 6: Mịn hóa các quan hệ nút:

Hình 6.1: Đồ thị quan hệ

 Bước 7: Tạo cung vô hướng:


Không tạo cung vô hướng.
 Bước 8: Nêu con đường truy xuất, ý nghĩa và truy vấn:
Con đường nhiều ngữ nghĩa nhất, còn lại là con đường con:
- 9→8→5→2→1: Thống kê thông tin ngày nhập xuất viện của hồ sơ bệnh nhân được
nhân viên bệnh viên lập ở bệnh viện có đơn vị phụ trách quản lý.
Câu lệnh truy vấn:
70
SELECT H.MaHS [Mã HS], PH.NgayNhapVien [Ngày nhập viện],
PH.NgayXuatVien [Ngày xuất viện], BV.TenBV [Tên BV], DV.TenDV [Tên DV]
FROM PHIEUNHAPXUATVIEN PH
    JOIN HOSOBENHNHAN H ON PH.MaHS = H.MaHS
    JOIN NHANVIEN NV ON H.MaNVLap = NV.MaNV
    JOIN BENHVIEN BV ON NV.MaBV = BV.MaBV
    JOIN DONVIPHUTRACH DV ON BV.MaDV = DV.MaDV
WHERE NV.MaNVLap = 'BS020'
GO
- 9→8→5→3: Cho biết chức vụ của nhân viên lập hồ sơ bệnh nhân có ngày nhập xuất
viện nào đó.
Câu lệnh truy vấn:
SELECT H.MaHS [Mã HS], NV.HoTen [Người lập], CV.TenCV [Chức vụ]
FROM PHIEUNHAPXUATVIEN PH
    JOIN HOSOBENHNHAN H ON PH.MaHS = H.MaHS
    JOIN NHANVIEN NV ON H.MaNVLap = NV.MaNV
    JOIN CHUCVU CV ON NV.MaCV = CV.MaCV
WHERE PH.NgayNhapVien = '2020-01-01'
GO
- 9→8→5→4: Cho biết nơi công tác của nhân viên lập hồ sơ bệnh nhân có ngày nhập
xuất viện nào đó.
Câu lệnh truy vấn:
SELECT H.MaHS [Mã HS], NV.HoTen [Người lập], CT.TenNCT [Đơn vị công
tác]
FROM PHIEUNHAPXUATVIEN PH
    JOIN HOSOBENHNHAN H ON PH.MaHS = H.MaHS
    JOIN NHANVIEN NV ON H.MaNVLap = NV.MaNV
    JOIN CONGTAC CT ON NV.MaNCT = CT.MaNCT
WHERE PH.NgayNhapVien = '2020-01-01'
GO
- 9→8→5→5: Cho biết nhân viên quản lý lập hồ sơ bệnh nhân có ngày nhập xuất viện
nào đó.
Câu lệnh truy vấn:
SELECT H.MaHS [Mã HS], NV.HoTen [Người lập], QL.TenNV [Quản lý]
FROM PHIEUNHAPXUATVIEN PH
    JOIN HOSOBENHNHAN H ON PH.MaHS = H.MaHS

71
    JOIN NHANVIEN NV ON H.MaNVLap = NV.MaNV
    JOIN NHANVIEN QL ON QL.MaNVQL = NV.MaNV
WHERE PH.NgayNhapVien = '2020-01-01'
GO
- 9→8→7→2→1: Cho biết nơi chăm sóc bệnh nhân có ngày nhập viện hay ngày xuất
viện nào đó.
Câu lệnh truy vấn:
WITH CTE_PHIEUNHAPXUATVIEN AS (
    SELECT *
    FROM PHIEUNHAPXUATVIEN PH
    WHERE PH.NgayNhapVien = '2020-01-01'
), CTE_HOSOBENHNHAN AS (
    SELECT *
    FROM HOSOBENHNHAN H
    WHERE H.MaHS IN (SELECT MaHS FROM CTE_PHIEUNHAPXUATVIEN)
), CTE_PHONG AS (
    SELECT *
    FROM PHONG P
), CTE_BENHVIEN AS (
    SELECT *
    FROM BENHVIEN BV
), CTE_DONVI AS (
    SELECT *
    FROM DONVIPHUTRACH DV
)
SELECT H.MaHS [Mã HS], P.SoPhong [Số phòng], BV.TenBV [Bệnh viện],
DV.TenDV [Đơn vị phụ trách]
FROM CTE_HOSOBENHNHAN H
    JOIN CTE_PHONG P ON H.MaPhong = P.MaPhong
    JOIN CTE_BENHVIEN BV ON P.MaBV = BV.MaBV
    JOIN CTE_DONVI DV ON BV.MaDV = DV.MaDV
GO
- 9→8→7→6: Thống kế bệnh nhân nằm ở phòng thuộc loại phòng nào đó, có ngày nhập
xuất viện nào đó.
Câu lệnh truy vấn:
SELECT H.MaHS [Mã HS], H.HoTen [Họ tên], P.SoPhong [Số phòng]
FROM PHIEUNHAPXUATVIEN PH
72
    JOIN HOSOBENHNHAN H ON PH.MaHS = H.MaHS
    JOIN PHONG P ON H.SoPhong = P.SoPhong
    JOIN LOAIPHONG LP ON P.MaLP = LP.MaLP
WHERE LP.TenLP = N'Điều trị bệnh nhân nặng' AND PH.NgayNhapVien =
'2020-01-01'
GO
- 10→8→5→2→1: Thống kê thông tin thẻ bảo hiểm y tế của hồ sơ bệnh nhân được nhân
viên bệnh viên lập ở bệnh viện có đơn vị phụ trách quản lý.
Câu lệnh truy vấn:
SELECT H.MaHS [Mã HS], BH.SoThe [Số thẻ], BH.NgayHetHan [Ngày hết
hạn], BH.NgayCap [Ngày cấp]
FROM BHYT BH
    JOIN HOSOBENHNHAN H ON BH.MaHS = H.MaHS
    JOIN NHANVIEN NV ON H.MaNVLap = NV.MaNV
    JOIN BENHVIEN BV ON NV.MaBV = BV.MaBV
    JOIN DONVIPHUTRACH DV ON BV.MaDV = DV.MaDV
GO
- 10→8→5→3: Cho biết chức vụ của nhân viên lập hồ sơ bệnh nhân có sở hữu thẻ bảo
hiểm y tế:
Câu lệnh truy vấn:
SELECT H.MaHS [Mã HS], NV.HoTen [Người lập], CV.TenCV [Chức vụ]
FROM BHYT BH
    JOIN HOSOBENHNHAN H ON BH.MaHS = H.MaHS
    JOIN NHANVIEN NV ON H.MaNVLap = NV.MaNV
    JOIN CHUCVU CV ON NV.MaCV = CV.MaCV
GO
- 10→8→5→4: Cho biết nơi công tác của nhân viên lập hồ sơ bệnh nhân có sở hữu bảo
hiểm y tế.
Câu lệnh truy vấn:
SELECT H.MaHS [Mã HS], NV.HoTen [Người lập], CT.TenNCT [Đơn vị công
tác]
FROM BHYT BH
    JOIN HOSOBENHNHAN H ON BH.MaHS = H.MaHS
    JOIN NHANVIEN NV ON H.MaNVLap = NV.MaNV
    JOIN CONGTAC CT ON NV.MaNCT = CT.MaNCT
GO

73
- 10→8→5→5: Cho biết nhân viên quản lý lập hồ sơ bệnh nhân có sở hữu bảo hiểm y tế.
Câu lệnh truy vấn:
SELECT H.MaHS [Mã HS], NV.HoTen [Người lập], QL.TenNV [Quản lý]
FROM BHYT BH
    JOIN HOSOBENHNHAN H ON BH.MaHS = H.MaHS
    JOIN NHANVIEN NV ON H.MaNVLap = NV.MaNV
    JOIN NHANVIEN QL ON QL.MaNVQL = NV.MaNV
GO
- 10→8→7→2→1: Cho biết nơi chăm sóc bệnh nhân có sở hữu thẻ bảo hiểm y tế.
Câu lệnh truy vấn:
WITH CTE_BHYT AS (
    SELECT *
    FROM BHYT BH
), CTE_HOSOBENHNHAN AS (
    SELECT *
    FROM HOSOBENHNHAN H
    WHERE H.MaHS IN (SELECT MaHS FROM CTE_BHYT)
), CTE_PHONG AS (
    SELECT *
    FROM PHONG P
), CTE_BENHVIEN AS (
    SELECT *
    FROM BENHVIEN BV
), CTE_DONVI AS (
    SELECT *
    FROM DONVIPHUTRACH DV
)
SELECT H.MaHS [Mã HS], P.SoPhong [Số phòng], BV.TenBV [Bệnh viện],
DV.TenDV [Đơn vị phụ trách]
FROM CTE_HOSOBENHNHAN H
    JOIN CTE_PHONG P ON H.MaPhong = P.MaPhong
    JOIN CTE_BENHVIEN BV ON P.MaBV = BV.MaBV
    JOIN CTE_DONVI DV ON BV.MaDV = DV.MaDV
GO
- 10→8→7→6: Thống kế bệnh nhân nằm ở phòng thuộc loại phòng nào đó, có sở hữu
bảo hiểm y tế.
Câu lệnh truy vấn:

74
SELECT H.MaHS [Mã HS], H.HoTen [Họ tên], P.SoPhong [Số phòng]
FROM BHYT BH
    JOIN HOSOBENHNHAN H ON BH.MaHS = H.MaHS
    JOIN PHONG P ON H.SoPhong = P.SoPhong
    JOIN LOAIPHONG LP ON P.MaLP = LP.MaLP
WHERE LP.TenLP = N'Điều trị bệnh nhân nặng'
GO
- 11→8→5→2→1: Thống kê thông tin hồ sơ bệnh nhân được nhân viên bệnh viên lập ở
bệnh viện có đơn vị phụ trách quản lý, có xét nghiệm tại bệnh viện.
Câu lệnh truy vấn:
SELECT H.MaHS [Mã HS], XN.*, BV.TenBV [Bệnh viện], DV.TenDV [Đơn vị
phụ trách]
FROM PHIEUXETNGHIEM XN
    JOIN HOSOBENHNHAN H ON XN.MaHS = H.MaHS
    JOIN NHANVIEN NV ON H.MaNVLap = NV.MaNV
    JOIN BENHVIEN BV ON NV.MaBV = BV.MaBV
    JOIN DONVIPHUTRACH DV ON BV.MaDV = DV.MaDV
GO
- 11→8→5→3: Cho biết chức vụ của nhân viên lập hồ sơ bệnh nhân có xét nghiệm tại
bệnh viện.
Câu lệnh truy vấn:
SELECT H.MaHS [Mã HS], XN.*, NV.HoTen [Người lập], CV.TenVC [Chức vụ]
FROM PHIEUXETNGHIEM XN
    JOIN HOSOBENHNHAN H ON XN.MaHS = H.MaHS
    JOIN NHANVIEN NV ON H.MaNVLap = NV.MaNV
    JOIN CHUCVU CV ON NV.MaCV = CV.MaCV
GO
- 11→8→5→4: Cho biết nơi công tác của nhân viên lập hồ sơ bệnh nhân có xét nghiệm
tại bệnh viện.
Câu lệnh truy vấn:
SELECT H.MaHS [Mã HS], XN.*, NV.HoTen [Người lập], CT.TenNCT [Đơn vị
công tác]
FROM PHIEUXETNGHIEM XN
    JOIN HOSOBENHNHAN H ON XN.MaHS = H.MaHS
    JOIN NHANVIEN NV ON H.MaNVLap = NV.MaNV
    JOIN CONGTAC CT ON NV.MaNCT = CT.MaNCT

75
GO
- 11→8→5→5: Cho biết nhân viên quản lý lập hồ sơ bệnh nhân có xét nghiệm tại bệnh
viện.
Câu lệnh truy vấn:
SELECT H.MaHS [Mã HS], XN.*, NV.HoTen [Người lập], QL.TenNV [Quản lý]
FROM PHIEUXETNGHIEM XN
    JOIN HOSOBENHNHAN H ON XN.MaHS = H.MaHS
    JOIN NHANVIEN NV ON H.MaNVLap = NV.MaNV
    JOIN NHANVIEN QL ON QL.MaNVQL = NV.MaNV
GO
- 11→8→7→2→1: Cho biết nơi chăm sóc bệnh nhân có xét nghiệm tại bệnh viện.
Câu lệnh truy vấn:
WITH CTE_PHIEUXETNGHIEM AS (
    SELECT *
    FROM PHIEUXETNGHIEM PH
), CTE_HOSOBENHNHAN AS (
    SELECT *
    FROM HOSOBENHNHAN H
    WHERE H.MaHS IN (SELECT MaHS FROM CTE_PHIEUXETNGHIEM)
), CTE_PHONG AS (
    SELECT *
    FROM PHONG P
), CTE_BENHVIEN AS (
    SELECT *
    FROM BENHVIEN BV
), CTE_DONVI AS (
    SELECT *
    FROM DONVIPHUTRACH DV
)
SELECT H.MaHS [Mã HS], P.SoPhong [Số phòng], BV.TenBV [Bệnh viện],
DV.TenDV [Đơn vị phụ trách]
FROM CTE_HOSOBENHNHAN H
    JOIN CTE_PHONG P ON H.MaPhong = P.MaPhong
    JOIN CTE_BENHVIEN BV ON P.MaBV = BV.MaBV
    JOIN CTE_DONVI DV ON BV.MaDV = DV.MaDV
GO

76
- 11→8→7→6: Thống kế bệnh nhân nằm ở phòng thuộc loại phòng nào đó, có kết quả
xét nghiệm là âm tính.
Câu lệnh truy vấn:
SELECT H.MaHS [Mã HS], H.HoTen [Họ tên], P.SoPhong [Số phòng]
FROM PHIEUXETNGHIEM XN
    JOIN HOSOBENHNHAN H ON XH.MaHS = H.MaHS
    JOIN PHONG P ON H.SoPhong = P.SoPhong
    JOIN LOAIPHONG LP ON P.MaLP = LP.MaLP
WHERE LP.TenLP = N'Điều trị bệnh nhân nhẹ' AND XN.KetQua = N'Âm tính'
GO
- 12→8→5→2→1: Thống kê thông tin hồ sơ bệnh nhân được nhân viên bệnh viên lập ở
bệnh viện có đơn vị phụ trách quản lý, mà đã tử vong vì Covid-19.
Câu lệnh truy vấn:
SELECT H.MaHS [Mã HS], TU.NgayMat [Ngày mất], TU.NguyenNhan
[Nguyên nhân]
FROM GIAYBAOTU TU
    JOIN HOSOBENHNHAN H ON TU.MaHS = H.MaHS
    JOIN NHANVIEN NV ON H.MaNVLap = NV.MaNV
    JOIN BENHVIEN BV ON NV.MaBV = BV.MaBV
    JOIN DONVIPHUTRACH DV ON BV.MaDV = DV.MaDV
GO
- 12→8→5→3: Cho biết chức vụ của nhân viên lập hồ sơ bệnh nhân mà đã tử vong vì
Covid-19.
Câu lệnh truy vấn:
SELECT H.MaHS [Mã HS], TU.*, NV.HoTen [Người lập], CV.TenVC [Chức vụ]
FROM GIAYBAOTU TU
    JOIN HOSOBENHNHAN H ON TU.MaHS = H.MaHS
    JOIN NHANVIEN NV ON H.MaNVLap = NV.MaNV
    JOIN CHUCVU CV ON NV.MaCV = CV.MaCV
GO
- 12→8→5→4: Cho biết nơi công tác của nhân viên lập hồ sơ bệnh nhân mà đã tử vong
vì Covid-19.
Câu lệnh truy vấn:
SELECT H.MaHS [Mã HS], TU.*, NV.HoTen [Người lập], CT.TenNCT [Đơn vị
công tác]

77
FROM GIAYBAOTU TU
    JOIN HOSOBENHNHAN H ON TU.MaHS = H.MaHS
    JOIN NHANVIEN NV ON H.MaNVLap = NV.MaNV
    JOIN CONGTAC CT ON NV.MaNCT = CT.MaNCT
GO
- 12→8→5→5: Cho biết nhân viên quản lý đã lập hồ sơ bệnh nhân mà đã tử vong vì
Covid-19.
Câu lệnh truy vấn:
SELECT H.MaHS [Mã HS], TU.*, NV.HoTen [Người lập], QL.TenNV [Quản lý]
FROM GIAYBAOTU TU
    JOIN HOSOBENHNHAN H ON TU.MaHS = H.MaHS
    JOIN NHANVIEN NV ON H.MaNVLap = NV.MaNV
    JOIN NHANVIEN QL ON QL.MaNVQL = NV.MaNV
GO
- 12→8→7→2→1: Cho biết nơi từng chăm sóc bệnh nhân đã tử xong vì Covid-19.
Câu lệnh truy vấn:
WITH CTE_GIAYBAOTU AS (
    SELECT *
    FROM GIAYBAOTU TU
), CTE_HOSOBENHNHAN AS (
    SELECT *
    FROM HOSOBENHNHAN H
    WHERE H.MaHS IN (SELECT MaHS FROM CTE_GIAYBAOTU)
), CTE_PHONG AS (
    SELECT *
    FROM PHONG P
), CTE_BENHVIEN AS (
    SELECT *
    FROM BENHVIEN BV
), CTE_DONVI AS (
    SELECT *
    FROM DONVIPHUTRACH DV
)
SELECT H.MaHS [Mã HS], P.SoPhong [Số phòng], BV.TenBV [Bệnh viện],
DV.TenDV [Đơn vị phụ trách]
FROM CTE_HOSOBENHNHAN H
    JOIN CTE_PHONG P ON H.MaPhong = P.MaPhong

78
    JOIN CTE_BENHVIEN BV ON P.MaBV = BV.MaBV
    JOIN CTE_DONVI DV ON BV.MaDV = DV.MaDV
GO
- 12→8→7→6: Thống kế bệnh nhân đã tử vong vì Covid-19 đã từng nằm ở phòng thuộc
loại phòng nào đó.
Câu lệnh truy vấn:
SELECT H.MaHS [Mã HS], TU.*, H.HoTen [Họ tên], P.SoPhong [Số phòng]
FROM GIAYBAOTU TU
    JOIN HOSOBENHNHAN H ON TU.MaHS = H.MaHS
    JOIN PHONG P ON H.SoPhong = P.SoPhong
    JOIN LOAIPHONG LP ON P.MaLP = LP.MaLP
WHERE LP.TenLP = N'Điều trị bệnh nhân nặng'
GO
- 16→15→13→8→5→2→1: Cho biết thông tin về phản ứng sau khi tiêm vắc xin sau
mỗi lần tiêm của bệnh nhân qua hồ sơ bệnh nhân được nhân viên bệnh viên lập ở bệnh
viện có đơn vị phụ trách quản lý.
Câu lệnh truy vấn:
SELECT *
FROM PHANUNGSAUTIEM P
    JOIN CTTIEMCHUNG CT ON P.MaPhanung = CT.MaPhanung
    JOIN LICHSUTIEMCHUNG LS ON LS.MaHS = CT.MaHS AND LS.LanTiem
= CT.LanTiem
    JOIN HOSOBENHNHAN HS ON HS.MaHS = CT.MaHS
    JOIN NHANVIEN NV ON NV.MaNV = HS.MaNVLap
    JOIN BENHVIEN BV ON BV.MaBV = NV.MaBV
    JOIN DONVIPHUTRACH DV ON BV.MaDV = DV.MaDV
GO
- 16→15→13→8→5→3: Thống kê các phản ứng của bệnh nhân đã từng tiêm vắc xin
Covid-19 qua mỗi lần tiêm, và hồ sơ được lập bởi nhân viên có chức vụ nào đó.
Câu lệnh truy vấn:
SELECT *
FROM PHANUNGSAUTIEM P
    JOIN CTTIEMCHUNG CT ON P.MaPhanung = CT.MaPhanung
    JOIN LICHSUTIEMCHUNG LS ON LS.MaHS = CT.MaHS AND LS.LanTiem
= CT.LanTiem
    JOIN HOSOBENHNHAN HS ON HS.MaHS = CT.MaHS
79
    JOIN NHANVIEN NV ON NV.MaNV = HS.MaNVLap
    JOIN CHUCVU CV ON NV.MaCV = CV.MaCV
GO
- 16→15→13→8→5→4: Thống kê các phản ứng của bệnh nhân đã từng tiêm vắc xin
Covid-19 qua mỗi lần tiêm, và hồ sơ được lập bởi nhân viên có nơi công tác nào đó.
Câu lệnh truy vấn:
SELECT *
FROM PHANUNGSAUTIEM P
    JOIN CTTIEMCHUNG CT ON P.MaPhanung = CT.MaPhanung
    JOIN LICHSUTIEMCHUNG LS ON LS.MaHS = CT.MaHS AND LS.LanTiem
= CT.LanTiem
    JOIN HOSOBENHNHAN HS ON HS.MaHS = CT.MaHS
    JOIN NHANVIEN NV ON NV.MaNV = HS.MaNVLap
    JOIN CONGTAC CT ON NV.MaNCT = CT.MaNCT
GO
- 16→15→13→8→5→5: Thống kê các phản ứng của bệnh nhân đã từng tiêm vắc xin
Covid-19 qua mỗi lần tiêm, và hồ sơ được lập bởi nhân viên quản lý.
Câu lệnh truy vấn:
SELECT *
FROM PHANUNGSAUTIEM P
    JOIN CTTIEMCHUNG CT ON P.MaPhanung = CT.MaPhanung
    JOIN LICHSUTIEMCHUNG LS ON LS.MaHS = CT.MaHS AND LS.LanTiem
= CT.LanTiem
    JOIN HOSOBENHNHAN HS ON HS.MaHS = CT.MaHS
    JOIN NHANVIEN NV ON NV.MaNV = HS.MaNVLap
    JOIN NHANVIEN QL ON QL.MaNVQL = NV.MaNV
GO
- 16→15→13→8→7→2→1: Thống kê các phản ứng của bệnh nhân đã từng tiêm vắc xin
Covid-19 qua mỗi lần tiêm và nơi điều trị Covid-19 của bệnh nhân ấy.
Câu lệnh truy vấn:
SELECT *
FROM PHANUNGSAUTIEM P
    JOIN CTTIEMCHUNG CT ON P.MaPhanung = CT.MaPhanung
    JOIN LICHSUTIEMCHUNG LS ON LS.MaHS = CT.MaHS AND LS.LanTiem
= CT.LanTiem
    JOIN HOSOBENHNHAN HS ON HS.MaHS = CT.MaHS

80
    JOIN PHONG P ON H.SoPhong = P.SoPhong
    JOIN BENHVIEN BV ON P.MaBV = BV.MaBV
    JOIN DONVIPHUTRACH DV ON BV.MaDV = DV.MaDV
GO
- 16→15→13→8→7→6: Thống kê các phản ứng của bệnh nhân đã từng tiêm vắc xin
Covid-19 qua mỗi lần tiêm và nơi phòng và loại phòng bệnh nhân ấy nằm.
Câu lệnh truy vấn:
SELECT *
FROM PHANUNGSAUTIEM P
    JOIN CTTIEMCHUNG CT ON P.MaPhanung = CT.MaPhanung
    JOIN LICHSUTIEMCHUNG LS ON LS.MaHS = CT.MaHS AND LS.LanTiem
= CT.LanTiem
    JOIN HOSOBENHNHAN HS ON HS.MaHS = CT.MaHS
    JOIN PHONG P ON H.SoPhong = P.SoPhong
    JOIN LOAIPHONG LP ON P.MaLP = LP.MaLP
GO
- 16→15→14: Cho biết thông tin phản ứng sau khi tiêm vắc xin của loại vắc xin nào đó,
ở các lần tiêm khác nhau của mỗi bệnh nhân.
Câu lệnh truy vấn:
SELECT P.*
FROM PHANUNGSAUTIEM P
    JOIN CTTIEMCHUNG CT ON P.MaPhanUng = CT.MaPhanUng
    JOIN LOAIVACXIN LVC ON CT.MaLoaiVC = LVC.MaLoaiVC
GO
- 22→21→19→17→5→2→1: Cho biết phản ứng sau khi dùng thuốc ở mỗi phiếu khám,
do bác sĩ nào đó kê đơn, làm việc ở bệnh viện được phụ trách bởi đơn vị phụ trách.
Câu lệnh truy vấn:
SELECT *
FROM PHANUNGDUNGTHUOC PH
    JOIN CTTOATHUOC CT ON PH.MaPhanUng = CT.MaPhanUng
    JOIN TOATHUOC T ON T.SoPhieuKham = CT.SoPhieuKham
    JOIN PHIEUKHAM PH ON PH.SoPhieuKham = T.SoPhieuKham
    JOIN NHANVIEN NV ON NV.MaNV = PH.MaBS
    JOIN BENHVIEN BV ON BV.MaBV = NV.MaBV
    JOIN DONVIPHUTRACH DV ON BV.MaDV = DV.MaDV
GO

81
- 22→21→19→17→5→3: Cho biết phản ứng sau khi dùng thuốc ở mỗi phiếu khám, do
bác sĩ nào đó kê đơn có chức vụ là bác sĩ.
Câu lệnh truy vấn:
SELECT *
FROM PHANUNGDUNGTHUOC PH
    JOIN CTTOATHUOC CT ON PH.MaPhanUng = CT.MaPhanUng
    JOIN TOATHUOC T ON T.SoPhieuKham = CT.SoPhieuKham
    JOIN PHIEUKHAM PH ON PH.SoPhieuKham = T.SoPhieuKham
    JOIN NHANVIEN NV ON NV.MaNV = PH.MaBS
    JOIN CHUCVU CV ON NV.MaCV = CV.MaCV
WHERE CV.TenCV = N'Bác sĩ'
GO
- 22→21→19→17→5→4: Cho biết phản ứng sau khi dùng thuốc ở mỗi phiếu khám, do
bác sĩ nào đó kê đơn có nơi công tác nào đó.
Câu lệnh truy vấn:
SELECT *
FROM PHANUNGDUNGTHUOC PH
    JOIN CTTOATHUOC CT ON PH.MaPhanUng = CT.MaPhanUng
    JOIN TOATHUOC T ON T.SoPhieuKham = CT.SoPhieuKham
    JOIN PHIEUKHAM PH ON PH.SoPhieuKham = T.SoPhieuKham
    JOIN NHANVIEN NV ON NV.MaNV = PH.MaBS
    JOIN CONGTAC CT ON NV.MaNCT = CT.MaNCT
WHERE CT.TenNCT = N'Bệnh viện Việt Đức'
GO
- 22→21→19→17→5→5: Cho biết phản ứng sau khi dùng thuốc ở mỗi phiếu khám, do
bác sĩ nào đó kê đơn và là nhân viên quản lý.
Câu lệnh truy vấn:
SELECT *
FROM PHANUNGDUNGTHUOC PH
    JOIN CTTOATHUOC CT ON PH.MaPhanUng = CT.MaPhanUng
    JOIN TOATHUOC T ON T.SoPhieuKham = CT.SoPhieuKham
    JOIN PHIEUKHAM PH ON PH.SoPhieuKham = T.SoPhieuKham
    JOIN NHANVIEN NV ON NV.MaNV = PH.MaBS
    JOIN NHANVIEN QL ON QL.MaNVQL = NV.MaNV
GO

82
- 22→21→19→17→8→5→2→1: Cho biết phản ứng sau khi dùng thuốc ở mỗi phiếu
khám, nêu ra thông tin bệnh nhân được nhân viên bệnh viên lập ở bệnh viện có đơn vị
phụ trách quản lý
Câu lệnh truy vấn:
SELECT *
FROM PHANUNGDUNGTHUOC PH
    JOIN CTTOATHUOC CT ON PH.MaPhanUng = CT.MaPhanUng
    JOIN TOATHUOC T ON T.SoPhieuKham = CT.SoPhieuKham
    JOIN PHIEUKHAM PH ON PH.SoPhieuKham = T.SoPhieuKham
    JOIN HOSOBENHNHAN HS ON HS.MaHS = PH.MaHS
    JOIN NHANVIEN NV ON NV.MaNV = HS.MaNVLap
    JOIN BENHVIEN BV ON BV.MaBV = NV.MaBV
    JOIN DONVIPHUTRACH DV ON BV.MaDV = DV.MaDV
GO
- 22→21→19→17→8→5→3: Cho biết phản ứng sau khi dùng thuốc ở mỗi phiếu khám,
nêu ra thông tin bệnh nhân được nhân viên bệnh viên lập cùng với chức vụ của nhân viên
ấy.
Câu lệnh truy vấn:
SELECT *
FROM PHANUNGDUNGTHUOC PH
    JOIN CTTOATHUOC CT ON PH.MaPhanUng = CT.MaPhanUng
    JOIN TOATHUOC T ON T.SoPhieuKham = CT.SoPhieuKham
    JOIN PHIEUKHAM PH ON PH.SoPhieuKham = T.SoPhieuKham
    JOIN HOSOBENHNHAN HS ON HS.MaHS = PH.MaHS
    JOIN NHANVIEN NV ON NV.MaNV = HS.MaNVLap
    JOIN CHUCVU CV ON NV.MaCV = CV.MaCV
GO
- 22→21→19→17→8→5→4: Cho biết phản ứng sau khi dùng thuốc ở mỗi phiếu khám,
nêu ra thông tin bệnh nhân được nhân viên bệnh viên lập cùng với nơi công tác của nhân
viên ấy.
Câu lệnh truy vấn:
SELECT *
FROM PHANUNGDUNGTHUOC PH
    JOIN CTTOATHUOC CT ON PH.MaPhanUng = CT.MaPhanUng
    JOIN TOATHUOC T ON T.SoPhieuKham = CT.SoPhieuKham
    JOIN PHIEUKHAM PH ON PH.SoPhieuKham = T.SoPhieuKham
83
    JOIN HOSOBENHNHAN HS ON HS.MaHS = PH.MaHS
    JOIN NHANVIEN NV ON NV.MaNV = HS.MaNVLap
    JOIN CONGTAC C ON NV.MaNCT = C.MaNCT
GO
- 22→21→19→17→8→5→5: Cho biết phản ứng sau khi dùng thuốc ở mỗi phiếu khám,
nêu ra thông tin bệnh nhân được nhân viên quản lý lập.
Câu lệnh truy vấn:
SELECT *
FROM PHANUNGDUNGTHUOC PH
    JOIN CTTOATHUOC CT ON PH.MaPhanUng = CT.MaPhanUng
    JOIN TOATHUOC T ON T.SoPhieuKham = CT.SoPhieuKham
    JOIN PHIEUKHAM PH ON PH.SoPhieuKham = T.SoPhieuKham
    JOIN HOSOBENHNHAN HS ON HS.MaHS = PH.MaHS
    JOIN NHANVIEN NV ON NV.MaNV = HS.MaNVLap
    JOIN NHANVIEN QL ON QL.MaNVQL = NV.MaNV
GO
- 22→21→19→17→8→7→2→1: Cho biết phản ứng sau khi dùng thuốc ở mỗi phiếu
khám, nêu ra thông tin bệnh nhân cùng nơi điều trị bệnh nhân ấy.
Câu lệnh truy vấn:
SELECT *
FROM PHANUNGDUNGTHUOC PH
    JOIN CTTOATHUOC CT ON PH.MaPhanUng = CT.MaPhanUng
    JOIN TOATHUOC T ON T.SoPhieuKham = CT.SoPhieuKham
    JOIN PHIEUKHAM PH ON PH.SoPhieuKham = T.SoPhieuKham
    JOIN HOSOBENHNHAN HS ON HS.MaHS = PH.MaHS
    JOIN PHONG P ON HS.SoPhong = P.SoPhong
    JOIN BENHVIEN BV ON BV.MaBV = P.MaBV
    JOIN DONVIPHUTRACH DV ON BV.MaDV = DV.MaDV
GO
- 22→21→19→17→8→7→6: Cho biết phản ứng sau khi dùng thuốc ở mỗi phiếu khám,
nêu ra thông tin bệnh nhân cùng nơi chăm sóc bệnh nhân ấy.
Câu lệnh truy vấn:
SELECT *
FROM PHANUNGDUNGTHUOC PH
    JOIN CTTOATHUOC CT ON PH.MaPhanUng = CT.MaPhanUng
    JOIN TOATHUOC T ON T.SoPhieuKham = CT.SoPhieuKham

84
    JOIN PHIEUKHAM PH ON PH.SoPhieuKham = T.SoPhieuKham
    JOIN HOSOBENHNHAN HS ON HS.MaHS = PH.MaHS
    JOIN PHONG P ON HS.SoPhong = P.SoPhong
    JOIN LOAIPHONG LP ON LP.MaLP = P.MaLP
GO
- 22→21→20: Cho biết thông tin phản ứng sau khi dùng thuốc, ở các lần khám khác
nhau của mỗi bệnh nhân.
Câu lệnh truy vấn:
SELECT *
FROM PHANUNGDUNGTHUOC PH
    JOIN CTTOATHUOC CT ON PH.MaPhanUng = CT.MaPhanUng
    JOIN THUOC T ON CT.MaThuoc = T.MaThuoc
GO

85

You might also like