数据库

简介: 数据库完整性

5.数据库完整性

1.实体完整性(标注主码)

列级完整性:
sno char(9)  primary key 

表级完整性:
primary key(sno)    //两个及以上使用

检查与违约

  1. 检查主码值是否唯一,不唯一则拒绝插入或修改
  2. 检查主码的各个属性是否为空,有一个为空就拒绝插入或修改

检查主码值是否唯一时,要进行全表扫描, 十分费时,所以数据库管理系统一般都在主码上自动建立一个索引(B+树),提高效率

2.参照完整性(标注外码)

表级完整性:
foreign key (外码) references 哪个表 (什么属性) 
foreign key (sno) references table (sno)

检查与违约

修改参照表破坏完整性,拒绝执行

修改被参照表破坏完整性,可以拒绝/级联删除/设为空值

被参照表(Student) 参照表(SC) 违约处理
破坏参照完整性 插入元组 拒绝
破坏参照完整性 修改外码值 拒绝
删除元组 破坏参照完整性 拒绝/级联删除/设为空
修改主码值 破坏参照完整性 拒绝/级联删除/设为空
  1. SC中差一条元组,Student中没有这个属性值
  2. SC修改元组,Student中没有一样的
  3. Student删元组,SC表中某些元组找不到外码
  4. 修改主码,SC表某些元组找不到外码
on 操作 怎么办

no action 拒绝执行
cascade 级联删除


foreign key (Sno) references Stduent(Sno)
    on delete cascade        //Student删除操作时,级联删除SC表中涉及到的元组
    on update cascade        //Student更新操作时,级联更新SC表中涉及到的元组
foreign key (Cno) references Course (Cno)
    on delete no action        //Course删除操作时,如果造成Course与SC不一致,拒绝删除
    on update cascade        //级联更新
**
not null  //列值非空
unique        //列值唯一
check短语        //列值满足条件表达式    (允许使用谓词)

Sno char(10) not null
Sname char(10) unique
Ssex char(2) check(Ssex in('男','女'))
目录
相关文章
|
关系型数据库 Linux BI
数据库的一些知识
数据库的一些知识
43 0
|
3月前
|
关系型数据库 MySQL 数据库
|
6月前
|
存储 数据管理 数据库
理解数据库中的参照完整性
【6月更文挑战第13天】数据库设计旨在创建和维护企业的数据管理系统,确保数据完整性和消除冲突。好的数据库设计应减少冗余,保证信息准确完整,并满足处理和报告需求。设计工具包括E-R图和UML等。
531 2
理解数据库中的参照完整性
|
7月前
|
数据库
数据库(二)
数据查询教程包括单表查询操作,如Select语句用于选取属性,可指定列名、使用别名、计算表达式,并通过Distinct去除重复元组。条件查询(Where子句)支持比较运算,如Between、In、Like(支持模糊匹配)及空值判断。连接查询用于合并多表数据,如内连接、外连接和笛卡尔积。例如,通过连接emp和dept表,可获取员工姓名及其所在部门名称。
50 3
|
7月前
|
SQL 数据库
数据库(五)
`UPDATE` SQL语句用于修改表中的数据。基本语法是:`UPDATE 表名 SET 属性名1=新值1,属性名2=新值2 WHERE 条件表达式`。例如,更新员工工资:`UPDATE emp SET salary=5000 WHERE id=1`。可以使用`+=`操作符增加值,如`UPDATE emp SET salary=salary+500 WHERE dept_id=2`。统计查询中,`COUNT`, `MAX`, `MIN`, `AVG`, `SUM`等函数用于数值、字符和日期的统计分析,注意`WHERE`子句不能直接使用聚集函数。
37 2
|
SQL 数据库 Windows
数据库—耿建玲视频总结(二)
首先建库,就好比我们盖房子,我们可以自己盖(企业管理器建库),也可以包给别人让别人给盖(T语言建库)。
|
存储 安全 数据挖掘
数据库视频
数据库视频
102 0
|
SQL 安全 数据库
【数据库视频】总结
【数据库视频】总结
|
存储 消息中间件 NoSQL
数据库常识课
数据库常识课
70 0
|
关系型数据库 MySQL 数据库