SQL练习:构建学生-课程数据库模型

需积分: 11 1 下载量 90 浏览量 更新于2024-08-15 收藏 135KB PPT 举报
本资源是关于数据库原理及应用的学习资料,特别关注SQL的实践练习。提供的数据涉及到一个学生-课程数据库,包括三个表格:学生表(Student)、课程表(Course)和学生选课表(SC)。学生表记录了学生的学号、姓名、性别、年龄和所在系;课程表包含课程号、课程名称、先行课(预修课程)和学分;学生选课表则存储了学生的学号、所选课程号以及对应的分数。资料中还给出了创建这些表的SQL语句示例。 在数据库设计中,表间的关联是至关重要的。在这个S-T数据库中,Student表和Course表通过外键关联,Course表中的Cpno字段引用了自身的Cno字段,表示课程之间的预修关系。而Student表和Course表通过SC表连接,形成了学生选修课程的关系,其中Sno和Cno分别是两个表的主键,共同作为SC表的复合外键。 创建数据库和表的SQL语句示例如下: 1. 创建数据库: ```sql CREATE DATABASE "S-T"; ``` 这个命令在大多数数据库管理系统(DBMS)中用于创建一个新的数据库。 2. 建立学生表Student: ```sql CREATE TABLE Student ( Sno CHAR(9) PRIMARY KEY, Sname CHAR(20) UNIQUE, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20) ); ``` 这里定义了Student表的结构,Sno为主键,确保每个学生的学号都是唯一的;Sname字段要求具有唯一性,防止同名的情况;其他字段如Ssex、Sage和Sdept分别存储性别、年龄和所在系。 3. 建立课程表Course: ```sql CREATE TABLE Course ( Cno CHAR(4) PRIMARY KEY, Cname CHAR(40), Cpno CHAR(4), Ccredit SMALLINT, FOREIGN KEY (Cpno) REFERENCES Course(Cno) ); ``` Course表中,Cno为主键,Cname记录课程名称,Cpno是预修课程号,Ccredit表示课程的学分。Cpno字段是外键,引用了Course表的Cno字段,确保预修课程的有效性。 4. 建立学生选课表SC: SC表没有给出具体的创建语句,但可以假设它类似如下: ```sql CREATE TABLE SC ( Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade INT, PRIMARY KEY (Sno, Cno), FOREIGN KEY (Sno) REFERENCES Student(Sno), FOREIGN KEY (Cno) REFERENCES Course(Cno) ); ``` SC表的Sno和Cno构成复合主键,确保每条选课记录的唯一性。同时,Sno和Cno都是外键,分别与Student和Course表的主键对应,确保数据的一致性。 这个SQL练习提供了基本的数据库设计实例,适合初学者理解和实践SQL语句,包括数据表的创建、主键和外键的使用,以及表间关系的建立。通过这些练习,学习者可以加深对数据库原理的理解,并提升实际操作数据库的能力。