约束
-) 主键 : 数据唯一且不为空
-) 唯一 : 数据唯一
-) 检查 : 取值范围、格式限制
-) 默认 : 默认值
-) 外键 : 引用主表的主键
数据完整性
-) 实体 : 不能存在完全相同的两条记录
实现方法:设置主键(primary key)、唯一索引、唯一约束
-) 域 : 字段不能违反类型、格式、长度的约定
实现方法:check约束、外键约束(foreign key)、默认约束、非空定义、类型
-) 引用 : 相互联系的表之间,有直接联系的字段必须一致
实现方法:外键约束
-) 自定义 : 自定义的规则
实现方法:存储过程、触发器、规则
三大范式
-) 1st NF : 列的原子性
解读:原子性即不可再分性
检查办法:列值是否还包含多个含义
-) 2nd NF: 表的专一性
解读:一个表只描述一件事情
检查办法:其他列是否依赖主键
-) 3rd NF : 表的原子性
解读:表的原子性即表的不可在分性
检查办法:一个表是否包含了另一个表
数据库设计的六个阶段
1.需求分析 : 根据需求业务分析出数据
-) 目标 : 所有数据全部提取
2.结构设计 : 根据数据绘图、建模,并检查数据完整性
-) 目标: 数据完全符合数据完整性要求
-) 具体步骤
1.标识实体(一般是名词),一条记录就是一个对象
2.标识实体的属性
3.标识实体之间的关系,关系可分为四种:1-1、1-N、N-1、N-N
4.绘制E-R图,可使用visio工具
5.建立关系模式;一个关系的属性名的集合称为关系模式;例如:客人(客人姓名、身份证号、房间号、入住日期、结账日期)
6.转化E-R图为数据库模型图;
-) 将各实体转换为对应的表,将各属性转换为各表对应的列
-) 表示每个表的主键列,没有合适的主键可添加一个ID编号列,例如:入住流水ID
-) 在表之间建立主外键,体现实体之间的映射关系
3.规范化 : 将数据用三大范式审核
目标: 符合完整性并符合三大范式
4.物理设计 : 代码实现
目标:数据库实现
5.数据库实施 :
目标:编写好应用程序访问数据库的接口