实验二.docx
《实验二.docx》由会员分享,可在线阅读,更多相关《实验二.docx(10页珍藏版)》请在冰豆网上搜索。
实验二
实验二数据库的三个完整性
前提:
做完实验一(建立了三个表:
学生表,课程表和选修表)
实验步骤:
一建立表间引用(即外码)
我们知道,这三张表之间存在引用关系,就是sc表的sno应用了student表的主码sno,sc表的cno引用了course表的主码cno。
那么,我们需要在sc表上建立两个外码:
如图,在工具菜单中选择“关系”
分别选择三个关系,都点添加按钮将其添加到后面的窗口中,如下图:
然后关闭最前面的小窗口。
关掉小窗口后双击sc表中的sno,弹出如下对话框:
点击该框的“新建”按钮,得下图对话框,在对话框中如下选择,这样就可以建立sc表的sno对student主码的引用。
点击上图的确定后得下图:
勾上“实施参照完整性”选项后点击确定按钮,(如果确定后报错,一般是因为选修表中原有数据违反了参照完整性。
请先清空SC表的内容。
)(注意:
这里讲的参照完整性就是书中提到的参照完整性,即对外码的两个约束:
要么外码取空,要么外码填所参照表的主码值之一)
创建后如下图,出现了一根连线,sc到student的,而且sc一端是无穷大的符号,student一端是1的符号,代表sc可以多次引用student中的一个主码值。
同样的操作,我们建立sc上的cno引用course表的主码
将“关系”窗口关闭并点“是”保存
二验证实体完整性和参照完整性约束(关系的两个不变性)
(1)DBMS的实体完整性检测
在如下窗口中双击student
如下图输入两条元组:
然后再输入重复的值或空值,例如95002,然后换行,看看DBMS会不会提升错误,提示错误就代表DBMS实体完整性检测到了错误。
下图是提示错误的情况:
(2)DBMS的参照完整性检测
给course表录入信息如下
给sc录入信息如下:
发现一切正常。
思考:
1如果再增加一条记录:
95005,1,70会不会出现错误提示,为什么?
2再增加一条95001,7,90会不会出现错误提示,为什么?
3再增加一条95001,1,87会不会出现错误提示,为什么?
三:
用户定义完整性
1打开student表:
如下:
右键设计视图
2在设计视图里添加用户定义完整性规则,如下图,我们准备把ssex默认值填“女”,有效性规则(相当于用户定义完整性)里规定只能填“男”或者“女”,点击下图所指位置,
弹出表达式生成器对话框(如下图),里面有很多逻辑和函数可以用,填写如下内容,点击确定回到原界面。
3用同意的步骤定义sage完整性如下图,保存。
4验证用户定义完整性,双击打开student,在ssex处随意填字,后果如下图
在sage里随意填年龄,后果如下:
四:
理解基本表,查询表和视图
1在查询界面点击“在设计视图中创建查询”
弹出的对话框中选择要查询的表student表,点击“添加”后关闭对话框。
在下图中,选择要查询的内容:
sno,sname,sdept,以及查询条件是sno为95001的同学。
(注意:
条件是针对sno的,所以95001要写在sno列下面,同理,如果要找叫李勇的同学,就在sname列下面写李勇)
保存该查询为“查询95001”,保存完后如下图,双击该查询后即看到查询结果。
查询结果如下表,该表属于“查询表”以前建立的student,course,sc表是“基本表”
思考:
基本表,查询表,视图