mysql实体完整性实现方法_MySQL数据完整性的研究与实现_钟志宏

福建电脑2011年第10期

MySQL数据完整性的研究与实现

钟志宏

(黔南民族师范学院计算机系贵州都匀558000)

【摘要】:数据库的数据完整性的目标是确保数据的一致性和相容性,完整性约束已经作为数据库模式的一个重要的部分。本文主要介绍了MYSQL数据库中数据完整性约束的实施方法和策略,重点讨论MYSQL数据库所不支持的域完整性、元组级完整性及关系间完整性的实施策略。

【关键词】:MYSQL;数据库;数据完整性

1、引言

数据库技术毫无疑问的作为现代信息技术与信息服务的基石。随着信息社会的不断发展,各种信息应用也不断向着精细化和完善化发展,如何保证数据库中数据的正确性和相容性,是数据库设计的一个重要组成部分。数据完整性约束,能够使数据库系统有效的模拟现实系统中的数据规定,保证数据的正确性与结构化,是数据库系统的数据库模式的一部分。根据作用的数据库对象与范围的不同,数据完整性约束包括三个方面:实体完整性、参照完整性(或引用完整性)、用户定义完整性(包括域完整性、元组约束、关系间约束)。其中实体完整性和参照完整性是关系模型必须满足的约束条件,即关系的两个不变性。

MySQL数据库系统因其开源性、体积小、高性能、总体拥有成本低,成为众多中小型企业信息系统数据存储的首要选择,尤其在互联网应用中更是如此。然而,MYSQL数据库系统与其他成熟的数据库系统(如Oracle、SQL Server、DB2等)相比有其优势,但也存在着不足。就数据完整性而言,MYSQL完善的支持了实体完整性和参照完整性,而用户定义完整性支持有所不足。本文为主要介绍MSYQL数据库数据完整性约束的实施方法和策略,重点讨论MYSQL数据库用户完整性的实施方法。

2、MSQL中的数据完整性

本文使用的MYSQL数据库版本为5.5.13,采用以下关系模式作为实例进行讨论。

Student(sno,sname,ssex,sage,sbirth,sdept,shobby, graduate)学生表:sno学生编号为主键,sname姓名,ssex 性别,sage年龄,sbirth出生日期,sdept系别,graduate 是否允许毕业。

Course(cno,cname,ccredit,ctype)课程表:cno课程编号为主键,cname课程名称(不能重复),ccredit学分,ctype课程类型。

SC(sno,cno,grade)选课成绩表:sno学生编号、cno 课程编号共同作为为主键,grade为成绩。

2.1实体完整性

数据表中的每条记录(元组)表示了现实世界中一个有区别但客观存在的实体,由于实体是存在且唯一的,也就要求表中的记录(元组)即不能为空、且不能重复的。MYSQL实体完整性实现策略:

(1)主键(PRIMARY KEY)约束:如Cno CHAR(10) PRIMARY KEY。

(2)唯一索引(UNIQUE)约束,并且要求索引字段不能为空:如Cname VARCHAR(40)UNIQUE NOT NULL。

2.2参照完整性

一张数据表中某列数据只能引用另一数据表中关键字的数据,保证表之间数据的一致性,防止没有意义或不存在的数据出现。

MYSQL参照完整性通过外键(FOREIGN KEY)约束实现,并且必须保证表的存储引擎为INNODB。MYSQL外键在进行更新(On update)、删除(On Delete)操作时分别支持选项:Cascade、Restrict、No Action、Set Null。如在选课成绩表SC中定义参照完整性约束如下:

FOREIGN KEY(Sno)REFERENCES Student(Sno) ON Delete Cascade On Update Cascade

2.3用户完整性

数据库用户完整性包括域完整性(约束某一字段上值的输入范围)、元组约束(约束多个字段之间的关系)、关系间约束(多个表之间的关系)。在Oracle、SQL Server等数据库系统中,可以利用CHECK关键字定义域级约束和元组级约束,可以利用断言ASSERTION 来建立关系间的约束。但是在MYSQL数据库中,明确声明了不支持CHECK关键字,如何在MYSQL中实现用户完整性?

项目来源:黔南民族师范学院审批项目《基于粗糙集理论的数据约简与信息分类的研究》,项目编号20071109 24

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值