Professional Documents
Culture Documents
Report CSDLNC Fix
Report CSDLNC Fix
Report CSDLNC Fix
HỆ THỐNG QUẢN LÝ
SINH VIÊN
CHƯƠNG 1: MÔ TẢ ĐỀ TÀI..........................................................................................1
1.3. Các thông tin cần lưu trữ của đề tài .....................................................................4
5.1. Kết quả đạt được và chưa đạt được ....................................................................49
5.1.1. Kết quả đạt được: ........................................................................................49
5.1.2. Kết quả chưa đạt được ................................................................................49
5.2. Hướng phát triển mở rộng ứng dụng trong tương lai. ........................................49
1
Trang tổng quát các chức năng dành cho sinh viên.
Trang tổng quát các chức năng dành cho sinh viên
Trường Đại Học Nguyễn Tất Thành – Website: https://ctsv.ntt.edu.vn/
2
Trang xem thời khoá biểu
Trang danh sách các học phần có thể đăng ký học kỳ tiếp theo
3
Trang danh sách các học phần đã đăng ký
4
Bảng 1.4. Thông tin lưu trữ của Khoa-Môn học
Stt Dữ liệu Kiểu Hình thức nhập Ràng buộc
1 Mã khoa Text Nhập từ bàn phím Primary key
2 Mã môn học Text Nhập từ bàn phím Primary key
Bảng 1.7. Thông tin lưu trữ của Loại giảng viên
Stt Dữ liệu Kiểu Hình thức nhập Ràng buộc
5
1 Mã Loại Text Nhập từ bàn phím Primary key
2 Tên Loại Text Nhập từ bàn phím
Bảng 1.8. Thông tin lưu trữ của Giảng viên
Stt Dữ liệu Kiểu Hình thức nhập Ràng buộc
1 Mã Giảng viên Text Nhập từ bàn phím Primary key
2 Tên Giảng viên Text Nhập từ bàn phím
3 Mã loại Text Nhập từ bàn phím Foreign key
Bảng 1.9. Thông tin lưu trữ của Môn học - Giảng viên
Stt Dữ liệu Kiểu Hình thức nhập Ràng buộc
1 Mã Giảng viên Text Nhập từ bàn phím Primary key
2 Mã môn học Text Nhập từ bàn phím Primary key
Bảng 1.10. Thông tin lưu trữ của Điểm
Stt Dữ liệu Kiểu Hình thức nhập Ràng buộc
1 Mã sinh viên Text Nhập từ bàn phím Primary key
2 Mã môn học Text Nhập từ bàn phím Primary key
3 Học kì Int Nhập từ bàn phím Primary key
4 Điểm Int Nhập từ bàn phím
Bảng 1.12. Thông tin lưu trữ của Môn học - Phòng
Stt Dữ liệu Kiểu Hình thức nhập Ràng buộc
1 Mã môn học Text Nhập từ bàn phím Primary key
2 Mã phòng Text Nhập từ bàn phím Primary key
6
1 Mã môn học Text Nhập từ bàn phím Primary key
2 Mã phòng Text Nhập từ bàn phím Primary key
3 Ngày thi Date Nhập từ bàn phím
Bảng 1.3. Thông tin lưu trữ của Thời khóa biểu
Stt Dữ liệu Kiểu Hình thức nhập Ràng buộc
1 Mã sinh viên Text Nhập từ bàn phím Foreign key
2 Mã môn học Text Nhập từ bàn phím Foreign key
3 Ngày bắt đầu Date
4 Ngày kết thúc Date
7
1.4. Các yêu cầu khác
o Yêu cầu tìm kiếm: Trình bày cụ thể các thao tác tìm kiếm cần có trong đề
tài bao gồm các từ khóa cần tìm và kết quả cần thể hiện.
- Thông tin sinh viên:
▪ Hiển thị mã sinh viên, tên sinh viên, địa chỉ,giới tính, ngày sinh
- Thông tin về lớp :
▪ Hiển thị mã lớp, tên lớp mà sinh viên đang học
- Thông tin về khóa học
▪ Hiển thị khóa học của sinh viên để biết sinh viên thuộc khóa nào
- Thông tin về khoa:
▪ Hiển thị khoa mà sinh viên đang theo
- Thông tin về điểm :
▪ Hiển thị điểm của cá nhân sinh viên theo từng đợt (đợt 1, đợt 2)
▪ Hiển thị điểm trung bình của sinh viên
- Thông tin về môn học:
▪ Hiển thị danh sách các môn học mà có sự tham gia của sinh viên
o Các công thức tính toán cho các xử lý.
o Tính toán điểm trung bình của sinh viên
▪ Điểm trung bình = (Tổng điểm của các môn học) / Tổng số môn
o Tính toán tổng số tín chỉ đã học
▪ Tổng số tín chỉ = SUM( Số tín chỉ của môn học 1, Số tín chỉ của môn học
I)
• Trong đó số tín chỉ của môn học I là số tỉn chỉ của môn học thứ I mà sinh
viên đã hoàn thành.
o Tính toán điển GPA (Điểm trung bình dựa trên hệ số 4)
▪ GPA = (Tổng (Số tín chỉ * Điểm) ) / Tổng số tín chỉ đã học
▪ Kết quả trả về dựa trên thang điểm 4 mà từ đó ra được danh hiệu:
• A: 4.0 điểm
8
• B+: 3.5 điểm
• B: 3.0 điểm
• C+: 2.5 điểm
• C: 2.0 điểm
• D+: 1.5 điểm
• D: 1.0 điểm
• F: 0 điểm (không hoàn thành)
o Tính toán số tín chỉ còn thiếu:
▪ Số tín chỉ còn thiếu = Tổng số tín chỉ yêu cầu – Tổng số tín chỉ đã học
o Tính toán tỉ lệ sinh viên thôi học:
▪ Tỉ lệ sinh viên thôi học = Số sinh viên thôi học / Tổng số sinh viên
o Các biểu đồ/ đồ thị, các báo cáo theo tháng, quý hay năm, v.v….
- Biểu đồ số lượng sinh viên theo năm học:
o Loại biểu đồ: Cột, đường, hoặc vòng tròn
o Trục x: Các năm học
o Trục y: Số lượng sinh viên
- Biểu đồ tỷ lệ sinh viên theo giới tính:
o Loại biểu đồ: Vòng tròn hoặc cột
o Phân loại: Nam, nữ
o Phần trăm sinh viên nam và nữ
- Biểu đồ điểm trung bình theo năm học:
o Loại biểu đồ: Đường
o Trục x: Các năm học
o Trục y: Điểm trung bình
1.5. Bố cục báo cáo
- Báo cáo danh sách sinh viên xuất sắc:
o Hiển thị danh sách các sinh viên có GPA cao nhất
o Có thể sắp xếp theo thứ tự giảm dần của GPA
- Báo cáo danh sách sinh viên bị kỷ luật:
o Hiển thị danh sách sinh viên bị kỷ luật và loại kỷ luật tương ứng
9
o Có thể sắp xếp theo thứ tự tăng dần của mã sinh viên hoặc thời gian kỷ
luật
- Biểu đồ phân bố điểm theo môn học:
o Loại biểu đồ: Cột hoặc đường
o Trục x: Các môn học
o Trục y: Số lượng sinh viên hoặc phần trăm sinh viên theo từng khoảng
điểm
- Báo cáo tổng kết kết quả học tập theo kỳ học:
o Hiển thị kết quả học tập của từng sinh viên trong kỳ học
o Bao gồm thông tin về môn học, điểm số, số tín chỉ, và kết quả (đạt/ không
đạt)
- Báo cáo danh sách sinh viên nợ học phí:
o Hiển thị danh sách sinh viên chưa thanh toán học phí
o Có thể sắp xếp theo thứ tự tăng dần của mã sinh viên hoặc số tiền nợ
10
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.1. Mô hình thực thể kết hợp.
▪ Mô hình ERD.
11
12
13
2.2. Phụ thuộc hàm.
▪ Trong cơ sở dữ liệu, phụ thuộc hàm (functional dependency) là một khái
niệm quan trọng liên quan đến việc mô tả mối quan hệ giữa các thuộc tính trong
một bảng (table) dữ liệu. Đây là một khái niệm cơ bản trong lý thuyết thiết kế cơ
sở dữ liệu và giúp xác định quy tắc về việc thêm, sửa đổi hoặc xóa dữ liệu một
cách hợp lý để tránh việc dữ liệu bị mất mát hoặc không nhất quán.
▪ Một phụ thuộc hàm xảy ra khi một tập hợp của các thuộc tính trong một
bảng xác định một cách duy nhất giá trị của một tập hợp khác của các thuộc tính.
Cụ thể, nếu trong một bảng có hai tập hợp thuộc tính A và B, ta nói A phụ thuộc
hàm vào B (được ký hiệu là A -> B) nếu mỗi giá trị của A đối với thuộc tính A
luôn xác định một giá trị duy nhất của thuộc tính B.
2.3. Dạng chuẩn
Các dạng chuẩn trong CSDL nhằm đảm bảo tính toàn vẹn, nhất quán của dữ liệu,
tránh sự trùng lặp và phụ thuộc lẫn nhau giữa các thuộc tính. Chúng bao gồm:
- Dạng chuẩn 1: Giá trị nguyên tố trên mỗi thuộc tính.
- Dạng chuẩn 2: Các thuộc tính phụ thuộc đầy đủ vào khóa.
- Dạng chuẩn 3: Các thuộc tính không phụ thuộc bắc cầu vào khóa.
- Dạng chuẩn (BCK): Các thuộc tính không khóa không phụ thuộc lẫn nhau.
- Dạng chuẩn 4: Không cho phép phụ thuộc đa trị không rõ ràng.
2.4. Bảo toàn thông tin.
- Bảo mật cơ sở dữ liệu là những biện pháp, những cách thức khác nhau
mà các doanh nghiệp, tổ chức áp dụng và thực hiện để bảo vệ hệ thống an toàn
thông tin cũng như cơ sở dữ liệu của mình khỏi các mối đe doạ từ những cuộc tấn
công an ninh mạng cả bên ngoài và bên trong cũng như thực thi các giải pháp data
lose prevention nhằm ngăn chặn dữ liệu bị đánh cắp.
2.5. Lập trình CSDL.
- Lập trình cơ sở dữ liệu (Database Programming) là quá trình tương tác
với cơ sở dữ liệu để truy xuất, thêm, sửa đổi và xóa dữ liệu bằng cách sử dụng các
ngôn ngữ lập trình và các giao thức/đối tượng liên quan. Điều này cho phép ứng
14
dụng và hệ thống có thể tương tác với dữ liệu trong cơ sở dữ liệu, giúp quản lý và
xử lý thông tin một cách hiệu quả.
2.6. Ràng buộc toàn vẹn
Loại ràng buộc Ý nghĩa
NOT NULL Sử dụng để đảm bảo dữ liệu của cột không được nhận giá trị
NULL
DEFAULT Gán giá trị mặc định trong trường hợp dữ liệu của cột không
được nhập vào hay không được xác định.
UNIQUE Sử dụng để đảm bảo dữ liệu của cột là duy nhất, không trùng
lặp giá trị trên cùng 1 cột.
PRIMARY KEY Dùng để thiết lập khóa chính trên bảng, xác định giá trị trên
(Khóa chính) tập các cột làm khóa chính phải là duy nhất, không được
trùng lặp. Việc khai báo ràng buộc khóa chính yêu cầu các
cột phải NOT NULL.
FOREIGN KEY Dùng để thiết lập khóa ngoại trên bảng, tham chiếu đến bảng
(Khóa ngoại) khác thông qua giá trị của cột được liên kết. Giá trị của cột
được liên kết phải là duy nhất trong bảng kia.
CHECK Bảo đảm tất cả giá trị trong cột thỏa mãn điều kiện nào đó.
Đây là hình thức sử dụng phổ biến để kiểm tra tính hợp lệ
của dữ liệu (validate data)
2.7. NoSQL và NewSQL:
NoSQL và NewSQL là hai thuật ngữ được sử dụng trong lĩnh vực cơ sở dữ
liệu để chỉ đến hai hướng tiếp cận khác nhau trong việc quản lý dữ liệu. Trong
phần này, chúng ta sẽ trình bày rõ các khái niệm, công cụ và ví dụ tương ứng cho
NoSQL và NewSQL.
2.7.1. NoSQL (Non-SQL):
- Khái niệm: NoSQL là một từ viết tắt của "Not Only SQL", chỉ các hệ quản
trị cơ sở dữ liệu không phụ thuộc hoặc không sử dụng SQL (Structured Query
Language) để truy vấn dữ liệu. NoSQL tập trung vào việc xử lý lượng lớn dữ liệu
phi cấu trúc và có khả năng mở rộng tốt.
15
- Các công cụ NoSQL:
a. MongoDB: Là một hệ quản trị cơ sở dữ liệu không SQL phổ biến, lưu
trữ dữ liệu dưới dạng tài liệu JSON (BSON). MongoDB cho phép truy vấn linh
hoạt, mở rộng dễ dàng và hỗ trợ replica sets và sharding.
b. Cassandra: Được phát triển bởi Facebook, Cassandra là một cơ sở dữ
liệu phân tán được thiết kế để xử lý lượng lớn dữ liệu trên nhiều máy chủ. Nó có
khả năng mở rộng tuyến tính và cung cấp khả năng chịu lỗi cao.
c. Redis: Redis là một cơ sở dữ liệu key-value in-memory. Nó hỗ trợ các
kiểu dữ liệu phức tạp như list, set, và hash, và được sử dụng phổ biến để lưu trữ
dữ liệu tạm thời và cache.
- Ví dụ: Giả sử chúng ta có một ứng dụng xử lý dữ liệu người dùng, trong
đó thông tin người dùng được lưu trữ dưới dạng tài liệu JSON. Chúng ta có thể
sử dụng MongoDB để lưu trữ và truy vấn dữ liệu này một cách linh hoạt và mở
rộng khi cần thiết.
// Ví dụ về bảng "khoa" trong MongoDB
Db.khoa.insertMany
([
{MAKHOA: '1', TENKHOA: 'Khoa Công nghệ thông tin'},
{MAKHOA: '2', TENKHOA: 'Khoa Kinh tế'},
{MAKHOA: '3', TENKHOA: 'Khoa Quản trị kinh doanh'},
{MAKHOA: '4', TENKHOA: 'Khoa Ngôn ngữ Anh'},
{MAKHOA: '5', TENKHOA: 'Khoa Toán - Tin'},
{MAKHOA: '6', TENKHOA: 'Khoa Vật lý'},
{MAKHOA: '7', TENKHOA: 'Khoa Hóa học'},
{MAKHOA: '8', TENKHOA: 'Khoa Sinh học'},
{MAKHOA: '9', TENKHOA: 'Khoa Lịch sử'},
{MAKHOA: '10', TENKHOA: 'Khoa Địa lý'}
]);
16
2.7.2. NewSQL
- Khái niệm: NewSQL là một thuật ngữ đề cập đến hệ thống cơ sở dữ liệu
mới, kết hợp tính năng của SQL và khả năng mở rộng của NoSQL. Mục tiêu của
NewSQL là cung cấp tính nhất quán và đáng tin cậy của SQL, đồng thời vẫn duy
trì khả năng mở rộng tương tự như NoSQL.
- Các công cụ NewSQL:
a. CockroachDB: CockroachDB là một cơ sở dữ liệu phân tán, hỗ trợ SQL
và có khả năng mở rộng tuyến tính. Nó được xây dựng trên mô hình phi cấu trúc
và có khả năng chịu lỗi cao.
b. Google Spanner: Spanner là một cơ sở dữ liệu phân tán được phát triển
bởi Google. Nó kết hợp tính nhất quán của SQL với khả năng mở rộng của
NoSQL. Spanner cung cấp khả năng đọc ghi toàn cầu và đáng tin cậy trên nhiều
vùng địa lý.
-- Ví dụ bảng "khoa" trong CockroachDB
CREATE TABLE khoa (
makhoa VARCHAR(10) NOT NULL PRIMARY KEY,
tenkhoa STRING NOT NULL
);
-- Chèn dữ liệu vào bảng "khoa" trong CockroachDB
INSERT INTO khoa (makhoa, tenkhoa)
VALUES
('1', 'Khoa Công nghệ thông tin'),
('2', 'Khoa Kinh tế'),
('3', 'Khoa Quản trị kinh doanh'),
('4', 'Khoa Ngôn ngữ Anh'),
('5', 'Khoa Toán - Tin'),
('6', 'Khoa Vật lý'),
('7', 'Khoa Hóa học'),
('8', 'Khoa Sinh học'),
('9', 'Khoa Lịch sử'),
17
('10', 'Khoa Địa lý');
2.7.2. Sự giống và khác nhau giữa NoSQL và NewSQL
Tính chất NewSQL NoSQL
Mô hình dữ liệu Cơ sở dữ liệu quan hệ Dữ liệu phi cấu trúc hoặc bán cấu
truyền thống trúc
Ngôn ngữ truy Sử dụng sql truyền thống Sử dụng ngôn ngữ truy vấn riêng
vấn biệt (ví dụ: BSON, CQL)
Độ nhất quán Đảm bảo ACID Chấp nhận tính nhất quán yếu
(Atomicity, Consistency, (eventual consistency)
Isolation, Durability)
Đặc điểm sử Tính nhất quán cao, mô Xử lý dữ liệu lớn, lưu trữ phi cấu
dụng hình quan hệ truyền thống trúc, khả năng mở rộng
Tóm lại, NoSQL và NewSQL có những sự giống nhau về tính mở rộng,
khả năng chịu lỗi và tính linh hoạt. Tuy nhiên, chúng khác nhau về mô hình dữ
liệu, ngôn ngữ truy vấn, độ nhất quán và đặc điểm sử dụng. Lựa chọn giữa hai
phương pháp này phụ thuộc vào yêu cầu cụ thể của dự án và ứng dụng.
18
CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ CƠ SỞ DỮ LIỆU
3.1. Mô hình thực thể kết hợp
19
20
21
3.2. Mô tả các thực thể
3.2.1. KHOAHOC
▪ Thông tin thuộc tính
Stt Thuộc tính Kiểu dữ liệu Kích thước Ràng buộc Ghi chú
1 MaKH char 10 Primary key Mã khóa
2 TenKH nvarchar 100 Tên khóa học
3 Thoigian date Thời gian
3.2.2. KHOA
▪ Thông tin thuộc tính
Stt Thuộc tính Kiểu dữ liệu Kích thước Ràng buộc Ghi chú
1 MaKHOA char 10 Primary key Mã khoa
2 TENKHOA nvarchar 100 Tên khoa
3.2.3. MONHOC
▪ Thông tin thuộc tính
Stt Thuộc tính Kiểu dữ liệu Kích thước Ràng buộc Ghi chú
1 MaMH char 10 Primary key Mã môn
2 TenMH Nvarchar 100 Tên môn học
3 SoTiet int Số tiết
4 SoTC int Số tín chỉ
3.2.4. KHOA_MONHOC
▪ Thông tin thuộc tính
Stt Thuộc tính Kiểu dữ liệu Kích thước Ràng buộc Ghi chú
1 MaMH char 10 Primary key Mã môn
2 MaKhoa char 10 Primary key Mã khoa
3.2.5. LOP
▪ Thông tin thuộc tính
Stt Thuộc tính Kiểu dữ liệu Kích thước Ràng buộc Ghi chú
1 MaLOP char 10 Primary key Mã lớp
22
2 TenLop nvarchar 100 Foreign key Tên lớp học
3 MaKhoa char 10 Foreign key Mã khoa
3.2.6. SINHVIEN
▪ Thông tin thuộc tính
Stt Thuộc tính Kiểu dữ liệu Kích thước Ràng buộc Ghi chú
1 MaSV char 10 Primary key Mã sinh viên
2 TenSV nvarchar 1000 Tên sinh viên
3 GioiTinh char 1 Giới tính
4 NgaySinh date Ngày sinh
5 QueQuan nvarchar 100 Quê quán
6 MaKH char 10 Foreign key Mã khoa
8 MaLop char 10 Foreign key Mã lớp
3.2.7. LOAIGIANGVIEN
▪ Thông tin thuộc tính
Stt Thuộc tính Kiểu dữ liệu Kích thước Ràng buộc Ghi chú
1 MaLoai char 10 Primary key Mã loại
2 TenLoai nvarchar 100 Tên loại
3.2.8. GIANGVIEN
▪ Thông tin thuộc tính
Stt Thuộc tính Kiểu dữ liệu Kích thước Ràng buộc Ghi chú
1 MaGV char 10 Primary key Mã khóa
2 TenGV nvarchar 100 Niên khóa
3 MaLoai char 10 Foreign key Mã loại
3.2.9. MONHOC_GIANGVIEN
▪ Thông tin thuộc tính
Stt Thuộc tính Kiểu dữ liệu Kích thước Ràng buộc Ghi chú
1 MaMH char 10 Primary key Mã môn học
23
2 MAGV char 10 Primary key Mã giáo viên
3.2.10. DIEM
▪ Thông tin thuộc tính
Stt Thuộc tính Kiểu dữ liệu Kích thước Ràng buộc Ghi chú
1 MaSV char 10 Primary key Mã sinh viên
2 MaMH char 10 Primary key Mã môn học
3 HocKy int Primary key Học kỳ
4 Diem int Điểm
3.2.11. PHONG
▪ Thông tin thuộc tính
Stt Thuộc tính Kiểu dữ liệu Kích thước Ràng buộc Ghi chú
1 MaP char 10 Primary key Mã phòng
2 TenP Nvarchar 100 Tên phòng
3.2.12. MONHOC_PHONG
▪ Thông tin thuộc tính
Stt Thuộc tính Kiểu dữ liệu Kích thước Ràng buộc Ghi chú
1 MaP char 10 Primary key Mã phòng
2 MaMH char 10 Primary key Mã môn học
3.2.13. LICHTHI
▪ Thông tin thuộc tính
Stt Thuộc tính Kiểu dữ liệu Kích thước Ràng buộc Ghi chú
1 MaMH Char 10 Primary key Niên khóa
2 Ngaythi Date Ngày thi
3 MaP Char 10 Primary key Mã phòng
24
3.2.14. NGANH
▪ Thông tin thuộc tính
Stt Thuộc tính Kiểu dữ liệu Kích thước Ràng buộc Ghi chú
1 MaNganh char 10 Primary key Mã khóa
2 TenNganh nvarchar 100 Niên khóa
3 MaKhoa char 10 Foreign key Mã khoa
3.2.15. THOIKHOABIEU
▪ Thông tin thuộc tính
Stt Thuộc tính Kiểu dữ liệu Kích thước Ràng buộc Ghi chú
1 MaMH char 10 Primary key Mã môn học
2 MaP char 10 Primary key Mã phòng
3 Ngay nvarchar 100 Ngày
3.2.16. HOCPHI
▪ Thông tin thuộc tính
Stt Thuộc tính Kiểu dữ liệu Kích thước Ràng buộc Ghi chú
1 Nam varchar 10 Primary key Năm học
2 Gia nvarchar Giá
3.2.17. HOADON
▪ Thông tin thuộc tính
Stt Thuộc tính Kiểu dữ liệu Kích thước Ràng buộc Ghi chú
1 MAMH char 10 Primary key Mã môn học
2 NamHoc varchar 20 Primary key Năm học
2 MASV char 10 Primary key Mã sinh viên
5 TongTien int Tổng tiền
25
3.3. Lược đồ cơ sở dữ liệu quan hệ
KHOAHOC(MaKH,TenKH,Thoigian)
KHOA(MaKhoa,TenKhoa)
MONHOC(MaMH,TenMH,Sotiet,SoTC, #MaKhoa)
KHOA_MONHOC(MaMH, MaKhoa)
LOP(MaLop,TenLop,#MaKhoa)
SinhVien(MaSV,TenSV,GioiTinh,NgaySinh,QueQuan,#MaLop,#MaKH)
LoaiGiangVien(MaLoai, TenLoai)
GIANGVIEN(MaGV, Ten, #Maloai)
MONHOC_GIANGVIEN(MaGV, MaMH)
DIEM(MaSV,MaMH,HocKy,Diem)
PHONG(MaP,TenPhong)
MONHOC_PHONG(MaP,MaMH)
LICHTHI(MaMH,MaP,NGAYTHI)
NGANH(MaNganh, TenNganh, #MaKhoa)
THOIKHOABIEU(MaMon, MaPhong, Ngay)
HOCPHI(Nam, Gia)
HOADON(MaMon, NamHoc,MaSV, TongTien)
3.4. Phân tích chuẩn của lược đồ quan hệ
1. Bảng KhoaHoc (Khóa học):
• 1NF: Đạt
• 2NF: Đạt
• 3NF: Đạt
2. Bảng Khoa (Khoa):
• 1NF: Đạt
• 2NF: Đạt
• 3NF: Đạt
3. Bảng Lop (Lớp):
• 1NF: Đạt
• 2NF: Đạt
• 3NF: Đạt
26
4. Bảng SinhVien (Sinh viên):
• 1NF: Đạt
• 2NF: Đạt
• 3NF: Đạt
5. Bảng LOAIGIANGVIEN (Loại giảng viên):
• 1NF: Đạt
• 2NF: Đạt
• 3NF: Đạt
6. Bảng GIANGVIEN (Giảng viên):
• 1NF: Đạt
• 2NF: Đạt
• 3NF: Đạt
7. Bảng MONHOC (Môn học):
• 1NF: Đạt
• 2NF: Đạt
• 3NF: Đạt
8. Bảng DIEM (Điểm):
• 1NF: Đạt
• 2NF: Đạt
• 3NF: Đạt
9. Bảng PHONG (Phòng):
• 1NF: Đạt
• 2NF: Đạt
• 3NF: Đạt
10. Bảng LICHTHI (Lịch thi):
• 1NF: Đạt
• 2NF: Đạt
• 3NF: Đạt
11. Bảng NGANH (Ngành):
• 1NF: Đạt
27
• 2NF: Đạt
• 3NF: Đạt
12. Bảng NGANH_MONHOC (Bảng trung gian):
• 1NF: Đạt
• 2NF: Đạt
• 3NF: Đạt
13. Bảng THOIKHOABIEU (Thời khóa biểu):
• 1NF: Đạt
• 2NF: Đạt
• 3NF: Đạt
14. Bảng HOCPHI (Học phí):
• 1NF: Đạt
• 2NF: Đạt
• 3NF: Đạt
15. Bảng HOADON (Hóa đơn):
• 1NF: Đạt
• 2NF: Đạt
• 3NF: Đạt
16. Bảng NganhMonHoc (Bảng trung gian):
• 1NF: Đạt
• 2NF: Đạt
• 3NF: Đạt
17. Bảng ThoiKhoaBieu (Thời khóa biểu):
• 1NF: Đạt
• 2NF: Đạt
• 3NF: Đạt
28
(
MaKH CHAR(10) PRIMARY KEY,
TenKH NVARCHAR(100),
Thoigian DATE
);
29
TenLop NVARCHAR(100),
MaKhoa CHAR(10) REFERENCES Khoa(MaKhoa)
);
30
CREATE TABLE MonHoc_GiangVien
(
MaMH CHAR(10) REFERENCES MonHoc(MaMH),
MaGV CHAR(10) REFERENCES GiangVien(MaGV),
PRIMARY KEY (MaMH, MaGV)
);
TenPhong NVARCHAR(100)
);
31
MaMH CHAR(10) REFERENCES MonHoc(MaMH),
PRIMARY KEY (MaP, MaMH)
);
32
NamHoc varchar(20),
Gia INT,
PRIMARY KEY (NamHoc)
);
34
4.2.7. LOAIGIANGVIEN
INSERT INTO LoaiGiangVien (MaLoai, TenLoai) VALUES
('LG01', 'Giảng Viên Chính'),
('LG02', 'Trợ Giảng');
4.2.8. GIANGVIEN
INSERT INTO GiangVien (MaGV, Ten, MaLoai) VALUES
('GV001', 'Lê Minh Cường', 'LG01'),
('GV002', 'Nguyễn Thị Diễm', 'LG02'),
('GV003', 'Trần Văn Đạt', 'LG01'),
('GV004', 'Nguyễn Minh Thu', 'LG02'),
('GV005', 'Lê Thị Hương', 'LG01'),
4.2.9. MONHOC_GIANGVIEN
INSERT INTO MonHoc_GiangVien (MaMH, MaGV) VALUES
('MH01', 'GV001'),
('MH02', 'GV002'),
('MH03', 'GV003'),
('MH04', 'GV004'),
('MH05', 'GV005'),
4.2.10. DIEM
INSERT INTO Diem (MaSV, MaMH, HocKy, Diem) VALUES
('SV001', 'MH01', 2, 7),
('SV001', 'MH02', 2, 6),
('SV002', 'MH01', 2, 8),
('SV002', 'MH02', 2, 9),
('SV003', 'MH01', 2, 6),
('SV003', 'MH02', 2, 7),
4.2.11. PHONG
INSERT INTO Phong (MaP, TenPhong) VALUES
('P01', 'Phòng 101'),
('P02', 'Phòng 102'),
35
('P03', 'Phòng 103'),
('P04', 'Phòng 104'),
('P05', 'Phòng 105'),
4.2.12. MONHOC_PHONG
INSERT INTO MonHoc_Phong (MaP, MaMH) VALUES
('P01', 'MH01'),
('P02', 'MH02'),
('P03', 'MH03'),
('P04', 'MH04'),
('P05', 'MH05'),
4.2.13. LICHTHI
INSERT INTO LichThi (MaMH, MaP, NgayThi) VALUES
('MH01', 'P01', '2023-01-1'),
('MH02', 'P02', '2023-01-2'),
('MH03', 'P01', '2023-01-3'),
('MH04', 'P02', '2023-01-4'),
('MH05', 'P01', '2023-01-5'),
4.2.14. NGANH
INSERT INTO Nganh (MaNganh, TenNganh, MaKhoa)
VALUES
('N01', 'Công Nghệ Thông Tin', 'KH01'),
('N02', 'Kinh Tế', 'KH02');
4.2.15. THOIKHOABIEU
INSERT INTO ThoiKhoaBieu (MaMon, MaPhong, Ngay) VALUES
('MH01', 'P01', 'Thứ 2, Tiết 1-3'),
('MH02', 'P02', 'Thứ 3, Tiết 4-6'),
('MH03', 'P01', 'Thứ 4, Tiết 7-9'),
('MH04', 'P02', 'Thứ 5, Tiết 10-12'),
36
('MH05', 'P01', 'Thứ 6, Tiết 1-3'),
4.2.16. HOCPHI
INSERT INTO HocPhi (NamHoc, Gia) VALUES
('2023-2024', 15000000),
('2024-2025', 16000000),
('2025-2026', 17000000),
('2026-2027', 18000000),
('2027-2028', 19000000)
4.2.17. HOADON
INSERT INTO HoaDon (MaMH, NamHoc, MaSV, TongTien) VALUES
('MH01', '2023-2024', 'SV001', 15000000),
('MH02', '2024-2025', 'SV001', 16000000),
('MH03', '2025-2026', 'SV002', 17000000),
('MH04', '2026-2027', 'SV002', 18000000),
('MH05', '2027-2028', 'SV003', 19000000),
37
@GioiTinh CHAR(1),
@NgaySinh DATE,
@QueQuan NVARCHAR(100),
@MaKH CHAR(10),
@MaLop CHAR(10))
AS
BEGIN
INSERT INTO SinhVien (MaSV, TenSV, GioiTinh,
NgaySinh, QueQuan, MaKH, MaLop)
VALUES (@MaSV, @TenSV, @GioiTinh, @NgaySinh,
@QueQuan, @MaKH, @MaLop);
END;
4.3.3. Sửa thông tin cá sinh viên
- Sp_ SuaSinhVien: Sửa thông tin cá sinh viên
CREATE PROC sp_SuaSinhVien(
@MaSV CHAR(10),
@TenSV NVARCHAR(1000),
@GioiTinh CHAR(1),
@NgaySinh DATE,
@QueQuan NVARCHAR(100),
@MaKH CHAR(10),
@MaLop CHAR(10))
AS
BEGIN
UPDATE SinhVien
SET TenSV = TenSV, GioiTinh = GioiTinh, NgaySinh =
NgaySinh, QueQuan = QueQuan, MaKH = MaKH, MaLop = MaLop
WHERE MaSV = MaSV;
END;
38
4.3.4. Xóa thông tin sinh viên
- Sp_XoaSV: Xóa thông tin sinh viên
CREATE PROC sp_XoaSV(
@Masv char(10))
AS
BEGIN
delete from SinhVien
where MaSV=@Masv
END
4.3.5. Xem điểm
- Sp_XemDiemSinhVien: Xem điểm của sinh viên
CREATE PROCEDURE sp_XemDiemSinhVien
@MaSV CHAR(10)
AS
BEGIN
SELECT
SV.MaSV,SV.TenSV,MH.MaMH,MH.TenMH,D.HocKy,D.Diem
FROM SinhVien SV JOIN Diem D ON SV.MaSV = D.MaSV
JOIN MonHoc MH ON D.MaMH = MH.MaMH
WHERE SV.MaSV = @MaSV;
END;
4.3.6. Tính điểm trung bình học kỳ
- Sp_TinhDiemTrungBinhHocKy: Tính điểm trung bình học kỳ
CREATE PROCEDURE sp_TinhDiemTrungBinhHocKy
@MaSV CHAR(10),
@HocKy INT
AS
BEGIN
39
DECLARE @DiemTrungBinh FLOAT;
40
BEGIN
DELETE FROM Diem
WHERE MaSV = @MaSV AND MaMH = @MaMH AND HocKy =
@HocKy
END;
4.3.9. Xem danh sách giảng viên dạy môn học nào
- sp_ XemMonHocGiangVien: Xem danh sách giảng viên dạy
môn nào
CREATE PROCEDURE sp_XemMonHocGiangVien
@MaGV CHAR(10)
AS
BEGIN
SELECT MHG.MaMH, MH.TenMH
FROM MonHoc_GiangVien MHG
JOIN MonHoc MH ON MHG.MaMH = MH.MaMH
WHERE MHG.MaGV = @MaGV
END;
4.3.10. Xem học phí năm học
- sp_ XemHocPhiNamHoc: Xem học phí năm học
CREATE PROCEDURE sp_XemHocPhiNamHoc
@NamHoc varchar(20)
AS
BEGIN
SELECT *
FROM HocPhi
WHERE NamHoc = @NamHoc
END;
41
4.4. Ràng buộc cơ sở dữ liệu (trigger)
4.4.1. Check thời gian khoá học
--1.Check thoi gian KHOAHOC
GO
CREATE TRIGGER TR_CheckThoigian_KhoaHoc
ON KhoaHoc
AFTER INSERT, UPDATE
AS
BEGIN
IF EXISTS (
SELECT 1
FROM inserted
WHERE TRY_CAST(Thoigian AS DATE) > GETDATE()
)
BEGIN
ROLLBACK;
RAISERROR(N'Error: Thời gian không được lớn hơn ngày hiện
tại.', 16, 1);
END;
END;
42
FROM inserted
WHERE Diem > 10 OR Diem < 0
)
BEGIN
RAISERROR(N'Error: Điểm phải lớn hơn 0 và bé hơn 10.',
16, 1);
RETURN;
END;
44
on SinhVien
FOR INSERT,UPDATE
AS
BEGIN
declare @tensv nvarchar(255),@c int;
select @tensv=TenSV from inserted
select @c=COUNT(*)
from SinhVien
where TenSV=@tensv
if @c>1
begin
Rollback Transaction
Raiserror(N'Họ tên sinh viên phải khác nhau',16,1)
return
end
end
48
CHƯƠNG 5 KẾT LUẬN
5.1. Kết quả đạt được và chưa đạt được
5.1.1. Kết quả đạt được:
▪ Hoàn tất báo cáo theo phiếu chấm điểm
▪ Thực hiện đủ các phần bảng và các chức năng có thể có khi sử dụng trong
thực tiễn
▪ Thực hiện thiết kế các mô hình cần thiết trong việc xây dựng Cơ sở dữ
liệu
5.1.2. Kết quả chưa đạt được
▪ Các phần bảng chưa thực sự theo sát yêu cầu.
▪ Vẫn còn khá nhiều chức năng cần thiết trong thực tiễn có thể sử dụng đối
với các bảng dữ liệu vẫn chưa có trong báo cáo
▪ Các bản thiết kế mô hình dữ liệu chỉ mang tính chất tương đối, mang tính
tham khảo.
5.2. Hướng phát triển mở rộng ứng dụng trong tương lai.
o Thực hiện xây dựng lại các bản thiết kế cơ sở dữ liệu để phù hợp, sát với
thực tế nhất
o Tạo thêm nhiều bảng dữ liệu cần thiết khác
o Xây dựng thêm các chức năng khác cần thiết đối với các bảng
49
TÀI LIỆU THAM KHẢO
Sử dụng chức năng tạo danh mục tài liệu tham khảo của MS Word và dùng
Style tham chiếu là IEEE.
50
PHỤ LỤC:
Bảng phân công công việc của từng thành viên trong nhóm như Bảng 2.
Bảng 2. Bảng phân công công việc
Trưởng
Stt MSSV Họ và tên Nội dung thực hiện
nhóm
21DH113601 Ngô Anh Hào Mô tả đề tài, Dạng chuẩn, bảo
1 toàn thông tin, LTCSDL, Mô
tả thực thể, tạo Processdure
21DH114309 Phan Hoàng Mô tả đề tài, ràng buộc toàn
Việt vẹn, NOSQL & NEWSQL,
2 Mô hình thực thể kết hợp, X
Nhập dữ liệu mẫu, Kết luận,
Cơ sở lý thuyết.
19DH110421 Mai Trung Mô tả đề tài, Mô hình ERD,
3 Kiên phụ thuộc hàm, Lược đồ cơ sở
dữ liệu quan hệ, tạo CSDL
Ghi chú: mục lục được thực hiện từ “danh mục hình và bảng 7” → “Phụ
lục”.
51