资源描述:
《一个完整的数据库示例--说明.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、一、表的结构及完整性约束新建一个数据库jxsk,包括S、C、SC、T、TC五个表,结构如下:C表:S表:SC表:T表:TC表:二、安全性控制及视图机制1、三类角色:depart、teacher、studentdepart的权限:teacher的权限:student的权限:2、有2个院系用户:d_jsj,d_xx,同属于depart角色。有1个教师用户:t,属于teacher角色。有一个学生用户:s,属于student角色。3、创建计算机系教师视图t_view_jsj、计算机系学生视图s_view_jsj
2、,并授予d_jsj用户在这两个视图上的select、delete、update、insert权限。计算机系教师视图t_view_jsj:createviewt_view_jsjasselecttno,tn,sex,age,prof,sal,comm,deptfromtwheredept='计算机'withcheckoption授予d_jsj用户在计算机系教师视图t_view_jsj上的select、delete、update、insert权限:grantselect,update,delete,inse
3、rtont_view_jsjtod_jsj计算机系学生视图t_view_jsj:createviews_view_jsjasselectsno,sn,sex,age,dept,resume,nativefromswheredept='计算机'withcheckoption授予d_jsj用户在计算机系学生视图s_view_jsj上的select、delete、update、insert权限:grantselect,update,delete,insertons_view_jsjtod_jsj……4、创建一
4、个视图,显示学号,姓名,院系,课程名,成绩。createviewscore_view(学号,姓名,院系,课程名,成绩)asselects.sno,sn,dept,cn,scorefroms,sc,cwheres.sno=sc.snoandsc.cno=c.cno三、完整性控制--触发器、规则1、要求当删除C表中某课程信息时,同时删除SC和TC中与此课程相关的记录。createtriggerc_delete_triggeroncafterdeleteasdeletefromscwherecnoin(sel
5、ectcnofromdeleted)deletefromtcwherecnoin(selectcnofromdeleted)go2、为T创建一触发器,当职称从“讲师”晋升为“副教授”时,岗位津贴自动增加500元,从“副教授”晋升为“教授”时,岗位津贴自动增加900元。createtriggert_update_triggerontafterupdateasifupdate(prof)begindeclare@prof_oldchar(10),@prof_newchar(10)select@prof_ol
6、d=proffromdeletedselect@prof_new=proffrominsertedif@prof_old='讲师'and@prof_new='副教授'updatetsetcomm=comm+500wheretno=(selecttnofrominserted)if@prof_old='副教授'and@prof_new='教授'updatetsetcomm=comm+900wheretno=(selecttnofrominserted)end3、创建一个规则sexrule,指定变量@sex
7、的取值只能为'男'或'女'createrulesexruleas@sexin('男','女')绑定T表的sex、S表的sex到sexrule规则:execsp_bindrule'sexrule','s.sex'execsp_bindrule'sexrule','t.sex'四、索引1、索引的分类:l聚集索引:primarykey自动创建聚集索引l非聚集索引2、使用索引的准则:1)适合建索引的属性列l主码所在的属性列l外码所在的列或在连接查询中经常使用的属性列l按关键字的范围值进行搜索的属性列l按关键字的
8、排序顺序访问的属性列2)不适合建索引的属性列l在查询中很少涉及的属性列l包含较少的唯一值l更新性能比查询性能更重要的属性列l有text、ntext、image数据类型定义的属性列3、为s表在dept属性列上创建索引createindexs_dept_indexons(dept)……五、自定义数据类型、自定义函数1、自定义数据类型Idnum:学号、教师编号都是char(6),notnull。execsp_addtypeIdnum,'char(