学生信息表(Student):学生信息编号(StudentID)、姓名(Name)、性别(Gender)、出生日期(BirthDate)、联系电话(Phone)、家庭住址(Address)、班级编号(ClassID) 班级信息表(Class):班级编号(ClassID)、班级名称(ClassName)、所属学院(Academy) 教师信息表(Teacher):教师编号(TeacherID)、姓名(Name)、性别(Gender)、出生日期(BirthDate)、联系电话(Phone)、所属学院(Academy) 课程信息表(Course):课程编号(CourseID)、课程名称(CourseName)、学分(Credit) 成绩信息表(Score):成绩编号(ScoreID)、学生信息编号(StudentID)、课程编号(CourseID)、成绩(Grade)字段表与约束和查询语句
时间: 2023-12-15 13:06:27 浏览: 265
好的,以下是该学生管理系统的数据库设计:
## 学生信息表(Student)
- 学生信息编号(StudentID) int primary key
- 姓名(Name) varchar(20) not null
- 性别(Gender) char(2) not null
- 出生日期(BirthDate) date not null
- 联系电话(Phone) varchar(20)
- 家庭住址(Address) varchar(100)
- 班级编号(ClassID) int not null
- foreign key (ClassID) references Class(ClassID)
## 班级信息表(Class)
- 班级编号(ClassID) int primary key
- 班级名称(ClassName) varchar(20) not null
- 所属学院(Academy) varchar(20) not null
## 教师信息表(Teacher)
- 教师编号(TeacherID) int primary key
- 姓名(Name) varchar(20) not null
- 性别(Gender) char(2) not null
- 出生日期(BirthDate) date not null
- 联系电话(Phone) varchar(20)
- 所属学院(Academy) varchar(20) not null
## 课程信息表(Course)
- 课程编号(CourseID) int primary key
- 课程名称(CourseName) varchar(20) not null
- 学分(Credit) float not null
## 成绩信息表(Score)
- 成绩编号(ScoreID) int primary key
- 学生信息编号(StudentID) int not null
- 课程编号(CourseID) int not null
- 成绩(Grade) float not null
- foreign key (StudentID) references Student(StudentID)
- foreign key (CourseID) references Course(CourseID)
以下是该数据库的一些约束和查询语句:
### 约束
- 学生信息表(Student)中的班级编号(ClassID)必须存在于班级信息表(Class)中
- 成绩信息表(Score)中的学生信息编号(StudentID)必须存在于学生信息表(Student)中
- 成绩信息表(Score)中的课程编号(CourseID)必须存在于课程信息表(Course)中
### 查询语句
#### 查询某个学生的基本信息以及所在班级和所选课程的成绩
```
SELECT s.StudentID, s.Name, s.Gender, s.BirthDate, s.Phone, s.Address, c.ClassName, c.Academy, co.CourseName, sc.Grade
FROM Student s
INNER JOIN Class c ON s.ClassID = c.ClassID
LEFT JOIN Score sc ON s.StudentID = sc.StudentID
LEFT JOIN Course co ON sc.CourseID = co.CourseID
WHERE s.StudentID = [学生信息编号];
```
#### 查询某个班级的所有学生信息以及所选课程的平均成绩
```
SELECT s.StudentID, s.Name, s.Gender, s.BirthDate, s.Phone, s.Address, c.ClassName, c.Academy, AVG(sc.Grade) AS AvgGrade
FROM Student s
INNER JOIN Class c ON s.ClassID = c.ClassID
LEFT JOIN Score sc ON s.StudentID = sc.StudentID
WHERE c.ClassID = [班级编号]
GROUP BY s.StudentID, s.Name, s.Gender, s.BirthDate, s.Phone, s.Address, c.ClassName, c.Academy;
```
#### 查询某个教师所教授的课程信息以及选课学生的成绩
```
SELECT t.TeacherID, t.Name, t.Gender, t.BirthDate, t.Phone, t.Academy, c.CourseName, c.Credit, s.StudentID, s.Name, s.Grade
FROM Teacher t
INNER JOIN Course c ON t.TeacherID = c.TeacherID
LEFT JOIN Score s ON c.CourseID = s.CourseID
WHERE t.TeacherID = [教师编号];
```
阅读全文