Mỗi nhân viên của bnh vin lm vic trong một hoặc nhiều khu cha trị.. Một bc sĩ có thể thực hin nhiều ln cha trị cho nhiều bnh nhân.. Một bnh nhân được cha trị nhiều ln bi nh
Trang 1BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP HỒ CHÍ MINH
KHOA CÔNG NGH THÔNG TIN Ệ
B O C O CU I K
Đề tài: XÂY DỰNG MÔ HÌNH ERD VÀ LƯỢC ĐỒ QUAN
HỆ - SQL CHO BÀI TON QUẢN LÝ MỘT ĐƠN VỊ
Giảng viên hướng dẫn : ThS Nguyn Đc Cương
Nhm thực hiện : Nhm 11
Lớp : DHTMDT17E
M ôn : Cơ s liệu – d 420300391605
Niên kha : HK2 (2022 – 2023)
TP.HCM, ngày 27 tháng 05 năm 2023
Trang 2Cơ s d liu ThS Nguyn Đc Cương
2
DANH S CH NHM
3 Nguyn Tr n Kh nh Vân 21065651 Thành viên
Đ TI THỰC HI N Ệ
A - Phần 1 – Mô hình ERD và lược đồ quan hệ - SQL
1 Xây dựng mô hình ER
2 Chuyển sang lược đồ quan h
3 Ci đặt lược đồ quan h vo trong h quản trị CSDL SQL Server – nhập liu mỗi bảng ít nhất 5 record
4 Tự suy nghĩ ra mỗi thnh viên 2 câu hỏi truy vấn (không trùng nhau) v giải đp bằng lnh SQL (Xem ví dụ minh họa cc câu hỏi trong bi tập 1)
Bài 8:
Một bnh vin có nhiều khu cha trị Một khu cha trị có số của khu (định danh) v tên Bnh nhân gồm hai loại: bnh nhân nội trú v bnh nhân ngoại trú Bnh nhân
có mã bnh nhân , tên v ngy sinh Cc bc sĩ có mã bc sĩ v tên Bc sĩ có thể tiếp nhận hoặc điều trị bnh nhân Mỗi giưng bnh có số giưng, số phòng v số khu cha trị Thuốc men hoặc dụng cụ dùng để cha bnh được gọi chung l vật tư, có
mã, đặc tả v đơn gi Cc nhân viên trong bnh vin có mã số v tên Một sự cha trị l bất kỳ một cuộc xét nghim hoặc một công vic điều trị no đó m một bc sĩ thực hin cho một bnh nhân Một sự cha trị có định danh l một mã số bao gồm số v tên của sự cha trị đó Mỗi nhân viên của bnh vin lm vic trong một hoặc nhiều khu cha trị Mỗi khu có ít nhất một nhân viên Bnh vin cn thống kê số gi lm vic trong một tun của mỗi nhân viên tại một khu cha trị Mỗi khu cha trị có một
y tá trưng Bnh nhân ngoại trú không có giưng nằm Giưng có thể không có bnh nhân Một bnh nhân đang được cha trị có một bc sĩ theo dõi Một bc sĩ có thể theo dõi nhiều bnh nhân hoặc không theo dõi bnh nhân no
Một bc sĩ có thể thực hin nhiều ln cha trị cho nhiều bnh nhân Một bnh nhân được cha trị nhiều ln bi nhiều bc sĩ Bnh vin cn biết mỗi ln cha trị, bnh nhân được cha trị bi bc sĩ no, ngy cha trị, thi gian cha trị v kết quả Một bnh nhân cn nhiều thuốc men v dụng cụ Mỗi loại thuốc men hay dụng cụ có thể được sử dụng cho nhiều bnh nhân hoặc chưa được sử dụng Bnh vin cn thống kê ngy, thi gian, số lượng v tổng số tiền (số lượng x đơn gi) cho một loại thuốc men hay dụng cụ mỗi ln sử dụng cho bnh nhân
Trang 33
BẢNG ĐNH GI THNH VIÊN NH M
MSSV Họ và tên
Công việc được phân công Mức
độ
hoàn thành
Đánh
giá của giáo vi ên
21102021
Nguyn
Hong
Cưng
+ Vẽ lược đồ ERD, Chuyển đổi sang lược đồ quan h
+ Tạo Database, bảng Khu cha tr bảng b nh nhân
+ Nhập liu bảng Khu cha trị, bảng b nh nhân
+ 1 câu truy v n l ng, 1 câu updateấ ồ + Chạy code
Câu 2
Câu 3 100%
21093951 Nguyn
Khnh
Ngân
+ Vẽ lược đồ ERD, Chuyển đổi sang lược đồ quan h
+ Tạo bảng c sĩ bảng GiưB , ng
b nh, b ng B ả nh nhân sử dụng vật t + Nhập liu bảng B c s , ĩ bảng Giưng bnh, bảng Bnh nhân sử
dụng vật tư + 2 câu truy vấn thông thưng, 1 câ update
+ Chạy code, T ng h p Word ổ ợ
Câu 1
Câu 8 100%
21065651
Nguyn
Trn
Kh nh
Vân
+ Vẽ lược đồ ERD, Chuyển đổi sang lược đồ quan h
+ Tạo bảng Vật tư bảng Sự Cha trị,,
b ng Nhân viên, bả ảng Nhân viên àl
vi c + Nhập liu bảng Vật tư bảng Sự ,
cha trị ả, b ng Nhân viên làm vic,
bảng Nhân vi ên + 1 câu truy vấ ồngn l , 2 câu delete + Chạy Code, T ng h p Word ổ ợ
Câu 4 Câu 5 100%
Trang 4Cơ s d liu ThS Nguyn Đc Cương
4
MC LC
PHẦN A: XÂY DỰNG LƯỢC ĐỒ ERD VÀ TẠO CƠ SỞ DỮ LIỆU 5
1 Xây dựng mô h nh ER 5 ì 2 Chuyển sang lược đồ quan h 5
3 Ci đặt lược đồ quan h vo trong h quản trị CSDL SQL Server 6
4 Câu h i truy v n 11 ỏ ấ PHẦN B: CHUẨN HA DỮ LIỆU 14
Bi 1/ 14
Bi 2/ 15
Bi 3/ 15
Bi 4/ 15
Bi 5/ 16
Bi 8/ 16
Too long to read on your phone? Save
to read later on your computer
Save to a Studylist
Trang 55
1. Xây dng mô h nh ER ì
2. Chuyn sang lược đồ quan hệ
Khu cha trị: (Số khu cha trị, Tên khu cha trị, Mã nhân viên )
Khóa chính: Số khu cha trị
Khóa ngoại: Mã nhân viên
Nhân viên: (Mã nhân viên, Tên nhân viên, Số khu cha trị)
Khóa chính: Mã nhân viên
Khóa ngoại: Số khu cha trị
Trang 6Cơ s d liu ThS Nguyn Đc Cương
6
Bệnh nhân: (Mã số bnh nhân, Tên bnh nhân, Ngy sinh, Loại bnh nhân, Số
giưng, Mã bc sĩ )
Khóa chính: Mã số bnh nhân
Khóa ngoại: Số giưng, Mã bc sĩ
Bác sĩ: (Mã bc sĩ, Tên bc sĩ)
Khóa chính: Mã bác sĩ
Vật tư: (Mã vật tư, đặc tả, đơn gi)
Khóa chính: Mã vật tư
Giường bệnh: (Số giưng, Số phòng, Số khu cha trị, Mã số bnh nhân)
Khóa chính: Số giưng
Khóa ngoại: Mã số bnh nhân
Bệnh nhân sử dụng vật tư: (Mã số bnh nhân, Mã vật tư, Ngy sử dụng, Thi gian dùng, Số lượng, Tổng tiền)
Khóa chính: Mã số bnh nhân, Mã vật tư
S chữa trị: (Mã bc sĩ mã số bnh nhân Mã số cha trị, Ngy cha trị, Thi , , gian, Kết quả )
Khóa chính: Mã bc sĩ, mã số bnh nhân, Mã số cha trị
Nhân viên làm việc: (Mã nhân viên, số khu cha trị, số gi lm vic) Khóa chính: Mã nhân viên, Số khu cha trị
3. Cài đặt lược đồ quan hệ vào trong hệ quản trị CSDL SQL Server
3.1 Tạo cơ s liệ d u
CREATE DATABASE QLBV
ON PRIMARY
(NAME=QLBV_Data,
FILENAME='D:\mysql\QLBV_Data.mdf',
SIZE=10MB,
MAXSIZE=15MB,
FILEGROWTH=20%)
LOG ON
( NAME=QLSV_Log,
FILENAME= 'D:\mysql\QLBV_Log.ldf',
SIZE=3MB,
MAXSIZE=5MB,
) FILEGROWTH=1MB
3.2 T o bạ ảng
use QLBV
3.2.1 T o b ng khu ch a tr
Trang 77
CREATE TABLE KhuChuaTri
(
SoKhuChuaTri VARCHAR(20) PRIMARY KEY,
TenKhuChuaTri NVARCHAR(50),
MaNhanVien VARCHAR(20)
);
3.2.2 T o b ng "B nh nhân"
CREATE TABLE BenhNhan
(
MaSoBenhNhan VARCHAR(20) PRIMARY KEY,
TenBenhNhan NVARCHAR(50 ),
LoaiBenhNhan Nvarchar(50 ),
NgaySinh DATETIME,
MaBacSi VARCHAR(20),
SoGiuong VARCHAR(20)
);
3.2.3 T o b
CREATE TABLE BacSi
(
MaBacSi VARCHAR(20) PRIMARY KEY,
TenBacSi NVARCHAR(50)
);
3.2.4 T o b ng b nh"
CREATE TABLE GiuongBenh
(
SoGiuong VARCHAR(20) PRIMARY KEY,
SoPhong VARCHAR(20 ),
SoKhuChuTri VARCHAR(20 ),
FOREIGN KEY (SoKhuChuaTri) REFERENCES KhuChuaTri (SoKhuChuaTri),
MaSoBenhNhan VARCHAR(20),
FOREIGN KEY (MaSoBenhNhan) REFERENCES BenhNhan (MaSoBenhNhan)
);
3.2.5 T o b ng "V
CREATE TABLE VatTu
(
MaVatTu VARCHAR(20) PRIMARY KEY,
Trang 8Cơ s d liu ThS Nguyn Đc Cương
8
DacTa NVARCHAR(100 ),
DonGia DECIMAL(10, 2)
);
3.2.6 T o b ng "S ch a tr "
CREATE TABLE SuChuaTri
(
MaSoChuaTri VARCHAR(20) PRIMARY KEY,
TenSuChuaTri NVARCHAR(100 ),
So VARCHAR(10)
NgayChuaTri DATE,
ThoiGian TIME,
KetQua NVARCHAR (50 ),
MaBacSi VARCHAR(20),
MaSoBenhNhan VARCHAR(20)
);
3.2.7 T o b ng "Nhân viên "
CREATE TABLE NhanVien
(
MaNhanVien VARCHAR(20) PRIMARY KEY,
TenNhanVien NVARCHAR(50 ),
SoKhuChuaTri VARCHAR(20)
FOREIGN KEY (SoKhuChuaTri) REFERENCES KhuChuaTri (SoKhuChuaTri)
);
3.2.8 T o b ng
CREATE TABLE NhanVienLamViec
(
MaNhanVien VARCHAR(20),
SoKhuChuaTri VARCHAR(20),
SoGioLamViec VARCHAR (20)
);
3.2.9 T o b nh Nhân S D ng V
CREATE TABLE BenhNhanSuDungVatTu
(
MaVatTu VARCHAR(20),
MaBenhNhan VARCHAR(20),
NgaySuDung DATE,
ThoiGianDung TIME,
Trang 99
SoLuong INT,
TongSoTien FLOAT,
DonGia DECIMAL(10, 2)
);
3.2.10 T o thu c tính khóa
ALTER TABLE KhuChuaTri
ADD FOREIGN KEY (MaNhanVien) REFERENCES NhanVien(MaNhanVien ); ALTER TABLE BenhNhan
ADD FOREIGN KEY (MaBacSi) REFERENCES BacSi(MaBacSi );
ALTER TABLE BenhNhan
ADD FOREIGN KEY (SoGiuong) REFERENCES GiuongBenh(SoGiuong );
ALTER TABLE NhanVienLamViec
ADD PRIMARY KEY (MaNhanVien);
ALTER TABLE NhanVienLamViec
ADD PRIMARY KEY (SoKhuChuaTri);
ALTER TABLE BenhNhanSuDungVatTu
ADD PRIMARY KEY (MaSoBenhNhan);
ALTER TABLE BenhNhanSuDungVatTu
ADD PRIMARY KEY (MaVatTu);
ALTER TABLE SuChuaTri
ADD PRIMARY KEY (MaBacSi);
ALTER TABLE SuChuaTri
ADD PRIMARY KEY (MaSoBenhNhan);
3.3. Nhập d liệu vào bảng
3.3.1 Thêm d u vào b ng "Khu ch a tr " li
INSERT INTO KhuChuaTri (SoKhuChuaTri, TenKhuChuaTri)VALUES ('KCT001', N'Khu ngoại tổng quát' ),
('KCT002', N'Khu phục hồi chc năng'),
('KCT003', N'Khu tim mạch cấp cu'),
('KCT004', N'Khu b nh nhân nh ' ẹ ),
('KCT005', N'Khu sinh s n' ả );
Trang 10Cơ s d liu ThS Nguyn Đc Cương
10
3.3.2 Thêm d u vào b ng "B nh nhân" li
INSERT INTO BenhNhan (MaSoBenhNhan, TenBenhNhan, LoaiBenhNhan, NgaySinh) VALUES
('BN001', N'Nguyn Văn Minh',N'n i trú', '1990-01-01' ộ ),
('BN002', N'Nguy n Th B ị inh',N'n i trú' ,'1985-02-15' ộ ),
('BN003', N'Phan Thị Lan',N'n i trú', '1994-ộ 09-25' ),
('BN004', N'Trn Xuân Nguyên,N'ngo i trú', '1986-06-12' ạ ),
('BN005', N'Đinh Gia Huy',N'ngo i trú', '1999-03-08' ạ );
3.3.3 Thêm d u vào bli
INSERT INTO BacSi (MaBacSi, TenBacSi) VALUES
('BS001', N'Tr n Kim Min' ),
('BS002', N'Nguy n Thi Thơ ),'
('BS003', N'Nguyn Văn Ngân'),
('BS004', N'Lê Th ị Vân ),'
('BS005', N'Trn Văn Cưng' );
3.3.4 Thêm d u vào bli ng b nh"
INSERT INTO GiuongBenh (SoGiuong, SoPhong, SoKhuChuaT ) VALUES ri ('GB001', 'Phòng 1', 'KCT001' ),
('GB002', 'Phòng 2', 'KCT002' ),
('GB003', 'Phòng 3', 'KCT003' ),
('GB004', 'Phòng 4', 'KCT004' ),
('GB005', 'Phòng 5', 'KCT005' );
3.3.5 Thêm d u vào b ng "Vli
INSERT INTO VatTu (MaVatTu DacTa, , DonGia) VALUES
('VT001', Bình th Oxy', 10.50 N' ),
('VT002', Kim Tiêm', 5.25 N' ),
('VT003', Panadol', 8.90 N' ),
('VT004', ThuN' ốc cảm’, 6.70 ),
('VT005', N'Băng gạc', 9.50 );
3.3.6 Thêm d u vào b ng "S li Ch a tr "
INSERT INTO SuChuaTri (MaSoChuaTri, TenSuChuaTri, NgayChuaTri, ThoiGian, KetQua, MaBacSi) VALUES
('CT001', N'Th n', '2023-05-22', '08:45:00', N'C n thậ ực hin ph u thu , ẫ ật' 'BS001' ),
('CT002', N'Tim m ch', '2023-05-23', '13:30:00', ạ N'Đang điều tr ', 'BS002' ị ), ('CT003', N'Nội tiết', '2023-05-24', '10:00:00', N'Đã hồi phục', 'BS003' ), ('CT004', N'Hô h p','2023-05-20', '16:30:00', N'Có th xu t vi n', 'BS004' ấ ể ấ ), ('CT005', N'Tiêu hóa','2023-05-21', '11:00:00', N'Cn được theo dõi', 'BS005' );
Trang 1111
3.3.7 Thêm d u vào b ng "Nhân viên " li
INSERT INTO NhanVien (MaNhanVien, TenNhanVien, SoKhuChuaTri) VALUES
('NV001', N'Phan Thị Loan', 'KCT001' ),
('NV002', N'Lương Văn Minh', 'KCT002' ),
('NV003', N'Hoàng Th ị Hon', 'KCT003' ),
('NV004', N'Phạm Thị Dung', 'KCT004' ),
('NV005', N'Huỳnh Văn Em', 'KCT005' );
3.3.8 Thêm d u vào b ng "Nhân viên Làm Vi c" li
INSERT INTO NhanVienLamViec (MaNhanVien, SoKhuChuaTri, SoGioLamViec) VALUES
('NV001', 'KCT001', N'42 GI ' Ờ ),
('NV002', 'KCT002', N'18 GI ' Ờ ),
('NV003', 'KCT003', N'36 GI ' Ờ ),
('NV004', 'KCT004', N'50 GI ' Ờ ),
('NV005', 'KCT005', N'56 GI ' Ờ );
3.3.9 Thêm d u vào b ng " B nh Nhân S D ng Vli "
INSERT INTO BenhNhanSuDungVatTu (MaVatTu, MaSoBenhNhan, NgaySuDung, ThoiGianDung, SoLuong) VALUES
('VT001', 'BN001', '2023-05-19', '09:15:00', 3, 8.90 ),
('VT002', 'BN002', '2023-05-20', '15:45:00', 4, 6.70 ),
('VT003', 'BN003', '2023-05-21', '10:30:00', 2, 9.50 ),
('VT004', 'BN004', '2023-05-17', '16:15:00', 5, 15.60 ),
('VT005', 'BN005', '2023-05-18', '11:30:00', 2, 12.30 );
4. Câu hi truy v n: 2 câu truy vấ ấn thông thường + 2 câu update + 2 câu delete + 2 câu truy vấn lồng + 2 câu sub-query v già ả á i đ p bng lệnh SQL
2 câu truy vấn thông thường:
a/ Hiển th s ị ố giưng, s phòng và tên khu chố a trị của tất cả cc giưng bnh:
Giả á i đ p b ng lệnh SQL:
SELECT SoGiuong, SoPhong, TenKhuChuaTri
FROM GiuongBenh
JOIN KhuChuaTri ON GiuongBenh.SoKhuChuaTri = KhuChuaTri SoKhuChuaTri;
K t qu ế ả
Trang 12Cơ s d liu ThS Nguyn Đc Cương
12
b/ Lấy danh sch cc giưng b nh trong phòng:
Giả á i đ p b ng lệnh SQL:
"Phòng 1" và hiển th s ị ố giưng và s khu ố
SELECT SoGiuong, SoKhuChuaTri
FROM GiuongBenh
WHERE SoPhong = 'Phòng 1';
K t qu ế ả
2 câu update:
a/ Cập nhật thông tin của bnh nhân có mã 'BN002':
Giả á i đ p b ng lệnh SQL:
UPDATE BenhNhan
SET TenBenhNhan = N'Nguy n Th ị Cún', LoaiBenhNhan = N'ngo i trú' ạ WHERE MaSoBenhNhan = 'BN002';
b/ C p nh t kậ ậ ết quả cha trị ủa b c nh nhân có mã 'BN003':
Giả á i đ p b ng lệnh SQL:
UPDATE SuChuaTri
SET KetQua = N'Đã cha trị thành công'
WHERE MaSoChuaTri= 'CT003';
2 câu delete:
a/ Xóa bnh nhân có tên 'Trn Xuân Nguyên' khỏi cơ s liu: d
Giả á i đ p b ng lệnh SQL:
DELETE FROM BenhNhan
WHERE TenBenhNhan = 'Trn Xuân Nguyên';
b/ Xóa thông tin v mề ột bnh nhân đã được cha trị có mã bnh nhân là 'BN003':
Trang 1313
Giả á i đ p b ng lệnh SQL:
DELETE FROM SuChuaTri
WHERE MaSoBenhNhan= ‘BN003';
2 câu truy vấn lồng:
a/ Hiển thị tên bnh nhân và tên vật tư của các ln s d ng vử ụ ật tư có số lượng l n ớ hơn 3:
Giả á i đ p b ng lệnh SQL:
SELECT TenBenhNhan, VatTu.DacTa
FROM BenhNhan
JOIN BenhNhanSuDungVatTu ON BenhNhan.MaSoBenhNhan =
BenhNhanSuDungVatTu.MaSoBenhNhan
JOIN VatTu ON BenhNhanSuDungVatTu.MaVatTu = VatTu.MaVatTu
WHERE BenhNhanSuDungVatTu.SoLuong > 3;
K t qu ế ả
b/ Hiển th ị tên bnh nhân, tên vật tư v tổng ti n cề ủa tất cả các l n s d ng v ử ụ ật tư:
Giả á i đ p b ng l nh SQL: ệ
UPDATE BenhNhanSuDungVatTu SET TongSoTien= SoLuong*DonGia SELECT TenBenhNhan, VatTu.DacTa, TongSoTien
FROM BenhNhanSuDungVatTu
JOIN BenhNhan ON BenhNhanSuDungVatTu.MaSoBenhNhan =
BenhNhan.MaSoBenhNhan
JOIN VatTu ON BenhNhanSuDungVatTu.MaVatTu = VatTu.MaVatTu
K t qu ế ả
Trang 14Cơ s d liu ThS Nguyn Đc Cương
14
PHẦN B: CHUẨN HA DỮ LIỆU
Bài 1/ Cho lược đồ CSDL
Q(TENTAU,LOAITAU,MACHUYEN,LUONGHANG,BENCANG,NGAY) F={TENTAU → LOAITAU MACHUYEN → TENTAU, LUONGHANG
TENTAU,NGAY → BENCANG, MACHUYEN}
a) Hãy tìm tập phủ tối thiểu của F
b) Tìm tất cả cc khóa của Q
Bài làm a) Ta có F={TENTAU LOAITAU; MACHUYEN TENTAU; MACHUYEN → →
→ LUONGHANG; TENTAU, NGAY →BENCANG; TENTAU, NGAY → MACHUYEN}
Kiểm tra phụ thuộc hm dư thừa:
TENTAU → LOAITAU: TENTAU+ trừ TENTAU → LOAITAU: TENTAU+ = {TENTAU} không có LOAITAU vậy TENTAU → LOAITAU không dư thừa
MACHUYEN → TENTAU: MACHUYEN+ trừ MACHUYEN → TENTAU: MACHUYEN+ = {MACHUYEN, LUONGHANG không có TENTAU} vậy MACHUYEN →TENTAU không dư thừa
MACHUYEN → LUONGHANG: MACHUYEN+ trừ MACHUYEN → LUONGHANG: MACHUYEN+ ={ MACHUYEN, TENTAU, LOAITAU} không có LUONGHANG vậy MACHUYEN →LUONGHANG không dư thừa
TENTAU, NGAY →BENCANG: TENTAU, NGAY+ không dùng TENTAU, NGAY →BENCANG: TENTAU, NGAY+ = {TENTAU, NGAY, MACHUYEN, LUONGHANG không có BENCANG vậy TENTAU, NGAY
→BENCANG không dư thừa
TENTAU, NGAY → MACHUYEN: TENTAU, NGAY+ không dùng TENTAU, NGAY →MACHUYEN: TENTAU, NGAY+ = {TENTAU, NGAY, LOAITAU, BENCANG, MACHUYEN} có MACHUYEN vậy TENTAU, NGAY → MACHUYEN thừa
TENTAU → LOAITAU; MACHUYEN → TENTAU; MACHUYEN → LUONGHANG; TENTAU, NGAY BENCANG →
Xét TENTAU, NGAY BENCANG →
Kiểm tra TENTAU thừa: NGAY+ = {NGAY } không có BENCANG trong NGAY+ vậy TENTAU không thừa