数据库设置约束条件有什么好处?

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/27 08:29:47
数据库设置约束条件有什么好处?
xV[S"G+( />b2HUҬ$k,0ڷA(\AfLgrz΀xYI^,s;߹|{|mhT"&uYGbrfs4[P̈́TET[AR7_p+ᵉܯMYuVzoT,kbHG,VC)bfdlX#+oqx(IDa?9Ul-ւ4[Ԫ <+G["_>E+bs]Lkכ$S!RZmnS+7t2 iC0 3@koP5,`J^zi5IJȘ f'CXf!x]ver8_ZW\oNONO=K_.aeu-ؿu؟ C0b|eaL @Pa!*Fr$^7&XQ -=׳G|L9ZHAэ^XwPu3 4B$ x;҆chv0O9c1C>RjSѓmRϧ/Lj"kģ(2= Plj "|j(LGv@ 8{!Ԃ>0{l) 7q*f*j `^?8O+*_UL (\Z፽QmU9|9t2a+ Eau4-y7֚ռ)S_Ryއt/ ߏD[`˽FP Ak].+W+׻aJ\j'GEż1 d qBtSLE$6A.ʘ0}n5GiupX3#eoF^,ΎD'S~2vܜXa3&ϡqo $"q]CFs/=/<顾b; ޅa t8J=o?kLjs)5^4̔)Nɟ Þ5 K

数据库设置约束条件有什么好处?
数据库设置约束条件有什么好处?

数据库设置约束条件有什么好处?
数据库约束是为了保证数据的完整性而实现的一套机制,它具体的根据各个不同的数据库的实现而有不同的工具.
一般来说有以下几种实现方式:
1、检查约束:
通过在定义数据库表里,在字段级或者是在表级加入的检查约束,使其满足特定的要求.
比如以下的表定义:
CRATE TABLE student(
id serial,
name varchar(10),
scrore integer CHECK (scrore > 0));
定义分数不能小于0.
也可以在表级定义:
CHECK (字段1 秘字段2之间的关系)
2、非空约束:
这个大家应该很熟悉了.直接在字段后面加上:NOT NULL.
3、唯一约束:
定义一个唯一约束但是它并不包括NULL值.直接在字段定义后加入UNIQUE即可定义一个唯一约束.
4、主键约束:
SQL 92建议在建立一个表时定义一个主键:它其实就是:唯一约束+非空约束.
5、外键:
所有约束里数这个约束最有意思了:比如说有这样一件事,你需要做一个学生查询的网页.那么为了方便,你将建立三个数据表:
一个是学生情况表:
CREATE TABLE student(
id serial primary ke,
name varchar(10),
.
);
一个表是记录所开的课程
CREATE TABLE class(
class_id varchar(5) primary key,
describe varchar(20)
.
);
一个表是记录学生成绩的表:
CREATE TABLE score(
id integer references student,
class_id varchar(5) references class,
score integer CHECK (score > 0)
);
这个时候你会发现以下几件事:
如果你在成绩表里输入不存在的学生和课程,数据系统将拒绝.如果你要删除一个学生,但是他已经在成绩表里有记录,数据库将拒绝删除这个学生的记录.
那么我们现在来看,前面一个对我们是有利的,因为谁都不想一个学生无缘无故的有了一个成绩的记录,但是在删除的时候就会比较麻烦了,有时候我的确是想删除这个学生.那么我总不能在应用程序里照顾得那么周到吧.不要紧我们在定义数据表的时候只在外键那一样加入以下控制就OK了,我们来重新定义数据表 score
CREATE TABLE score(
id integer references student ON UPDATE CASCADE ON DELETE CASCADE, //我们希望在学生记录改变时自动改变分数记录,在删除学生级联删除分数记录
class_id varchar(5) references class ON UPDATE CASCADE ON DELETE
RESTRICT, //我们希望在改变课程时自动改变分数记录表里关于课程的引用,但是不希望删除课程时级联删除分数.
.
);
这样我们就可以很好做到数据完整了.