You are on page 1of 83

10.

QLY KTX
1. GIỚI THIỆU ĐỀ TÀI

Mục đích:

- Tổng thể: Hỗ trợ việc quản lý các vấn đề liên quan đến ký túc xá.

- Cụ thể:

+ Giúp nhân viên quản lý và ban giám đốc quản lý các vấn đề như: số phòng đã đầy, số
phòng còn trống, danh sách sinh viên đang ở nội trú tại ký túc xá, hóa đơn – phiếu thu
hàng tháng/hàng kỳ,…

+ Giúp nhân viên quản lý và ban giám đốc tra cứu thông tin cần thiết, lập các báo cáo
thống kê nhằm hỗ trợ việc ra chính sách và quyết định.

+ Giúp nhân viên quản lý và ban giám đốc làm việc chính xác và nhanh chóng hơn
(nhờ vào việc thao tác trên hệ thống máy tính thay vì thủ công như trước đây).

+ Giúp ban giám đốc có cái nhìn tổng thể hơn khi giúp họ quản lý từ nhân sự (nhân
viên quản lý), tài sản, phòng ký túc xá,… đến sinh viên và những vi phạm kỷ luật của
sinh viên.

Phạm vi:

- Hệ thống được triển khai trên quy mô ký túc xá trường đại học.

III. Đối tượng sử dụng

Tài liệu này được sử dụng với các đối tượng như sau:

- Developer: Có trách nhiệm trong việc phát triển thiết kế hệ thống chi tiết, thực hiện
kiểm tra chức năng, kiểm tra tích hợp hệ thống.

- UI Designer: Lên kế hoạch và phát triển phần UI.

- Tester: Lên kế hoạch kiểm thử và xác thực kết quả.

- Đội tài liệu: Chịu trách nhiệm viết các hướng dẫn sử dụng cho ứng dụng

- Đội UAT: Chịu trách nhiệm thực hiện các phiên kiểm tra chấp nhận người dùng với
người dùng cuối.

1.2. Mục đích nghiên cứu

Tối ưu hóa quản lý ký túc xá: Phân tích cơ sở dữ liệu kí túc xá có thể giúp tối ưu hóa quản lý
ký túc xá bằng cách thu thập, lưu trữ và xử lý thông tin về sinh viên, phòng trọ, các dịch vụ
hỗ trợ và các hoạt động liên quan đến kí túc xá.
Nâng cao chất lượng dịch vụ: Bằng cách thu thập thông tin về sở thích, nhu cầu, yêu cầu và
đánh giá của sinh viên, nhân viên quản lý có thể cung cấp dịch vụ tốt hơn và đáp ứng nhu
cầu của sinh viên một cách tốt nhất.

Tăng hiệu quả hoạt động: Việc phân tích cơ sở dữ liệu kí túc xá có thể giúp tăng hiệu quả
hoạt động của kí túc xá, giảm thiểu tình trạng lãng phí và sự cố hỏng hóc trong quá trình
quản lý. Ngoài ra còn giúp các nhà quản lý dự đoán nhu cầu phòng trọ và đưa ra các quyết
định liên quan đến xây dựng thêm phòng trọ, nâng cấp cơ sở vật chất và cải thiện các dịch vụ
hỗ trợ.

Tăng tính khả thi của quy trình quản lý: Giúp nhà quản lý hiểu rõ hơn về quy trình quản lý
và các vấn đề liên quan đến kí túc xá. Nhờ đó, quản lý có thể đưa ra các quyết định đúng đắn
và hiệu quả hơn khi đối mặt với các vấn đề liên quan đến kí túc xá.

2. TỔNG QUAN YÊU CẦU

2.1. Thiết kế hệ thống

a. Xác định thực thể

Thực thể Diễn Mô tả


giải

KHOAVIE Khoa Thực thể bao gồm tên khoa viện của sinh viên đăng
N viện kí ở tại ký túc xá. Mỗi khoa/ viện được xác định bởi
một mã khóa duy nhất và tên khoa

LOP Lớp Thực thể bao gồm lớp của sinh viên đăng ký ở
trong kí túc xá của trường. Mỗi lớp được xác định
bởi một mã lớp duy nhất, tên lớp và mã khoa.

SINHVIEN Sinh Thực thể bao gồm các sinh viên có nhu cầu truy
Viên cập vào hệ thống ký túc xá. Mỗi sinh viên được xác
định bởi mã sinh viên duy nhất, tên sinh viên, ngày
sinh, giới tính, căn cước công dân, SĐT, địa chỉ.

NHANVIE Nhân Thực thể bao gồm các nhân viên làm việc trong ký
N viên túc xá. Mỗi nhân viên được xác định bởi mã nhân
viên duy nhất, tên, chức vụ, giới tính, lương, SĐT,
địa chỉ của nhân viên.

DICHVU Dịch vụ Thực thể bao gồm các dịch vụ có trong kí túc xá.
Mỗi dịch vụ được xác định bởi một mã dịch vụ duy
nhất, tên dịch vụ, đơn giá.

HOADON Hóa đơn Thực thể bao gồm các hóa đơn như hóa đơn điện,
nước… Mỗi hóa đơn được xác định bởi một mã
hóa đơn duy nhất, tên hóa đơn, ngày hóa đơn.

PHIEUSDD Phiếu sử Thực thể bao gồm các phiếu sử dụng dịch vụ của
V dụng ký túc xác. Mỗi phiếu sử dụng dịch vụ được xác
dịch vụ định bởi một mã phiếu duy nhất, tên phiếu, thời
gian sử dụng dịch vụ.

LOAIPHO Loại Thực thể bao gồm các loại phòng có ở trong ký túc
NG phòng xá. Mỗi loại phòng được xác định bởi một mã loại
phòng duy nhất, tên loại phòng, số người tối đa,
tiền điện, tiền nước, giá phòng và phòng nam hay
nữ.

PHONG Phòng Thực thể bao gồm các phòng trong ký túc xá. Mỗi
phòng được xác định bởi mã phòng duy nhất, tên
phòng, số chỗ.

HOPDONG Hợp Thực thể bao gồm hợp đồng đăng ký và huỷ đăng
Đồng kí của sinh viên. Hợp Đồng được lưu lại trong cơ
sở dữ liệu với các thông tin như mã hợp đồng (duy
nhất), ngày lập, ngày bắt đầu, ngày kết thúc, số tiền
phải đóng.
2. Xác định các thuộc tính của thực thể

Thực thể Thuộc tính Diễn giải Kiểu dữ


liệu

KHOAVIE MAKHOA Mã khoa nvarchar(5


N 0)

TENKHOA Tên khoa nvarchar(5


0)

LOP MALOP Mã lớp nvarchar(5


0)

TENLOP Tên lớp nvarchar(5


0)

MAKHOA Mã khoa nvarchar(5


0)

SINH VIEN MASV Mã sinh viên nvarchar(5


0)

HOTENSV Họ tên sinh viên nvarchar(5


0)

NGAYSINH Ngày sinh date

GIOITINH Giới tính nvarchar(5


0)
CCCD Căn cước công dân nvarchar(5
0)

SDT Số điện thoại nvarchar(5


0)

DIACHI Địa chỉ nvarchar(5


0)

NHANVIE MANV Mã nhân viên nvarchar(5


N 0)

HOTENNV Họ tên nhân viên nvarchar(5


0)

NGAYSINH Ngày sinh date

GIOITINH Giới tính nvarchar(5


0)

DICHVU MADV Mã dịch vụ nvarchar(5


0)

TENDICHVU Tên dịch vụ nvarchar(5


0)

DONGIA Đơn giá int

HOADON MAHD Mã hóa đơn nvarchar(5


0)
TENHD Tên hóa đơn nvarchar(5
0)

NGAYHD Ngày hóa đơn date

PHIEUSDD MAPHIEU Mã phiếu nvarchar(5


V 0)

TENPHIEU Tên phiếu nvarchar(5


0)

THOIGIANSDDV Thời gian sử dụng date


dịch vụ

LOAIPHO MALOAIPHONG Mã loại phòng nvarchar(5


NG 0)

TENLOAIPHONG Tên loại phòng nvarchar(5


0)

SONGUOITOIDA Số người tối đa int

TIENDIEN Tiền điện int

TIENNUOC Tiền nước int

GIAPHONG Giá phòng int

PHONGNAMHAY Phòng nam hay nữ nvarchar(5


NU 0)
PHONG MAPHONG Mã phòng nvarchar(5
0)

TENPHONG Tên phòng nvarchar(5


0)

SOCHO Số chỗ int

HOPDONG MAHOPDONG Mã hợp đồng nvarchar(5


0)

NGAYLAP Ngày lập date

NGAYBATDAU Ngày bắt đầu date

NGAYKETTHUC Ngày kết thúc date

SOTIENPHAIDO Số tiền phải đóng int


NG

4. CÂU LỆNH TRUY VẤN

4.1. Khởi tạo

● Tạo bảng KHOA / VIEN

CREATE TABLE [dbo].[KHOA/VIEN](

[MAKHOA] [nvarchar](50) NOT NULL,

[TENKHOA] [nvarchar](50) NULL,

CONSTRAINT [PK_KHOA/VIEN] PRIMARY KEY CLUSTERED

(
[MAKHOA] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,

IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS

= ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

go

● Tạo bảng LOP

CREATE TABLE [dbo].[LOP](

[MALOP] [nvarchar](50) NOT NULL,

[TENLOP] [nvarchar](50) NULL,

[MAKHOA] [nvarchar](50) NULL,

CONSTRAINT [PK_LOP] PRIMARY KEY CLUSTERED

[MALOP] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,

IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS

= ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

go

● Tạo bảng SINHVIEN

CREATE TABLE [dbo].[SINHVIEN](

[MASV] [nvarchar](50) NOT NULL,

[HOTEN] [nvarchar](50) NULL,

[NGAYSINH] [date] NULL,

[GIOITINH] [nvarchar](50) NULL,


[CCCD] [nvarchar](50) NULL,

[SDT] [nvarchar](50) NULL,

[DIACHI] [nvarchar](50) NULL,

[MALOP] [nvarchar](50) NULL,

CONSTRAINT [PK_SINHVIEN] PRIMARY KEY CLUSTERED

[MASV] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,

IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS

= ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

go

● Tạo bảng NHANVIEN

CREATE TABLE [dbo].[NHANVIEN](

[MANV] [nvarchar](50) NOT NULL,

[HOTEN] [nvarchar](50) NULL,

[NGAYSINH] [date] NULL,

[GIOITINH] [nvarchar](50) NULL,

CONSTRAINT [PK_NHANVIEN] PRIMARY KEY CLUSTERED

[MANV] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,

IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS

= ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]
go

● Tạo bảng DICHVU

CREATE TABLE [dbo].[DICHVU](

[MADV] [nvarchar](50) NOT NULL,

[TENDV] [nvarchar](50) NULL,

[DVT] [nvarchar](50) NULL,

[DONGIA] [int] NULL,

[MANV] [nvarchar](50) NULL,

CONSTRAINT [PK_DICHVU] PRIMARY KEY CLUSTERED

[MADV] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,

IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS

= ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

go

DROP TABLE DICHVU

● Tạo bảng HOADON

CREATE TABLE [dbo].[HOADON](

[MAHD] [nvarchar](50) NOT NULL,

[TENHD] [nvarchar](50) NULL,

[NGAYHD] [date] NULL,

[MASV] [nvarchar](50) NULL,

CONSTRA INT [PK_HOADON] PRIMARY KEY CLUSTERED

(
[MAHD] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,

IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS

= ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

go

● Tạo bảng PHIEUSDDV

CREATE TABLE [dbo].[PHIEUSDDV](

[MAPHIEU] [nvarchar](50) NOT NULL,

[TENPHIEU] [nvarchar](50) NULL,

[THOIGIANSDDV] [date] NULL,

[MAHD] [nvarchar](50) NULL,

[MADV] [nvarchar](50) NULL,

[SOLUONG] [int] NULL,

CONSTRAINT [PK_PHIEUSDDV] PRIMARY KEY CLUSTERED

[MAPHIEU] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,

IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS

= ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

go

● Tạo bảng LOAIPHONG

CREATE TABLE [dbo].[LOAIPHONG](

[MALOAIPHONG] [nvarchar](50) NOT NULL,


[TENLOAIPHONG] [nvarchar](50) NULL,

[TIENDIEN] [int] NULL,

[TIENNUOC] [int] NULL,

[GIAPHONG] [int] NULL,

[SONGUOITOIDA] [int] NULL,

[PHONGNAMHAYNU] [nvarchar](10) NULL,

CONSTRAINT [PK_LOAIPHONG] PRIMARY KEY CLUSTERED

[MALOAIPHONG] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,

IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS

= ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

go

● Tạo bảng PHONG

CREATE TABLE [dbo].[PHONG](

[MAPHONG] [nvarchar](50) NOT NULL,

[MANHA] [CHAR] (10),

[TENPHONG] [nvarchar](50) NULL,

[MANV] [nvarchar](50) NULL,

[MALOAIPHONG] [nvarchar](50) NULL,

CONSTRAINT [PK_PHONG] PRIMARY KEY CLUSTERED

[MAPHONG] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,


IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS

= ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

go

DROP TABLE PHONG

● Tạo bảng HOPDONG

CREATE TABLE [dbo].[HOPDONG](

[MAHOPDONG] [nvarchar](50) NOT NULL,

[NGAYBATDAU] [date] NULL,

[NGAYKETTHUC] [date] NULL,

[MASV] [nvarchar](50) NULL,

[MANV] [nvarchar](50) NULL,

[MAPHONG] [nvarchar](50) NULL,

CONSTRAINT [PK_HOPDONG] PRIMARY KEY CLUSTERED

[MAHOPDONG] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,

IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS

= ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

go

CREATE TABLE [dbo].[NHA](

[MANHA] [char](10) NOT NULL,

[TENNHA] [NVARCHAR] (15) NULL,

CONSTRAINT [PK_MANHA] PRIMARY KEY CLUSTERED


(

[MANHA] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,

IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS

= ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

● Tạo ràng buộc khoá ngoài

ALTER TABLE dbo.LOP ADD CONSTRAINT FK_MAKHOA FOREIGN KEY


(MAKHOA) REFERENCES dbo.[KHOA/VIEN](MAKHOA)

ALTER TABLE dbo.SINHVIEN ADD CONSTRAINT FK_MALOP FOREIGN KEY


(MALOP) REFERENCES dbo.[LOP](MALOP)

ALTER TABLE dbo.HOPDONG ADD CONSTRAINT FK_MASV FOREIGN KEY


(MASV) REFERENCES dbo.SINHVIEN(MASV)

ALTER TABLE dbo.HOPDONG ADD CONSTRAINT FK_MAPHONG FOREIGN KEY


(MAPHONG) REFERENCES dbo.PHONG(MAPHONG)

ALTER TABLE dbo.PHONG ADD CONSTRAINT FK_MANHA FOREIGN KEY


(MANHA) REFERENCES NHA(MANHA)

ALTER TABLE dbo.HOPDONG ADD CONSTRAINT FK_MANV FOREIGN KEY


(MANV) REFERENCES dbo.NHANVIEN(MANV)

ALTER TABLE dbo.PHONG ADD CONSTRAINT FK_MANVIEN FOREIGN KEY


(MANV) REFERENCES NHANVIEN(MANV)

ALTER TABLE dbo.PHONG ADD CONSTRAINT FK_MALOAIPHONG FOREIGN


KEY (MALOAIPHONG) REFERENCES LOAIPHONG(MALOAIPHONG)

ALTER TABLE dbo.DICHVU ADD CONSTRAINT FK_MANHANVIEN FOREIGN


KEY (MANV) REFERENCES NHANVIEN(MANV)

ALTER TABLE dbo.PHIEUSDDV ADD CONSTRAINT FK_MADV FOREIGN KEY


(MADV) REFERENCES DICHVU(MADV)

ALTER TABLE dbo.PHIEUSDDV ADD CONSTRAINT FK_MAHD FOREIGN KEY


(MAHD) REFERENCES HOADON(MAHD)
ALTER TABLE dbo.HOADON ADD CONSTRAINT FK_MASINHVIEN FOREIGN KEY
(MASV) REFERENCES SINHVIEN(MASV)

4.3. Các truy vấn về hệ thống quản lý ký túc xá

● Cho biết tên những phòng còn trống, phòng đó là nam hay nữ và còn trống bao
nhiêu chỗ

SELECT TENPHONG, PHONGNAMHAYNU, SUM (SOSANH.SONGUOITOIDA -

SOSANH.[SỐ SINH VIÊN] )AS 'SỐ CHỖ TRỐNG'

FROM ( SELECT PHONG.TENPHONG, PHONGNAMHAYNU, SONGUOITOIDA,


COUNT(MASV) AS 'SỐ SINH VIÊN'

FROM PHONG,LOAIPHONG, HOPDONG

WHERE PHONG.MALOAIPHONG=LOAIPHONG.MALOAIPHONG AND

HOPDONG.MAPHONG =PHONG.MAPHONG AND NGAYBATDAU >= '2023/01/01'


AND NGAYKETTHUC <= '2023/06/30'

GROUP BY TENPHONG,SONGUOITOIDA,PHONGNAMHAYNU

) AS SOSANH

WHERE SONGUOITOIDA > [SỐ SINH VIÊN]

GROUP BY TENPHONG,PHONGNAMHAYNU

● Cho biết tên phòng đã đủ người (Loại phòng, số phòng, số người)

SELECT TENPHONG,PHONGNAMHAYNU

FROM (SELECT PHONG.TENPHONG, PHONGNAMHAYNU, SONGUOITOIDA,

COUNT(MASV) AS 'SỐ SINH VIÊN'

FROM PHONG,LOAIPHONG, HOPDONG

WHERE PHONG.MALOAIPHONG=LOAIPHONG.MALOAIPHONG AND

HOPDONG.MAPHONG =PHONG.MAPHONG AND NGAYBATDAU >= '2023/01/01'


AND NGAYKETTHUC <= '2023/06/30'

GROUP BY TENPHONG,SONGUOITOIDA,PHONGNAMHAYNU) AS SOSANH

WHERE SONGUOITOIDA = [SỐ SINH VIÊN]


GROUP BY TENPHONG,PHONGNAMHAYNU

● Tìm tên những sinh viên đang ở phòng 100 tòa N1 trong kỳ (Mã sv, họ tên, ng
sinh, lớp, khoa, khóa).

SELECT HOTEN, MSV, LOP, KHOA

FROM SINHVIEN INNER JOIN HOPDONG

ON SINHVIEN.MASV=HOPDONG.MASV

WHERE MAPHONG='P100_N1' AND NGAYBATDAU >= '2023/01/01' AND

NGAYKETTHUC <= '2023/06/30'

GROUP BY HOTEN, MSV, LOP, KHOA

● số lượng sv ở ktx trong kỳ

SELECT COUNT(MAHOPDONG) AS 'SỐ LƯỢNG SINH VIÊN ĐANG Ở KÍ TÚC

XÁ TRONG KI'

FROM HOPDONG

WHERE NGAYBATDAU >= '2023/01/01' AND NGAYKETTHUC <= '2023/06/30'

● Thống kê số sinh viên theo ngành, khóa

SELECT [KHOA/VIEN].TENKHOA, TENLOP, COUNT(MASV) AS 'SỐ SINH VIÊN'

FROM LOP,[KHOA/VIEN],SINHVIEN

WHERE [KHOA/VIEN].MAKHOA=LOP.MAKHOA AND

LOP.MALOP=SINHVIEN.MALOP GROUP BY TENKHOA, TENLOP

● Tên nhân viên quản lý phòng của từng phòng

select HOTEN, TENPHONG

FROM NHANVIEN INNER JOIN PHONG

ON NHANVIEN.MANV=PHONG.MANV

● Sinh viên nào đó đã sử dụng những dịch vụ gì trong kỳ

select distinct TENDV


from DICHVU, PHIEUSDDV,HOADON,SINHVIEN, HOPDONG WHERE
DICHVU.MADV=PHIEUSDDV.MADV AND HOADON.MASV

=SINHVIEN.MASV AND PHIEUSDDV.MAHD=HOADON.MAHD AND

SINHVIEN.MASV=HOPDONG.MASV AND HOTEN=N'NGUYEN VAN A' AND


NGAYBATDAU >= '2022/01/01' AND NGAYKETTHUC <= '2022/06/30'

● Sinh viên nào đó đã thanh toán tiền dịch vụ vào ngày nào và thanh toán bao
nhiêu tiền?

SELECT SINHVIEN.MASV, HOTEN, NGAYHD, SUM(SOLUONG*DONGIA) AS

'TỔNG TIỀN'

FROM SINHVIEN,HOADON,PHIEUSDDV,DICHVU

WHERE DICHVU.MADV=PHIEUSDDV.MADV AND HOADON.MASV


=SINHVIEN.MASV AND PHIEUSDDV.MAHD=HOADON.MAHD AND

HOTEN=N'NGUYEN VAN A'

GROUP BY SINHVIEN.MASV, HOTEN, NGAYHD

● Mỗi sinh viên đã thanh toán tiền dịch vụ vào ngày nào và thanh toán bao nhiêu
tiền?

SELECT SINHVIEN.MASV, HOTEN, NGAYHD, SUM(SOLUONG*DONGIA) AS

'TỔNG TIỀN'

FROM SINHVIEN,HOADON,PHIEUSDDV,DICHVU

WHERE DICHVU.MADV=PHIEUSDDV.MADV AND HOADON.MASV

=SINHVIEN.MASV AND PHIEUSDDV.MAHD=HOADON.MAHD

GROUP BY SINHVIEN.MASV, HOTEN, NGAYHD

● Tính tổng doanh thu của dịch vụ giặt là trong kỳ

SELECT SUM(SOLUONG*DONGIA) AS 'DOANH THU GIẶT LÀ'

FROM DICHVU, PHIEUSDDV, HOADON

WHERE DICHVU.MADV=PHIEUSDDV.MADV AND

PHIEUSDDV.MAHD=HOADON.MAHD AND MONTH (NGAYHD) BETWEEN 1


AND 6

AND TENDV=N'GIẶT LÀ'

● Tính tổng doanh thu của từng dịch vụ trong kì

SELECT TENDV,SUM(SOLUONG*DONGIA) AS 'DOANH THU '

FROM DICHVU, PHIEUSDDV, HOADON

WHERE DICHVU.MADV=PHIEUSDDV.MADV AND

PHIEUSDDV.MAHD=HOADON.MAHD AND MONTH (NGAYHD) BETWEEN 1

AND 6

GROUP BY TENDV

● Tiền mỗi sinh viên phải nộp trong kỳ không tính tiền dịch vụ ( lưu ý sinh viên ở
tháng nào sẽ tính tiền tháng đó, ví dụ vào ở từ 15 tháng 5 thì vẫn tính tiền của
tháng 5, và kỳ 1 sẽ kết thúc vào 30/6 hàng năm)

SELECT HOTEN, Sum ((MONTH(NGAYKETTHUC)-MONTH(NGAYBATDAU)


+1)*GIAPHONG +

(MONTH(NGAYKETTHUC)-MONTH(NGAYBATDAU)+1)*TIENDIEN

+ (MONTH(NGAYKETTHUC)-MONTH(NGAYBATDAU)+1)*TIENNUOC) as 'Tong
Tien Phai Nop' FROM HOPDONG, PHONG,LOAIPHONG,SINHVIEN

WHERE SINHVIEN.MASV=HOPDONG.MASV AND

HOPDONG.MAPHONG=PHONG.MAPHONG AND

PHONG.MALOAIPHONG=LOAIPHONG.MALOAIPHONG AND

NGAYKETTHUC <= '2023/06/30'

GROUP BY HOTEN

● Tính doanh thu của từng phòng theo kỳ (bắt đầu 1/1/2023 kết thúc 30/6/2023)

select TENPHONG, SUM ((MONTH(NGAYKETTHUC)-

MONTH(NGAYBATDAU)+1)*GIAPHONG + (MONTH(NGAYKETTHUC)-

MONTH(NGAYBATDAU)+1)*TIENDIEN + (MONTH(NGAYKETTHUC)-

MONTH(NGAYBATDAU)+1)*TIENNUOC) as 'doanh thu phong'


FROM HOPDONG, PHONG,LOAIPHONG,SINHVIEN

WHERE SINHVIEN.MASV=HOPDONG.MASV AND

HOPDONG.MAPHONG=PHONG.MAPHONG AND

PHONG.MALOAIPHONG=LOAIPHONG.MALOAIPHONG AND NGAYKETTHUC

<= '2023-06-30'

GROUP BY TENPHONG

4.2. Nhập liệu

● Nhập bảng KHOA/VIEN

INSERT [dbo].[KHOA/VIEN] ([MAKHOA], [TENKHOA]) VALUES (N'CNTT&KTS',


N'CÔNG NGHỆ THÔNG TIN VÀ KINH TẾ SỐ')

● Nhập bảng LOP

INSERT [dbo].[LOP] ([MALOP], [TENLOP], [MAKHOA]) VALUES


(N'CNTT63',N'CÔNG NGHỆ THÔNG TIN 63A', 'CNTT&KTS ')

● Nhập bảng SINHVIEN

INSERT [dbo].[SINHVIEN] ([MASV], [HOTEN], [NGAYSINH], [GIOITINH], [CCCD],


[SDT], [DIACHI], [MALOP]) VALUES (N'100', N'LÊ THẢO LINH',

CAST(N'2003-11-23' AS Date), N'NỮ', N'123456', N'123456', N'THÁI BÌNH',


N'HTTTQL63')

● Nhập bảng NHANVIEN

INSERT [dbo].[NHANVIEN] ([MANV], [HOTEN], [NGAYSINH], [GIOITINH])


VALUES (N'NV001', N'LÊ THỊ TRANG', CAST(N'1970-06-14' AS Date), N'NỮ')

● Nhập bảng NHA

INSERT dbo.[NHA] ([MANHA],[TENNHA]) VALUES ('N1',N'NHÀ 1')

● Nhập bảng LOAIPHONG

INSERT [dbo].[LOAIPHONG] ([MALOAIPHONG], [TENLOAIPHONG], [TIENDIEN],


[TIENNUOC], [GIAPHONG], [SONGUOITOIDA],[PHONGNAMHAYNU])

VALUES (N'P1000NAM ', N'PHÒNG 1000 NAM', 200000, 100000, 1000000, 4, N'NAM')
INSERT [dbo].[LOAIPHONG] ([MALOAIPHONG], [TENLOAIPHONG], [TIENDIEN],
[TIENNUOC], [GIAPHONG], [SONGUOITOIDA],[PHONGNAMHAYNU])

VALUES (N'P1000NU ', N'PHÒNG 1000 NỮ', 200000, 100000, 1000000, 4, N'NỮ')

● Nhập bảng PHONG

INSERT [dbo].[PHONG] ([MAPHONG],[MANHA], [TENPHONG], [MANV],


[MALOAIPHONG]) VALUES (N'P100_N3','N3', N'PHÒNG 100 TÒA N3', N'NV003',
N'P500NAM')

● Nhập bảng DICHVU

INSERT [dbo].[DICHVU] ([MADV], [TENDV], [DVT], [DONGIA], [MANV]) VALUES


(N'GIATLA', N'GIẶT LÀ', N'KG', 15000, N'NV001')

● Nhập bảng PHIEUSDDV

INSERT [dbo].[PHIEUSDDV] ([MAPHIEU], [TENPHIEU], [THOIGIANSDDV],


[MAHD], [MADV], [SOLUONG])

VALUES (N'PDV_SV100', N'PHIẾU SỬ DỤNG GIẶT LÀ CỦA SINH VIÊN 100',


CAST(N'2023-03-01' AS Date), N'HDSV100', N'GIATLA', 3)

GO

● Nhập bảng HOPDONG

INSERT [dbo].[HOPDONG] ([MAHOPDONG], [NGAYBATDAU], [NGAYKETTHUC],


[MASV], [MANV], [MAPHONG])

VALUES (N'HD1', CAST(N'2023-01-01' AS Date), CAST(N'2023-06-30' AS Date), N'100',


N'NV001', N'P101_N4')

● Nhập bảng HOADON

INSERT [dbo].[HOADON] ([MAHD], [TENHD], [NGAYHD], [MASV]) VALUES

(N'HDSV100', N'HÓA ĐƠN CỦA SINH VIÊN 100', CAST(N'2023-02-02' AS Date),


N'100')

-- Tao chi muc

create index TTSV on dbo.SINHVIEN (HOTEN,CCCD,SDT,DIACHI,NGAYSINH)

create index TENPHONG on dbo.PHONG(TENPHONG)

create index NGAYTHANG on dbo.HOPDONG (NGAYBATDAU, NGAYKETTHUC)


create index THONGTINNV on dbo.NHANVIEN(HOTEN,NGAYSINH,GIOITINH)

-- Tao view

CREATE VIEW SINHVIENTHEOLOP

AS SELECT
SINHVIEN.MASV,SINHVIEN.HOTEN,LOP.TENLOP,[KHOA/VIEN].TENKHOA

FROM SINHVIEN INNER JOIN (LOP INNER JOIN [KHOA/VIEN]

ON LOP.MAKHOA=[KHOA/VIEN].MAKHOA)

ON SINHVIEN.MALOP=LOP.MALOP

11. QLY HÀNG THUỐC

QUẢN LÝ CỬA HÀNG BÁN THUỐC

I. GIỚI THIỆU

1. Mục đích
● Cung cấp một hệ thống quản lý toàn diện cho cửa hàng bán thuốc, giúp quản lý và vận
hành các hoạt động kinh doanh liên quan đến việc mua bán, nhập xuất hàng hóa, quản
lý kho hàng, quản lý nhân viên, đối tác và khách hàng.
● Cải thiện hiệu quả quản lý, tối ưu hóa quy trình kinh doanh, nâng cao chất lượng dịch
vụ và tăng doanh thu cho cửa hàng bán thuốc. Hệ thống cũng sẽ giúp tạo điều kiện cho
sự hiểu biết chung về các yêu cầu chức năng đối với tất cả các bên liên quan và thiết
lập một cơ sở để có cái nhìn chung cho toàn bộ các đơn vị liên quan về yêu cầu chức
năng trong hệ thống.

2. Phạm vi

● Đáp ứng nhu cầu quản lý các thông tin liên quan đến hoạt động kinh doanh của cửa
hàng bán thuốc trực tuyến, giúp cho việc quản lý sản phẩm, đơn hàng, khách hàng,
kho hàng và nhân viên trở nên thuận tiện và hiệu quả hơn. Nó sẽ hỗ trợ quản lý các
hoạt động kinh doanh của cửa hàng, từ việc quản lý sản phẩm đến việc quản lý khách
hàng và nhân viên. Các thông tin được lưu trữ trong cơ sở dữ liệu này cũng có thể
được sử dụng để phân tích và đưa ra các quyết định kinh doanh hiệu quả.

3. Đối tượng sử dụng


Tài liệu này được sử dụng với các đối tượng như sau:

● Developer: Có trách nhiệm trong việc phát triển thiết kế hệ thống chi tiết, thực hiện
kiểm tra chức năng, kiểm tra tích hợp hệ thống.
● UI Designer: Lên kế hoạch và phát triển phần UI.
● Tester: Lên kế hoạch kiểm thử và xác thực kết quả.
● Đội tài liệu: Chịu trách nhiệm viết các hướng dẫn sử dụng cho ứng dụng
● Đội UAT: Chịu trách nhiệm thực hiện các phiên kiểm tra chấp nhận người dùng với
người dùng cuối.

2. Thực trạng hiện nay

Trong quá trình khảo sát thực tế nhóm em thấy nhà thuốc còn gặp nhiều khó khăn
trong việc cung cấp dịch vụ nhanh chóng và tiện lợi cho khách hàng, mọi tquy trình đều
đang phụ thuộc chính vào nguồn lực con người.

Nhà quản lý cũng gặp nhiều khó khăn khi muốn nắm bắt thông tin về hoạt động bán
hàng của nhà thuốc để đưa ra những quyết định kịp thời và chính xác. Bộ phận bán hàng cũ
bị quá tải và chậm khi thanh toán với số lượng lớn khách và sản phẩm thuốc. Khách hàng
phải đợi lâu trong quá trình tìm thuốc và thanh toán.

Trong quá trình ghi sổ sách và giao dịch xay ra thực trạng nhân viên không thể kiểm
soát được đơn giá, số lượng tồn còn bao nhiêu, loại thuốc nào bán chạy, thông tin nhà cung
cấp - khách hàng, hạn sử dụng, không quản lý được doanh thu gây tổn thất cho nhà thuốc.

Chỉ một phần trong số các báo cáo được lập định kỳ nhưng việc lập mất nhiều thời
gian. Hơn nữa file riêng lẻ, khi cần làm báo cáo tổng hợp cuối năm xảy ra bất cập vì phải rà
soát lại từ đầu

Số liệu thống kê cho thấy, mỗi ngày có khoảng 70% khách hàng đến hiệu thuốc mua
thuốc, nhưng hiệu suất áp dụng tin học chỉ xấp xỉ 5%.

3. Nguyên nhân

- Số lượng thuốc và khách hàng ngày càng tăng

- Khối lượng thông tin phải lưu trữ ngày càng lớn đòi hỏi sự lâu dài và độ chính
xác cao.

- Do khi sử dụng excel cần khá nhiều câu lệnh phức tạp nên việc nhầm lẫn rủi ro
cao. Vì vậy các quy trình xử lý mất nhiều thời gian và công sức, đòi hỏi người dùng thành
thạo excel.
- Do các hệ thống đã được xây dựng lâu, thủ công và thiếu trang thiết bị hiện đại,
chưa được cải thiện, thay đổi kịp với sự phát triển trong thời đại công nghệ thông tin ngày
nay.

4. Đánh giá về hiện trạng của nhà thuốc

Ưu điểm:

- Quy trình thực hiện công việc rõ ràng và có sự kiểm soát chặt chẽ từ quản lý.

- Tổ chức quy trình, các khâu hoạt động hợp lý đáp ứng được những yêu cầu cơ
bản của một nhà thuốc.

- Nhân viên thạo việc, chăm sóc khách hàng tốt.

Nhược điểm:

- Nhà thuốc đa số vẫn thực hiện các quy trình thủ công, phần mềm quản lí nhà
thuốc chỉ đáp ứng được những yêu cầu cơ bản (Excel)

- Hệ thống đơn giản chỉ tập trung vào lưu trữ thông tin khách hàng, in hóa đơn và
in doanh thu khi cần.

- Excel chưa có các tính năng quản lý bao quát cả hệ thống, cập nhật những thông
tin mới chưa linh hoạt, chưa tối ưu hóa, tiện ích.

II. TỔNG QUAN YÊU CẦU

1. Thiết kế hệ thống

a. Xác định thực thể

Thực thể Diễn Mô tả


giải

NHANVIEN Nhân Thực thể bao gồm các nhân viên làm việc trong
viên cửa hàng. Mỗi nhân viên được xác định bởi mã
nhân viên duy nhất, tên, chức vụ, giới tính, lương,
SĐT, địa chỉ của nhân viên.

NCC Nhà Thực thể bao gồm các nhà cung cấp thuốc cho
cung cửa hàng. Mỗi nhà cung cấp xác định bởi mã nhà
cấp cung cấp (duy nhất), tên nhà cung cấp, SĐT, địa
chỉ nhà cung cấp.

KHACHHAN Khách Thực thể bao gồm các khách hàng mua thuốc
G hàng trong cửa hàng. Mỗi khách hàng được xác định
bởi mã khách hàng duy nhất, tên khách hàng, giới
tính, SĐT, địa chỉ khách hàng.

HOADONXU Hóa Thực thể bao gồm hóa đơn xuất ra cho khách
AT đơn hàng khi mua hàng. Hóa đơn xuất được lưu lại
xuất trong cơ sở dữ liệu với các thông tin như mã hóa
đơn (duy nhất), ngày xuất hóa đơn, tổng tiền, mã
khách hàng, mã nhân viên.

HOADONNH Hóa Thực thể bao gồm hóa đơn nhập vào khi nhập
AP đơn thuốc từ nhà cung cấp. Mỗi hóa đơn nhập vào
nhập được lưu lại trong cơ sở dữ liệu với các thông tin
như mã hóa đơn nhập (duy nhất), ngày nhập hóa
đơn, tổng tiền, mã NCC, mã nhân viên.

THUOC Sản Thực thể bao gồm tất cả thuốc trong cửa hàng.
phẩm Mỗi sản phẩm được xác định bởi 1 mã duy nhất,
tên thuốc, đơn vị tính, số lượng tồn kho, NSX,
HSD, mã nhóm.

NHOMTHUO Nhóm Thực thể bao gồm các loại thuốc, dùng để phân
C sản loại sản phẩm. Mỗi loại được xác định bởi 1 mã
phẩm duy nhất, tên nhóm.

CHITIETNHA Chi tiết Thực thể bao gồm chi tiết các phiếu nhập khi
P Phiếu nhập thuốc ở nhà cung cấp và có hóa đơn nhập,
Nhập được xác định bởi mã hóa đơn nhập, mã thuốc, lô
sản xuất, NSX, HSD, đơn vị tính, số lượng, đơn
giá, thành tiền.

PHIEUTHU Phiếu Thực thể bao gồm các phiếu thu khi khách hàng
Thu mua hàng và cửa hàng phải thu khách hàng. Mỗi
phiếu thu được xác định bởi mã phiếu thu, mã
khách hàng, mã hóa đơn bán, tổng tiền, phương
thức thanh toán, ngày thu.

PHIEUCHI Phiếu Thực thể bao gồm các phiếu chi khi cửa hàng
Chi phải trả nhà cung cấp. Mỗi phiếu chi được xác
định bởi mã phiếu chi, mã hóa đơn nhập, tổng
tiền, phương thức thanh toán, ngày chi.

2. Xác định các thuộc tính của thực thể

Thực thể Thuộc tính Diễn giải Kiểu dữ


liệu

NHANVIEN MANV Mã nhân viên varchar(10)

TENNV Tên nhân nvarchar(50


viên )

SDT Số điện thoại varchar(50)

CHUCVU Chức vụ nvarchar(50


)

GIOITINH Giới tính nvarchar(50


)

NGAYSINH Ngày sinh datetime

DIACHI Địa chỉ nvarchar(50


)

NCC MANCC Mã nhà cung varchar(10)


cấp

TENNCC Tên nhà cung nvarchar(50


cấp )

SDT Số điện thoại varchar(50)

DIACHI Địa chỉ nvarchar(25


5)

EMAIL Email varchar(10)

KHACHHANG MAKH Mã khách nvarchar(10


hàng )

TENKH Tên khách nvarchar(25


hàng 5)

GIOITINH Giới tính nvarchar(10


SDT Số điện thoại varchar(50

DIACHI Địa chỉ nvarchar(25


5)

NGAYSINH Ngày sinh datetime

HOADONNHA MAHDN Mã hóa đơn nvarchar(10


P nhập )

NGAYNHAP Ngày Nhập datetime

MANCC Mã nhà cung nvarchar(10


cấp )

MANV Mã nhân viên nvarchar(10


)

HOADONXUA MAHDX Mã hóa đơn nvarchar(10


T xuất )

NGAYLAP Ngày lập datetime

MAKH Mã khách nvarchar(10


hàng )

MANV Mã nhân viên nvarchar(10


)

THUOC MATHUOC Mã thuốc nvarchar(10


)

TENTHUOC Tên thuốc nvarchar(25


5)

DVT Đơn vị tính varchar(10)

NGUONGOC Nguồn gốc nvarchar(10


)

GIABAN Giá bán float

SOLUONG Số lượng int

MANCC Mã nhà cung varchar(50)


cấp

MANHOM Mã nhóm varchar(50)

NHOMTHUOC MaNhom Mã nhóm nvarchar(10


)

TenNhom Tên nhóm nvarchar(25


5)

CHITIETNHAP MAHDN Mã hóa đơn nvarchar(10


nhập )

MATHUOC Mã thuốc nvarchar(10


)

LOSX Lô sản xuất varchar(10)

HSD Hạn sử dụng datetime

CHIETKHAU Chiết khấu float

SOLUONGNH Số lượng int


AP nhập

GIANHAP Giá nhập float

TONGTIEN Tổng Tiền money

CHITIETXUAT MAHDX Mã hóa đơn nvarchar(10


xuất )

MATHUOC Mã thuốc nvarchar(10


)

CHIETKHAU Chiết khấu float

SOLUONGXU Số lượng int


AT xuất
GIABAN Giá bán float

PHIEUTHU MAPHIEUT Mã phiếu nvarchar(1


HU thu 0)

MAKH Mã khách nvarchar(10


hàng )

MAHDX Mã hoá đơn nvarchar(10


bán )

TONGTIEN Tổng tiền money

PHUONGTHUC Phương thức varchar(20)


TT thanh toán

NGAYTHU Ngày thu date

PHIEUCHI MAPHIEUCHI Mã phiếu chi nvarchar(10


)

MAHDN Mã hoá đơn nvarchar(10


nhập )

TONGTIEN Tổng tiền money

PHUONGTHUC Phương thức varchar(20)


TT thanh toán

NGAYCHI Ngày Chi date


IV. CÂU LỆNH TRUY VẤN

1. Tạo các bảng


● Bảng nhân viên

create table NHANVIEN

MANV VARCHAR(50) NOT NULL primary key,

TENNV NVARCHAR(50),

GIOITINH NVARCHAR(50),

NGAYSINH DATETIME,

CHUCVU NVARCHAR(50),

DIACHI NVARCHAR(50),

SDT VARCHAR(10)

● Bảng Nhà cung cấp

create table NHACC

MANCC VARCHAR(50) NOT NULL primary key,

TENNCC NVARCHAR(50),

DIACHI NVARCHAR(50),

SDT VARCHAR(50),

EMAIL VARCHAR(10)
)

alter table NHACC

ALTER COLUMN EMAIL VARCHAR(50)

● Bảng khách hàng

create table KHACHHANG

MAKH VARCHAR(50) NOT NULL primary key,

TENKH NVARCHAR(50),

NGAYSINH DATETIME,

GIOITINH NVARCHAR(10),

DIACHI NVARCHAR(50),

SDT VARCHAR(50),

● Bảng thuốc

create table THUOC

MATHUOC VARCHAR(50) NOT NULL primary key,

TENTHUOC NVARCHAR(50),

DVT VARCHAR(10),

NGUONGOC NVARCHAR(10),

GIABAN FLOAT,

SOLUONG INT,

MANCC VARCHAR(50),

MANHOM VARCHAR(50),

)
● Bảng nhóm

create table NHOM

MANHOM VARCHAR(50) NOT NULL primary key,

TENNHOM NVARCHAR(50),

GHICHU NVARCHAR(MAX)

● Bảng hóa đơn nhập

create table HOADONNHAP

MAHDN VARCHAR(50) NOT NULL primary key,

MANCC VARCHAR(50),

MANV VARCHAR(50),

NGAYNHAP DATETIME

create table NHAPCT

MAHDN VARCHAR(50),

MATHUOC VARCHAR(50),

LOSX VARCHAR(10),

HSD DATETIME,

SOLUONGNHAP INT,

GIANHAP FLOAT,
)

ALTER TABLE NHAPCT

ADD TONGTIEN MONEY

ALTER TABLE NHAPCT

ADD CHIETKHAU FLOAT

● Bảng hóa đơn xuất

create table HOADONXUAT

MAHDX VARCHAR(50) NOT NULL primary key,

MAKH VARCHAR(50),

NGAYLAP DATETIME

ALTER TABLE HOADONXUAT

ADD MANV VARCHAR(50);

● Bảng xuất chi tiết

create table XUATCT

MAHDX VARCHAR(50),

MATHUOC VARCHAR(50),

SOLUONGXUAT INT,

ALTER TABLE XUATCT

ADD THANHTIEN MONEY

ALTER TABLE XUATCT

ADD CHIETKHAU FLOAT


ALTER TABLE XUATCT

ADD GIABAN FLOAT

● Bảng phiếu chi

create table PHIEUCHI

MAPHIEUCHI NVARCHAR(10),

MAHDN VARCHAR(50),

NGAYCHI DATETIME,

TONGTIEN MONEY,

PHUONGTHUCTT NVARCHAR,

● Bảng phiếu thu

create table PHIEUTHU

MAPHIEUTHU NVARCHAR(10),

MAHDX VARCHAR(50),

NGAYTHU DATETIME,

TONGTIEN MONEY,

PHUONGTHUCTT VARCHAR(20),

MAKH VARCHAR(50),

)
ALTER TABLE dbo.PHIEUCHI ADD CONSTRAINT FK_HOADONNHAP FOREIGN
KEY(MAHDN) REFERENCES dbo.HOADONNHAP(MAHDN)

ALTER TABLE dbo.PHIEUTHU ADD CONSTRAINT FK_HOADONXUAT FOREIGN


KEY(MAHDX) REFERENCES dbo.HOADONXUAT(MAHDX)

ALTER TABLE dbo.PHIEUTHU ADD CONSTRAINT FK_KHACHHANG FOREIGN


KEY(MAKH) REFERENCES dbo.KHACHHANG(MAKH)

ALTER TABLE dbo.THUOC ADD CONSTRAINT FK_NCC FOREIGN KEY(MANCC)


REFERENCES dbo.NHACC(MANCC)

ALTER TABLE dbo.THUOC ADD CONSTRAINT FK_NHOM FOREIGN


KEY(MANHOM) REFERENCES dbo.NHOM(MANHOM)

ALTER TABLE dbo.HOADONNHAP ADD CONSTRAINT FK_HDN_NCC FOREIGN


KEY(MANCC) REFERENCES dbo.NHACC(MANCC)

ALTER TABLE dbo.HOADONNHAP ADD CONSTRAINT FK_HDN_NV FOREIGN


KEY(MANV) REFERENCES dbo.NHANVIEN(MANV)

ALTER TABLE dbo.NHAPCT ADD CONSTRAINT FK_NCT_HDN FOREIGN


KEY(MAHDN) REFERENCES dbo.HOADONNHAP(MAHDN)

ALTER TABLE dbo.NHAPCT ADD CONSTRAINT FK_NCT_THUOC FOREIGN


KEY(MATHUOC) REFERENCES dbo.THUOC(MATHUOC)

ALTER TABLE dbo.HOADONXUAT ADD CONSTRAINT FK_HDX_KH FOREIGN


KEY(MAKH) REFERENCES dbo.KHACHHANG(MAKH)

ALTER TABLE dbo.HOADONXUAT ADD CONSTRAINT FK_HDX_NV FOREIGN


KEY(MANV) REFERENCES dbo.NHANVIEN(MANV)

ALTER TABLE dbo.XUATCT ADD CONSTRAINT FK_XCT_HDN FOREIGN


KEY(MAHDX) REFERENCES dbo.HOADONXUAT(MAHDX)
ALTER TABLE dbo.XUATCT ADD CONSTRAINT FK_XCT_THUOC FOREIGN
KEY(MATHUOC) REFERENCES dbo.THUOC(MATHUOC)

3. Update

● Thay đổi ngày nhập của hóa đơn nhập có mã hóa đơn = HD04

UPDATE HOADONNHAP

SET NGAYNHAP = '2022/02/02'

WHERE MAHDN ='HD04'

● Sửa tên thuốc Atropin sulfat thành Atropin

UPDATE THUOC SET TENTHUOC = 'Atropin' WHERE TENTHUOC = 'Atropin sulfat'

SELECT TENTHUOC FROM THUOC

4. Truy vấn

● Đếm số lượng tên thuốc trong bảng thuốc

SELECT count(*) as SL_TENTHUOC FROM THUOC

● Sắp xếp số lượng thuốc theo chiều giảm dần

SELECT * FROM Thuoc ORDER BY SoLuong DESC

● Tổng số lượng thuốc được bán ra trong năm 2022

SELECT SUM(SOLUONGXUAT) AS TONGSLX FROM HOADONXUAT, XUATCT


WHERE YEAR(NGAYLAP) = 2022 AND
HOADONXUAT.MAHDX=XUATCT.MAHDX

● Tìm mã nhóm, tên nhóm thuốc chứa Propranolol

SELECT NHOM.MANHOM, NHOM.TENNHOM FROM NHOM, THUOC WHERE


MATHUOC IN( SELECT MATHUOC FROM THUOC WHERE TENTHUOC =
‘Propranolol’)

● Chọn mã thuốc, tên thuốc, số lượng có trong nhóm ‘Thuoc gay te, me’

SELECT MATHUOC, TENTHUOC, SOLUONG FROM THUOC WHERE MANHOM IN(


SELECT MANHOM FROM NHOM WHERE TENNHOM = ‘Thuoc tim mach’)
● Lấy ra mã thuốc, tên thuốc chưa được bán

SELECT t.MATHUOC, TENTHUOC FROM THUOC t WHERE MATHUOC NOT IN


(SELECT MATHUOC FROM XUATCT)

● Lấy ra mã thuốc, tên thuốc được mua ít nhất 1 lần

SELECT THUOC.MATHUOC, THUOC.TENTHUOC, SUM(xct.SOLUONGXUAT) AS


TongSLX FROM THUOC, XUATCT xct WHERE THUOC.MATHUOC = xct.MATHUOC
AND xct.SOLUONGXUAT != 0 GROUP BY THUOC.MATHUOC, THUOC.TENTHUOC

● Lấy ra thông tin 3 khách hàng mua nhiều thuốc nhất

SELECT TOP 3 kh.TENKH, COUNT(ct.SOLUONGXUAT) SL FROM KHACHHANG


kh, XUATCT ct, HOADONXUAT hdx WHERE kh.MaKH=hdx.MaKH AND
ct.MaHDX=hdx.MaHDX GROUP BY kh.TenKH ORDER BY SL DESC

● Lấy ra số lượng hóa đơn nhập, tiền nhập của các nhà cung cấp (đếm số lượng tương
ứng)

SELECT MANCC, COUNT (MAHDN) AS so_luong FROM HOADONNHAP GROUP BY


MaNCC

SELECT * FROM NHAPCT

● Lấy ra tổng số lượng thuốc của mỗi hóa đơn nhập trong bảng chi tiết hóa đơn nhập

SELECT MAHDN, SUM(SOLUONGNHAP) AS TONGSL FROM NHAPCT GROUP BY


MAHDN

● Lấy ra tên thuốc, mã thuốc thuộc nhóm ‘Thuoc gay te, me’

SELECT THUOC.MATHUOC, THUOC.TENTHUOC, NHOM.MANHOM,


NHOM.TENNHOM FROM THUOC, NHOM WHERE TENNHOM = ‘Thuoc gay te, me’

● Lấy ra danh sách mã hóa đơn nhập, mã thuốc, tên thuốc có giá nhập > 20000 trong
bảng nhập chi tiết

SELECT NHAPCT.MAHDN, THUOC.MATHUOC, THUOC.TENTHUOC,


NHAPCT.GIANHAP FROM THUOC, NHAPCT WHERE GIANHAP > 20000 AND
THUOC.MATHUOC = NHAPCT.MATHUOC

● Hiển thị danh sách NCC có mã HDN là 001, 002, 003

SELECT MAHDN, TENNCC FROM HOADONNHAP, NHACC WHERE


HOADONNHAP.MANCC = NHACC.MANCC AND MAHDN IN (‘HD01’, ‘HD02’,
‘HD03’)
● Lập danh sách thuốc hết hạn sd ngày 15/01/2023

SELECT THUOC.MATHUOC, THUOC.TENTHUOC, NHAPCT.HSD

FROM THUOC

JOIN NHAPCT ON THUOC.MATHUOC = NHAPCT.MATHUOC

WHERE NHAPCT.HSD <= '2023-01-15'

● Báo cáo hàng tồn kho đến thời điểm hiện tại (Mã thuốc, tên thuốc, số lượng tồn)

SELECT T.MATHUOC, T.TENTHUOC, (T.SOLUONG -


COALESCE(X.SOLUONGBAN, 0) + COALESCE(N.SOLUONGNHAP, 0)) AS
SOLUONGTON

FROM THUOC T

LEFT JOIN (

SELECT MATHUOC, SUM(SOLUONGXUAT) AS SOLUONGBAN

FROM XUATCT

GROUP BY MATHUOC

) X ON T.MATHUOC = X.MATHUOC

LEFT JOIN (

SELECT MATHUOC, SUM(SOLUONGNHAP) AS SOLUONGNHAP

FROM NHAPCT

GROUP BY MATHUOC

) N ON T.MATHUOC = N.MATHUOC

5. Trigger

● TẠO TRIGGER TÍNH TỔNG TIỀN NHẬP, NẾU SỐ LƯỢNG >= 300 THÌ HƯỞNG
CHIẾT KHẤU 5%

CREATE TRIGGER TRG_TONGNHAP


ON NHAPCT

FOR INSERT, UPDATE

AS BEGIN

UPDATE NHAPCT

SET CHIETKHAU = (CASE WHEN(SOLUONGNHAP<300) THEN 0

WHEN(SOLUONGNHAP>=300) THEN
0.05

END)

FROM NHAPCT

UPDATE NHAPCT

SET TONGTIEN = SOLUONGNHAP * GIANHAP - SOLUONGNHAP *


GIANHAP * CHIETKHAU

FROM NHAPCT

END

SELECT * FROM NHAPCT

--TẠO TRIGGER TÍNH THÀNH TIỀN, CHIẾT KHẤU 10% NẾU MUA SỐ LƯỢNG >=
30

CREATE TRIGGER TRG_THANHTIENHD

ON XUATCT

FOR INSERT, UPDATE

AS

BEGIN

UPDATE XUATCT

SET XUATCT.GIABAN = THUOC.GIABAN

FROM XUATCT, THUOC

WHERE XUATCT.MATHUOC = THUOC.MATHUOC


UPDATE XUATCT

SET CHIETKHAU = (CASE WHEN(SOLUONGXUAT <30) THEN 0

WHEN(SOLUONGXUAT >=30) THEN


0.1

END)

FROM XUATCT

UPDATE XUATCT

SET THANHTIEN = SOLUONGXUAT * GIABAN - SOLUONGXUAT * GIABAN


* CHIETKHAU

FROM XUATCT

END

SELECT * FROM XUATCT

6. Thêm, sửa, xóa

● THÊM

CREATE PROCEDURE THUOC_INSERT (

@MATHUOC varchar(50),

@TENTHUOC nvarchar(50),

@DVT varchar(10),

@NGUONGOC nvarchar(10),

@GIABAN float,

@SOLUONG int,

@MANCC varchar(50),

@MANHOM varchar(50)
)

AS

BEGIN

INSERT INTO [dbo].[THUOC]

([MATHUOC], [TENTHUOC], [DVT], [NGUONGOC],


[GIABAN],

[SOLUONG], [MANCC], [MANHOM])

VALUES

(@MATHUOC, @TENTHUOC, @DVT, @NGUONGOC, @GIABAN,


@SOLUONG,

@MANCC, @MANHOM)

END

GO

THUOC_INSERT '019', 'Hapacol', 'vi', 'Vietnam', 500, 100, 'NCC03', 'N05'

SELECT * FROM THUOC

● SỬA

USE [QUANLYTHUOC]

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE PROCEDURE [dho].[THUOC] (

@MATHUOC varchar(50),
@TENTHUOC nvarchar(50),

@DVT varchar(10),

@NGUONGOC nvarchar(10),

@GIABAN float,

@SOLUONG int,

@MANCC varchar(50),

@MANHOM varchar(50)

AS

BEGIN

UPDATE [dho].[THUOC]

SET [TENTHUOC] = @TENTHUOC

, [DVT] = @DVT

, [NGUONGOC] = @NGUONGOC

, [GIABAN] = @GIABAN

, [SOLUONG] = @SOLUONG

, [MANCC] = @MANCC

, [MANHOM] = @MANHOM

WHERE [MATHUOC] = @MATHUOC

END

● XÓA

USE [QUANLYTHUOC]

GO

SET ANSI_NULLS ON

GO
SET QUOTED_IDENTIFIER ON

GO

CREATE PROCEDURE [dho].[THUOC_DELETE] (

@MATHUOC varchar(50) )

AS

BEGIN

DELETE FROM [dho].[THUOC]

WHERE MATHUOC = @MATHUOC

END

12. QUẢN LÝ DỊCH VỤ KHÁM CHỮA BỆNH

I. GIỚI THIỆU

1. Mục đích

● Mục đích của tài liệu đặc tả yêu cầu phần mềm này là cung cấp một cái nhìn
tổng quan, dễ hiểu về các yêu cầu, thành phần của dự án quản lý dịch vụ khám
chữa bệnh tại phòng khám dịch vụ.
● Tài liệu được tạo để phục vụ cho những nhà phát triển phần mềm, kiểm thử
viên, nhà quản lý dự án cũng như các bên liên quan cũng như thiết lập một cơ
sở để có cái nhìn chung cho toàn bộ các đơn vị về yêu cầu chức năng trong hệ
thống.
● Tạo điều kiện cho sự hiểu biết chung về các yêu cầu chức năng đối với tất cả
các bên liên quan về quy trình quản lý bệnh nhân từ lúc nhập viện cho tới khi
xuất viện tại phòng khám dịch vụ nhằm:
o Truy tìm thông tin bệnh nhân nhanh chóng và chính xác.
o Hỗ trợ các bác sĩ trong việc khám bệnh, kê toa thuốc
o Lập hóa đơn viện phí
o Tiết kiệm thời gian và chi phí trong việc quản lý bệnh nhân.

o Tăng hiệu quả của quá trình quản lý.


2. Phạm vi

● Tài liệu đặc tả yêu cầu phần mềm này được xây dựng nhằm phục vụ cho dự
án quản lý thông tin về nhân viên, bệnh nhân, bệnh án, thuốc, lập toa thuốc, các
dịch vụ, lập hóa đơn viện phí và lập báo cáo theo đợt trong phòng khám dịch
vụ.
● Phục vụ cho các nhu cầu to lớn về khám chữa bệnh trên toàn cầu hiện nay.
● Việc phát triển hệ thống quản lý các dịch vụ khám chữa bệnh tại phòng khám
dịch vụ sẽ cung cấp cho phòng khám, khách hàng, tổ chức cá nhân một công cụ
mang lại nhiều lợi ích về kinh tế với chi phí thấp nhưng vẫn đảm bảo được nội
dung cũng như chất lượng của quản lý trực tuyến.
● Đề tài chỉ dừng lại ở khâu khám bệnh: tiếp nhận bệnh nhân, khám bệnh, chỉ
định cận lâm sàng, xem kết quả cận lâm sàng, kê toa thuốc, in toa thuốc.

3. Đối tượng sử dụng

Tài liệu này được sử dụng với các đối tượng như sau:
● Developer: Có trách nhiệm trong việc phát triển thiết kế hệ thống chi tiết,
thực hiện kiểm tra chức năng, kiểm tra tích hợp hệ thống.
● UI Designer: Lên kế hoạch và phát triển phần UI.
● Tester: Lên kế hoạch kiểm thử và xác thực kết quả.
● Đội tài liệu: Chịu trách nhiệm viết các hướng dẫn sử dụng cho ứng dụng
● Đội UAT: Chịu trách nhiệm thực hiện các phiên kiểm tra chấp nhận người
dùng với người dùng cuối.
TỔNG QUAN YÊU CẦU

1. Thiết kế hệ thống

a. Xác định thực thể

Thực thể Diễn Mô tả


giải

TaiKhoan Tài Thực thể bao gồm các tài khoản của từng nhân
khoản viên trong phòng khám. Mỗi tài khoản được xác
định bởi Tên đăng nhập duy nhất, mật khẩu và vai
trò của người dùng (bác sĩ, y tá, nhân viên hành
chính)

NhanVien Nhân Thực thể bao gồm các thông tin nhân viên phòng
viên khám. Mỗi thực thể nhân viên được xác định bởi
mã nhân viên duy nhất, tên nhân viên, ngày sinh,
giới tính, địa chỉ

PhieuNhapVi Phiếu Thực thể bao gồm phiếu nhập viện của mỗi bệnh
en nhập nhân. Mỗi phiếu nhập viện được xác định bởi mã
viện phiếu nhập viện duy nhất và ngày nhập viện

BenhNhan Bệnh Thực thể bao gồm các thông tin của bệnh nhân.
nhân Mỗi bệnh nhân được xác định bởi mã bệnh nhân
duy nhất, CCCD/CMND, họ tên bệnh nhân, giới
tính, dân tộc, ngày sinh, địa chỉ và số thẻ BHYT
(nếu có)

PhieuKham Phiếu Thực thể lưu thông tin chi tiết của 1 lần khám của
khám bệnh nhân được xác định bởi mã phiếu khám duy
nhất, ngày khám, triệu chứng

Benh Bệnh Thực thể lưu thông tin các bệnh của bệnh nhân
theo phiếu khám, được xác định bởi mã ICD

BangICD Bảng Thực thể bảng ICD là danh mục tên bệnh, bao gồm
ICD 2 thuộc tính là Mã ICD (thuộc tính khóa) và tên
bệnh

DichVuCLS Dịch vụ Thực thể lưu thông tin về dịch vụ cận lâm sàng.
cận lâm Mỗi dịch vụ CLS được xác định bởi mã dịch vụ
sàng duy nhất, tên dịch vụ và đơn giá.

KetQuaCLS Kết quả Thực thể lưu các kết quả của dịch vụ cận lâm sàng,
cận lâm bao gồm các thuộc tính như: mã kết quả để phân
sàng biệt các kết quả cận lâm sàng, ngày thực hiện, kết
quả và ngày có kết quả
DMThuoc Danh Thực thể lưu các thông tin chi tiết của mỗi loại
mục thuốc, được xác định bởi mã thuốc để phân biệt
thuốc từng loại thuốc, tên thuốc, đơn vị tính, đường dùng
(uống/tiêm/chích) và đơn giá thuốc

ToaThuoc Toa Thực thể lưu thông tin của toa thuốc. Mỗi toa
thuốc thuốc được xác định bởi mã toa duy nhất, liều
dùng (ngày dùng mấy lần), số ngày dùng, chỉ định
(mỗi lần dùng bao nhiêu)

BangKe Bảng kê Thực thể bao gồm các bảng kê dịch vụ trong đợt
khám. Mỗi bảng kê được xác định bởi mã bảng kê
và ngày lập

ChiTietBang Chi tiết Thực thể lưu thông tin chi tiết bảng kê dịch vụ,
Ke bảng kê được xác định bởi mã bảng kê và số lượng

b. Xác định các thuộc tính của thực thể

Thực thể Thuộc tính Diễn giải Kiểu dữ liệu

TaiKhoan TenDN Tên đăng nhập nvarchar(30)

MatKhau Mật khẩu nvarchar(50)

VaiTro Vai trò nvarchar (10)

NhanVien MaNV Mã nhân viên nvarchar(20)

TenNV Tên nhân viên nvarchar(80)

NgaySinh Ngày sinh nhân viên datetime

GioiTinhNV Giới tính nhân viên nchar(3)


DiaChiNV Địa chỉ nhân viên nvarchar(100)

PhieuNhapVien MaPNV Mã phiếu nhập viên nvarchar(20)

NgayNhapVien Ngày nhập viện datetime

BenhNhan MaBN Mã bệnh nhân nvarchar(20)

TenBN Tên bệnh nhân nvarchar(80)

SDT Số điện thoại numeric(10,0)

NamSinh Năm sinh year

CCCD Số CCCD numeric(12,0)

SoBHYT Số thẻ BHYT char(15)

DiaChi Địa chỉ nvarchar(100)

PhieuKham MaPK Mã phiếu khám nvarchar(20)

NgayKham Ngày khám datetime

TrieuChung Triệu chứng nvarchar(200)

Benh MaPK Mã phiếu khám nvarchar(20)

MaICD Mã ICD nvarchar(7)

BangICD MaICD Mã ICD nvarchar(7)

TenBenh Tên bệnh nvarchar(200)

DichVuCLS MaDV Mã dịch vụ nvarchar(20)


TenDV Tên dịch vụ nvarchar(255)

DonGiaDV Đơn giá dịch vụ money

KetQuaCLS MaKQ Mã kết quả nvarchar(20)

NgayTH Ngày thực hiện datetime

KetQua Kết quả nvarchar(255)

NgayCoKQ Ngày có kết quả datetime

DMThuoc MaThuoc Mã thuốc nvarchar(20)

TenThuoc Tên thuốc nvarchar(80)

DVT Đơn vị tính nvarchar(8)

DuongDung Đường dùng nvarchar(5)

DonGiaThuoc Đơn giá thuốc money

ToaThuoc MaToa Mã toa nvarchar(20)

MaThuoc Mã thuốc nvarchar(20)

LieuDung Liều dùng int

SoNgayDung Số ngày dùng int

ChiDinh Chỉ định nvarchar(25)

BangKe MaBK Mã bảng kê nvarchar(20)

NgayLap Ngày lập datetime


ChiTietBangKe MaBK Mã bảng kê nvarchar(20)

MaDV Mã dịch vụ nvarchar(20)

SoLuong Số lượng int

1. Danh sách chức năng

STT Tên chức năng Mô tả

1 Đăng nhập Chức năng này nhằm mục đích xác thực
người dùng khi tương tác với hệ thống
nhằm cung cấp quyền cũng như phạm vi
truy cập hệ thống.

2 Đăng ký Để truy cập sử dụng hệ thống thì Người


dùng trước hết cần đăng ký tài khoản.

3 Quản trị người dùng Quản trị viên có vai trò quản trị những
người dùng trong hệ thống.

4 Các nhóm chức năng quản Công việc quản lý dữ liệu liên quan của
lý bệnh lý, dịch vụ, danh Quản trị viên
mục thuốc, chứng từ, bệnh
nhân

5 Khám bệnh Người dùng sử dụng chức năng nhằm


mục đích tiếp nhận, khám chữa bệnh cho
bệnh nhân, ghi các kết quả chỉ định cận
lâm sàng, kê toa thuốc.

I. CÂU LỆNH TRUY VẤN

1. Tạo các bảng


use master
go
if exists (select * from sys.databases where name = 'quanlydvKCB')
drop database quanlydvKCB
go

create database quanlydvKCB


Go
use quanlydvKCB

--TẠO BẢNG
CREATE TABLE NhanVien (
MaNV nvarchar(20) PRIMARY KEY,
TenNV nvarchar(80) NOT NULL,
NgaySinh datetime,
GioiTinhNV nchar(3) check (GioiTinhNV in (N'Nam', N'Nữ')) ,
DiaChiNV nvarchar(100)
)
CREATE TABLE TaiKhoan (
TenDN nvarchar(30) PRIMARY KEY,
MatKhau nvarchar(50),
VaiTro nvarchar(10),
MaNV nvarchar(20) FOREIGN KEY REFERENCES NhanVien(MaNV)
)
CREATE TABLE BenhNhan (
MaBN nvarchar(20) PRIMARY KEY,
TenBN nvarchar(80) NOT NULL,
SDT numeric(10,0),
NamSinh numeric(4,0),
CCCD numeric(12,0),
SoBHYT char(15),
DiaChi nvarchar(100)
)
CREATE TABLE BangICD (
MaICD nvarchar(7) PRIMARY KEY,
TenBenh nvarchar(200) UNIQUE
)
CREATE TABLE PhieuKham (
MaPK nvarchar(20) PRIMARY KEY,
MaBN nvarchar(20) FOREIGN KEY REFERENCES BenhNhan(MaBN),
MaNV nvarchar(20) FOREIGN KEY REFERENCES NhanVien(MaNV),
NgayKham datetime,
TrieuChung nvarchar(200),
)
CREATE TABLE PhieuNhapVien (
MaPNV nvarchar(20) PRIMARY KEY,
MaBN nvarchar(20) FOREIGN KEY REFERENCES BenhNhan(MaBN),
NgayNhapVien datetime
)
CREATE TABLE DichVuCLS (
MaDV nvarchar(20) PRIMARY KEY,
TenDV nvarchar(255) UNIQUE,
DonGiaDV money
)
CREATE TABLE KetQuaCLS (
MaKQ nvarchar(20) PRIMARY KEY,
MaDV nvarchar(20) FOREIGN KEY REFERENCES DichVuCLS(MaDV),
NgayTH datetime,
MaPK nvarchar(20)FOREIGN KEY REFERENCES PhieuKham(MaPK),
KetQua nvarchar(255),
NgayCoKQ datetime
)
CREATE TABLE DMThuoc (
MaThuoc nvarchar(20) PRIMARY KEY,
TenThuoc nvarchar(80),
DVT nvarchar(8),
DuongDung nvarchar(5),
DonGiaThuoc money
)
CREATE TABLE ToaThuoc (
MaToa nvarchar(20) PRIMARY KEY,
MaPK nvarchar(20)FOREIGN KEY REFERENCES PhieuKham(MaPK),
MaThuoc nvarchar(20)FOREIGN KEY REFERENCES DMThuoc (Mathuoc),
LieuDung int,
SoNgayDung int,
ChiDinh nvarchar(25)
)
CREATE TABLE BangKe (
MaBK nvarchar(20) PRIMARY KEY,
MaNV nvarchar(20) FOREIGN KEY REFERENCES NhanVien(MaNV),
NgayLap datetime,
MaBN nvarchar(20) FOREIGN KEY REFERENCES BenhNhan(MaBN),
)
CREATE TABLE ChiTietBangKe (
MaBK nvarchar(20)FOREIGN KEY REFERENCES BangKe(MaBK),
MaDV nvarchar(20) FOREIGN KEY REFERENCES DichVuCLS(MaDV),
SoLuong int
constraint ChiTietBangKe_MaBK_MaDV_PK PRIMARY KEY (MaBK, MaDV)
)
CREATE TABLE Benh (
MaICD nvarchar(7)FOREIGN KEY REFERENCES BangICD(MaICD),
MaPK nvarchar(20)FOREIGN KEY REFERENCES PhieuKham(MaPK),
constraint Benh_MaICD_MaPK_PK PRIMARY KEY (MaICD, MaPK)
)
set dateformat dmy

3. Truy vấn và kết quả

a. Danh sách bệnh nhân tới khám trong quý 1 và quý 2 năm 2023

SELECT BenhNhan.MaBN, TenBN,SDT,NamSinh,CCCD, NgayKham


FROM BenhNhan, PhieuKham
WHERE BenhNhan.MaBN = PhieuKham.MaBN

AND NgayKham BETWEEN '01/01/2023'AND '30/06/2023’

b. Danh sách bệnh nhân theo tên bệnh ví dụ “Khó nuốt”

SELECT BenhNhan.MaBN, TenBN, SDT,NamSinh,CCCD,TenBenh

FROM BenhNhan, PhieuKham, Benh, BangICD

WHERE

BenhNhan.MaBN= PhieuKham.MaBN

AND PhieuKham.MaPK = Benh.MaPK

AND Benh.MaICD= BangICD.MaICD

AND TenBenh = N'Khó nuốt'

c. Danh sách bệnh nhân đã sử dụng dịch vụ CLS ví dụ “điện giải”

SELECT BenhNhan.MaBN, TenBN SDT, NamSinh,CCCD, TenDV


FROM BenhNhan, BangKe, ChiTietBangKe,DichVuCLS

WHERE BenhNhan.MaBN= BangKe.MaBN

AND BangKe.MaBK=ChiTietBangKe.MaBK

AND DichVuCLS.MaDV= ChiTietBangKe.MaDV

AND

TenDV LIKE N'điện giải %'

d. Thống kê số lượng nhân viên nữ có vai trò là “Y tá”

SELECT COUNT(NhanVien.MaNV) as 'Số lượng nữ y tá'

FROM NhanVien, TaiKhoan

WHERE NhanVien.MaNV = TaiKhoan. MaNV

and GioiTinhNV = N'Nữ'

AND VaiTro = N'Y tá'

e. Danh mục thuốc có đơn giá “>30.000”

SELECT MaThuoc, TenThuoc, DonGiaThuoc

FROM DMThuoc

WHERE DonGiaThuoc >30.000

f. Thống kê số lượng số bảng kê đã được lập bởi nhân viên “Nguyen Van Tu”?

SELECT COUNT (MaBK)as 'Số bảng kê đã được lập bởi nhân viên “Nguyen Van
Tu”'

From BangKe
where MaNV in

(SELECT MaNV from NhanVien where TenNV ='Nguyen Van Tu')

g. Cho biết tên nhân viên lập bảng kê “BK000003” hoặc có vai trò là "Y tá"

SELECT TenNV as 'Tên nhân viên', N'Lập bảng kê ' + MaBK as 'Trách nhiệm'

FROM NhanVien, BangKe

WHERE NhanVien.MaNV=BangKe.MaNV

and MaBK ='BK000003'

UNION

SELECT TenNV as 'Tên nhân viên', VaiTro

From NhanVien, TaiKhoan

where NhanVien.MaNV=TaiKhoan.MaNV

and VaiTro = 'Y tá'

h. Cho biết thông tin loại thuốc có liều dùng là “1” và số ngày dùng lớn hơn 15
ngày?

SELECT ToaThuoc.MaThuoc, TenThuoc, DVT, DuongDung

FROM ToaThuoc

LEFT JOIN DMThuoc ON ToaThuoc.MaThuoc=DMThuoc.MaThuoc

WHERE LieuDung = 1 and SoNgayDung >15

i. Với mọi bệnh nhân sinh sau năm 1980 và trước năm 2000, hãy liệt kê thông
tin mã số dịch vụ CLS được sử dụng, tên dịch vụ CLS và bác sĩ chữa bệnh?
SELECT BenhNhan.MaBN, KetQuaCLS.MaDV, TenDV, TenNV AS 'Bác sĩ'

FROM BenhNhan

LEFT JOIN PhieuKham ON BenhNhan.MaBN = PhieuKham.MaBN

LEFT JOIN KetQuaCLS ON PhieuKham.MaPK = KetQuaCLS.MaPK

LEFT JOIN DichVuCLS ON KetQuaCLS. MaDV=DichVuCLS.MaDV

LEFT JOIN NhanVien ON PhieuKham.MaNV = NhanVien.MaNV

WHERE NamSinh BETWEEN 1980 AND 2000

14. Quản lý Bán hàng siêu thị


1. MÔ TẢ BÀI TOÁN
1. Hiện trạng, các vấn đề và giải pháp:
a. Hiện trạng của các siêu thị hiện nay:

Hầu hết các siêu thị trong thành phố hiện nay đều sử dụng phần mềm Access for Win để
quản lý hơn hàng trăm ngàn mặt hàng kinh doanh. Điều này gây khó khăn cho việc cần thiết
phải lưu trữ một khối lượng lớn thông tin. Theo thống kê, trung bình mỗi ngày, bộ phận bán
hàng phải xử lý hơn hàng chục ngàn mẫu tin. Vào những dịp lễ tết thì số mẫu tin còn tăng
gấp nhiều lần so với ngày thường. Do đó, tốc độ truy xuất dữ liệu không đủ nhanh để có thể
đáp ứng tốt được yêu cầu thanh toán nhanh chóng cho khách hàng. Và trong tương lai sẽ
không thể đáp ứng được nhu cầu mở rộng của siêu thị.

Ban giám đốc siêu thị luôn có nhu cầu muốn thống kê tình hình mua bán tại siêu thị với
nhiều tiêu chí khác nhau, nhưng hiên tại vẫn chỉ nhận được báo cáo về doanh thu.

Ngoài ra, siêu thị hiện nay vẫn chưa thể cung cấp cho khách hàng dịch vụ tìm hiểu
thông tin về các mặt hàng hiện có trong siêu thị. Khách đến mua hàng muốn biết siêu thị
hiện có các mặt hàng nào thì phải trực tiếp đến các quầy hàng để xem. Như thế sẽ gây tốn
thời gian, đồng thời sẽ gây khó khăn trong việc chọn lựa mặt hàng phù hợp với nhu cầu và
khả năng tài chính của họ.
b. Các vấn đề và giải pháp:

* Vấn đề liên quan đến giao diện người dùng:

Giao diên trên môi trường Dos gây nhiều khó khăn trong thao tác do chỉ cho phép người
dùng thao tác theo cơ chế tuần tự. Vì vậy, người dùng sẽ gặp khó khăn khi phải ghi nhớ tất
cả những gì đã làm trước đó.

Giải pháp: giao diện người dùng được xây dựng bằng ngôn ngữ lập trình C#, cung cấp
cho người dùng một môi trường làm việc thân thiện, dễ sử dụng và thao tác với các nút lệnh
và tiện ích.
* Vấn đề liên quan đến nghiệp vụ báo cáo thống kê:

Yêu cầu về báo cáo thống kê theo nhiều tiêu chí khác nhau.

Giải pháp: xây dựng chức năng báo cáo thống kê theo các tiêu chí: nhà cung cấp, mặt
hàng và số phiếu.

* Vấn đề hỗ trợ khách hàng tìm hiểu thông tin sản phẩm:

Muốn biết được siêu thị hiện đang có các mặt hàng nào có thể đáp ứng được nhu cầu
mua sắm của mình, khách hàng phải trực tiếp đến các quầy hàng để xem, như thế sẽ gây khó
khăn cho khách hàng và tốn nhiều thời gian. Ngoài ra, siêu thị với nhiều quầy hàng trong
một khuôn viên rộng lớn, nếu hàng hóa không được sắp xếp theo chủng loại một cách thuận
tiện cho việc tìm kiếm thì khách hàng sẽ không tìm thấy được mặt hàng họ cần. Mặc dù các
sản phẩm trong siêu thị có thể đáp ứng được nhu cầu của họ.

Giải pháp: cung cấp chức năng hỗ trợ khách hàng tìm kiếm sản phẩm. Chức năng ngày
cho phép khách hàng xem các thông tin cơ bản về mặt hàng mà họ cần tìm bao gồm: nhãn
hiệu, giá cả, thể tích / trọng lượng… Do đó, khách hàng có thể xác định được mặt hàng họ
cần, phù hợp với khả năng tài chính mà không phải tốn nhiều thời gian để tìm kiếm.
2. Khái quát các nghiệp vụ chính yếu trong siêu thị:
a. Nghiệp vụ nhập hàng:
Khi nhập hàng hóa từ nhà cung cấp, nhân viên nhập hàng sẽ tiến hành lập phiếu nhập và
cập nhật hàng hóa vào cơ sở dữ liệu.
b. Nghiệp vụ xuất hàng từ kho lên quầy:
Khi có yêu cầu xuất hàng lên quầy, nhân viên xuất hàng sẽ kiểm tra hàng trong kho, tiến
hành lập phiếu xuất hàng và cập nhật hàng vào cơ sở dữ liệu.
c. Nghiệp vụ bán hàng:
Khi khách đến mua hàng và yêu cầu thanh toán, nhân viên thâu ngân sẽ tính tiền cho
khách, lập hoá đơn và cập nhật vào cơ sở dữ liệu.
d. Nghiệp vụ kiểm kê hàng hoá:
Cuối mỗi ngày hay bất kỳ thời điểm nào có nhu cầu kiểm kê lại số lượng hàng hóa trong
siêu thị, nhân viên kiểm kê sẽ tiến hành lập phiếu kiểm kê để biết số lượng thực tế của
một mặt hàng cụ thể.
e. Nghiệp vụ báo cáo thống kê:
Cuối mỗi ngày hay mỗi kỳ hoạt động, nhân viên tin học sẽ chịu trách nhiệm lập báo cáo
dựa trên các thông tin về hóa đơn bán hàng, phiếu nhập, phiếu xuất…
3. Giới thiệu hệ thống mới:
Hệ thống quản lý bán hàng siêu thị được xây dựng dựa trên mô hình hoạt động của các hệ
thống quản lý hiện đang được sử dụng, nhưng có khả năng giải quyết các vấn đề mà hệ thống
cũ chưa thể đáp ứng được, đồng thời cung cấp một số chức năng tiện ích nhằm giúp cho quá
trình thực hiện các quy trình nghiệp vụ trở nên dễ dàng hơn.

Hệ thống quản lý bán hàng siêu thị có các đặc điểm sau:
· Có khả năng đáp ứng đầy đủ và hỗ trợ thực hiện tốt các nghiệp vụ
chính trong siêu thị.
· Cung cấp giao diên người dùng thân thiện, dễ thao tác.
· Cung cấp chức năng hỗ trợ khách hàng tra cứu thông tin sản phẩm
nhằm giúp cho quá trình chọn lựa hàng hóa của khách hàng dễ dàng hơn.
· Cung cấp chức năng báo cáo thống kê theo nhiều tiêu chí khác nhau.

4. Thống kê các tác nhân (Actor)

Người quản lý:

Mô tả Là
giám
đốc
siêu
thị
hoặc
những
người
quản
lý các
bộ
phận
trong
siêu
thị.

Vai trò Chịu


trách
nhiệm
quản
lý hoạt
động
của
siêu
thị hay
các bộ
phận
riêng
lẻ.

Quyền Sử
dụng
toàn
bộ các
chức
năng
của hệ
thống.

Nhân viên nhập hàng:

Mô tả Nhân
viên
làm
việc
trong
siêu
thị,
thực
hiện
nghiệp
vụ
nhập
hàng
hóa
vào
kho.

Vai trò Chịu


trách
nhiêm
trong
khâu
nhập
hàng
từ nhà
cung
cấp,
lập
phiếu
nhập
hàng.

Quyền Sử
dụng
các
chức
năng:
lập
phiếu
nhập;
quản

thông
tin
nhóm
hàng,
ngành
hàng,
hàng
hóa và
nhà
cung
cấp.

Nhân viên xuất hàng:

Mô tả Nhân
viên
làm
việc
trong
siêu
thị,
thực
hiện
nghiệp
vụ
xuất
hàng
hóa
lên
quầy.

Vai trò Chịu


trách
nhiệm
trong
khâu
xuất
hàng
từ kho
lên
quầy,
lập
phiếu
xuất
hàng.

Quyền Sử
dụng
các
chức
năng:
lập
phiếu
xuất;
xem
thông
tin
hàng
hóa,
kiểm
tra
hàng
tồn.

Nhân viên bán hàng:

Mô tả Nhân
viên
làm
việc
trong
siêu
thị,
thực
hiện
nghiệp
vụ
thâu
ngân.

Vai trò Chịu


trách
nhiệm
trong
khâu
thanh
toán
cho
khách
hàng.
Quyền Sử
dụng
các
chức
năng:
lập
hóa
đơn,
xem
thông
tin
hàng
hóa,
kiểm
tra
hàng
tồn.

Nhân viên kiểm kê:

Mô tả Nhân
viên
làm
việc
trong
siêu
thị,
thực
hiện
nghiệp
vụ
kiểm

hàng
hoá.

Vai trò Chịu


trách
nhiệm
trong
khâu
kiểm
kê,
thống
kê số
lượng
hàng
hóa
trong
siêu
thị.

Quyền Sử
dụng
các
chức
năng:
lập
phiếu
kiểm
kê,
xem
thộng
tin các
phiếu
nhập

xuất,
kiểm
tra
hàng
tồn.

Nhân viên tin học:

Mô tả Nhân
viên
làm
việc
trong
bộ
phận
tin
học
của
siêu
thị.

Vai trò Chịu


trách
nhiệm
trong
việc
lập
báo
cáo
thống
kê.

Quyền Sử
dụng
các
chức
năng:
lập
báo
cáo
thống
kê,
xem
thông
tin
các
phiếu
nhập
xuất,
phiếu
kiểm
kê.

5. Mô tả và thiết kế các quy trình nghiệp vụ:


a. Nhập hàng từ nhà cung cấp:

Khi nhà cung cấp giao hàng, nhân viên nhập hàng sẽ tiếp nhận hàng hóa, đồng thời kiểm
tra xem thông tin về nhà cung cấp và những hàng hóa được nhập có sẵn trong danh mục
chưa. Nếu chưa có thông tin về nhà cung cấp lẫn hàng hóa được nhập tức đây là mặt được
nhập lần đầu, nhân viên phải nhập đầy đủ thông tin của nhà cung cấp và hàng hóa. Trong
trường hợp chỉ thiếu thông tin nhà cung cấp hoặc thông tin hàng thì nhân viên chỉ cần tạo
danh mục cho thông tin còn thiếu. Khi đã có đầy đủ thông tin, nhân viên nhập hàng sẽ tiến
hành lập phiếu nhập hàng, in và lưu trữ phiếu. Khi phiếu nhập được lập xong, số lượng hàng
hóa mới sẽ tự động cập nhật vào cơ sở dữ liệu.
b. Xuất hàng từ kho lên quầy:

Khi có yêu cầu xuất hàng từ kho lên quầy, nhân viên chịu trách nhiệm xuất hàng sẽ tiến
hành kiểm tra xem lượng hàng trong kho có đáp ứng được yêu cầu xuất hay không. Nếu có
thể đáp ứng được yêu cầu xuất, nhân viên sẽ tiến hành lập phiếu xuất. Ngược lại, nhân viên
sẽ thông báo cho người quản lý có trách nhiệm đặt hàng để đặt hàng với nhà cung cấp. Phiếu
xuất sau khi được lập sẽ tự động lưu trữ. Số lượng hàng trong kho và quầy được tự động cập
nhật.
c. Bán hàng tự chọn:

Khi khách đến mua hàng và có yêu cầu thanh toán, nhân viên thu ngân sẽ tiếp nhận yêu
cầu thanh toán. Nhân viên phải kiểm tra xem hàng có mã vạch không, nếu không có mã vạch
nhân viên này sẽ yêu cầu nhân viên chịu trách nhiệm quản lý các quầy hàng kiểm tra lại mã
hàng. Ngược lại, nhân viên sẽ tiến hành tính tiền và lập hóa đơn cho khách hàng. Hóa đơn
sau khi lập được in cho khách hàng và lưu trữ lại. Số lượng hàng trên quầy được tự động cập
nhật vào cơ sở dữ liệu.
d. Kiểm kê hàng hóa:

Cuối ngày hoạt động hay bất cứ khi nào có yêu cầu kiểm kê hàng hóa, nhân viên kiểm kê
sẽ tiến hành lập phiếu kiểm kê cho mặt hàng cần phải kiểm kê. Đồng thời đối chiếu với các
phiếu nhập, phiếu xuất, hóa đơn bán ra để biết số lượng hàng hóa lưu thông như thế nào.
e. Lập các báo cáo thống kê:

Tùy thuộc vào quy định của siêu thị mà các báo cáo được lập cuối ngày, cuối tháng hay
cuối mỗi kỳ hoạt động. Khi có yêu cầu lập báo cáo, nhân viên tin học sẽ lựa chọn hình thức
và tiêu chí lập báo cáo phù hợp với yêu cầu đề ra. Các loại hình báo cáo có thể như: báo cáo
bán hàng, báo cáo nhập hàng, báo cáo xuất hàng, báo cáo hàng tồn,... và các tiêu chí báo cáo
như: báo cáo theo ngày, chi tiết theo nhà cung cấp, theo từng loại hàng hóa… Tùy theo yêu
cầu của người quản lý mà nhân viên sẽ chọn ra hình thức lập báo cáo phù hợp.
3. XÂY DỰNG MÔ HÌNH ER

1. Xác định thực thể:

Thực thể 1: NHANVIEN


- Mỗi thực thể tượng trưng cho một nhân viên trong siêu thị
- Các thuộc tính: MaNV (thuộc tính khóa để phân biệt nhân viên này với nhân viên khác);
TenNV; Giới tính; NgaySinh; DiaChi; SoDienThoai ;
Thực thể 2: CHUCVU
- Mỗi thực thể tượng trưng cho một chức vụ của nhân viên trong siêu thị
- Các thuộc tính: MaCV (thuộc tính khóa để phân biệt chức vụ này với chức vụ khác);
TenCV.
Thực thể 3: QUYEN_DANGNHAP
- Mỗi thực thể tượng trưng cho quyền đăng nhập của nhân viên tùy theo chức vụ của nhân
viên đó.
- Các thuộc tính: TenDangNhap (thuộc tính khóa); MatKhau.
Thực thể 4: HANGHOA
- Mỗi thực thể tượng trưng cho một loại hàng hóa trong siêu thị.
- Các thuộc tính: MaHH (thuộc tính khóa để phân biệt hàng hóa này với hàng hoá khác);
TenHH; DonViTinh; HanSD; TrongLuong; NoiSX.
Thực thể 5: NHOMHANG
- Mỗi thực thể tượng trưng cho một nhóm hàng trong siêu thị
- Các thuộc tính: MaNhom (thuộc tính khóa); TenNhom.
Thực thể 6: NGANHHANG
- Mỗi thực thể tượng trưng cho một ngành hàng trong siêu thị
- Các thuộc tính: MaNganh (thuộc tính khóa); TenNganh.
Thực thể 7: NHACC
- Mỗi thực thể tượng trưng cho một nhà cung cấp hàng hóa cho siêu thị.
- Các thuộc tính: MaNCC (thuộc tính khóa); TenNCC; DiaChi; DienThoai; Fax; Email.
Thực thể 8: PHIEUNHAP
- Mỗi thực thể tượng trưng cho một phiếu nhập hàng của siêu thị.
- Các thuộc tính: MaPN (thuộc tính khoá); NgayNhap; MaChungTu; LoaiHoaDon;
TongPhaiTra.
Thực thể 9: PHIEUXUAT
- Mỗi thực thể tượng trưng cho một phiếu xuất hàng từ kho ra quầy của siêu thị.
- Các thuộc tính: MaPX (thuộc tính khoá); NgayXuat.
Thực thể 10: HOADONBANHANG
- Mỗi thực thể tượng trưng cho một hóa đơn bán hàng của siêu thị
- Các thuộc tính: MaHD (thuộc tính khóa); NgayBan; TongTienHD.
Thực thể 11: PHIEUKIEMKE
- Mỗi thực thể tượng trưng cho một phiếu kiểm kê của siêu thị.
- Các thuộc tính: MaPKK (thuộc tính khóa); NgayKK
3. Mô hình quan hệ:

NHANVIEN (MaNV, MaCV, TenNV, GioiTinh, SoDienThoai,Diachi).


CHUCVU (MaCV, TenCV).
QUYEN_DANGNHAP (TenDangNhap, MaCV, MatKhau).
HANGHOA (MaHH, TenHH, DonViTinh, TrongLuong, HanSD, NoiSX, MaNhom).
NHOMHANG (MaNhom, TenNhom, MaNganh).
NGANHHANG (MaNganh, TenNganh).
NHACUNGCAP (MaNCC, TenNCC, DiaChi, DienThoai, Fax, Email).
PHIEUNHAP (MaPN, NgayNhap, MaChungTu, LoaiHoaDon, MaNCC, TongPhaiTra,
MaNV).
CT_PHIEUNHAP (ID_CTPB, MaPN, MaHH, SLuong, DGia, ChietKhau,
NgayCapNhat).
PHIEUXUAT (MaPX, NgayXuat, MaNV).
CT_PHIEUXUAT (ID_CTPX, MaPX, MaHH, SLuong).
HOADONBANHANG (MaHD, NgayBan, TongTienHD, MaNV).
CT_HOADON (ID_CTHD, MaHD, MaHH, SLuong, DGia, Tile_VAT, ThanhTien).
PHIEUKIEMKE (MaPKK, NgayKK, MaNV)
CT_PHIEUKIEMKE (ID_CTPKK, MaPKK, MaHH, SL_Nhap, SL_Xuat, SL_Ban,
SL_TonQuay, SL_TonKho).
4. CÂU LỆNH TRUY VẤN

--Tạo database
USE MASTER
GO
IF EXISTS (SELECT*FROM sys.databases WHERE NAME ='QLBANHANG')
DROP DATABASE QLBANHANG
GO
CREATE DATABASE QLBANHANG
GO
USE QLBANHANG

-- Tạo bảng "Chức vụ"


CREATE TABLE CHUCVU
(MaCV varchar(4) primary key,
TenCV nvarchar(20) not null)

-- Tạo bảng "Nhân viên"


CREATE TABLE NHANVIEN
(MaNV varchar(8) primary key,
MaCV varchar(4) foreign key (MaCV) references CHUCVU(MaCV),
TenNV nvarchar(40) not null,
GioiTinh Nvarchar (3) check (GioiTinh in (N'Nam',N'Nu')) not null,
NgaySinh date not null,
DiaChi nvarchar(225) not null,
SoDienThoai char(10) not null)

--Tạo bảng "Quyền đăng nhập"


CREATE TABLE QUYEN_DANGNHAP
(TenDangNhap nvarchar(20) primary key,
MaCV varchar(4) foreign key (MaCV) references CHUCVU(MaCV),
MatKhau nvarchar(20) not null,)

-- Tạo bảng "Ngành hàng"


CREATE TABLE NGANHHANG
(MaNganh varchar(5) primary key,
TenNganh nvarchar(20) not null,)

-- Tạo bảng "Nhóm hàng"


CREATE TABLE NHOMHANG
(MaNhom varchar(5) primary key,
MaNganh varchar(5) foreign key (MaNganh) references NGANHHANG(MaNganh),
TenNhom nvarchar(20) not null,)

-- Tạo bảng "Hàng hóa"


CREATE TABLE HANGHOA
(MaHH varchar(10) primary key,
MaNhom varchar(5) foreign key (MaNhom) references NHOMHANG(MaNhom),
TenHH nvarchar(40) not null,
DonViTinh varchar(5) not null,
HanSD date not null,
TrongLuong float(8) not null,
NoiSX nvarchar(40) not null,)

-- Tạo bảng "Nhà cung cấp"


CREATE TABLE NHACUNGCAP
(MaNCC varchar(10) primary key,
TenNCC nvarchar(40) not null,
DiaChi nvarchar(225) not null,
DienThoai char(10) not null,
Fax char(10) not null,
Email nvarchar(20) not null,)
-- Tạo bảng "Phiếu nhập"
CREATE TABLE PHIEUNHAP
(MaPN varchar(5) primary key,
MaNCC varchar(10) foreign key (MaNCC) references NHACUNGCAP(MaNCC),
NgayNhap date not null,
MaChungTu varchar(10) not null,
LoaiHoaDon varchar(10) not null,
TongPhaiTra float(15) not null,
MaNV varchar(8) foreign key (MaNV) references NHANVIEN(MaNV),)

-- Tạo bảng "Chi tiết phiếu nhập"


CREATE TABLE CT_PHIEUNHAP
(ID_CTPN varchar(5) primary key,
MaPN varchar(5) foreign key (MaPN) references PHIEUNHAP(MaPN),
MaHH varchar(10) foreign key (MaHH) references HANGHOA(MaHH),
SLuong float(10) NOT NULL,
DGia float(10) NOT NULL,
ChietKhau float(10) NOT NULL,
NgayCapNhat date NOT NULL,)

--Tạo bảng "Phiếu xuất"


CREATE TABLE PHIEUXUAT
(MaPX varchar(5) primary key,
Ngayxuat date NOT NULL,
MaNV varchar(8) foreign key (MaNV) references NHANVIEN(MaNV),)

-- Tạo bảng "Chi tiết phiếu xuất"


CREATE TABLE CT_PHIEUXUAT
(ID_CTPX varchar(5) primary key,
MaPX varchar(5) foreign key (MaPX) references PHIEUXUAT(MaPX),
MaHH varchar(10) foreign key (MaHH) references HANGHOA(MaHH),
sluong float(10) not null,)

-- Tạo bảng "Hóa đơn bán hàng"


CREATE TABLE HOADONBANHANG
(MaHD varchar(5) primary key,
NgayBan date not null,
TongTienHD float(15) not null,
MaNV varchar(8) foreign key (MaNV) references NHANVIEN(MaNV),)

-- Tạo bảng "Chi tiết hóa đơn"


CREATE TABLE CT_HOADON
(ID_CTHD varchar(5) primary key,
MaHD varchar(5) foreign key (MaHD) references HOADONBANHANG(MaHD),
MaHH varchar(10) foreign key (MaHH) references HANGHOA(MaHH),
SLuong float(10) not null,
DGia float(10) not null,
Tile_VAT float(10) not null,
ThanhTien float(10) not null,)

-- Tạo bảng "Phiếu kiểm kê"


CREATE TABLE PHIEUKIEMKE
(MaPKK varchar(5) primary key,
NgayKK date not null,
MaNV varchar(8) foreign key (MaNV) references NHANVIEN(MaNV))

-- Tạo bảng "Chi tiết phiếu kiểm kê"


CREATE TABLE CT_PHIEUKIEMKE
(ID_CTPKK varchar(5) primary key,
MaPKK varchar(5) foreign key (MaPKK) references PHIEUKIEMKE(MaPKK),
MaHH varchar(10) foreign key (MaHH) references HANGHOA(MaHH),
SL_Nhap float(10) not null,
SL_Xuat float(10) not null,
SL_Ban float(10) not null,
SL_TonQuan float(10) not null,
SL_TonKho float(10) not null,)

-- Thêm dữ liệu vào bảng "Chức vụ"

INSERT INTO CHUCVU(MaCV,TenCV) VALUES ('111','Quan ly');

-- Thêm dữ liệu vào bảng "Nhân viên"

INSERT INTO NHANVIEN VALUES ('A1','111','Nguyen Thi A','Nu','1/1/2003','Ha


Noi','0123456789');

-- Thêm dữ liệu vào bảng "QUyền đăng nhập"

INSERT INTO QUYEN_DANGNHAP VALUES ('Tendangnhap1','111','123456');

-- Thêm dữ liệu vào bảng "Hàng hóa"

INSERT INTO HANGHOA VALUES ('HH111','MN111','Thit bo','kg','2003-12-


12','30','Thai Binh');
-- Thêm dữ liệu vào bảng "Nhóm hàng"

INSERT INTO NHOMHANG VALUES ('MN111','NH111','Thuc pham song');

-- Thêm dữ liệu vào bảng "Ngành hàng"

INSERT INTO NGANHHANG VALUES ('NH111','Thuc pham');

-- Thêm dữ liệu vào bảng "Nhà cung cấp'

INSERT INTO NHACUNGCAP VALUES('NCC111','Cong ty Lam Bui','Cau


Giay','0862289686','1234567890','lambui1@gmail.com');

-- Thêm dữ liệu vào bảng "Phiếu nhập"

INSERT INTO PHIEUNHAP VALUES ('PN111','NCC111','2023-11-


04','CT111','the','100000','A2');

-- Thêm dữ liệu vào bảng "Chi tiết phiếu nhập"

INSERT INTO CT_PHIEUNHAP VALUES


('ID111','PN111','HH111','30','20000','10','2023-11-5');

-- Thêm dữ liệu vào bảng "Phiếu xuất"

INSERT INTO PHIEUXUAT VALUES ('PX111','2012-11-1','A3');

-- Thêm dữ liệu vào bảng 'Chi tiết phiếu xuất'

INSERT INTO CT_PHIEUXUAT VALUES ('IDX11','PX111','HH111','10');

-- Thêm dữ liệu vào bảng 'Hóa đơn bán hàng'

INSERT INTO HOADONBANHANG VALUES ('HD111','2023-02-03','1000000','A1');

-- Thêm dữ liệu vào bảng 'Chi tiết hóa đơn'

INSERT INTO CT_HOADON VALUES


('IDCT1','HD111','HH111','50','50000','2','100000');

-- Thêm dữ liệu vào bảng 'Phiếu kiểm kê'

INSERT INTO PHIEUKIEMKE VALUES ('PKK11','2023-01-01','A4');

-- Thêm dữ liệu vào bảng 'Chi tiết phiếu kiểm kê'

INSERT INTO CT_PHIEUKIEMKE VALUES


('IDKK1','PKK11','HH111','60','30','10','20','10');
2. TRUY VẤN

-- 1.Cho biết hàng hóa thuộc nhóm hàng thực phẩm sống và được sản xuất ở Thái Bình

SELECT MaHH, HANGHOA.MaNhom, TenNhom, TenHH, NoiSX

FROM HANGHOA, NHOMHANG

WHERE NHOMHANG.MaNhom = HANGHOA.MaNhom

and TenNhom = 'Thuc pham song'

and NoiSX = 'Thai Binh';

-- 2. Cho biết tên nhân viên ở Hà Nội và có chức vụ quản lý

SELECT MaNV,CHUCVU.MaCV,CHUCVU.TenCV,TenNV,GioiTinh, NgaySinh, DiaChi,


SoDienThoai

FROM NHANVIEN, CHUCVU

WHERE NHANVIEN.MaCV=CHUCVU.MaCV

and CHUCVU.MaCV ='111'

and DiaChi ='Ha Noi';

--3.Tính tổng số lượng hàng hóa đã nhập trong quý 3 năm 2023

SELECT SUM (SLuong) as TongSluong FROM CT_PHIEUNHAP, PHIEUNHAP

WHERE PHIEUNHAP.MaPN = CT_PHIEUNHAP.MaPN

and PHIEUNHAP.NgayNhap between '2023-03-01' and '2023-03-31';

--4.Cho biết tên hàng hóa và số lượng hàng hóa được xuất vào ngày 01/08/2012

SELECT TenHH, CT_PHIEUXUAT.sluong

FROM HANGHOA, PHIEUXUAT, CT_PHIEUXUAT

WHERE HANGHOA.MaHH = CT_PHIEUXUAT.MaHH

and PHIEUXUAT.MaPX = CT_PHIEUXUAT.MaPX

and Ngayxuat ='2012-08-01';

--5.Tính tổng tiền hóa đơn mà nhân viên Nguyễn Thị A đã lập vào quý 1 năm 2023

SELECT SUM (TongTienHD)


as Tong

FROM HOADONBANHANG, NHANVIEN

WHERE HOADONBANHANG.MaNV=NHANVIEN.MaNV

and NgayBan between '2023-01-01' and '2023-03-31'

and TenNV='Nguyen Thi A';

--6.Với mỗi nhà cung cấp, liệt kê tổng tiền siêu thị phải trả cho họ

SELECT DISTINCT MaNCC,

SUM(TongPhaiTra) OVER (PARTITION BY MaNCC)

AS TongPhaiTraNCC

FROM PHIEUNHAP, CT_PHIEUNHAP

WHERE PHIEUNHAP.MaPN = CT_PHIEUNHAP.MaPN

--7.Cho biết tên mặt hàng bán chạy nhất vào quý 1 năm 2023

SELECT MAX(SL_Ban)

As MAXSLban

FROM CT_PHIEUKIEMKE, PHIEUKIEMKE

WHERE CT_PHIEUKIEMKE.MaPKK=PHIEUKIEMKE.MaPKK

and NgayKK between '2023-01-01' and '2023-03-31'

--8.Thống kê chi tiết kiểm kê các hàng hóa vào ngày 01/12/2023

SELECT *FROM CT_PHIEUKIEMKE, PHIEUKIEMKE

WHERE CT_PHIEUKIEMKE.MaPKK=PHIEUKIEMKE.MaPKKv

and NgayKK = '2023-12-01';

15. QLY NSU

QUẢN LÝ NHÂN SỰ

1. GIỚI THIỆU

1.1. Thực trạng vấn đề


Một số công ty vừa và nhỏ hoặc startup thường sử dụng phần mềm Access for Win hoặc
Excel để quản lý tất cả thông tin, hồ sơ của nhân sự. Điều này gây khó khăn cho việc cần
thiết phải lưu trữ một khối lượng lớn thông tin về: thông tin cá nhân, thân nhân, trình độ học
vấn, quá trình tuyển dụng, lưu trả hồ sơ theo thời hạn... Phòng nhân sự sẽ phải tổng hợp hết
tất cả hồ sơ và tổ chức tuyển dụng cũng như thay đổi hợp đồng theo thời hạn, nên đôi khi
không thể kiểm soát được hết, tốc độ truy xuất dữ liệu không đủ nhanh để đáp ứng được nhu
cầu của thời đại. Ngoài ra, việc không thống nhất một cách ghi chép chung trên excel cũng
dẫn đến việc dữ liệu bị sai và gây ra khó tìm kiếm. Đồng thời dữ liệu được lưu trên nhưng
file rời rạc và không thể đáp ứng được nhu cầu tổng hợp dữ liệu để đưa ra báo cáo hoặc tốn
nhiều công sức, thời gian để tổng hợp được báo cáo cần thiết. Điều này khiến cho nhà quản
lý không có đủ dữ liệu và khó có cái nhìn chung, báo quát để có những kế hoạch, định hướng
kịp thời. Doanh nghiệp khó có thể bắt kịp thị trường để phát triển.

Trong thời đại công nghệ 4.0, sử dụng công nghệ thông tin để quản lý nhân sự đã trở thành
một yếu tố không thể thiếu để tăng tính hiệu quả và đáp ứng nhanh chóng với sự biến động
của thị trường.

Tuki Group là startup về Thương mại điện tử, với sứ mệnh đem lại những giải pháp tối ưu
khi mua hàng qua mạng và ứng dụng công nghệ, công ty có nhu cầu xây dựng chương trình
quản lý nhân sự với quy mô ban đầu là quản lý 50 nhân viên.

1.2. Mục đích

- Mục đích của tài liệu đặc tả yêu cầu phần mềm này là cung cấp một cái nhìn tổng quan, dễ
hiểu về các yêu cầu, thành phần của cơ sở dữ liệu quản lý nhân sự.

- Tài liệu được tạo để phục vụ cho những nhà phát triển phần mềm, kiểm thử viên cũng như
các bên liên quan, từ đó thiết lập một cơ sở để có cái nhìn chung cho toàn bộ các đơn vị về
yêu cầu chức năng trong hệ thống.

- Tạo điều kiện cho sự hiểu biết chung về các yêu cầu chức năng đối với tất cả các bên liên
quan.

1.3. Phạm vi

- Tài liệu đặc tả yêu cầu phần mềm này được xây dựng nhằm phục vụ cho việc quản lý và tổ
chức thông tin liên quan đến nhân sự một cách chính xác và hiệu quả, từ đó phục vụ cho nhu
cầu ứng dụng công nghệ thông tin vào hỗ trợ vận hành doanh nghiệp hiện nay.

- Công ty Tuki Group có nhu cầu xây dựng chương trình quản lý nhân sự cho công ty với
quy mô ban đầu là quản lý 50 nhân viên.

1.4. Đối tượng sử dụng


Tài liệu này được sử dụng với các đối tượng như sau:

- Developer: Có trách nhiệm trong việc phát triển thiết kế hệ thống chi tiết, thực hiện kiểm
tra chức năng, kiểm tra tích hợp hệ thống.

- UI Designer: Lên kế hoạch và phát triển phần UI.

- Tester: Lên kế hoạch kiểm thử và xác thực kết quả.

- Đội tài liệu: Chịu trách nhiệm viết các hướng dẫn sử dụng cho phần mềm.

- Nhân viên kỹ thuật: Hiểu cấu trúc cơ sở dữ liệu và các quy trình liên quan một cách chính
xác để bảo trì và sửa chữa cơ sở dữ liệu.

- Nhân viên hỗ trợ kỹ thuật: Hỗ trợ người dùng phần mềm khi có vấn đề liên quan đến cơ sở
dữ liệu.

2. TỔNG QUAN YÊU CẦU

2.1. Thiết kế hệ thống ( Link: Script Code Tạo Database )

2.1.1 Xác định thực thể

Thực thể Diễn giải Mô tả

NhanVien Nhân viên Thực thể bao gồm các nhân viên làm việc tại
doanh nghiệp. Mỗi nhân viên được xác định bởi
mã nhân viên duy nhất, tên nhân viên, email, số
điện thoại

PhongBan Phòng ban Thực thể bao gồm các phòng ban như phòng nhân
sự, phòng kế toán. Mỗi phòng ban được xác định
bởi 1 mã phòng ban duy nhất, tên phòng ban, địa
chỉ, số điện thoại

ChucVu Chức vụ Thực thể bao gồm các chức vụ trong doanh
nghiệp. Mỗi chức vụ sẽ có 1 mã chức vụ duy nhất,
tên chức vụ, ngày nhận chúc

TrinhDoHoc Trình độ Thực thể gồm trình độ văn hóa của các nhân viên
Van văn hóa trong doanh nghiệp. Mỗi trình độ văn hóa sẽ có 1
mã trình độ văn hóa duy nhất, trường, hình thức
đào tạo, xếp loại, năm cấp

HocHamHoc Học hàm Thực thể gồm học hàm học vị của các nhân viên
Vi học vị trong doanh nghiệp. Mỗi học hàm học vị sẽ có 1
học vị duy nhất, xếp loại, nơi đào tạo, năm cấp,
lĩnh vực, học hàm học vị

ChungChi Chứng chỉ Thực thể gồm chứng chỉ của các nhân viên trong
doanh nghiệp. Mỗi chứng chỉ gồm mã chứng chỉ
(duy nhất), loại chứng chỉ, năm cấp, nơi cấp chứng
chỉ, xếp loại chứng chỉ, lĩnh vực

PhuCap Phụ cấp Thực thể gồm phụ cấp dành cho nhân viên trong
doanh nghiệp. Mỗi phụ cấp gồm mã phụ cấp (duy
nhất), loại phụ cấp, số tiền dành cho phụ cấp

KTKL Khen Thực thể gồm các loại khen thưởng/kỷ luật trong
thưởng/Kỷ doanh nghiệp. Mỗi loại khen thưởng/kỷ luật gồm
luật mã khen thưởng/kỷ luật (duy nhất), số tiền khen
thưởng/kỷ luật, loại khen thưởng/kỷ luật

HopDong Hợp đồng Thực thể là hợp đồng của người lao động với
doanh nghiệp. Mỗi loại hợp đồng gồm mã hợp
đồng (duy nhất), thời hạn hợp đồng và lương cơ
bản, ngày chấm dứt, ngày hiệu lực, nội dung hợp
đồng, người ký

HoSo Hồ sơ Thực thể là hồ sơ của các nhân viên trong công ty.
Mỗi hồ sơ gồm một mã hồ sơ duy nhất, giới tính,
họ tên, quê quán, dân tộc, căn cước công dân,
ngày sinh, tôn giáo nhân viên

NguoiThan Người thân Thực thể là người thân của các nhân viên. Mỗi
người thân gồm có mã số (duy nhất), họ tên, giới
tính, ngày sinh
2.1.2. Xác định các thuộc tính của thực thể

Thực thể Thuộc tính Diễn giải Kiểu dữ


liệu

HoSo MaHS Mã hồ sơ nvarchar(5


0)

Hoten Họ tên nhân viên nvarchar(5


0)

Dantoc Dân tộc nhân viên nvarchar(5


0)

QueQuan Quê quán nhân viên nvarchar(5


0)

SDT Số điện thoại nhân viên nvarchar(5


0)

Ngaysinh Ngày sinh nhân viên date

CCCD Căn cước công dân nvarchar(5


0)

PhongBan MaPB Mã phòng ban nvarchar(5


0)

TenPB Tên phòng ban nvarchar(5


0)

Diachi Địa chỉ phòng ban nvarchar(5


0)

SDT Số điện thoại nvarchar(5


0)

NguoiThan Maso Mã số người thân nvarchar(5


0)

GioiTinh Giới tính người thân nvarchar(5


0)

NgaySinh Ngày sinh người thân date

Hoten Họ tên người thân nvarchar(5


0)

ChucVu MaCV Mã chức vụ nvarchar(5


0)

NgayNC Ngày nhận chức date

TenCV Tên chức vụ nvarchar(5


0)
TrinhDoVanHoa MaTDVH Mã trình độ văn hóa nvarchar(5
0)

Truong Trường nvarchar(5


0)

NamCap Năm cấp int

XepLoai Xếp loại nvarchar(5


0)

Hinhthuc Hình thức nvarchar(5


0)

HocHamHocVi MaHHHV Mã học hàm học vị nvarchar(5


0)

NoiDT Nơi đào tạo nvarchar(5


0)

NamDT Năm đào tạo int

HHHV Học hàm học vị nvarchar(5


0)

LV Lĩnh vực học hàm học vị nvarchar(5


0)

PhuCap MaPC Mã phụ cấp nvarchar(5


0)
TenPC Tên phụ cấp nvarchar(5
0)

Sotien Số tiền phụ cấp int

KhenThuong/ MaSo Mã số khen thưởng/kỷ nvarchar(5


KyLuat luật 0)

NoiDung Nội dung khen thưởng/Kỷ nvarchar(5


KT/KL luật 0)

Sotien Số tiền khen thưởng/Kỷ int


luật

HopDong MaHD Mã hợp đồng nvarchar(5


0)

ThoiHan Thời hạn hợp đồng int

NamKy Năm ký hợp đồng int

NguoiKy Người ký hợp đồng nvarchar(5


0)

NgayHL Ngày hiệu lực hợp đồng date

LuongCoBan Lương cơ bản int

ChungChi MaCC Mã chứng chỉ nvarchar(5


0)

NoiDTCC Nơi đào tạo nvarchar(5


0)

NamCapCC Năm cấp int

XepLoaiCC Xếp loại nvarchar(5


0)

LVCC Lĩnh vực nvarchar(5


0)

LoaiCC Loại chứng chỉ int

2.4.5. Các chức năng cơ bản của hệ thống và Sơ đồ hệ thống

Qua quá trình nghiên cứu, nhóm đã xây dựng được một hệ cơ sở dữ liệu quản lý nhân sự cơ
bản đáp ứng được một số yêu cầu của các doanh nghiệp như sau:

- Quản lý thông tin nhân sự bao gồm đầy đủ, chi tiết về nhân sự trong doanh nghiệp

- Theo dõi, cập nhật thường xuyên thông tin nhân sự, phòng ban, tổ đội trong doanh nghiệp

- Quản lý các thông tin liên quan tới nhân sự và khen thưởng, kỷ luật nhân viên

- Quản lý các thông tin liên quan tới việc tuyển dụng nhân sự mới trong doanh nghiệp

- Trả hồ sơ cho nhân viên khi chấm dứt hợp đồng lao động

Sơ đồ hệ thống được thể hiện như sau:

You might also like