foreign key (Sno) references Student(Sno), constraint SC_Sname
foreign key (Cno) references Course(Cno)
2)创建索引,加快查询的速度
create unique index Student_Sno on Sudent(Sno); create unique index Course_Course on Student(Cno);
3)创建触发器,通过触发器来实现相关的自动工作
--创建触发器,自动生成用户,生成默认密码和用户类型---
create trigger insert_user on Student for insert as begin
declare @username char (20) select @username=inserted.Sname
from inserted
insert into UserInfo values(@username,'888',1) end
---创建级联删除,删除学生信息,自定删除他的用户信息
XI create trigger delete_student on Student for delete as begin
delete UserInfo
from UserInfo,deleted
where UserInfo.UserName=deleted.Sname end
drop trigger pp
drop trigger delete_student1
---创建级联删除,删除学生信息,自定删除他的成绩信息 create trigger delete_student1 on Student for delete as begin delete SC
from SC,deleted
where SC.Sno=deleted.Sno
XII go
end
----创建级联修改,修改学生学号和课程号时自动修改SC表中的学号和课程号
create trigger Student_SC_update on Student for update as go
create trigger Course_SC_update on Course for update as
XIII if update(Sno) begin
update SC
set Sno=(select Sno from inserted) from SC,deleted
where SC.Sno=deleted.Sno
end
go
if update(Cno) begin
update SC
set Sno=(select Cno from inserted) from SC,deleted
where SC.Cno=deleted.Cno
end
4)创建视图,通过视图进行查找,提高数据库的安全性
----创建视图 create
view
Student_Sno_Query(Sno,Sname,Cname,Teacher,Grade,Gpa) as select
Student.Sno,Student.Sname,Cname,Teacher,Grade,(Grade-50.0)10
from SC,Student,Course
where SC.Sno=Student.Sno and SC.Cno=Course.Cno order by grade desc
5)使用事务,提高数据的准确性,在实现增删查改时,如果产生异常将会回滚
XIV SqlTransaction trans = con.BeginTransaction(); try
{ transmit(); }
catch (Exception) {
trans.Rollback(); } finally {
trans.Dispose(); }
在c#编写的过程中,把上面的代码嵌入进去就可以完成事务的检测。
XV