Oracle根据语义为选课表(sc)的sno列和cno列建立外键,并要求级联删除(也就是当删除学生或课程表的记录时,自动删除选课表中的相应记录)。
时间: 2024-03-22 22:37:30 浏览: 162
这是一个很好的数据库设计实践。可以使用以下SQL语句为选课表(sc)的sno列和cno列建立外键,并要求级联删除:
```
ALTER TABLE sc ADD CONSTRAINT fk_sc_sno FOREIGN KEY (sno) REFERENCES student(sno) ON DELETE CASCADE;
ALTER TABLE sc ADD CONSTRAINT fk_sc_cno FOREIGN KEY (cno) REFERENCES course(cno) ON DELETE CASCADE;
```
这两条语句将在选课表(sc)的sno列和cno列上分别创建外键,这些外键将引用学生表(student)和课程表(course)的主键。ON DELETE CASCADE选项将指示数据库在删除学生或课程表中的记录时,自动删除选课表中相应的记录。
相关问题
根据语义为选课表(sc)的 sno 列和 cno 列建立外键,并要求级联删除(也就是当删除学生或课程表的记录时,自动删除选课表中的相应记录)。操作成功后,文件命名为 T3.sql。
在SQL中,为了根据`sno`(学生ID)和`cno`(课程ID)为选课表(`sc`)创建外键并设置级联删除规则,你需要编写一条ALTER TABLE语句。假设`students`表的主键是`sno`,而`courses`表的主键是`cno`,以下是创建这个外键关联的T3.sql脚本示例:
```sql
CREATE TABLE IF NOT EXISTS students (
sno INT PRIMARY KEY,
... -- 其他字段
);
CREATE TABLE IF NOT EXISTS courses (
cno INT PRIMARY KEY,
... -- 其他字段
);
CREATE TABLE IF NOT EXISTS sc (
sid INT,
cid INT,
FOREIGN KEY (sid) REFERENCES students(sno),
FOREIGN KEY (cid) REFERENCES courses(cno)
ON DELETE CASCADE -- 级联删除规则,如果学生表或课程表的记录被删除,会自动删除对应的选课记录
);
```
在这个脚本里,我们首先创建了`students`和`courses`表,然后在`sc`表中添加了对外键`sno`和`cno`的引用,并设置了它们的`ON DELETE CASCADE`选项。这表示当删除`students`或`courses`表中的记录时,相应的`sc`表记录会被自动删除。
在st_2中建立SC_2表,并按照SC设置学号、课程号及成绩。成绩限制在0~100分之间;Sno参照student_2表sno,并进行删除级联设置和更新级联设置;cno参照Course_2表cno,并进行更新级联设置和拒绝删除设置。
好的,根据您的要求,我给出建立SC_2表的SQL语句如下:
```
CREATE TABLE SC_2 (
Sno CHAR(10) NOT NULL,
Cno CHAR(10) NOT NULL,
Grade INT CHECK (Grade >= 0 AND Grade <= 100),
PRIMARY KEY (Sno, Cno),
FOREIGN KEY (Sno) REFERENCES student_2(Sno) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (Cno) REFERENCES Course_2(Cno) ON DELETE RESTRICT ON UPDATE CASCADE
);
```
这里使用了 `CASCADE` 和 `RESTRICT` 两种不同的外键约束,满足了您的要求。其中,`ON DELETE CASCADE` 表示当 student_2 表中的某个学生记录被删除时,对应的 SC_2 表中所有该学生的成绩记录也会被自动删除;`ON UPDATE CASCADE` 表示当 student_2 表中的某个学生记录的学号发生修改时,对应的 SC_2 表中所有该学生的成绩记录的学号也会被自动修改;`ON DELETE RESTRICT` 表示当 Course_2 表中的某个课程记录被删除时,对应的 SC_2 表中包含该课程的成绩记录不能被删除;`ON UPDATE CASCADE` 表示当 Course_2 表中的某个课程记录的课程号发生修改时,对应的 SC_2 表中所有该课程的成绩记录的课程号也会被自动修改。
阅读全文