第三章 数据完整性

         我们使用RDBMS来存储数据,而不用电子表格或者文字处理程序存储数据的主要原因就是,数据库可以防止存储垃圾数据,保证数据的可靠高效。而RDBMS就是通过维护数据完整性来保证没有冗余的垃圾数据。

        数据完整性可以分为四大类:

一、实体完整性

通过主键来实现,每一行所代表的实体是唯一的,与其他行不同。primary key ,一般设置为自动增长 auto_increment。

二、域完整性

域完整性是指每一列所代表的属性,一般有

非空 not null

唯一 unique

检查 check()

默认 default

外键 foreign key ( 列名) references 表名(列名)

三、引用完整性

一张表的外键的值是另一张表的主键,一般用外键来表示,foreign key。

在mysql中外键想关联的表必须是innodb类型的。

四、用户自定义完整性

有触发器和存储过程。

列子:

create database data_user
use  data_user;
create table t_department(
 d_deptid int primary key auto_increment,-- 部门id
 d_deptname varchar(50) not null,-- 部门名称
 d_describe varchar(500),-- 部门描述
)engin=innodb charset='utf8';
creat table t_employee(
 e_employeeid int primary key,-- 员工工号
 e_deptid int ,-- 所属部门id
 e_employeename varchar(50) not null,-- 姓名
 e_gender char(2) not null default '男',-- 性别
  e_birthday datatime not null,-- 生日
 e_idcard char(18) not null unique,-- 员工身份证号
 e_degree varchar(12) not null,-- 学历
 e_graduateschool varchar(50) not null,-- 毕业学校
 e_graduatedate datetime not null,-- 毕业时间
 e_specialty varchar(50) not null,-- 专业
 e_telephone varchar(200) not null,-- 电话,可以存储多个
 e_salary smallint,-- 固定薪水
 e_allowance decimal(18,2),-- 住房补贴
 e_skill varchar(2000),-- 特长
 consraint foreign key fk_d_deptid (e_deptid) references t_department(deptid),
 constraint c_valid check(e_birthday<e_getdate() and e_graduatedate<getdate() and len(e_idcard)=18)
)engin=innodb charset='utf8';

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值