Homework - Education Management
Phần A: Tạo bảng
- Viết các câu lệnh tạo bảng như phần mô tả bên dưới.
- Tạo mỗi bảng từ 5-10 records: Sử dụng câu lệnh INSERT, thứ tự nhập dữ liệu cho các tables
Teachers
| Id | Column Name | Data Type | Null | Key | Default | Constraint |
|---|---|---|---|---|---|---|
| 1 | Id | int | PK | AUTONUMBER | ||
| 2 | FirstName | nvarchar(50) | ||||
| 3 | LastName | nvarchar(50) | ||||
| 4 | Gender | bit | ||||
| 5 | varchar(50) | UNIQUE | ||||
| 6 | PhoneNumber | varchar(50) | yes | UNIQUE | ||
| 7 | Address | nvarchar(500) | yes | |||
| 8 | DateOfBirth | datetime | yes |
Students
| Id | Column Name | Data Type | Null | Key | Default | Constraint |
|---|---|---|---|---|---|---|
| 1 | Id | int | PK | AUTONUMBER | ||
| 2 | FirstName | nvarchar(50) | ||||
| 3 | LastName | nvarchar(50) | ||||
| 4 | Gender | bit | ||||
| 5 | varchar(50) | UNIQUE | ||||
| 6 | PhoneNumber | varchar(50) | yes | UNIQUE | ||
| 7 | Address | nvarchar(500) | yes | |||
| 8 | DateOfBirth | datetime | yes |
Employees
| Id | Column Name | Data Type | Null | Key | Default | Constraint |
|---|---|---|---|---|---|---|
| 1 | Id | int | PK | AUTONUMBER | ||
| 2 | FirstName | nvarchar(50) | ||||
| 3 | LastName | nvarchar(50) | ||||
| 4 | Gender | bit | ||||
| 5 | varchar(50) | UNIQUE | ||||
| 6 | PhoneNumber | varchar(50) | yes | UNIQUE | ||
| 7 | Address | nvarchar(500) | yes | |||
| 8 | DateOfBirth | datetime | yes |
Classes
| Id | Column Name | Data Type | Null | Key | Default | Constraint |
|---|---|---|---|---|---|---|
| 1 | Id | int | PK | AUTONUMBER | ||
| 2 | Name | nvarchar(50) | UNIQUE | |||
| 3 | Description | nvarchar(500) | yes | |||
| 4 | StartDate | datetime | StartDate <= EndDate | |||
| 5 | EndDate | datetime | StartDate <= EndDate |
Sample data:
| Id | Name | Description |
|---|---|---|
| 1 | Batch 31 | Khóa học M.E.R.N |
| 2 | Batch 84 | Mỹ thuật đa phương tiện quốc tế |
| 3 | Batch 99 | Lập trình viên quốc tế |
Classes_Students
Relation Many-to-Many (Classes, Students):
| Id | Column Name | Data Type | Null | Key | Default | Constraint |
|---|---|---|---|---|---|---|
| 1 | ClassId | int | FK | Refrence to Classes (Id) | ||
| 2 | StudentId | int | FK | Refrence to Students (Id) |
PRIMARY KEY
PRIMARY KEY (ClassId, StudentId)
Classes_Teachers
Relation Many-to-Many (Classes, Teachers):
| Id | Column Name | Data Type | Null | Key | Default | Constraint |
|---|---|---|---|---|---|---|
| 1 | ClassId | int | FK | Refrence to Classes (Id) | ||
| 2 | TeacherId | int | FK | Refrence to Teachers (Id) |
PRIMARY KEY
PRIMARY KEY (ClassId, TeacherId)
Subjects
| Id | Column Name | Data Type | Null | Key | Default | Constraint |
|---|---|---|---|---|---|---|
| 1 | Id | int | PK | AUTONUMBER | ||
| 2 | Name | nvarchar(100) | UNIQUE | |||
| 3 | Description | nvarchar(500) | yes |
Sample data:
| Id | Name | Description |
|---|---|---|
| 1 | HTML5, CSS3, JavaScript | Lập trình WEB căn bản |
| 2 | ReactJS | Lập trình FRONTEND ReactJS |
| 3 | ExpressJS | Lập trình BACKEND ExpressJS |
| 4 | MongoDB | CSDL NoSQL MongoDB |
| 5 | MySQL | CSDL MySQL |
| 6 | SQL Server | CSDL SQL Server |
Subjects_Teachers
Relation Many-to-Many (Subjects, Teachers):
| Id | Column Name | Data Type | Null | Key | Default | Constraint |
|---|---|---|---|---|---|---|
| 1 | SubjectId | int | FK | Refrence to Subjects (Id) | ||
| 2 | TeacherId | int | FK | Refrence to Teachers (Id) |
PRIMARY KEY
PRIMARY KEY (SubjectId, TeacherId)
Marks
Relation Many-to-Many (Subjects, Students):
| Id | Column Name | Data Type | Null | Key | Default | Constraint |
|---|---|---|---|---|---|---|
| 1 | Id | int | PK | AUTONUMBER | ||
| 2 | StudentId | int | FK | Refrence to Students (Id) | ||
| 3 | SubjectId | int | FK | Refrence to Subjects (Id) | ||
| 4 | Mark | decimal(5, 2) | 0 | n >= 0 and n <= 10 | ||
| 5 | Date | datetime | NOW |
AttendanceTypes
| Id | Column Name | Data Type | Null | Key | Default | Constraint |
|---|---|---|---|---|---|---|
| 1 | Id | int | PK | |||
| 2 | Name | nvarchar | UNIQUE | |||
| 3 | Description | nvarchar(500) | yes |
Sample data:
| Id | Name | Description |
|---|---|---|
| 1 | Present | Có mặt |
| 2 | Absent | Vắng |
| 3 | Late | Muộn |
| 4 | Excused | Có xin phép |
Attendances
Relation Many-to-Many (Students, Subjects, AttendanceTypes):
| Id | Column Name | Data Type | Null | Key | Default | Constraint |
|---|---|---|---|---|---|---|
| 1 | Id | int | PK | AUTONUMBER | ||
| 2 | StudentId | int | FK | Refrence to Students (Id) | ||
| 3 | SubjectId | int | FK | Refrence to Subjects (Id) | ||
| 4 | AttendanceTypeId | int | FK | Refrence to AttendanceTypes (Id) | ||
| 5 | Date | date | NOW | |||
| 6 | Description | nvarchar(500) | yes |
UNIQUE CONSTRAINT
UNIQUE (SubjectId, StudentId, Date)
Tuitions
Relation Many-to-Many (Students, Employees):
| Id | Column Name | Data Type | Null | Key | Default | Constraint |
|---|---|---|---|---|---|---|
| 1 | Id | int | PK | AUTONUMBER | ||
| 2 | StudentId | int | FK | Refrence to Students (Id) | ||
| 3 | InvoiceCode | varchar(10) | UNIQUE | |||
| 4 | InvoiceDate | datetime | NOW | |||
| 5 | Amount | decimal(18,2) | Amount > 0 | |||
| 6 | EmployeeId | int | FK | Refrence to Employees (Id) | ||
| 7 | Description | nvarchar(500) | yes |
Phần B: Truy vấn dữ liệu
Lớp học
- Hiển thị danh sách các lớp học cùng với thông tin giáo viên phụ trách.
- Hiển thị danh sách các lớp học cùng với thông tin giáo viên phụ trách và số lượng học sinh.
- Hiển thị danh sách các lớp học cùng với thông tin giáo viên phụ trách và số lượng học sinh, sắp xếp theo tên lớp học.
- Hiển thị danh sách các lớp học còn trống (chưa có học sinh nào đăng ký).
- Hiển thị danh sách các lớp học còn học, sắp xếp theo ngày kết thúc tăng dần.
- Hiển thị các lớp học đã kết thúc, sắp xếp theo ngày kết thúc giảm dần.
- Hiển thị các lớp học chưa bắt đầu, sắp xếp theo ngày bắt đầu tăng dần.
- Hiển thị lớp học có ít hơn 10 học sinh.
- Hiển thị lớp học có nhiều hơn 20 học sinh.
- Hiển thị lớp học có số lượng học sinh nhiều nhất.
Học sinh
- Hiển thị danh sách học sinh của lớp học có tên là
Batch 31. - Hiển thị danh sách học sinh của lớp học có tên là
Batch 31, sắp xếp theo tên học sinh.
Môn học
- Hiển thị danh sách môn học cùng với thông tin giáo viên dạy môn đó.
- Hiển thị danh sách môn học cùng với thông tin giáo viên dạy môn đó, sắp xếp theo tên môn học.
- Hiển thị danh sách môn học cùng với thông tin trung bình cộng điểm số của môn đó, sắp xếp theo tên môn học.
Điểm số
- Hiển thị danh sác các học sinh có điểm số của môn học
ReactJS, sắp xếp theo điểm số giảm dần. - Hiển thị danh sách các học sinh có điểm số của môn học
ReactJScao nhất, sắp xếp theo điểm số giảm dần.
Học phí
- Hiển thị danh sách học sinh nộp học phí trong tháng
10/2020. - Hiển thị danh sách học sinh nộp học phí trong tháng
10/2020, sắp xếp theo ngày nộp học phí, sắp xếp theo tên học sinh. - Hiển thị danh sách học sinh chưa nộp học phí trong tháng
10/2020, sắp xếp theo tên học sinh. - Hiển thị tổng số tiền học phí đã đóng của học sinh có tên là
Nguyễn Văn A. - Hiển thị tổng số tiền học phí đã đóng của học sinh có tên là
Nguyễn Văn Atrong năm2020. - Hiển thị danh sách học sinh của lớp học có tên là
Batch 31số tiền nộp học phí trong tháng10/2020, sắp xếp theo tên học sinh.
Điểm danh
- Hiển thị danh sách điểm danh của học sinh có tên là
Nguyễn Văn Atrong tháng 10/2020, sắp xếp theo ngày điểm danh. - Hiển thị danh sách điểm danh của học sinh có tên là
Nguyễn Văn Atrong tháng 10/2020, sắp xếp theo ngày điểm danh, sắp xếp theo tên môn học. - Hiển thị danh sách điểm danh của học sinh có tên là
Nguyễn Văn Atrong tháng 10/2020, sắp xếp theo ngày điểm danh, sắp xếp theo tên môn học, sắp xếp theo tên giáo viên dạy môn học. - Hiển thị danh sách học sinh với số lần điểm danh vắng trong tháng 10/2020, sắp xếp theo số lần điểm danh vắng giảm dần.
- Hiển thị danh sách học sinh với số lần điểm danh vắng trong tháng 10/2020, sắp xếp theo số lần điểm danh vắng giảm dần, sắp xếp theo tên học sinh.