有学生-课程模式 S-T : 学生表:Student(Sno,Sname,Ssex,Sage,Sdept); 课程表:Course(Cno,Cname,Cpno,Ccredit); 学生选课表:SC(Sno,Cno,Grade)。 用SQL语言定义上述关系模式(属性数据类型及长度根据经验值设置),给出实体完整性、参照完整性约束定义,自定义完整性要求成绩Grade按五级制记载(A、B、C、D、E)
时间: 2024-02-06 14:09:11 浏览: 109
用SQL语言创建学生关系表.pptx
学生表:
```
CREATE TABLE Student (
Sno CHAR(10) PRIMARY KEY,
Sname VARCHAR(20) NOT NULL,
Ssex CHAR(2) CHECK (Ssex IN ('男', '女')),
Sage INT CHECK (Sage > 0),
Sdept VARCHAR(20) NOT NULL
);
```
课程表:
```
CREATE TABLE Course (
Cno CHAR(10) PRIMARY KEY,
Cname VARCHAR(20) NOT NULL,
Cpno CHAR(10) DEFAULT NULL,
Ccredit INT CHECK (Ccredit >= 0 AND Ccredit <= 10),
FOREIGN KEY (Cpno) REFERENCES Course(Cno) ON DELETE SET NULL
);
```
学生选课表:
```
CREATE TABLE SC (
Sno CHAR(10),
Cno CHAR(10),
Grade CHAR(1) CHECK (Grade IN ('A', 'B', 'C', 'D', 'E')),
PRIMARY KEY (Sno, Cno),
FOREIGN KEY (Sno) REFERENCES Student(Sno) ON DELETE CASCADE,
FOREIGN KEY (Cno) REFERENCES Course(Cno) ON DELETE CASCADE
);
```
其中,实体完整性约束由主键和非空约束保证;参照完整性约束由外键保证;自定义完整性约束由 CHECK 约束保证。在学生选课表中,使用了联合主键,以保证一个学生不能重复选同一门课程。同时,设置了 ON DELETE CASCADE,以保证删除学生或课程时,对应的选课记录也被删除。
阅读全文