Tải bản đầy đủ (.pdf) (32 trang)

Bài tập lớn xây dựng phần mềm quản lý trung tâm tiếng anh

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (878.99 KB, 32 trang )

ĐẠI HỌC THỦY LỢI
KHOA CÔNG NGHỆ THÔNG TIN
MÔN HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

BÁO CÁO BÀI TẬP LỚN
Đề tài : XÂY DỰNG PHẦN MỀM QUẢN LÝ
TRUNG TÂM TIẾNG ANH

Hà Nội

Trang 1/ 32


MỤC LỤC
Lời nói đầu
I. BÀI TỐN ĐẶT RA VÀ U CẦU CỦA HỆ THỐNG

3
4

II. PHÂN TÍCH HỆ THỐNG

4

1.1. Giới thiệu về đề tài:
1.2. Yêu cầu chung của bài toán:
1.3. Cách thức giải quyết bài toán:
1.4. Phát biểu nghiệp vụ của bài tốn:

4
4


4
4

2.1. Phân tích chức năng của hệ thống
2.2. Người sử dụng hệ thống

4
5

III. XÂY DỰNG MƠ HÌNH THỰC THỂ LIÊN KẾT ER

5

3.1. Xác định các quy tắc và ràng buộc
3.2. Xác định thực thể, thuộc tính và liên kết
3.3. Xây dựng mơ hình thực thể liên kết ER

5
6
10

IV. CHUYỂN TỪ MƠ HÌNH THỰC THỂ LIÊN KẾT SANG MƠ HÌNH
QUAN HỆ
V. MƠ HÌNH HỆ THỐNG
VI. CÂU LỆNH TRUY VẤN SQL.

10
13
15


5.1. Tạo và thêm dữ liệu vào bảng.
5.2. Thực hiện các câu lệnh truy vấn.

15
21

5.2.1. Thủ tục (Procedure)
5.2.2. Hàm (Function)
5.2.3. Trigger
5.2.4. View
5.2.5. Con trỏ
5.2.6. Phân quyền cho người dùng
5.2.7. Transaction
VII. TÀI LIỆU THAM KHẢO

21
23
25
27
29
30
31
31

Trang 2/ 32


Lời nói đầu
Hiện nay, cơng nghệ thơng tin được xem là một ngành mũi nhọn của quốc gia,
đặc biệt là các quốc gia đang phát triển, tiến hành công nghiệp hóa hiện đại hóa như

nước ta. Sự bùng nổ thơng tin và sự phát triển mạnh mẽ của công nghệ kỹ thuật số,
yêu cầu muốn phát triển thì phải tin học hóa tất cả các ngành, các lĩnh vực.
Cùng với sự phát triển nhanh chóng về phần cứng máy tính, các phần mềm
ngày càng trở nên đa dạng, phong phú, hoàn thiện hơn và hỗ trợ hiệu quả cho con
người. Các phần mềm hiện nay ngày càng mô phỏng được rất nhiều nghiệp vụ khó
khăn, hỗ trợ cho người dùng thuận tiện sử dụng, thời gian xử lí nhanh chóng, và
một số nghiệp vụ được tự động hóa cao.
Ví dụ như việc quản lí một trung tâm Tiếng Anh. Nếu khơng có sự hỗ trợ của
tin học, việc quản lí này phải cần rất nhiều người, chia thành nhiều khâu, mới có thể
quản lí được tồn bộ học viên( thơng tin, điểm số, lộ trình học,...), lớp học( sĩ số,
giáo viên giảng dạy...), giảng viên,... cũng như các quy trình quản lý trung tâm. Các
cơng việc này địi hỏi nhiều thời gian và cơng sức, mà sự chính xác và hiệu quả
khơng cao, vì đa số đều làm bằng thủ cơng rất ít tự động. Một số nghiệp vụ như tra
cứu, thống kê, và hiệu chỉnh thông tin khá vất vả. Ngồi ra cịn một số khó khăn về
vấn đề lưu trữ khá đồ sộ, dễ bị thất lạc, tốn kém,... Trong khi đó, các nghiệp vụ này
hồn tồn có thể tin học hóa một cách dễ dàng. Với sự giúp đỡ của tin học, việc
quản lí học vụ sẽ trở nên đơn giản, thuận tiện, nhanh chóng và hiệu quả hơn rất
nhiều.
Mục tiêu của bài báo cáo là nêu rõ các đặc tả yêu cầu của hệ thống, phân
tích, thiết kế để xây dựng được phần mềm quản lý trung tâm Tiếng Anh trên phục
vụ cho việc quản lý hồn tồn tự động trên máy tính.

Trang 3/ 32


I.
1.1.

BÀI TOÁN ĐẶT RA VÀ YÊU CẦU CỦA HỆ THỐNG
Giới thiệu về đề tài:

Như chúng ta đã biết, hiện nay rất nhiều trung tâm Tiếng Anh được mở lên
nhằm đào tạo, cải thiện kỹ năng Tiếng Anh của mọi người. Trong một trung tâm
Tiếng Anh chúng ta cần giải quyết rất nhiều vấn đề đồng thời để giải quyết những
vấn đề đó chúng ta cần rất nhiều bộ phận quản lý như nhân viên, giảng viên, …Đặc
biệt vào những mùa hè lượng học viên tăng rất cao, số lượng học viên rất đơng. Vì
vậy u cầu đặt ra là : Phải làm sao để tiết kiệm được thời gian, nguồn nhân lực,
bảo mật được hệ thống quản lý, đáp ứng đủ nhu cầu của học viên, giảng
viên,…?
1.2. Yêu cầu chung của bài toán:
Đặc tả yêu cầu, chức năng: Quản lý điểm của học viên, quản lý học phí của
học viên trong các khóa học, quản lý khen thưởng giảng viên, quản lý tài liệu, cấp
độ, khóa học.
1.3. Cách thức giải quyết bài tốn:
Tìm hiểu quy tắc nghiệp vụ, các u cầu đặt ra của đề tài. Các ngơn ngữ lập
trình và cơ sở dữ liệu. Xây dựng phần mềm. Tiến hành kiểm tra và chạy thử.
1.4. Phát biểu nghiệp vụ của bài toán:
Quản lý học viên: Nhân viên quản lý trung tâm có quyền tìm kiếm học viên,
in danh sách học viên, thêm những học viên mới, sửa thông tin của học viên, xóa
những học viên nghỉ học.
Quản lý khen thưởng: Mỗi giảng viên sẽ có mức khen thưởng khác nhau,
nhân viên quản lý trung tâm có quyền bổ sung thêm những giảng viên được khen
thưởng.
Quản lý lớp: Nhập mới thơng tin lớp, sửa chữa thơng tin, xóa bỏ những lớp
đã học xong.
Quản lý điểm thi: Giảng viên có quyền cập nhật điểm thi của các học viên,
tìm kiếm điểm thi theo học viên.
Quản lý học phí: Nhập mới các mức học phí tùy theo các cấp độ mà trung
tâm có, sửa chữa thơng tin.
Quản lý cấp độ: Các cấp độ mà trung tâm có dành cho các khóa học sẽ được
lưu lại tại hệ thống. Đồng thời hệ thống sẽ quản lý dữ liệu của các cấp độ.

Quản lý khóa học: Bổ sung các khóa học thường xuyên. Các khóa học mà
trung tâm có sẽ được lưu lại tại hệ thống. Đồng thời hệ thống sẽ quản lý dữ liệu.
Quản lý tài liệu: Cập nhật số lượng tài liệu thường xuyên và điều chỉnh nội
dung phù hợp với cấp độ.
II.
PHÂN TÍCH HỆ THỐNG
2.1. Phân tích chức năng của hệ thống

Trang 4/ 32


Hình 1: Mơ hình chức năng hệ thống
2.2. Người sử dụng hệ thống

Nhân viên: Nhân viên quản lý học viên, quản lý khen thưởng và quản lý lớp.
Nhân viên có quyền truy cập vào tất cả các chức năng của hệ thống đối với học
viên, khen thưởng và lớp. Cập nhật, sửa đổi, bổ sung khi cần thiết.

Giảng viên: Giảng viên có quyền truy cấp các chức năng đối với điểm của học
viên. Cập nhật điểm thi, sửa đổi và thống kê điểm của học viên.

Học viên: Học viên tương tác với phần mềm qua mã học viên, xem trực tiếp
điểm của mình.
III. XÂY DỰNG MƠ HÌNH THỰC THỂ LIÊN KẾT ER
3.1. Xác định các quy tắc và ràng buộc
a) Trung tâm có nhiều giảng viên (GIANGVIEN). Mỗi giảng viên có mã (MaGV)
duy nhất và tên giảng viên (tenGV), số điện thoại giảng viên (SdtGV) và số
buổi giảng dạy của giảng viên đó (SobuoiGD).
b) Mỗi giảng viên giảng dạy nhiều lớp (LOP). Mỗi lớp được dạy bởi nhiều giảng
viên. Thuộc tính (NgayGD) là thuộc tính của kiểu liên kết được dùng để ghi lại

ngày giảng dạy của mỗi giảng viên khi giảng dạy một lớp nào đó. Mỗi lớp có
mã lớp (MaLop) duy nhất, thời gian mở (TgianMo), thời gian kết thúc
(TgianKetthuc), mức học viên dự kiến (HVDK).
c) Một lớp có nhiều học viên (HOCVIEN). Mỗi học viên có mã học viên (MaHV)
duy nhất, tên học viên (TenHV), ngày sinh(Ngaysinh), giới tính(Gioitinh) và có
số điện thoại riêng dành cho mỗi học viên (SDTHocvien).
Trang 5/ 32


d) Mỗi học viên học tập tại trung tâm đăng ký một khóa học (KHOAHOC). Mỗi
khóa học có mã khóa học(MaKH), tên khóa học (TenKH) và mơ tả khóa học
(MotaKH).
e) Trong mỗi khóa học sẽ có nhiều cấp độ (CAPDOKH) để phù hợp với nguyện
vọng đăng ký của học viên, nhưng mỗi cấp độ sẽ được phụ trách bởi nhiều
giảng viên và mỗi lớp dạy một cấp độ. Mỗi cấp độ bao gồm có mã cấp độ
(MaCD), tên cấp độ (TenCD).
f) Mỗi nhân viên (NHANVIEN) quản lý một lớp. Trong nhân viên lưu lại thơng
tin của nhân viên là có mã nhân viên (MaNV) duy nhất, tên nhân viên (TenNV)
và số buổi đi làm (số buổi quản lý lớp) của mỗi nhân viên (SobuoiQL).
g) Lưu lại thông tin về nhân viên quản lý trực tiếp của nhân viên. Người quản lý
trực tiếp cũng là một nhân viên được gọi là NVQL.
h) Mỗi cấp độ có mức học phí (HOCPHI) khác nhau. Mỗi mức học phí ta lưu lại
thơng tin về tổng tiền (Tongtien) của mỗi cấp độ.
i) Mỗi giảng viên được một mức khen thưởng (KHENTHUONG) sau khi kết thúc
khóa học. Trong khen thưởng có mã khen thưởng (MaKT) duy nhất và mức độ
khen thưởng phù hợp với từng giảng viên (MucdoKT).
j) Với mỗi cấp độ sẽ ứng với nhiều tài liệu (TAILIEU). Mỗi tài liệu có mã tài liệu
(MaTL) duy nhất và tên tài liệu (TenTL).
k) Mỗi học viên sẽ tham gia nhiều bài thi phù hợp với cấp độ mà học viên đó đăng
ký. Bảng thi (THI) sẽ lưu lại điểm của các học viên (DiemCD) sau khi thi.

l) Bảng đăng nhập (ACCOUNT) để lưu lại tài khoản.
3.2. Xác định thực thể, thuộc tính và liên kết
a) Trung tâm có nhiều giảng viên (GIANGVIEN). Mỗi giảng viên có mã (MaGV)
duy nhất và tên giảng viên (tenGV), số điện thoại giảng viên (SdtGV) và số
buổi giảng dạy của giảng viên đó (SobuoiGD).
► GIANGVIEN (MaGV, TenGV, SdtGV, SobuoiGD).

b) Mỗi giảng viên giảng dạy nhiều lớp (LOP). Mỗi lớp được dạy bởi nhiều giảng
viên. Thuộc tính (NgayGD) là thuộc tính của kiểu liên kết được dùng để ghi lại
ngày giảng dạy của mỗi giảng viên khi giảng dạy một lớp nào đó. Mỗi lớp có
mã lớp (MaLop) duy nhất, thời gian mở (TgianMo), thời gian kết thúc
(TgianKetthuc), mức học viên dự kiến (HVDK).
► LOP (MaLop, TgianMo, TgianKetthuc, HVDK).
Trang 6/ 32


c) Một lớp có nhiều học viên (HOCVIEN). Mỗi học viên có mã học viên (MaHV)
duy nhất, tên học viên (TenHV), ngày sinh(Ngaysinh), giới tính(Gioitinh) và có
số điện thoại riêng dành cho mỗi học viên (SDTHocvien).
► HOCVIEN (MaHV, TenHV, NgaySinh, Gioitinh, SDTHocvien).

d) Mỗi học viên học tập tại trung tâm đăng ký một khóa học (KHOAHOC). Mỗi
khóa học có mã khóa học(MaKH), tên khóa học (TenKH) và mơ tả khóa học
(MotaKH).
► KHOAHOC (MaKH, TenKH, MotaKH).

e) Trong mỗi khóa học sẽ có nhiều cấp độ (CAPDOKH) để phù hợp với nguyện
vọng đăng ký của học viên, nhưng mỗi cấp độ sẽ được phụ trách bởi nhiều
Trang 7/ 32



giảng viên và mỗi lớp dạy một cấp độ. Mỗi cấp độ bao gồm có mã cấp độ
(MaCD), tên cấp độ (TenCD).
► CAPDOKH (MaCD, TenCD).

f) Mỗi nhân viên (NHANVIEN) quản lý một lớp. Trong nhân viên lưu lại thông
tin của nhân viên là có mã nhân viên (MaNV) duy nhất, tên nhân viên (TenNV)
và số buổi đi làm (số buổi quản lý lớp) của mỗi nhân viên (SobuoiQL).
g) Lưu lại thông tin về nhân viên quản lý trực tiếp của nhân viên. Người quản lý
trực tiếp cũng là một nhân viên được gọi là NVQL.
► NHANVIEN (MaNV, TenNV, SobuoiQL, NVQL).

Nhân viên đó được gọi là nhân viên quản lý (NVQL).

h) Mỗi cấp độ có mức học phí (HOCPHI) khác nhau. Mỗi mức học phí ta lưu lại
thơng tin về tổng tiền (Tongtien) của mỗi cấp độ.
► HOCPHI (Tongtien).
Trang 8/ 32


i)

Mỗi giảng viên được một mức khen thưởng (KHENTHUONG) sau khi kết thúc
khóa học. Trong khen thưởng có mã khen thưởng (MaKT) duy nhất và mức độ
khen thưởng phù hợp với từng giảng viên (MucdoKT).
► KHENTHUONG (MaKT, MucdoKT).

j)

Với mỗi cấp độ sẽ ứng với nhiều tài liệu (TAILIEU). Mỗi tài liệu có mã tài liệu

(MaTL) duy nhất và tên tài liệu (TenTL).
► TAILIEU (MaTL, TenTL).

k) Mỗi học viên sẽ tham gia nhiều bài thi phù hợp với cấp độ mà học viên đó đăng
ký. Bảng thi (THI) sẽ lưu lại điểm của các học viên (DiemCD) sau khi thi.
► THI (DiemCD).

Trang 9/ 32


l)

Bảng đăng nhập (ACCOUNT) để lưu lại tài khoản.
► ACCOUNT (Tendangnhap, Matkhau, Vaitro).

3.3. Xây dựng mơ hình thực thể liên kết ER

Hình 2: Mơ hình liên kết thực thể ER
IV. CHUYỂN TỪ MƠ HÌNH THỰC THỂ LIÊN KẾT SANG MƠ HÌNH
QUAN HỆ
Bước 1: Các thực thể (trừ thực thể yếu) → các bảng /quan hệ.
GIANGVIEN (MaGV, TenGV, SdtGV, SobuoiGD).
Trang 10/ 32


LOP (MaLop, TgianMo, TgianKetthuc, HVDK).
HOCVIEN (MaHV, TenHV, NgaySinh, Gioitinh, SDTHocvien).
KHOAHOC (MaKH, TenKH, MotaKH).
CAPDOKH (MaCD, TenCD).
NHANVIEN (MaNV, TenNV, SobuoiQL, NVQL).

HOCPHI (Tongtien).
KHENTHUONG (MaKT, MucdoKT).
TAILIEU (MaTL, TenTL).
THI (DiemCD).
Bước 2: Khơng có thực thể yếu.
Bước 3: Liên kết 1-1 → khóa của 1 bên sang làm khóa ngoại bên kia.
KHENTHUONG - GIANGVIEN có liên kết 1-1: Đưa khóa chính của
GIANGVIEN sang làm khóa ngoại của KHENTHUONG.
KHENTHUONG (MaKT, MucdoKT, MaGV).
NHANVIEN - LOP có liên kết 1-1 : Đưa khóa chính của NHANVIEN sang
làm khóa ngoại của LOP.
LOP (MaLop, TgianMo, TgianKetthuc, HVDK, MaNV).
LOP - CAPDOKH có liên kết 1-1 : Đưa khóa chính của LOP sang làm khóa
ngoại của CAPDOKH.
CAPDOKH (MaCD, TenCD, MaLop).
KHOAHOC - HOCVIEN có liên kết 1-1 : Đưa khóa chính của KHOAHOC
sang làm khóa ngoại của HOCVIEN
HOCVIEN (MaHV, TenHV, NgaySinh, Gioitinh, SDTHocvien, MaKH).
CAPDOKH - HOCPHI có liên kết 1-1 : Đưa khóa chính của CAPDOKH
sang làm khóa ngoại của HOCPHI
HOCPHI (MaCD, TongTien)
Bước 4: Liên kết 1-N → khóa của bảng bên 1 trở thành khóa ngoại ở bảng bên
nhiều.
CAPDOKH - GIANGVIEN có liên kết 1-N: Đưa khóa chính của
CAPDOKH sang thành khóa ngoại của GIANGVIEN.
GIANGVIEN (MaGV, TenGV, SdtGV, SobuoiGD, MaCD).
CAPDOKH - TAILIEU có liên kết 1-N: Đưa khóa chính của CAPDOKH
sang thành khóa ngoại của TAILIEU.
TAILIEU (MaTL, TenTL, MaCD).
KHOAHOC - CAPDOKH có liên kết 1-N: Đưa khóa chính của

KHOAHOC sang làm khóa ngoại của CAPDOKH.
CAPDOKH (MaCD, TenCD, MaLop, MaKH).
Trang 11/ 32


LOP - HOCVIEN có liên kết 1-N: Đưa khóa chính của LOP sang làm khóa
ngoại của HOCVIEN.
HOCVIEN (MaHV, TenHV, NgaySinh, Gioitinh, SDTHocvien, MaKH,
MaLop).
** Thuộc tính NVQL để chỉ ra người quản lý. NVQL là khóa ngồi của
nhân viên tham chiếu đến NHANVIEN.
NHANVIEN (MaNV, TenNV, SobuoiQL, NVQL).
HOCVIEN - THI có liên kết 1 - N : Đưa khóa chính của HOCVIEN sang
làm khóa ngoại của THI.
THI (DiemCD, MaHV).
CAPDOKH - THI có liên kết 1 - N : Đưa khóa chính của CAPDOKH sang
làm khóa ngoại của THI.
THI (DiemCD, MaHV, MaCD).
Bước 5: Liên kết M-N → Thêm 1 bảng/ quan hệ mới R, chuyển khóa chính của hai
quan hệ phía M và N thành khóa ngoại của quan hệ R. Khóa chính của R là sự kết
hợp của 2 khóa ngoại.
GIANGVIEN - LOP có liên kết M-N: Thêm quan hệ mới tên GIANGDAY
với khóa chính của GIANGVIEN và LOP là khóa ngoại của R. Khóa chính của
R là sự kết hợp của hai khóa ngoại. Và thuộc tính của liên kết.
GIANGDAY (MaGV, MaLop, NgayGD).
Bước 6: Khơng có thuộc tính đa trị.
Bước 7: Khơng có liên kết bậc >2.
Bước 8:
GIANGVIEN (MaGV, TenGV, SdtGV, SobuoiGD, MaCD).
LOP (MaLop, TgianMo, TgianKetthuc, HVDK, MaNV).

HOCVIEN (MaHV, TenHV, NgaySinh, Gioitinh, SDTHocvien, MaKH, MaLop).
KHOAHOC (MaKH, TenKH, MotaKH).
CAPDOKH (MaCD, TenCD, MaLop, MaKH).
NHANVIEN (MaNV, TenNV, SobuoiQL, NVQL).
HOCPHI (MaCD, TongTien).
KHENTHUONG (MaKT, MucdoKT, MaGV).
TAILIEU (MaTL, TenTL, MaCD).
THI (DiemCD, MaHV, MaCD).
GIANGDAY (MaGV, MaLop, NgayGD).

Trang 12/ 32


Hình 3: Mơ hình quan hệ
V.

MƠ HÌNH HỆ THỐNG

Hình 4.1: Mơ hình hệ thống quản lý TTTA

Trang 13/ 32


Hình 4.2: Mơ hình hệ thống quản lý TTTA

Hình 4.3: Mơ hình hệ thống quản lý TTTA
Trang 14/ 32


Hình 4.4: Mơ hình hệ thống quản lý TTTA

VI. CÂU LỆNH TRUY VẤN SQL.
5.1. Tạo và thêm dữ liệu vào bảng.
Create database QLTTTA
Use QLTTTA
--Tạo bảng KHOAHOC
Create table KHOAHOC(
MaKH char (15) not null primary key,
TenKH Nvarchar (40),
MotaKH Nvarchar (100));
--Tạo bảng HOCVIEN
Create table HOCVIEN(
MaHV char(15) not null primary key,
TenHV Nvarchar(40),
Ngaysinh date,
Gioitinh Nvarchar(10),
SDTHocVien varchar(20),
MaKH char(15),
MaLop char(15),
foreign key (MaKH) references KHOAHOC(MaKH),
Trang 15/ 32


foreign key (MaLop) references LOP(MaLop));
--Tạo bảng LOP
Create table LOP(
MaLop char (15) not null primary key,
TgianMo date,
TgianKetthuc date,
HVDK float,
MaNV char(15),

foreign key (MaNV) references NHANVIEN(MaNV));
--Tạo bảng NHANVIEN
Create table NHANVIEN(
MaNV char(15) not null primary key,
TenNV Nvarchar(40),
SobuoiQL float,
NVQL char(15));
--Tạo bảng HOCPHI
Create table HOCPHI(
MaCD char(15),
Tongtien float,
foreign key (MaCD) references CAPDOKH(MaCD));
--Tạo bảng CAPDOKH
Create table CAPDOKH(
MaCD char(15) not null primary key,
TenCD Nvarchar(40),
MaLop char(15),
MaKH char(15),
foreign key (MaLop) references LOP(MaLop),
foreign key (MaKH) references KHOAHOC(MaKH));
--Tạo bảng KHENTHUONG
Create table KHENTHUONG(
MaKT char(15) not null primary key,
MucdoKT float,
MaGV char(15),
foreign key (MaGV) references GIANGVIEN(MaGV));
Trang 16/ 32


--Tạo bảng GIANGVIEN

Create table GIANGVIEN(
MaGV char(15) not null primary key,
TenGV Nvarchar(40),
SdtGV varchar(40),
SobuoiGD float,
MaCD char(15),
foreign key (MaCD) references CAPDOKH(MaCD));
--Tạo bảng TAILIEU
Create table TAILIEU(
MaTL char(15) not null primary key,
TenTL Nvarchar(40),
MaCD char(15),
foreign key (MaCD) references CAPDOKH(MaCD));
--Tạo bảng GIANGDAY
Create table GIANGDAY(
MaGV char(15) not null,
MaLop char(15) not null,
NgayGD date,
primary key (MaGV, MaLop),
foreign key (MaGV) references GIANGVIEN(MaGV),
foreign key (MaLop) references LOP(MaLop));
--Tạo bảng THI
Create table THI(
MaHV char(15),
MaCD char(15),
DiemCD float,
foreign key (MaHV) references HOCVIEN(MaHV),
foreign key (MaCD) references CAPDOKH(MaCD));
--Tạo bảng đăng nhập
Create table Account(

Tendangnhap Nvarchar(30) not null primary key,
Matkhau Nvarchar(30),
Vaitro Nvarchar(30));
Select * From NHANVIEN
Trang 17/ 32


--Thêm dữ liệu bảng NHANVIEN
Insert into NHANVIEN
Values ('NV01',N'Đức Anh',5,'NVQL01'),
('NV02',N'Thanh Huyền',4,''),
('NV03',N'Diệu Châu',10,''),
('NV04',N'Bảo Trinh',8,'NVQL02'),
('NV05',N'Văn Lâm',6,'NVQL03');
Select * From LOP
--Thêm dữ liệu bảng LOP
Insert into LOP
Values ('L01','2020/06/14','2020/07/14',30,'NV01'),
('L02','2020/06/14','2020/07/14',35,'NV01'),
('L03','2020/12/5','2021/1/5',30,'NV02'),
('L04','2021/05/14','2021/06/14',40,'NV03'),
('L05','2021/08/11','2021/09/11',30,'NV04'),
('L06','2021/11/12','2021/12/12',35,'NV01');
Select * From HOCVIEN
--Thêm dữ liệu bảng HOCVIEN
Insert into HOCVIEN
Values ('HV01',N'Thúy Hằng','2010/10/10',N'Nữ',1234,'K01','L01'),
('HV02',N'Quốc Hiệp','2008/03/07',N'Nam',1235,'K02','L05'),
('HV03',N'Đức Hải','2009/12/25',N'Nam',4234,'K03','L02'),
('HV04',N'Huy Hoàng','2010/02/25',N'Nam',5634,'K04','L01'),

('HV05',N'Văn Thắng','2007/11/15',N'Nam',1674,'K05','L02'),
('HV06',N'Mỹ Linh','2010/10/04',N'Nữ',1298,'K06','L03'),
('HV07',N'Nguyễn Thúy','2008/12/05',N'Nữ',7334,'K07','L04'),
('HV08',N'Hoàng Dương','2009/02/24',N'Nam',1924,'K08','L05'),
('HV09',N'Nguyễn Cương','2010/11/17',N'Nam',1934,'K09','L04'),
('HV10',N'Xuân Chiến','2008/12/16',N'Nam',1904,'K10','L04');
Select * From KHOAHOC
--Thêm dữ liệu bảng KHOAHOC
Insert into KHOAHOC
Values ('K01','Ielts 7.5',N'Cam kết đầu ra'),
Trang 18/ 32


('K02','Toeic',N'Đảm bảo chất lượng'),
('K03','Communicate',N'Giao tiếp với người bản xứ'),
('K04','Listening',N'Học phí đi kèm sách vở'),
('K05','Ielts 6.0',N'Cam kết đầu ra'),
('K06','Speaking',''),
('K07','Ielts 8.0',N'Cam kết đầu ra'),
('K08','',N'Đảm bảo chất lượng'),
('K09','Writing',N'Giao tiếp với người bản xứ'),
('K10','Ieltes 5.0',N'Học phí đi kèm sách vở');
Select * From CAPDOKH
--Thêm dữ liệu bảng CAPDOKH
Insert into CAPDOKH
Values ('Level 1','Start','L01','K01'),
('Level 2','Prepare','L01','K01'),('Level 3','Pepare','L02','K02'),
('Level 4','Finish','L02','K02'),('Level 5','Start','L03','K03'),
('Level 6','Prepare','L04','K03'),('Level 7','Start','L05','K04'),
('Level 8','Finish','L06','K04');

Select * From HOCPHI
--Thêm dữ liệu bảng HOCPHI
Insert into HOCPHI
Values ('Level 1',4000000),('Level 2',4500000),('Level 3',4750000),
('Level 4',3500000),('Level 5',5000000),('Level 6',3750000),
('Level 7',4800000),('Level 8',3500000);
Select * From GIANGVIEN
--Thêm dữ liệu bảng GIANGVIEN
Insert into GIANGVIEN
Values ('GV01','Jully',2345,20,'Level 1'),
('GV02',N'Văn Phương',2343,20,'Level 2'),
('GV03','Holly',2349,25,'Level 3'),
('GV04','Jone',2245,20,'Level 1'),
('GV05','Thomas',9345,25,'Level 4'),
('GV06',N'Diệp Linh',2347,20,'Level 5'),
('GV07',N'Ngọc Anh',1345,26,'Level 8'),
('GV08','Alice',2445,20,'Level 6');
Trang 19/ 32


Select * From KHENTHUONG
--Thêm dữ liệu bảng KHENTHUONG
Insert into KHENTHUONG
Values ('KT01',1.5,'GV02'),('KT02',1.0,'GV04'),('KT03',1.6,'GV01'),
('KT04',2.0,'GV03'),('KT05',1.55,'GV06');
Select * From TAILIEU
--Thêm dữ liệu bảng TAILIEU
Insert into TAILIEU
Values ('TL01',N'Tài liệu A1','Level 1'),('TL02',N'Tài liệu A2','Level 1'),
('TL03',N'Tài liệu B1','Level 2'),('TL04',N'Tài liệu B2','Level 2'),

('TL05',N'Tài liệu C','Level 3'),('TL06',N'Tài liệu D1','Level 4'),
('TL07',N'Tài liệu D2','Level 4'),('TL08',N'Tài liệu E','Level 5'),
('TL09',N'Tài liệu F1','Level 6'),('TL10',N'Tài liệu F2','Level 6');
Select * From GIANGDAY
--Thêm dữ liệu bảng GIANGDAY
Insert into GIANGDAY
Values ('GV01','L01','2020/06/15'),('GV02','L02','2020/08/14'),
('GV03','L03','2021/04/12'),('GV04','L04','2021/12/02'),
('GV05','L05','2021/12/24'),('GV06','L06','2021/11/11');
Select * From THI
--Thêm dữ liệu bảng THI
Insert into THI
Values ('HV01','Level 1',9),('HV01','Level 2',8.5),
('HV02','Level 7',4),
('HV03','Level 3',8.75),('HV03','Level 4',3),
('HV04','Level 1',7.75),('HV04','Level 2',8),
('HV05','Level 3',6),('HV05','Level 4',3.75),
('HV06','Level 7',9.5),('HV06','Level 8',10),
('HV07','Level 5',9),
('HV08','Level 7',8.75),
('HV09','Level 6',8),
('HV10','Level 6',5);
Trang 20/ 32


Select * From Account
--Thêm dữ liệu bảng Account
Insert into Account
Values ('giangvien','123','giang_vien'),('nhanvien','234','nhan_vien'),
('hocvien','123','hoc_vien');

5.2. Thực hiện các câu lệnh truy vấn.
5.2.1. Thủ tục (Procedure)
1. Viết 1 thủ tục cho biết danh sách học viên,tên học viên thi lại 1 cấp độ nào đó.
Điểm <=5 (tham truyền mã cấp độ)
Create proc HV_ThiLai
@macd char(10)
as
begin
if (exists (select * from CAPDOKH where macd = @macd))
select TTHocVien.MaHV, TenHV, DiemCD
from TTHocVien,THI
where TTHocVien.MaCD = THI.MaCD and TTHocVien.MaHV =
Thi.MaHV and thi.MaCD = @macd and Thi.DiemCD<=5
else print N'Khơng có cấp độ này'
end
exec HV_ThiLai 'Level 4'

exec HV_ThiLai 'Level 15'

2. Đưa ra danh sách giảng viên có mức độ khen thưởng từ 1,5-2
create proc KT_GV
as begin
select giangvien.magv,tengv,mucdokt
from giangvien,KHENTHUONG
where giangvien.magv=KHENTHUONG.magv and MucdoKT >=1.5 and
mucdokt <=2
end
Trang 21/ 32



exec KT_GV

3. Viết 1 thủ tục đưa ra danh sách học viên của 1 lớp nào đó
create proc DS_HV
@malop char(10)
as
begin
if(exists (Select * from LOP where malop=@malop))
select mahv, tenhv, gioitinh, lop.malop
from HOCVIEN, LOP
where lop.malop=@malop and hocvien.MaLop = lop.MaLop
else
print N'Lớp đó khơng tồn tại trong CSDL'
end
exec DS_HV 'L01'

4. Viết một thủ tục đưa ra danh sách nhân viên với các thông tin MaNV, TenNV,
SobuoiQL, MaLop.Danh sách đưa ra dưới dạng con trỏ OUTPUT của thủ tục
Create procedure TTNHANVIEN
@dsnv CURSOR VARYING OUTPUT
as
begin
set @dsnv = CURSOR
for
select NHANVIEN.MaNV, TenNV, SobuoiQL, LOP.MaLop
from NHANVIEN, LOP
where NHANVIEN.MaNV = LOP.MaNV
open @dsnv
end
Trang 22/ 32



declare @mycursor CURSOR
exec TTNHANVIEN @dsnv = @mycursor output
fetch next from @mycursor
while (@@FETCH_STATUS=0)
fetch next from @mycursor
close @mycursor
deallocate @mycursor

5.2.2. Hàm (Function)
1. Viết 1 hàm trả về dtb của 1 học viên nào đó
Create function diemtrungbinh (@mahv char(10))
returns real
as
begin
declare @dtb real;
select @dtb= avg(DiemCD)
From THI, hocvien, capdokh
where thi.mahv = hocvien.mahv and thi.macd=capdokh.macd and thi.mahv =
@mahv
return @dtb
end
select dbo.diemtrungbinh ('HV04')

Trang 23/ 32


2.Viết một hàm trả về những học viên đạt loại giỏi của cấp độ bất kì (dtb>8)
create function hv_gioi (@macd char(10))

returns table
as
return (select tthocvien.mahv, tenhv, tthocvien.macd, tencd, avg(diemcd) as dtb
from tthocvien,thi
where @macd = tthocvien.macd and tthocvien.mahv = thi.mahv and
tthocvien.macd = thi.macd
group by tthocvien.mahv, tenhv, tthocvien.macd, tencd
having avg(diemcd) >= 8)
select * from hv_gioi ('level 2')

3.Viết hàm trả về danh sách các cấp độ và số lượng tài liệu của cấp độ đó.
đưa ra danh sach các cấp độ có số lượng tài liệu ít nhất
create function soluongTL ()
returns @bang table (macd char(10), sotl int)
as
begin
insert into @bang
select tailieu.macd, count (matl)
from tailieu
group by tailieu.macd
return
end
select macd, sotl
from soluongTL()
where sotl = (select min(sotl) from soluongTL())

Trang 24/ 32


4.Viết f_hocphi cua hv nào đó với f_hocphi bằng tổng số tổng tiền ứng với mỗi cấp

độ mà hv đó đăng kí */
Create function f_hocphi (@mahv char(10))
returns real
as
begin
declare @hocphi real
select @hocphi = sum(tongtien)
from HOCPHI, TTHocVien
where mahv = @mahv and HOCPHI.MaCD=TTHocVien.macd
return @hocphi
end
select dbo.f_hocphi ('HV03')

5.2.3. Trigger
1.Viết 1 trigger để thêm 1 học viên ở bảng học viên thì cập nhật học viên dự kiến ở
bảng lớp(mã lớp)
create trigger insert_HV on HocVien For insert as
if(exists(select * from inserted))
begin
update lop
set HVDK =hvdk +1 where malop =(select malop from inserted)
end
select * from lop
select * from hocvien

Insert into KHOAHOC
Values ('K13','toeic 3',N'Cam kết đầu ra')
Trang 25/ 32



×