数据库设计方法

来源:互联网 发布:淘宝号哪里有卖的么 编辑:程序博客网 时间:2024/05/17 22:14
数据库设计
1.为什么要做数据库设计?
好的数据库结构有利于:
节省数据的存储空间
能够保证数据的完整性
方便进行数据库应用系统的开发
设计不好的数据库结构将导致
数据冗余、存储空间浪费
内存空间浪费
知识点:
1.数据完整性:
什么是数据的完整性?
数据完整性(Data Integrity)是指数据的精确性(Accuracy) 和可靠性(Reliability)。它是应防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。数据完整性分为四类:实体完整性(Entity Integrity)、域完整
性(Domain Integrity)、引用完整性、参照完整性(Referential Integrity)、用户定义的完整性(User-definedIntegrity)。
2.实体完整性:
什么是实体完整性?
实体完整性规定表的每一行在表中是惟一的实体,不能出现重复的行。表中定义的UNIQUE PRIMARYKEY 和IDENTITY 约束就是实体完整性的体现。
3.域完整性:
域完整性是指数据库表中的列必须满足某种特定的数据类型或约束。其中约束又包括取值范围、精度等规定。表中的CHECK、FOREIGN KEY 约束和DEFAULT、 NOT NULL定义都属于域完整性的范畴。
4.引用完整性:
主键与外键必须一致。
5.参照完整性:
参照完整性是指两个表的主关键字和外关键字的数据应对应一致。它确保了有主关键字的表中对应其它表的外关键字的行存在,即保证了表之间的数据的一致性,防止了数据丢失或无意义的数据在数据库中扩散。参照完整性是建立在外关键字和主关键字之间或外关键字和惟一性关键字之间的关系上的。在SQL Server 中,参照完整性作用表现在如下几个方面:
禁止在从表中插入包含主表中不存在的关键字的数据行;
禁止会导致从表中的相应值孤立的主表中的外关键字值改变;
禁止删除在从表中的有对应记录的主表记录。
6.用户定义完整性:
不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件。用户定义的完整性即是针对某个特定关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。SQL Server 提供了定义和检验这类完整性的机制,以便用统一的系统方法来处理它们,而不是用应用程序来承担这一功能。其它的完整性类型都支持用户定义的完整性。
 
总结:SQL Server 提供了一些工具来帮助用户实现数据完整性,其中最主要的是:规则(Rule)、缺省值(Default)、约束(Constraint)和触发器(Trigger)。
 
2.设计数据库
不管数据库的大小和复杂程度如何,可以用下列基本步骤来设计数据库:
收集信息
标识对象
设计数据模型
标识每个对象的信息类型
标识对象之间的关系
知识点:
1. 收集信息:
与用户接触,了解他们想要实现的功能和需要解决的问题,例如:用户需要做个论坛,论坛具体的功能是什么等等
2. 对象:
找到实体和对象,例如:做个在线考试系统,对象是学生,管理员等等
3. 数据模型:
显示了实体和对象之间的关系,例如:学生考试,学生与管理员的关系等等
4. 每个对象的信息类型:
例如:学生是对象吧,学生的信息如:姓名,性别等等,这些是对象的信息类型,就是字段
 
3.设计数据库五大步
1. 学习业务规则,与用户交流,了解他们的需求。
2. 将系统的基本任务记录下来,例如:用户注册为会员,登陆系统,浏览商品,发送订单,退出系统,在线购买,管理员发布商品,查询订单,管理订单等
3. 从第二步中找到实体对象,如:用户,会员,商品,订单,管理员等
4. 建立数据模型:
第一步:从上一步中,找到实体的属性特征,如:会员,会员号,会员姓名,性别,这些属性的取舍根据你的实际业务需求标注,比如订单:订单我需要订单号,这个订单是谁的,也就是需要该会员的名字,还得有电话,这样以后查看的时候就很清楚。所以说特征的填写是根据业务需要来标注的。
第二步:画出实体关系图e-r图
5. 数据规范化
三范式
第一范式:没有重复的组,就是说,行和列交叉点中只有一个值,并且设置了主键,则达到了第一范式的要求
第二范式:满足第一范式,没有部分依赖,就是:一个实体对象的属性和另一个实体对象没有直接关系,例如:一个表中有“工程名”“职员名”“职员年龄”等字段,职员年龄依赖于职员名,和工程名没有关系,那么这个表存在了部分依赖性,解决办法就是,拆表,把职员名和年龄分成另一个表
第三范式:满足第一第二范式,并且没有传递依赖,例如:一个表中有“姓名”“职务”
“小时工资率”字段,职务依赖姓名,小时工资率依赖于职务,这就是传递以来,解决办法:拆表,把职务和小时工资率在做一个表,那个表去掉小时工资率就可以了
 
原创粉丝点击