数据库设计--约束分类
约束的建模:
一、约束的分类大致可以分为:
1、键(key) 是实体集中唯一标识一个实体的属性或属性集。不存在两个实体其构成键的所有属性值都相同,但部分相同时允许的。
?
2、单值约束(single-value-constraint)是指只在某种情况下有唯一性的要求。键是单值约束的主要来源,因为它要求一个实体集中的每个实体在键属性上都有唯一值。也有其他单值约束来源,如多对一联系。
eg:alter table userinfo
???? add unique index Index_unique using hash(name);
?? //执行如上语句就给userinfo表的name列加上了名为index_unique的唯一性约束,数据库在检查这个约束时使用hash算法
?
3、引用完整性约束(referential integrity constraint)是指要求某个对象所引用的值必须在数据库中实际存在。引用完整性与禁止悬挂指针或传统编程中的悬挂引用很相似(啥是禁止悬挂指针?自己查吧)
?
4、域约束(domain constraint)要求属性的值必须在一个具体的值集或范围里
?
5、一般约束(general constraint)是需要在数据库中得到满足的任意要求。
?
??? 键让用户无混淆的标识实体。另外,因为存储单值必存储集合容易,及时那个集合中只有一个成员也如此。所以,知道惟一值会节省空间和时间。引用完整性约束和键还支持可使数据访问更快的存储结构。
??? 键约束和一般约束都是数据库模式的一部分。他们是数据库设计者连同结构设计(如实体和联系)一块申明的,一旦一个约束被申明了,对数据库的任何违法约束的插入或修改操作都是不允许的。
?
其他
二、类(表)是一个模板,对象(一行数据)是一个实例
三、设计数据库三范式:
1)、原子性?? 不可再分(字段)
2)、完全依赖于主键
3)、消除间接依赖
?
部分资料来自《数据库系统基础教程》by jeffrey D.Ullman & Jennifer Widom?