数据完整性及创建表

一、      数据完整性

(一)相关概念

数据的完整性是指数据的可靠性和准确性.它分四类:

1、实体完整性:实体的完整性强制表的标识符列或主键的完整性(通过索引,唯一约束,主键约束或标识列属性).

2、域完整性:限制类型(数据类型),格式(通过检查约束和规则),可能值范围(通过外键约束,检查约束,默认值定义,非空约束和规则).

3、引用完整性:在删除和输入记录时,引用完整性保持表之间已定义的关系.引用完整性确保键值在所有表中一致.这样的一致辞性要求不能引用不存在的值.如果一个键值更改了,那么在整个数据库中,对该键值的引用要进行一致的更改.

4、自定义完整性:用户自己定义的业务规则.

(二)约束和数据完整性

主键(Primary key

外键(Foreign key

唯一(unique

检查(check):MySQL不支持。

默认(default

    (三)数据类型

1、对于某些文本字段,例如“省份”或者“性别”,我们可以将它们定义为ENUM类型。因为在MySQL中,ENUM类型被当作数值型数据来处理,而数值型数据被处理起来的速度要比文本类型快得多。这样,我们又可以提高数据库的性能。

例如:

CREATE TABLE sizes (

    name ENUM('small', 'medium', 'large')

);

INSERT INTO sizes

VALUES(2);

或者

INSERT INTO sizes

VALUES('small');

SELECT NAME+0 FROM sizes;

2、创建自动增量

create table tongxunLu(

id int primary key auto_increment,

name varchar(50)

) auto_increment=10

注明:要求自动增量的字段类型为整型。

      不能设置自动增长的步长。

二、       创建数据表及实现数据完整性

用以下例子来说明:

 

create table s(sno char(2) not null ,

               sname char(10)  null,   

               sex char(2)  null default '男',

               birthday datetime  null,

               id char(18) null , primary key(sno), unique(id),

                   check(sex='男' or sex='女')

            );

create table c (cno char(2) not null  ,

                cname char(10)  null,   primary key(cno));

create table sc(sno char(2)  not null ,     

                cno char(2)  not null ,   

                score decimal(5,1) null , primary key(sno,cno),

foreign key(sno) references s(sno) on delete cascade on update cascade,

foreign key(cno) references c(cno),

check(score>=0 and score<=100)

               );

 

 

posted @ 2012-03-12 21:06  仰望薰衣草  阅读(364)  评论(0编辑  收藏  举报