数据库设计与SQL实践:授课选课系统分析与实现

4星 · 超过85%的资源 需积分: 7 5 下载量 36 浏览量 更新于2024-07-25 收藏 432KB DOC 举报
"本资料是大连东软信息学院计算机系的数据库原理与应用课程的案例题库,主要涉及SQL Server的习题。内容包括授课选课系统的数据库设计,包括E-R图转换为关系模型,以及SQL语句创建关系表的练习。" 在数据库设计中,首先我们需要理解实体关系(E-R)模型,它是数据库设计的初步阶段,用于描述现实世界中的实体、属性和实体间的关系。在这个案例中,我们有三个主要实体:学生、课程和教师。学生可以选修多门课程,课程可以被多个学生选修,而每门课程由一个特定的教师教授。每个实体都有其独特的属性,比如学生有学号、姓名等,课程有课程号、课程名等。 1. E-R图转换为关系模型: - 学生关系:包含学号、姓名、性别、年龄、所在系和所属班级,候选码为学号。 - 课程关系:包含课程号、课程名和学分,候选码为课程号。 - 教师关系:包含教师号、姓名、性别、出生日期、职称和所在系,候选码为教师号。 - 学生选课关系:记录学生选修课程的情况,包含学号、课程号和成绩,候选码为学号与课程号。 - 教师授课关系:记录教师教授的课程,包含教师号和课程号,候选码为教师号与课程号。 2. SQL语句创建关系表: - 创建学生表(Student):使用`CREATE TABLE`语句,设置Sno为主键,Sname为非空属性。 ``` CREATE TABLE Student ( Sno CHAR(10) PRIMARY KEY, Sname VARCHAR(8) NOT NULL, Sage INT, Ssex CHAR(2), Sdept VARCHAR(20) ) ``` - 创建教师表(Teacher):同样使用`CREATE TABLE`语句,设置Tno为主键。 ``` CREATE TABLE Teacher ( Tno CHAR(8) PRIMARY KEY, TName VARCHAR(10) NOT NULL, Sex CHAR(2), Birthday DATE, Prof VARCHAR(20), Dept VARCHAR(20) ) ``` - 创建课程表(Course):包含课程号、课程名、学分和教师代号(Tno),Tno作为外键。 ``` CREATE TABLE Course ( Cno CHAR(10) PRIMARY KEY, CName VARCHAR(20), Credit INT, Tno CHAR(8) REFERENCES Teacher(Tno) ) ``` - 创建成绩表(Score):记录学生的成绩,包含学号、课程号和成绩,学号和课程号共同作为主键。 ``` CREATE TABLE Score ( Sno CHAR(10) REFERENCES Student(Sno), Cno CHAR(10) REFERENCES Course(Cno), Grade INT, PRIMARY KEY (Sno, Cno) ) ``` 这些SQL语句用于在SQL Server数据库中创建相应的数据表,它们遵循了关系数据库的设计原则,确保了数据的一致性和完整性。通过这样的设计,我们可以有效地管理和查询授课选课系统的各种信息。例如,可以查询某个学生的所有成绩,或者找出某门课程的平均分等。这展示了数据库设计在实际应用中的重要性,以及SQL语言在实现数据操作上的灵活性。