首页 > 前端 > 经验 > 数据库检查要点有哪些,DBMS中实现数据完整性检查的方法有哪些

数据库检查要点有哪些,DBMS中实现数据完整性检查的方法有哪些

来源:整理 时间:2024-05-23 22:26:35 编辑:黑码技术 手机版

本文目录一览

1,DBMS中实现数据完整性检查的方法有哪些

实体完整性就是看表是不是有主键,参照完整性要看是否有主外键,用户定义的完整性有可能在程序里实现,也有可能通过触发器来实现
md5

DBMS中实现数据完整性检查的方法有哪些

2,从旧电脑转移文件

如果是你仅仅修改注册表的问题,你还原后应该完全恢复原样啊。否则还用一键还原干什么?问题应该出在C盘之外的分区中。你的机器可能启动后调用某些D盘等的目录或文件,重点检查启动项。
文件大用qq或共享比较慢,直接把旧电脑的硬盘挂在新电脑上,复制

从旧电脑转移文件

3,DBA经验如何进行MySQL数据库表的故障检测 1

本章将讲述如何检测MySQL数据库表的故障。 数据库表的故障检测和修正的一般过程如下:◆ 检查出错的表。如果该表检查通过,则完成任务,否则必须修复出错的数据库表。 ◆ 在开始修复之前对表文件进行拷贝,以保证数据的安全。 ◆ 开始修复数据库表。 ◆ 如果修复失败,从数据库的备份或更新日志中恢复数据。 在使用myisamchk或isamchk检查或修复表之前,应该首先注意:◆ 建立数据库备份和使用更新日志,以防修复失败,丢失数据。 ◆ 仔细阅读本章内容以后再进行操作,尤其是不应该在阅读“避免与MySQL服务器交互作用”之前进行操作。因为,在你没有足够的知识之前贸然操作,可能会引起严重的后果。 ◆ 如果你在Unix平台上对表进行维护时,应该首先注册到专用的帐户 mysql,以避免对表读写访问产生所有权的问题,以及破坏数据库目录的所有权限。 数据库表的维护工具MySQL的myisanchk和isamchk实用程序很类似,基本上它们具有同样的使用方法。它们之间的主要区别时所使用的表的类型。为了检查/修复MyISAM表(.MYI和.MYD),你应该使用myisamchk实用程序。为了检查/修复ISAM表(.ISM和.ISD),你应该使用isamchk实用程序。 ◆ 为了使用任一个使用程序,应指明你要检查或修复的表,myisamchk和isamchk的使用方法为: shell>myisamchk options tbl_name shell>isamchk options tbl_name 如果你愿意,你可以在命令行命名几个表。 ◆ 你也能指定一个名字作为一个索引文件(用“ .MYI”或“.ISM”后缀),它允许你通过使用模式“*.MYI”或“.ISM”指定在一个目录所有的表。例如,如果你在一个数据库目录,你可以这样在目录下检查所有的表: shell> myisamchk *.MYI shell>isamchk *.ISM ◆ 如果你不在数据库目录下,你可指定目录的路径: shell> myisamchk options /path/to/database_dir/*.MYI shell> isamchk options /path/to/database_dir/*.ISM ◆ 你甚至可以通过为MySQL数据目录的路径指定一个通配符来作用于所有的数据库中的所有表: shell> myisamchk options /path/to/datadir/*/*.MYIshell> isamchk options /path/to/database_dir/*/*.ISM 这个方法无法在windows平台下使用。 注意 不论是myisamchk还是isamchk都不对表所在的位置做任何判断,因此,应该或者在包含表文件的目录运行程序,或者指定表的路径名。这允许你将表文件拷贝到另一个目录中并用该拷贝进行操作。
CHECK TABLE table_name [option]; option: QUICK 不扫描行,不检查错误的链接。 FAST 只检查没有被正确关闭的表。 CHANGED 只检查上次检查后被更改的表,和没有被正确关闭的表。 MEDIUM 扫描行,以验证被删除的链接是有效的。也可以计算各行的关键字校验和,并使用计算 出的校验和验证这一点。 EXTENDED 对每行的所有关键字进行一个全面的关键字查找。这可以确保表是100%一致的,但是 花的时间较长。

DBA经验如何进行MySQL数据库表的故障检测 1

4,QTP数据库检查点如何使用

看了你的脚本,在做选择的时候,都是使用鼠标或键盘操作,基本上这样的编程方式是不可取的,主要问题是程序不稳定,受外界的干扰大,最后往往容易出错,变得不可用。我觉得,所有的输入和选择都是应该用对象的函数来做,不要依赖于键盘输入或鼠标选择。你提到的检查点问题,不建议使用,检查点的设定,可移植性差。应该考虑完全有脚本来控制所有检查。你是否想检查输入X和界面上的Name:想比较,如此的话,可以- 取出界面上输入的值- 取出Action1输入的值 Parameter("Order_Name")然后使用if语句进行字符的判断。
将来在运行脚本的过程中,qtp又根据查询语句从当前的数据库中获取实际数据,然后将实际数据与预期数据相比较,从而得知检查点是否成功。 2.修改查询结果 检查点语句生成以后,会产生一个dbtable对象,该对象在关键字视图可以看到,在仓库中也存在。可以通过设置该dbtable对象的object properties属性“source”来修改sql语句。修改了sql语句就表示修改了查询结果。修改了sql语句后,不能相应的修改预期数据表。 3.如何理解检查点的属性(checkpoint properties)上面的表是创建检查点时截取的。(无论什么时候打开本属性窗口, 表中的数据都不会改变,但可以通过窗口中的“configure value->constant”来手工修改表中的数据,通过这种方式修改了数据后,就相当于对截图进行了修改。如果通过“configure value->parameter”来将单元格的数据参数化,虽然看起来是数据被修改,但是如果再选择constant,数据就会恢复,因此通过参数化数据的方法,不会真正影响截图的数据。) 4.指定要检查的区域 在表中指定想要检查的区域。(区域中的显示的值就是预期值。预期值可以是常数,也可以是参数变量。当在cell identification页中设置列by position时,本表的列必须与实际查询表的列相对应,否则检查不能通过。如在生成检查点语名时查询语句为“select username,id,realname from sys_user t”,后来通过修改object properties,将查询语句改为“select username,realname,id from sys_user t”,则执行检查时是不能通过的,因为查询表中第2、3列的数据已经不能与截取的表相对应。同理,如果在cell identification页中设置行by rownumber时,也会有同样的问题存在。) 以下是属性框三个页签中的内容: (1)expected data—设置预期值,可以是常量或参数。如,可以要求qtp从data table中取值作为预期值。 (2)settings—设置预期值与实际值相比较时的语法规则。 (3)cell identification—指导qtp放置被检查的数据。如,假设你想检查位于检查点属性框中第一行第2列的数据,但是你明白,每运行一次测试脚本,查询出来的数据的行的排序可能发生改变。因此,让qtp通过列名和行row containing a known value in akey column来定位单元格,而不是通过列数或行数来定位单元格。 5.检查点属性窗: checkpoint timeout—指定检查点运行的最长时限,qtp在检查点通过(在本时间范围内)或超时后,才进行下一步操作。如果在最长时限时还没有检查通过,则本检查失败。 例如,检查点装载数据需要一定的时间,增长checkpoint timeout时间,可保证检查点有足够的时间通过检查,不会超时失败。 注:checkpoint timeout选项仅仅对table检查点有效,对于database检查点无效。 insert statement—在新增检查点时,指明检查点语句在脚本中的插入位置。 注意:insert statement选项在录制或修改检查点时无效,只在新增检查点时有效。 注意:当一列是key column时,该列不一定是被检查的列,key column的数据仅用来帮助确定被检查的数据行。 6.指定数据的比较规则默认情况下,认为真实数据单元是字符串型,并进行精确检查,但是忽略空格。(1)verification type(2)exact match默认。 精确匹配。选中此项,则进行精确匹配;不选中,则只要预期值包含在真实值之中即可。 注意:只有当verirication type为string content时,才显示这个选项。(3)ignore space默认。在比较时忽略单元格中的空格。添加或减少空格不会影响检查结果。 注意:只有当verirication type为string content时,才显示这个选项。(4)match case区分字母的大小写。 注意:只有当verirication type为string content时,才显示这个选项。(5)min / maxcell identification页签包括以下选项: (1)identify columns指定将与预期数据相比较的实际数据单元在实际数据表中的列位置。 by position—根据列的顺序位置来定位(即预期数据表中的第n列对应实际数据表中的第n列)。如果列位置产生位移,就会导致不匹配。本选项一般用于table检查点。 by column name—根据列名来定位(即预期数据表中的列名对应实际数据表中的列名)。列的位移不对检查点产生影响。一般用于database检查点,对于table检查点无效。(2)identify rows指定将与预期数据相比较的实际数据单元在实际数据表中的行位置。 by row number—默认。根据行的顺序位置来定位(即预期数据表中的第n行对应实际数据表中的第n行)。如果行发生位移,就会导致不匹配。 by selected key column(s)—选中此项以后,可以设置关键列,关键列列名旁有一个“钥”标记。在定位行时,到实际数据表的关键列中查找与预期数据表关键列的值相匹配的值,所找到的第1个匹配值则是正确的行。行的顺序位移不影响检查结果。如果数据库中有多行同时满足条件,则qtp只检查第1条记录。关键值可以是多个列的联合值。在对关键列进行匹配时,使用setting页签的verification type选项中设置的匹配规则。 注:只有当选中了by selected key column(s)选项时,本选项才有效。 当选择by row number时,属性窗中预期值所在的行数,应该与真实数据所在的行数相同,否则匹配失败。因此行移位都会导致检查失败。 当选择by selected key column(s)时,属性窗口中预期值可以在任意行位置。执行检查时,以该行key column列的值为条件在数据库中进行筛选,如果选出了符合条件的记录,则将该记录与预期值进行比较,如果记录数据全部匹配,则检查通过。(当有多个key column列时,则筛选条件为这些列的数据的联合)。 要注意几个问题: (1) 只有被打勾的数据才被检查,其它没打勾的即使不匹配也没关系。 (2) key column列的数据如果没有打勾,也不会被检查,它只是提供查询条件。 (3) 属性窗口数据表中的数据本身就是默认预期数据,当然用户可以对这些预期数据进行修改。 (4) 在属性窗口数据表中的数据是相对固定的,除非用户在本属性窗口中特殊别进行了修改。 (5) 本属性窗口数据表中的所看到的数据都是预期数据,真实数据表是看不到的。真实数据表在每次执行脚本时都有可能不同。 (6) 在运行结果(result)中,如果检查失败,则可点击“checkpoint 表名”看到检查结果表。双击表中的单元格,弹出窗口显示该单元格的预期值与真实值。当然,本结果表中显示的仍然是预期值。 (7) 如果在属性窗口的数据表中设置了一个检查点数据,但是数据库中有多条满足条件的数据,则只检查第一条满足条件的数据,如果第1条检查完全匹配,则通过,如果不匹配,则失败。 (8) 如果在属性窗口的数据表中设置了多个相同的检查点数据,但数据库中只有一条满足条件的数据,该条数据只与第1个检查点进行匹配检查。其它几个检查点失败。
文章TAG:数据数据库检查要点数据库检查要点有哪些

最近更新