前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据库完整性总结

数据库完整性总结

作者头像
SuperHeroes
发布2018-05-31 13:51:52
9160
发布2018-05-31 13:51:52
举报
文章被收录于专栏:云霄雨霁云霄雨霁

完整性和安全性

  • 数据库完整性是指数据库的正确性、有效性和相容性,防止错误数据进入数据库。
  • 数据库安全性是指保护数据库,防止不合法的引用,以免数据的泄密、更改或破坏。

安全性和完整性常常混淆。安全性是指保护数据以防止非法用户故意造成破坏;完整性是保护数据以防止合法用户无意中造成破坏。

完整性约束

SQL中把完整性约束分为三大类:域约束、基本表约束和断言。

域约束

可以用“CREATE DOMAIN” 语句定义新的域,并且还可以出现CHECK子句。

定义一个新的域COLOR,可以用下列语句实现:

代码语言:javascript
复制
CREATE DOMAIN COLOR CHAR(6) DEFAULT '???'
    CONSTRAINT VALID_COLORS
        CHECK( VALUE IN
                  ( 'Red','Yellow','Blue','Green','???'));

此处第二行表示为这个域约束起一个名字VALID_COLORS。假定有一张表:

代码语言:javascript
复制
CREATE TABLE PART
( ...,
  COLOR COLOR,
  ...);

如果用户插入一个元组时未提交颜色的值,默认为‘???’。如果用户输入了非法值,则操作失败,系统将产生一个约束名为VALID_COLORS的诊断信息。

基本表约束

SQL的基本表约束主要有三种形式:候选键定义、外键定义和“检查约束”定义。这些定义都可以在前面加“CONSTRAINT<约束名>“,由此为新约束起一个名字。为简化下面都省略这一选项。

1、候选键定义

候选键的定义形式为:

代码语言:javascript
复制
UNIQUE (<列名序列>)
或
PRIMARY (<列名序列>)
  • UNIQUE定义表的候选键,但只表示值是唯一的,值非空还需要在列定义时带有选项NOT NULL。
  • PRIMARY 方式定义表的主键,一个基本表只能指定一个主键。当是主键时会被自动认为是非空的。
2、外键定义

外键的定义形式为:

代码语言:javascript
复制
FOREIGN KEY (<列名序列>)
    REFERENCES <参照表> [(<列名序列>)]
        [ON DELETE<参照动作>]
        [ON UPDATE<参照动作>]

第一行的列名序列是外键,第二行的列名序列是参照表中的主键或候选键。参照动作有五种方式:

  • NO ACTION方式:对依赖表没有影响。
  • CASCADE方式:参照表中要删除/修改主键值,将依赖表中对应的外键值也删除/修改。
  • RESTRICT方式:依赖表没有一个外键值和参照表主键值对应,系统才能执行删除/修改操作。
  • SET NULL方式:删除/修改参照表中元组时,将依赖表中相关外键值设为空值。
  • SET DEFAULT方式:与上述方法类似,设置为预先设置好的默认值。
3、”检查约束“定义

这种约束是对单个关系的元组值加以约束。方法是在关系定义中任何需要的地方加上关键字CHECK和约束的条件:

代码语言:javascript
复制
CHECK (<条件表达式>)

比如在教学数据库中,要求学生关系中存储的学生信息满足:男同学年龄在15~35之间,女同学年龄在15~30之间:

代码语言:javascript
复制
CHECK (AGE >= 15 AND ((SEX = 'M' AND AGE <= 35)
        OR (SEX = 'F' AND AGE <= '30')));

断言

断言的定义如下:

代码语言:javascript
复制
CREATE ASSERTION <断言名> CHECK (<条件>)

撤销断言的方法如下:

代码语言:javascript
复制
DROP ASSERTION <断言名>

例如:每门课最多50名学生选修:

代码语言:javascript
复制
CREATE ASSERTION ASSE3 CHECK
    ( 50>= (SELLECT COUNT (SC.S#)
        FROM S,SC
        WHERE S.S#=SC.S# AND SEX='M'
        GROUP BY C#));

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.05.14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 完整性和安全性
  • 完整性约束
    • 域约束
      • 基本表约束
        • 1、候选键定义
        • 2、外键定义
        • 3、”检查约束“定义
      • 断言
      相关产品与服务
      数据库
      云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档