标签:
有效数据设计的目标
一个合格的数据库应该能够满足操作:crud(create-创建,read--读取,update--更新,delete--删除)
一个合格的有效的数据库设计需要满足一下特性
1. retrieval(检索)-------------数据如果没有办法被检索出来就不叫数据库 而叫数据黑洞
2. 一致性:对任何相同的搜索应该提供一致的结果------指数据库的不同部分不能保存相同信息的相互矛盾的视图
例如:如果对同一张表的同一行用相同的方式查询了两次,那么这两次的查询结果应该是严格一致的。
3. 有效性:在可能需要的地方相对数据库中的其他数据段对数据进行验证。换句话说,就是如果你更新了一条数据,那么应该能通过查询语句来验证;如果你删除了一条数据,那么,不管怎么样查询都不会再得到你删掉的数据的内容,这就是说你的操作是有效的。
4. 另外,轻松纠错、速度-------也是两个必要的特性,否则就有点坑爹。
5.事务的处理需满足ACID
----Atomicity原子性,Consistency(一致性),Isolaion(隔离性),Durability(持久性)
原子性---事务处理过程中的操作要么全部完成,要么什么都不执行.
一致性---事务处理确保数据库在事务处理前后处于一致的状态。
隔离性---是指事务处理向除了执行处理事务的人以外的所有人隐蔽其细节。
持久性---一旦提交了一个事务处理,它的结果处理就不会消失。
6. 当然一个数据库的存在还必须尽可能满足:低成本、可扩充性、易用性、便捷性、安全性,否则总会有新来者取而代之。
数据库的规范设计
第一范式: 1.每个列必须要有唯一一个名称
2.行列的次序无关紧要
3.每一列都必须有单个的数据类型
4.不允许包含相同值的两行----------要有主键
5.每一列都包含一个单值
6.列不能包含重复的数组
说明:规则3意味着任意两行在相同的列中不允许储存不同的数据类型
规则6表明 不能多个列包含不能区分的值
第二范式: 1.必须符合第一范式
2.所有的非键值字段均依赖于所有的键值字段---主键(包括联合主键)
说明:规则2有另一种说法:部分依赖,会产生冗余数据
第三范式: 1.符合第二范式
2.不包含传递相关性
从性价比的角度来说,满足前三大范式最佳。
Boyce-Codd范式:
1.符合第三范式;
2.每一个决定因子都是一个候选键。
第四范式:
1.它是Boyce-Codd范式
2.它不包含无关的多值依赖
第五范式:
1.它符合第四范式
2.它不包含相关的多值依赖
域/键范式
@除了域约束和键约束,该表不包含其他约束
标签:
原文地址:http://www.cnblogs.com/lightandtruth/p/5397194.html