日期:2014-05-17 浏览次数:20771 次
学生选课表:学号SNO、课程号CNO、课程成绩Grade.
--约束:
--1.课程成绩介于0至100之间(检查约束就能搞定)
--2.修改/删除某个学生时,同时修改/删除该学生对应选课信息(级联删除 更新就可以了)
--3.修改某门课程时,同时修改该门课程的对应选课信息;(级联更新)
--4.删除某门课程时,如果已有学生选修该门课程,则不能执行该删除操作;(把课程表的课程号设为主键 选课表的课程号设为外间 利用外键确保数据的引用完整性即可)
至于触发器 我想自己动动脑子就能解决吧 有什么不懂得再来问 不帮学生做题
--创建学生信息表
if OBJECT_ID('StuInfo') is not null
drop table StuInfo
go
create table StuInfo
(
StuId varchar(5) primary key,
StuName nvarchar(10),
StuSex nvarchar(1) check(StuSex in('男','女')),
StuAge smallint,
Tel varchar(11)
)
go
--创建课程表
if OBJECT_ID('CouInfo') is not null
drop table CouInfo
go
create table CouInfo
(
CouId varchar(5) primary key,
CouName nvarchar(20),
CouHours decimal(4,1)
)
go
--学生选课表:
if OBJECT_ID('CouChose') is not null
drop table CouChose
go
create table CouChose
(
Id int identity(1,1),
StuId varchar(5)
foreign key references StuInfo(StuId) on delete cascade on update cascade,
CouId varchar(5) foreign key references CouInfo(CouId) on update cascade,
CouScoer int check(CouScoer between 0 and 100)
)
go
--创建触发器
if OBJECT_ID('tri_test') is not null
drop trigger tri_test
go
create trigger tri_test on CouChose
for update
as
insert GradeChange select * from INSERTED
go
CREATE TRIGGER Update_Student ON Student
AFTER UPDATE
AS
INSERT INTO GradeChange
SELECT *
FROM INSERTED
CREATE TRIGGER Update_Grade ON Student
AFTER UPDATE
AS
INSERT INTO GradeChange SELECT * FROM INSERTED
学生选课表:学号SNO、课程号CNO、课程成绩Grade.
--约束:
--1.课程成绩介于0至100之间(检查约束就能搞定)
--2.修改/删除某个学生时,同时修改/删除该学生对应选课信息(级联删除 更新就可以了)
--3.修改某门课程时,同时修改该门课程的对应选课信息;(级联更新)
--4.删除某门课程时,如果已有学生选修该门课程,则不能执行该删除操作;(把课程表的课程号设为主键