精华内容
下载资源
问答
  • 从数据完整性、保证数据完整性应遵循的几个原则、影响数据完整性的因素、数据库完整性约束条件、实施数据完整性的策略、数据完整性的保护策略等几个方面进行阐述,对数据库中数据完整性的实现有一定的借鉴意义
  • 数据完整性的设计

    千次阅读 2013-10-09 09:38:02
    数据完整性,从应用层次来看,主要在于三个层次数据验证,即数据库层,应用界面层和业务逻辑层。  数据库层级中的数据完整性验证,是最基本数据验证。数据库通过主键唯一性保证实体唯一;通过外键,保证...
    数据完整性,从应用的层次来看,主要在于三个层次的数据验证,即数据库层,应用界面层和业务逻辑层。
          数据库层级中的数据完整性验证,是最基本的数据验证。数据库通过主键的唯一性保证实体的唯一;通过外键,保证引用完整性;通过数据类型,保证数据值正确;通过非空约束,保证数据不含无意义值;通过附加的约束(如:check等),保证数据值在范围之内;同时,触发器还可以保证简单的表之间的完整性。应用界面处理的数据完整性,主要是用户输入上的数据验证;通过界面的验证,让后面的业务逻辑和数据库接收比较正确的数据。业务逻辑中处理的完整性,主要是验证数据在业务方面的正确性,体现在多表间复杂关系的验证,有些资料中称作是业务规则。
          数据完整性的验证设计,需要在三个层次方面同时考虑到,理论上在任何一个层级都可以实现数据完整性验证。数据库加上各种约束,只能保证数据严格依据定义,在这一级上,数据只是无意义的符号数据,而不是信息;使用数据库的触发器机制,可以验证简单的关系及业务规则,但是由于数据库的可移植性、安全性等因素,数据库上不适合放置大量的验证。界面上的数据验证,也可以验证数据的类型、范围等,能够让用户较快地得到错误报告,获得修改输入数据的机会。一些比较复杂的验证,则放在业务逻辑中比较合适,一是可能比较复杂,需要很多计算,同时还和其它业务处理紧密相关,另外也是由于变化较多,需要特别对待;业务逻辑的验证中,有一些不需要实时验证,可以设计成单独的用例(Use-Case)。
          VATA系统中,MAWB和ULD+BSA计划表(BSAPlan)的关系问题,就牵扯到三方面的验证。ULD+BSA的分配表(AssignBSA),是MAWB汇总表和BSAPlan的连接,当删除MAWB时,必须检查分配表AssignBSA是否完整,分配表AssignBSA中不能存在无头的MAWB;而分配表AssignBSA和计划表BSAPlan是一对多关系,BSAPlan是主表。在ULD数量方面,分配ULD+BSA时,OPs可以指定MAWB为BSA或者Non-BSA,同时分配ULD数量,系统要检查是否超出计划量;而输入MAWB时,要先汇总MAWB,得到航班+日期的BSA+ULD使用情况,检查比较BSAPlan中的BSA计划量,分配量,如果余额不足就提示。
          设计实现时,AssignBSA和BSAPlan的关系是主从表,由数据库主外键来维护验证,同时在界面上要维护该主从关系,删除、增加时,需要注意主从表的顺序。MAWB和AssignBSA的关系,在MAWB(输入和导入)的界面上验证;而分配和输入MAWB时,数量关系则由业务逻辑来验证。
     
          数据完整性设计,还牵扯到另外一个问题,就是一致性。数据验证可能居于三个层级上,设计时要保证从任何一个层级进入的数据保持一致,由于数据库层级的数据验证是自动生效的,所以重点是考虑业务逻辑和界面层。当数据中有一些特殊意义的编码存在时,保持数据的一致性,就是一个比较困难的决策。
          比如身份证的编码,编码中包含了出生地、生日、性别等信息,同时还存在一位校验位;编码长度是15或者18位,如果是15位,需要自动转换为18位;然后验证生日、性别等是否相符;计算17位编码的校验和,验证校验码。考虑这样一个系统,比如税务局的计税系统,完整的计税系统包含两部分软件,税务局本身系统和纳税公司报税客户端,身份证在税务局和公司客户端系统中都进行验证。可是由于验证的不一致,客户端中导出的报税数据,在税务局系统中就不能通过验证。税务局和纳税公司需要多次交流沟通,才能解决报税数据中存在的问题,原来客户端软件只验证了生日和校验位,而税务局系统还验证性别。
          应该怎样才能避免系统应用以后出现类似的情况呢?设计时,就把这类验证定义为单独的功能集,集中在一起便于修改、维护,保持一致性。实现时最简单的方案是,抽离出所有的数据验证逻辑,组合成一个数据验证的服务包(类),在界面和业务逻辑中,调用服务包的服务来验证数据的完整性。在分布式的系统中,还应该注意部署和升级的及时性。

    展开全文
  • 数据完整性: 为保证插入到数据库中数据是正确,防止用户输入错误数据 分为实体完整性、 域完整性 、参照完整性 (下节再说) (1)实体完整性: 实体指是表中一行,一行记录对应一个实体 ,通过主键实现 ...

    数据完整性: 为保证插入到数据库中的数据是正确的,防止用户输入错误的数据 分为实体完整性、 域完整性 、参照完整性 (下节再说)
    (1)实体完整性:
    实体指的是表中的一行,一行记录对应一个实体 ,通过主键实现
    主键:关键字(primary key);特点:不能为null,并且唯一。
    逻辑主键(推荐):例如ID,不代表实际的业务意义,只是用来唯一标识一条记录(推荐)

    	eg: create table person(
    	id int primary key auto_increment,
    	name	varchar(20) not null,
    	age int);
    

    业务主键:例如username,参与实际的业务逻辑。

    eg: create table goods(
    goods_id 	varchar(20) primary key,
    goods_name 	varchar(20) not null);
    

    (2)域(列)完整性:
    必须符合某种数据类型或约束。
    1)数据类型包括(长度等);
    2)约束包括( 非空约束 not null,唯一约束 unique)。

    eg:	 create table student(
    id int primary key auto_increment,
    name varchar(20) not null,
    idcard varchar(20) unique);
    
    展开全文
  • 详解MySQL:数据完整性

    2021-01-19 22:46:54
    数据完整性分为:实体完整性,域完整性,参考完整性。 参考完整性: 参照完整性指就是多表之间设计,主要使用外键约束。 多表设计: 一对多、多对多、一对一设计 一:实体(行)完整性 实体完整性通过表主键来...
  • MySQL:数据完整性

    千次阅读 多人点赞 2019-04-10 19:56:46
    数据完整性分为:实体完整性,域完整性,参考完整性。 参考完整性: 参照完整性指就是多表之间设计,主要使用外键约束。 多表设计: 一对多、多对多、一对一设计 一:实体(行)完整性 实体完整性通过表主键来...

    数据完整性分为:实体完整性,域完整性,参考完整性

    参考完整性:
    参照完整性指的就是多表之间的设计,主要使用外键约束。
    多表设计: 一对多、多对多、一对一设计

    一:实体(行)完整性
    实体完整性通过表的主键来实现。
    使用主键来表示一条记录的唯一,且不为空
    语法:primary key
    主键分类:
    逻辑主键:例如ID,不代表实际的业务意义,只是用来唯一标识一条记录(推荐)
    业务主键:例如username,参与实际的业务逻辑。
    特点:唯一,not null
    自动增长:auto_increment
    例如:

    create table person2(
    			id int primary key auto_increment,
    			name varchar(100)
    );
    

    二:域(列)完整性
    非空约束:not null
    唯一约束:unique

    creat table person3(
    			id int not null  unique,
    			name  varchar(20) not  null  unique,
    			gender varchar(20) not null,
    			phone  char(11)  unique #不能有,
    	);
    

    三:参照完整性

    1,一对多
    a:例如:客户和订单的关系就是一对多,一个客户可以有多张订单,一张订单属于一个客户;
    b:外键设置到多的一方

    语法输入创建一对多:
    创建客户表:

    create table customers(
    	id int,
    	name varchar(20),
    	address varchar(100),
    	primary key(id)
    );
    

    创建订单表:

    create table orders(
    	id int,
    	order_num int primary key,
    	price float(4,2),
    	customer_id int,
    	 constraint  customer_ord_fk foreign key(customer_id)  references customers(id)
    );
    

    注:constraint: 约束,foreign key: 外键,references: 参照
    创建一个名叫customer_ord_fk的外键约束,外键指的是customer_id,参照的是 customers表中的id列

    表格操作创建一对多
    customers表
    在这里插入图片描述
    orders表
    在这里插入图片描述

    orders外键设置
    在这里插入图片描述
    创建一个名叫customer_ord_fk的外键约束,外键栏位customer_id,参照的是 customers表中的id列

    扩展:四种子表的删除更新策略:
    1,cascade 级联策略:
    使用此种策略时主表的记录被删除或者主键字段被修改时会同步删除或修改子表
    2,no action 无动作策略:
    使用此种策略时要删除主表必须先删除子表,要删除主表的记录必须先删除子表关联的记录,不能更新主表主键字段的值
    3,restrict 主表约束策略。此种策略对主表的约束跟 NO ACTION 一样
    4,set null 置空策略。使用此种策略时,如果主表被删除或者主键被更改,则将子表中的外键设置为null。需要注意的是,如果子表的外键是主键或者是设置为not null的,则主表的删除和主键的更改跟 no action 一样

    2,多对多

    创建老师表:

    create table teachers(
    		id int primary key auto_increment,
    		name varchar(20) ,
    		gender char(5),
    		subject  varchar(20)
    		);
    

    创建学生表:

    create table students(
    	id int primary key , 
    	name varchar(20),
    	age int	
    );	
    

    第三张为关联表:

    create table teacher_student(
    	id int,
    	t_id int,
    	s_id int,
    	primary key(t_id,s_id),
    	constraint  teacher_id_fk  foreign key(t_id)  references  students(id),
    	constraint student_id_fk foreign key(s_id) references  teachers(id)
    );
    

    表格操作多对多
    创建老师表:
    在这里插入图片描述
    创建学生表:
    在这里插入图片描述

    第三张表:
    在这里插入图片描述
    在这里插入图片描述

    3,一对一
    (1)一般情况,设计一张表格即可
    (2)设计成两张表格
    法1:第二张表格中创建一个字段作为外键(设置求唯一 unique)对应第一张表格中的主键;
    法2:直接使用第二张表格中的主键作为外键,对应第一张表格的主键。
    两张表:unique很重要

    create table user(
        id int primary key auto_increment,
        name varchar(20),
        age int
    );
    

    create table card(
    	id int primary key auto_increment,
    	num varchar(20) not null,
    	address varchar(100) not null,
    	user_id int unique,
    	constraint user_card_fk foreign key(user_id) references user(id)
    );
    
    展开全文
  • 保证数据完整性

    千次阅读 2016-01-04 18:51:52
    数据库能防止存储垃圾数据,而我们所使用RDBMS实现该功能主要是通过维护数据完整性来实现。那么,根据数据完整性实施方法,我们可以分为哪几类呢? 实体完整性,在某种意义上,实体存在是独立于数据库,一...

    数据库能防止存储垃圾数据,而我们所使用的RDBMS实现该功能主要是通过维护数据完整性来实现。那么,根据数据完整性实施的方法,我们可以分为哪几类呢?

    实体完整性,在某种意义上,实体的存在是独立于数据库的,一个表中的一行如果与它所代表的实体完全一致,我们就说该表具有实体完整性。实体完整性强制表的标识列或主键的完整性,它可以通过在表中设置主键约束、唯一约束或标识列属性来实现。域完整性,是指给定列的输入有效性,可通过限制类型(数据类型)、格式(检查约束)或可能值的范围(外键约束、检查约束、默认值定义、非空约束)。引用完整性,我们必须在右关联关系的表中,确保一个表的外键的值来源于另一个表中的主键值,其一般通过外键约束来实现。还有就是用户自定义完整性,我们可以定义不属于其他任何完整性分类的特定业务规则,我们在此不做深究。

    除了用户自定义完整性外,其余三种我们都可以通过约束来定义,但具体如何实施呢?

    第一,创建非空约束。如果我们想在列中不允许接受NULL值,就必须在定义列时加上一个NOT  NULL关键词,来定义一个非空约束。

    第二,设置主键约束。关系型数据库中的每一个表都必须有一个主键来唯一标识表的每一行,这个主键可以是右一个列组成,也可以由多个列来组成一个复合主键。主键约束是应用于表的列的一个约束,而对于复合主键,我们只需要列出用逗号分隔的参与复合主键的所有列即可。

    第三,设置唯一约束。也就是说,给定列的所有值必须是唯一的。

    第四,指定默认值。

    第五,设置检查约束。

    第六,使用自动编号列。

    展开全文
  • 数据完整性是指数据库中存储数据是有意义的或正确,和现实世界相符。关系模型中三类完整性约束: – 实体完整性(Entity Integrity) – 参照完整性(Referential Integrity) – 用户定义完整性(User-...
  • 数据完整性约束

    2017-03-06 21:34:03
    实体完整性:实体就是指一条记录。这种完整性就是为了保证每一条记录不是重复记录。...域完整性:域就是指字段,它是为了保证字段值是准和有效,合理值 – 类型 是否null,默认值,check约束,关系
  • SQL基础(2、数据完整性

    千次阅读 2019-04-17 18:59:44
    意义数据完整性是为了保证插入到数据库中数据是正确,防止用户可能错误输入。 数据完整性分为实体完整性、域完整性、参照完整性。 1.实体(行)完整性 : 主键:primary key ①主键分类: 逻辑主键:例如...
  • DBMS 数据完整性约束

    2005-03-18 20:11:00
    实际系统中,一般将数据完整性约束分为标准的数据完整性约束和定制的数据完整性约束。标准的数据完整性约束是DBS已经实现内部规则,包括域完整性、实体完整性和引用完整性。 域完整性(Field Integrity)保证...
  • 数据的完整性约束是对数据描述某种约束条件,关系型数据模型可以有三类完整性约束:实体完整性、参照完整性和用户自定义的完整性。 1、实体完整性(entity Integrity) 一个基本关系通常对应现实世界一个实体...
  • 数据完整性指数据库中数据正确性、相容性和一致性。包括现实世界中应用需求完整性。数据完整性由完整性规则来定义。 关系模型完整性规则是对关系某种约束,提供一种手段来保证用户对数据库修改时不会...
  • 1.主键约束:Primary key:主键就是数据唯一标识。不会重复列才能当主键 1)业务主键:使用有业务意义的字段做主键(身份证号,银行卡号) 2)逻辑主键:没有任何业务意义的字段做主键 3)组合主键:选择多...
  • 1.MS SQLServer每个数据库:包含 (1个主数据文件(.mdf)必须。1个事务日志文件(.ldf)必须。)  可以包含(任意多个次要数据文件(.ndf),多... 1)业务主键:使用有业务意义的字段做主键(身份证号,银行卡号...
  • 一、基本查询语句 MySQL查询语句结构知识准备: 先来看看mysql语句执行顺序 (1)排序ORDER BY() 默认是升序 升序参数ASC,降序DESC ...若再加上别字段,不会报错,但是没有意义。 先根据A分组再
  • 完整的数据分析流程

    2021-02-02 11:11:27
    作者:张晋 ...来源:知乎 著作权归作者所有。...了解数据采集的意义在于真正了解数据的原始面貌,包括数据产生的时间、条件、格式、内容、长度、限制条件等。这会帮助数据分析师更有针对性的控制数据生产和采集过.
  • 背景:目前网络上存在很多重要信息,对信息保密性和完整性要求越来越高。信息可能面临多层次安全威胁,例如通过电磁辐射和电路干扰物理威胁、泄露或者机密信息系统被恶意攻击等。所以我们需要从网络安全...
  • 数据库完整性

    2021-04-18 22:16:57
    数据库完整性确保数据的正确性和相容性 防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据。 防范对象:不和语义、不正确 数据 DBMS要做 提供定义 完整性约束条件 机制。 提供...
  • 数据库之超详细的完整性约束

    千次阅读 2020-08-12 15:57:03
     数据库的完整性是指数据的正确性和相容性。数据库是否具备完整性关系到数据库系统能否真 实地反映现实世界,因此维护数据库的完整性是非常重要。  数据库的完整性可分为实体完整性、参照完整性和用户定义的完整...
  • 1. 数据采集了解数据采集的意义在于真正了解数据的原始面貌,包括数据产生的时间、条件、格式、内容、长度、限制条件等。这会帮助数据分析师更有针对性的控制数据生产和采集过程,避免由于违反数据采集规则导致的...
  • 三类关系完整性约束: 实体完整性、参照完整性、用户定义完整性 实体完整性 实体有唯一标识——主码,且主码属性不能取...用户定义的完整性 受现实约束,某数据必须满足语义要求。 如:性别只能取男或女。 ...
  • 启用语义自动完成和完整性检查。 Scala,Java,JVM。 为什么使用类型化DSL而不是普通JSon对象: 键入时进行语法检查 检查必填字段 易于重用对象和配置模式 语义自动完成仅表明在每个地方有意义的对象和方法 ...
  • 数据库—完整性

    2020-04-08 00:00:26
    数据库的完整性是指数据库中数据是正确、一致和相容 数据的正确性保证数据库的数据是符合语义约束的数据 一致性保证数据之间逻辑关系是正确,对数据库更新时,数据库从一个一致状态到另一个一致状态 相容...
  • 作为数据分析师,之前在...1. 数据采集了解数据采集的意义在于真正了解数据的原始面貌,包括数据产生的时间、条件、格式、内容、长度、限制条件等。这会帮助数据分析师更有针对性的控制数据生产和采集过程,避免由...
  • 数据库 完整性约束

    千次阅读 2019-05-24 14:57:42
    数据完整性分为四类: 实体完整性:规定表每一行在表中是惟一实体。 域完整性:是指表中列必须满足某种特定数据类型约束,其中约束又包括取值范围、精度等规定。 参照完整性:是指两个表主关键字和外...
  • 作为项目橡树一部分,数据是端至端飞地,这是可以按需创建孤立计算隔室,并且经由硬件和软件功能组合提供强保密性,完整性,和鉴证功能之间加密。 安全区甚至可以保护数据和代码免受操作系统内核和特权...
  • 确保事务完整性

    2013-10-02 14:40:00
    约束是数据库中保证数据库里表中数据完整性的手段。录入数据库中的数据都有实际的意义,而约束的作用就是保证数据在实际业务中是有意义的,也就是减少脏数据的机会。 1.1什么是约束 使用数据库约束就是保证数据库...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,518
精华内容 607
关键字:

数据完整性的意义