实验六 索引与完整性
- 格式:doc
- 大小:1.67 MB
- 文档页数:14
实验四索引、数据完整性与安全性一、实验目的(1) 掌握利用SQL Server Management Studio和SQL语言建立、删除索引的方法;(2) 掌握利用SQL Server Management Studio和SQL语言实现数据完整性的方法;(3) 掌握在SQL Server Management Studio中实现数据安全性管理的方法。
二、实验原理1.索引在关系型数据库中,索引是一种可以加快数据检索的数据库结构。
SQL Server系统中主要有两种类型的索引,即聚集索引、非聚集索引。
(1)聚集索引聚集索引定义了数据在表中存储的物理顺序。
一个表只能定义一个聚集索引。
(2)非聚集索引非聚集索引并不存储表数据本身。
相反,非聚集索引只存储指向表数据的指针,该指针作为索引键的一部分,因此,在一个表中同时可以存在多个非聚集索引。
(3)利用SQL命令建立索引简化语法格式:CREATE [UNIQUE] [CLUSTERED|NONCLUSTERED]INDEX index_name ON {table|view}(column|ASC|DESC][,…n])其中:UNIQUE。
可选。
该选项用于通知SQL Server索引中列出的列的值是每行唯一的。
如果试图插入重复的行,则该选项会强制SQL Server返回一个错误信息。
CLUSTERED或NONCLUSTERED。
可选。
如果这两个选项都没有被明确列出,则默认将索引创建为NONCLUSTERED(非聚集索引)。
(4)通过SQL命令删除索引语法格式:DROP INDEX ‘table.index|view.index’[,…n]2.表主键和UNIQUE约束表主键通过表数据中一个列或者多个列组合的数据来唯一标识表中的每一行数据。
即表主键就是用来约束数据表中不能存在相同的两行数据。
在SQL Server系统中,定义表的主键可以在创建表的同时定义,也可以给已有的表添加主键。
实验数据记录管理制度一、总则实验数据的准确记录和有效管理对于科研、生产和质量控制等领域至关重要。
为了确保实验数据的完整性、准确性、可追溯性和安全性,特制定本实验数据记录管理制度。
二、适用范围本制度适用于本单位所有涉及实验数据产生、收集、整理、存储、使用和销毁的部门和人员。
三、数据记录的基本要求1、及时性:实验数据应在实验进行的同时进行记录,不得事后补记。
2、准确性:数据记录应真实反映实验结果,不得随意篡改或伪造数据。
3、完整性:记录应包含实验的所有相关信息,如实验日期、实验人员、实验设备、实验条件、实验步骤、原始数据和计算结果等。
4、清晰性:记录应书写工整、字迹清晰,使用统一的单位和规范的术语,避免使用模糊或易产生歧义的表述。
四、数据记录的格式与规范1、统一使用本单位规定的数据记录表格或电子文档进行记录。
2、表格应设计合理,包含必要的项目和栏目,便于填写和查阅。
3、对于电子文档,应按照规定的文件名格式进行命名,并存储在指定的文件夹中。
五、数据的收集与整理1、实验完成后,实验人员应及时对数据进行初步整理,检查数据的完整性和准确性。
2、对于异常数据,应进行标注和说明,并及时与相关人员讨论分析。
六、数据的存储1、纸质数据应分类装订成册,并存放在防火、防潮、防虫蛀的档案柜中,并建立相应的索引和目录。
2、电子数据应定期备份,存储在安全的服务器或存储设备中,并设置访问权限,防止未经授权的访问和修改。
七、数据的使用1、内部人员使用数据时,应填写数据使用申请单,注明使用目的和范围,并经相关负责人批准。
2、外部单位或人员需要使用本单位实验数据时,需签订保密协议,并按照规定的程序进行审批。
八、数据的保密1、实验数据涉及单位的商业秘密和知识产权,所有接触数据的人员应严格遵守保密规定。
2、不得将实验数据泄露给无关人员,未经授权不得复制、传播或用于非本单位的研究和生产活动。
九、数据的销毁1、超过保存期限的数据,应按照规定的程序进行销毁。
实验报告单院(系)计算机学院专业计算机科学与技术班级姓名学号同组人实验室S4305 组号日期课程数据库实用技术指导教师成绩实验项目编号8103203006 实验项目名称索引和数据的完整性一、实验目的(1)掌握索引的使用方法;(2)掌握数据完整性的实现方法;二、实验环境WIN7操作系统SQL Server2008三、实验原理(或要求)(1)了解索引的作用与分类;(2)掌握索引的创建方法;(3)理解数据的完整性的概念与分类;(4)掌握各种数据完整性的实现方法。
四、实验步骤(1)建立索引①使用CREATE INDEX语句创建索引。
●对YGGL数据库的Employees表中的DepartmentID列建立索引。
在查询分析器中输入如下程序并执行:USE YGGLGOCREATE INDEX depart_indON Employees(DepartmentID)GO●在Employees表的Name列和Address列上建立复合索引。
CREATE INDEX Ad_indON Employees(Name,Address)●对Departments表上的DepartmentName列建立唯一非聚集索引。
CREATE UNIQUE INDEX Dep_indON Departments(DepartName)②使用界面方式创建索引。
使用界面方式在Employees表的PhoneNumber列上创建索引。
启动SQL Server Management Studio,在对象资源管理器中展开数据库YGGL,展开表Employees,右击“索引,选择“新建索引”选项。
在新建索引的窗口中填写索引的名称和类型,单击“添加”按钮,在列表框中选择要创建的索引的列,选择完单击“确定”按钮即完成创建工作。
(2)重建索引。
重建表Employees中的所有索引。
USE YGGLGOALTER INDEX ALLON Employees REBUILD(3)删除索引。
实验5 索引和数据完整性的使用目的与要求:1.掌握索引的使用方法.2.掌握数据完整性的实现方法.实验内容:1.索引(请先取消每一个表的主键,命令方式按要求做下列小题)1)为表departments基于字段DepartmentID创建一个唯一聚集索引ix_DepartmentID.2)为表employees基于字段DepartmentID创建一个非聚集索引ix_DepartmentID.3)为表employees基于字段Name降序创建一个唯一非聚集索引ix_Name.4)为表employees基于字段departmentid升序,sex降序,创建一个非聚集复合索引ix_depsex.5)利用系统存储过程sp_rename将employees表的ix_depsex索引改名为ix_departmentid_sex.6)删除以上的三个表的所有索引.2.约束(请先取消每一个表的主键)1)为表employees中employeeid列创建名为pk_employyedid的PRIMARY KEY 约束.为表employees中name列创建名为uk_name的UNIQUE 约束. 为表departments中departmentid列创建名为pk_departmentid的U NIQUE 约束.2)为表employees中departmentid列创建名为fk_departmentid的 FOREIGN KEY 约束,并将修改实施设置默认值操作参照完整性.(验证当departments 表中的某一个departmentid的值修改,employees中对应记录departmentid的变化)(别忘了先给employees 表中的departmentid先设置默认值!!!)3)为表salary中employeeid列创建名为fk_employeeid的FOREIGN KEY 约束,并将修改和删除实施级联操作参照完整性.(验证当employees表中的某一个employeeid的值修改是否会自动影响表salary中的employeeid的值,当employees表中的某一条记录被删除时是否自动影响表salary中的相关记录)4)为表salary的列income创建检查约束ck_income,该约束限制income列只允许大于2000元,添加新记录(‘12345’,3456,1801)和(‘12346’,1890,801)验证。
实验六数据完整性约束姓名:学号:专业:网络工程班级:20网络工程同组人:无实验日期:2022.5【实验目的与要求】1.熟练掌握实体完整性的实现。
2.熟练掌握参照完整性的实现。
3.熟练掌握域完整性的实现。
【实验内容与步骤】实验准备:(1)对于SalesDB数据库,若在产品表、销售表和客户表上已有约束,请先删除之;(2)删除掉表中重复的行。
6.1.实体完整性的实现(1) 对产品表,定义主键约束(用企业管理器实现)。
写出相应过程:(1)在对象资源管理器中的数据库节点下找到数据库SalesDB,找到表Product。
右击-修改(2)按住Ctrl键选中Price和Stocks,右键-设置主键-保存测试:试着对产品表插入一条与原表中数据行具有相同主键值的数据。
给出测试结果:(2)客户表(CUSTOMER),定义名为PK_Cstm的主键约束,设定客户号(Cno)为主键。
(用SQL语句实现,写出相应语句)。
给出相应的SQL语句:alter table Customeraddconstraint PK_Cstm primary key(Cno)给出测试结果:(3)对销售表,定义名为PK_Sales的主键约束,设定主键为(Pno,Cno)的组合(用SQL语句实现,写出相应语句)。
给出相应的SQL语句:alter table Salesaddconstraint PK_Sales primary key(Pno,Cno)给出测试结果:(1)利用企业管理器建立产品表(Product)与销售表(Sales)之间的参照关系,当对主表产品表进行更新和删除操作时,从表Sales采用NO ACTION方式,写出其过程。
给出相应的过程:测试:试着删除主表中与从表有关联的一条记录,而后分别查看主表和从表中数据记录,给出测试结果。
(2)利用SQL语句建立销售表(SALES)与客户表(CUSTOMER)之间的参照关系,设定外键约束名为FK_SC,使得当对主表客户表(CUSTOMER)进行更新和删除操作时,从表销售表(SALES)采用CASCADE(级联)方式处理,给出相应的SQL语句和测试结果。
实验四数据完整性试验一实验目的1理解实体完整性、参照完整性、用户自定义完整性的作用2 特别掌握外码的作用。
二实验要求记录试验中遇到的问题,并写出原因。
三实验内容1 实体完整性学号姓名性别年龄系科3001 赵达男20 SX3002 杨丽女21 JSJ3001 李寅女21 SX输入上述数据,记录出现的问题,说明原因。
在创建表的时候出现错误信息”将截断字符串和二进制代码”,因为一个汉字在UTF-8编码下占用字节是3 所以应该将属性sex改成char(3)select * from student 查看你输入了几行数据。
2 course 表数据的输入Cno Cname Cpno Ccredit1081 电子商务 43 SC 表数据的输入Sno Cno Grade3001 1081 903001 1081 79输入上述数据,记录出现的问题,说明原因。
错误信息”违反了PRIMARY KEY 约束“PK__sc__905C05335F5775AE”。
不能在对象“dbo.sc”中插入重复键。
重复键值为(3001, 1801)”因为主键是sno与cno的联合,而插入的数据重复,所以破坏了数据库实体完整性性的规则!2 用户自定义完整性约束表student 有用户自定义约束:性别不能为空且取值范围为{男,女}年龄大于16岁表course 的自定义约束:Ccredit 取值范围{ 0 ,1,2,3,4,5 }课程表的每一行的Cno 与cpno 不可相同1 student 表数据输入学号姓名性别年龄系科3005 赵达男14 SX3006 杨丽南21 JSJ输入上述数据,记录出现的问题,说明原因。
错误信息” INSERT 语句与CHECK 约束"CK__student__age__5165187F"冲突。
该冲突发生于数据库"school",表"dbo.student", column 'age'。
实验六项目名称:索引与完整性
1.实验目的
(1)掌握索引的使用方法。
(2)掌握数据完整性的实现方法。
2. 实验准备
(1)了解索引的作用与分类。
(2)掌握索引的创建方法。
(3)理解数据完整性的概念及分类。
(4)掌握各种数据完整性的实现方法。
3. 实验内容
1.建立索引
(1)使用图形化工具创建索引。
打开SQL Server Management Studio窗口,从“对象资源管理器”窗格中依次展开SQL Server 服务器下的“数据库”YGGL1 “表”“dbo.Salary”节点,右击其子节点“索引”,在弹出的快捷菜单中单击“新建索引”命令,打开新建索引对话框,输入索引名称“employee_ind”,选择索引类型,并单击“添加”按钮,选择添加到索引键的列,单击“确定”按钮返回“常规”页面,配置其他选项后,单击“确定”按钮完成创建。
“新建索引”项:
添加索引键的列
“对象资源管理器”结果:
(2)使用T_SQL语句创建索引。
在SQL Server Management Studio查询编辑窗口中输入如下程序。
USE YGGL1
IF EXISTS (SELECT name FROM sysindexes
WHERE name=’depart_ind’)
DROP INDEX Employees.depart_ind
GO
USE YGGL1
CREATE INDEX depart_ind
ON Employees (DepartmentID)
单击工具栏中的“执行”按钮,执行上述语句,并在“对象资源管理器”窗格中查看执行结果。
【思考与练习】
什么情况下可以体现出建立索引的好处?
答:在数据库中,索引允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。
建立索引的目的是加快关系中那些在某个特定属性上存在特定值的元组的查找速度。
2.数据完整性
(1)域完整性的实现。
打开SQL Server Management Studio窗口,从“对象资源管理器”窗格中依次展开SQL Server 服务器下的“数据库”YGGL1 “表”,右击其子节点“dbo.Salary”,在弹出的快捷菜单中单击“设计”命令,再右击,在弹出的快捷菜单中单击“CHECK约束”命令,打开“CHECK约束”对话框。
单击“添加”按钮,在“表达式”文本框中输入要设置的CHECK 约束文本“InCome>=OutCome”,单击“关闭”按钮完成约束的创建。
(2)实体完整性的实现。
<1>打开SQL Server Management Studio窗口,从“对象资源管理器”窗格中依次展开SQL Server服务器下的“数据库”YGGL1 “表”,右击其子节点“dbo.Employees”,在弹出的快捷菜单中单击“设计”命令。
右击要设置主键的列EmployeeID,在弹出的快捷菜单中单击“设置主键”命令完成设置PRIMARY KEY约束的列。
<2>再右击,在弹出的快捷菜单中单击“索引\键”命令,打开“索引\键”对话框,单击“添加”按钮,再单击“列”右侧的按钮,打开“索引列”对话框,在“列名”的下拉表框中选择EmailAddress,单击“确定”按钮返回“索引\键”对话框,输入名称后单击“关闭”按钮完成设置UNIQUE约束的列。
(3)参照完整性的实现。
右击节点“dbo.Employees”,在弹出的快捷菜单中单击“设计”命令。
右击并在弹出的快捷菜单中单击“关系”命令,打开“外键关系”对话框,单击“添加”按钮,再单击“表和列规范”右侧的按钮,打开“表和列”对话框,输入关系名,“主键表”选择Departments,并在下面两个下拉列表中选择EmployeeID。
【思考与练习】
(1)实现将多个CHECK约束用于单个列。
(2)通过在表级创建CHECK约束,将一个CHECK约束应用于多个列。
东娴的
3.数据完整性
(3)域完整性的实现。
打开SQL Server Management Studio窗口,从“对象资源管理器”窗格中依次展开SQL Server 服务器下的“数据库”YGGL1 “表”,右击其子节点“dbo.Salary”,在弹出的快捷菜单中单击“设计”命令,再右击,在弹出的快捷菜单中单击“CHECK约束”命令,打开“CHECK约束”对话框。
单击“添加”按钮,在“表达式”文本框中输入要设置的CHECK 约束文本“InCome>=OutCome”,单击“关闭”按钮完成约束的创建。
“设计命令”:
“CHECK约束”:
“关闭”完成约束创建:
(4)实体完整性的实现。
<1>打开SQL Server Management Studio窗口,从“对象资源管理器”窗格中依次展开SQL Server服务器下的“数据库”YGGL1 “表”,右击其子节点“dbo.Employees”,在弹出的快捷菜单中单击“设计”命令。
右击要设置主键的列EmployeeID,在弹出的快捷菜单中单击“设置主键”命令完成设置PRIMARY KEY约束的列。
“设计”命令:
“设置主键”命令完成设置PRIMARY KEY约束的列:
<2>再右击,在弹出的快捷菜单中单击“索引\键”命令,打开“索引\键”对话框,单击“添加”按钮,再单击“列”右侧的按钮,打开“索引列”对话框,在“列名”的下拉表框中选择EmailAddress,单击“确定”按钮返回“索引\键”对话框,输入名称后单击“关闭”按钮完成设置UNIQUE约束的列。
“索引/键”命令:
“索引列”对话框,“列名”下拉单选“EmailAddress”:
“确定”“关闭”后完成UNIQUE设置:
(3)参照完整性的实现。
右击节点“dbo.Employees”,在弹出的快捷菜单中单击“设计”命令。
右击并在弹出的快捷菜单中单击“关系”命令,打开“外键关系”对话框,单击“添加”按钮,再单击“表和列规范”右侧的按钮,打开“表和列”对话框,输入关系名,“主键表”选择Departments,并在下面两个下拉列表中选择EmployeeID。
“关系”命令:
“外键关系”“添加”按钮:
“表和列”对话框,并填写:。