5.3 用户定义的完整性

news2024/11/30 6:55:31

思维导图:

 

5.3 用户定义的完整性

用户定义的完整性是确保数据库中的数据满足特定应用的语义要求。这是通过关系数据库管理系统(RDBMS)中的内置机制来完成的,不需要依赖应用程序来执行。


5.3.1 属性上的约束条件

1. 定义属性上的约束条件

当在CREATE TABLE中定义属性时,可以为属性定义一系列的约束条件。主要有以下几种类型的约束:

  • 列值非空(NOT NULL): 确保列中的数据不为空。

  • 列值唯一(UNIQUE): 确保列中的数据是唯一的。

  • 使用CHECK短语检查列值是否满足特定条件。

    示例:

    •  
      CREATE TABLE SC
      (
        Sno CHAR(9) NOT NULL,
        Cno CHAR(4) NOT NULL,
        Grade SMALLINT NOT NULL,
        PRIMARY KEY (Sno, Cno)
      );
      
    •  
      CREATE TABLE DEPT
      (
        Deptno NUMERIC(2),
        Dname CHAR(9) UNIQUE NOT NULL,
        Location CHAR(10),
        PRIMARY KEY(Deptno)
      );
      

    •  
      CREATE TABLE Student
      (
        Sno CHAR(9) PRIMARY KEY,
        Sname CHAR(8) NOT NULL,
        Ssex CHAR(2) CHECK (Ssex IN ('男', '女')),
        Sage SMALLINT,
        Sdept CHAR(20)
      );
      
    •  
      CREATE TABLE SC
      (
        Sno CHAR(9),
        Cno CHAR(4),
        Grade SMALLINT CHECK (Grade >= 0 AND Grade <= 100),
        PRIMARY KEY (Sno, Cno),
        FOREIGN KEY (Sno) REFERENCES Student(Sno),
        FOREIGN KEY (Cno) REFERENCES Course(Cno)
      );
      

2. 检查属性约束和处理违规情况

当尝试向表中插入新数据或修改现有数据时,RDBMS会检查这些数据是否满足约束条件。如果数据违反了任何约束,那么操作将不会被允许。


总结:用户定义的完整性确保了数据在特定应用中的正确性。通过使用数据库的内建约束机制,我们可以确保数据的完整性和准确性。

 

5.3.2 元组上的约束条件

与对单一属性上设置约束条件的方法类似,我们还可以在整个元组(即数据行)上设置约束条件。这种约束是为了确保在一个元组中的多个属性值之间有某种关系或满足某些特定的条件。


1. 定义元组上的约束条件

使用CREATE TABLE语句的CHECK短语,我们可以为表中的整个元组设置约束。这种约束允许我们在多个属性之间设置相互的约束条件。

示例:

  •  
    CREATE TABLE Student
    (
      Sno CHAR(9),
      Sname CHAR(8) NOT NULL,
      Ssex CHAR(2),
      Sage SMALLINT,
      Sdept CHAR(20),
      PRIMARY KEY (Sno),
      CHECK (Ssex = '女' OR Sname NOT LIKE 'Ms.%') 
      /* 这个CHECK约束确保了当性别是男时,名字不以'Ms.'开头 */
    );
    

对于这个示例,元组的约束条件的工作原理如下:对于女性学生,Ssex = '女' 为真,因此元组将被接受,不论其名字是什么。对于男性学生,如果他们的名字以“Ms.”开头,那么这个约束将为假,因此不会被接受。


2. 检查和处理元组约束的违规

与属性上的约束条件相同,当向表中插入新的元组或更改现有的元组时,RDBMS将检查这些元组是否满足定义的元组级约束。如果元组违反了约束条件,操作将被拒绝。


总结:元组上的约束条件为我们提供了一个强大的工具,以确保在表中的多个属性之间保持一致性和逻辑关系。通过正确使用这些约束,我们可以进一步增强数据库中数据的完整性和准确性。

 

 

用户定义的完整性总结:


重点:

  1. 定义与理解:用户定义的完整性是确保数据在特定应用中满足预期的语义要求。它可以在属性级别或元组级别定义。

  2. 实现方式:大多数关系数据库管理系统提供了内置机制来定义和验证这种完整性,使得数据在输入、更新或删除时满足特定的条件或关系。

  3. 属性上的约束:包括非空(NOT NULL)、唯一性(UNIQUE)和满足某条件(使用CHECK短语)。

  4. 元组上的约束:使用CHECK短语定义,主要用于确保元组内的多个属性之间存在某种关系。


难点:

  1. 复杂的逻辑关系:元组级的约束可能涉及多个属性间复杂的逻辑关系,需要深入理解业务逻辑来正确定义。

  2. 性能考虑:过多或过于复杂的完整性约束可能会影响数据库操作的性能,特别是在大型数据集上。

  3. 与其他完整性的交互:用户定义的完整性可能与实体完整性、参照完整性等其他类型的完整性有所交互或冲突,需要仔细规划和设计。


易错点:

  1. 不完全或不正确的约束定义:可能由于对业务规则的误解或遗漏,导致定义的约束不完全或不正确。

  2. 过于严格的约束:设置过于严格的约束可能会妨碍某些合理的数据库操作,导致不必要的操作拒绝。

  3. 约束的命名与管理:在大型数据库中,约束的命名和管理可能变得混乱,增加维护难度。

  4. 未考虑的异常情况:在某些未考虑到的特殊情况下,用户定义的约束可能会导致数据完整性问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1159604.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

架构风格-架构师(六十六)

管道-过滤器和仓库 数据处理方式&#xff1a; 管道过滤器是 数据驱动机制&#xff0c;处理流程事前确定&#xff0c;交互差。 仓库是通过仓库中间件交互&#xff0c;交互性强&#xff0c;灵活组装 系统可扩展性&#xff1a; 管道过滤器是数和处理在一起&#xff0c;需要新增…

金Gien乐道 | 10月热点回顾

收获之秋&#xff0c;中电金信Q4开篇捷报不断 Q4开篇&#xff0c;中电金信迎来多个捷报。公司与青岛财通集团联合打造的核心业务系统&#xff08;一体化业务平台&#xff09;一期项目顺利投产上线并平稳运行&#xff1b;中标华南某全国性股份制商业银行新一代云原生分布式核心系…

系列四、全局配置文件mybatis-config.xml

一、全局配置文件中的属性 mybatis全局配置中的文件非常多&#xff0c;主要有如下几个&#xff1a; properties&#xff08;属性&#xff09;settings&#xff08;全局配置参数&#xff09;typeAliases&#xff08;类型别名&#xff09;typeHandlers&#xff08;类型处理器&am…

prompt工程

微信公众号转载&#xff0c;关注微信公众号掌握更多技术动态 --------------------------------------------------------------- 一、prompt基础 提示包括传递给语言模型的指令和语境&#xff0c;以实现预期的任务。提示工程是开发和优化提示的实践&#xff0c;以便在各种应用…

YOLO目标检测——安全帽佩戴检测数据集【含对应voc、coco和yolo三种格式标签】

实际项目应用&#xff1a;安全帽佩戴检测数据集可以用于实时检测工作人员是否按照要求佩戴了安全帽&#xff0c;以保障他们的安全数据集说明&#xff1a;安全帽佩戴检测数据集&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富&#xff0c;图片分为带头盔和没带头…

贪吃蛇代码实现与剖析(C语言)

贪吃蛇代码实现与剖析[C语言] 1.温馨提示2.最终实现版本的样子1.游戏开始-欢迎界面2.游戏运行界面3.游戏结束界面4.选择是否继续玩1.选择继续 2.选择退出游戏 3.完整代码一.Win32相关API的介绍1.控制台程序1.什么是控制台程序2.命令提示符中设置控制台窗口的大小3.控制台行和列…

【Linux】Nignx及负载均衡动静分离

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《微信小程序开发实战》。&#x1f3af;&#x1f3a…

数据标准是什么?如何建立企业的数据标准?

2023年10月25日国家数据局正式揭牌&#xff0c;由国家发展和改革委员会管理。国家数据局的主要职责是负责协调推进数据基础制度建设&#xff0c;统筹数据资源整合共享和开发利用&#xff0c;统筹推进数字中国、数字经济、数字社会规划和建设等。国家越来越重视数据资源的价值&a…

Explaining and harnessing adversarial examples

Explaining and harnessing adversarial examples----《解释和利用对抗样本》 背景&#xff1a; 早期的研究工作认为神经网络容易受到对抗样本误导是由于其非线性特征和过拟合。 创新点&#xff1a; 该论文作者认为神经网络易受对抗性扰动影响的主要原因是它的线性本质&#xf…

第五章 I/O管理 十、磁盘调度算法(FCFS、SSTF、SCAN、C-SCAN、C-LOOK)

目录 一、概括 二、一次磁盘读/写操作需要的时间 1、寻找时间&#xff08;寻道时间)&#xff1a; 2、延迟时间&#xff1a; 3、传输时间&#xff08;读磁盘的时间&#xff09; 三、先来先服务算法&#xff08;FCFS&#xff09; 1、定义&#xff1a; 2、例子&#xff1…

Qwt QwtPolarPlot类使用

1.概述 QwtPolarPlot是Qwt库中用于绘制极坐标图的类。它继承自QwtPolarItemDict和QFrame类&#xff0c;并且可以作为QwtPlot控件的一部分使用。 以下是类的继承关系图&#xff1a; 2.常用方法 设置标签&#xff1a; void setTitle (const QString &)void setTitle (con…

降低毕业论文写作压力的终极指南

亲爱的同学们&#xff0c;时光荏苒&#xff0c;转眼间你们即将踏入毕业生的行列。毕业论文作为本科和研究生阶段的重要任务&#xff0c;不仅是对所学知识的综合运用&#xff0c;更是一次对自己学术能力和专业素养的全面考验。然而&#xff0c;论文写作常常伴随着压力和焦虑&…

YOLOv5:修改backbone为MobileOne

YOLOv5&#xff1a;修改backbone为MobileOne 前言前提条件相关介绍MobileOneYOLOv5修改backbone为MobileOne修改common.py修改yolo.py修改yolov5.yaml配置 参考 前言 记录在YOLOv5修改backbone操作&#xff0c;方便自己查阅。由于本人水平有限&#xff0c;难免出现错漏&#xf…

前端基础之JavaScript

JavaScript是一种能够在网页上添加交互效果的脚本语言&#xff0c;也被称为客户端语言。它可以在网页中操作HTML元素、改变CSS样式&#xff0c;以及处理用户的交互事件等。 以下是JavaScript的常见基础知识点&#xff1a; 变量和数据类型&#xff1a;JavaScript中的变量可以存…

YOLOv7优化:独家创新(Partial_C_Detect)检测头结构创新,实现涨点 | 检测头新颖创新系列

💡💡💡本文独家改进:独家创新(Partial_C_Detect)检测头结构创新,适合科研创新度十足,强烈推荐 SC_C_Detect | 亲测在多个数据集能够实现大幅涨点 收录: YOLOv7高阶自研专栏介绍: http://t.csdnimg.cn/tYI0c ✨✨✨前沿最新计算机顶会复现 🚀🚀🚀YOLO…

【实现多个接口的使用】

文章目录 前言实现多个接口接口间的继承接口使用实例给对象数组排序创建一个比较器 总结 前言 实现多个接口 Java中不支持多继承&#xff0c;但是一个类可以实现多个接口 下面是自己反复理了很久才敲出来的&#xff0c;涉及到之前学的很多知识点 如果哪看不懂&#xff0c;真…

基于向量数据库的文档检索实战

推荐&#xff1a;用 NSDT编辑器 快速搭建可编程3D场景 在过去的六个月里&#xff0c;我一直在 A 系列初创公司 Voxel51 工作&#xff0c;该公司是开源计算机视觉工具包 FiftyOne 的创建者。 作为一名机器学习工程师和开发人员布道者&#xff0c;我的工作是倾听我们的开源社区的…

LabVIEW开发双目立体系统猪重估算

LabVIEW开发双目立体系统猪重估算 动物的活重是各种研究中的重要参考&#xff0c;例如动物生长&#xff0c;饲料转化率&#xff0c;健康状况和疾病发生。生长中的动物的体重为保持它们处于适当的营养和环境水平提供了一个有价值的参数或指标。动物的利润通常与收入和成本之间的…

Sci Immunol丨Tim-3 适配器蛋白 Bat3 是耐受性树突状细胞

今天和大家分享一篇发表于2022年3月的文章&#xff0c;题目为“Tim-3 adapter protein Bat3 acts as an endogenous regulator of tolerogenic dendritic cell function”&#xff0c;发表在《Sci Immunol》杂志上。文章主要研究了Tim-3和其适配蛋白Bat3在调节免疫应答中的作用…

2023年【R1快开门式压力容器操作】最新解析及R1快开门式压力容器操作复审考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 R1快开门式压力容器操作最新解析是安全生产模拟考试一点通生成的&#xff0c;R1快开门式压力容器操作证模拟考试题库是根据R1快开门式压力容器操作最新版教材汇编出R1快开门式压力容器操作仿真模拟考试。2023年【R1快…