数据库设计-读书笔记(一)
《数据库设计系列》
地址:http://www.uml.org.cn/sjjm/200811065.asp
数据库设计的主要步骤如下:
1. 事实发现
通过一定方式,收集关于数据库系统需求和相关信息的处理过程,这个阶段一般是在数据库系统开发的早期阶段,需要收集足够的信息,供之后的数据库规划和设计来进行
要了解的东西:术语,机会,问题,约束,需求以及业务和系统用户的优先级
主要方式:检查文档(用于深刻理解整个系统和需求),面谈(可以有针对性地提出问题,得到反馈,这个在我们系统当中要用到,但是要注意在面谈前,做好充足准备,准备好问题),观察业务的运转,研究(可以参考网上资料),问卷调查
2. 数据库规划
明确数据库工程的任务陈述,进而得到数据库的任务目标
任务陈述主要是定义数据库的主要目标,将整个数据库需要实现的任务用简要的文字描述出来
任务目标对应着任务陈述当中的特定任务,首先定义好任务,然后将每个任务进一步细化和具体化,形成一个完整的任务描述,可以通过交流和问题明确
我们的数据库的任务陈述:
本数据库系统的目的是收集、整理和存储动作捕捉阶段之后修复生成的BVH数据文件以及对应的轮廓图片,提供数据接口,用于根据特定的特征算法进行数据训练,存储数据训练后对应下来的figure vector,为动作匹配过程提供快速的数据检索接口,考虑提供试验数据存储和管理的通道
具体的任务描述如下:
维护(录入、更新、删除)原始BVH文件数据
维护(录入、更新、删除)BVH-MOTION数据,这部分数据包括正常的多视点pose数据(只需要有特征值数据即可),还有聚类之后的close posture列表数据
实现对close posture列表的查找,考虑建立索引
数据训练的接口,可以是对bvh文件中相关帧的查找,也可以是对每个pose的轮廓图进行查询,不过一般是遍历性质的
动作匹配时,对每个pose的特征值(包括HU矩和figure vector)遍历式查询,并可以根据T特定特征值找到特定motion,由特定motion找到特定bvh,考虑整个pose也建立索引
下面来讨论一下对数据库调用的整个过程:
训练数据:(两种情况)
1. 直接返回bvh,对所有bvh文件进行遍历查找,得到相关属性,重点是得到存储地址
2. 返回各个pose的轮廓图存储地址,然后直接对轮廓图训练得到特征值,直接存到相应的pose对应位置上去
动作匹配:
重点在于,实时捕获图像的特征值和数据库中的特征值之间的匹配
过程如下:查找close posture队列当中各个posture的相应数据,找对最合适的若干数据,在由这个posture找到对应的若干motion,在对每个motion的multiview-pose数据进行一下遍历,需要对这些数据进行匹配,找到合适的motion数据,由这个motion又得到对应bvh
3. 需求收集和分析
在前一阶段的基础上,进一步明确和收集细节,形成用户的需求说明
主要可以包括以下几个方面和方法:
(1)收集数据库系统的更多情况
(2)收集数据库的系统需求信息
(3)设计出系统的用户视图
(4)列出数据的需求以及事务需求,这个需要比上面一个阶段更加仔细
(5)明确数据库系统的系统说明,包括初始数据库大小,数据库增长大小
4. 实体建模
实体主要是一组具有相同属性的对象,我们在实体当中主要需要列出各项属性
实体之间的关系,需要列出相应的关系,其中关系的度用来表示整个关系当中有几个实体最终参与,同时要求标示出相应的主键和外键
将一个数据库当中的实体认真的设计出来的话,可以很好地作为数据表设计的参考
我们数据库的实体列表:
BVH文件:
BVH_ID,store_path,start_frame,end_frame,shoot_frame,QF_labe,Describe
详细见林驰的概念设计文档
5. 关系建模
将各个实体之间的关系很好的建立起来
更多的一对一关系,多对多关系以及二元关系,这些都很重要
同时要注意关系建立时候的细节,避免设计方面的错误出现
6. 规范化
规范化可以作为一种由下至上的数据库设计方式来使用,但是效果不一定很好
而E-R图主要看成一种由上至下的设计方式来实现
我们做法主要是,首先使用E-R图来进行设计,然后细化成相应的表,在根据规范化的原则来审核设计是否合格
主要有这么几个概念:
包括更新异常,主要由于设计的不合理导致
然后就是对几个范例的定义,可以作为规范化的参考:
第一范式:记录的每个列包含一个而且只包含一个值的表,或者说数据项是不可拆分的表,如果一个记录的某一个列有多个值,那么就不是1NF,比如一个电话号码列包含了110,120,119多个电话号码。
第二范式:一个第一范式的表并且任何一个非主属性都完全依赖于主键的表。部分依赖是指一个非主属性可以从主键的部分属性或者部分属性的组合中得到。完全功能依赖是指如任何一个非主属性都必须由主键的全部属性组合中得到。
第三范式:一个已经是第一和第二范式的表,并且所有的非主键列的值只能从主键中得到,而不能从其他的途径得到。也就是说消除了传递依赖。任何一个非主键属性都不传递依赖于主键。
这么来总结一下,第一范式就是表中每个列只有一个值,第二范式就是每个列都应当可以算作依赖主键,包括直接依赖或者是通过传递的简介依赖,第三范式,就是最独立的一种,保证整个表里面的每一列都是只和主键相关,就是主键可以说决定了每一个元素,而且是直接的依赖,没有所谓的传递
7. 数据库设计过程概览
数据库的设计过程包括:逻辑数据库设计和物理数据库设计
其中逻辑设计主要步骤包括:
1.创建ER模型,保证最小冗余,支持用户事务,将数据的需求分析清楚
2.将ER模型改成表的集合,再进行规范化检查,保证表项设计合理
物理数据库设计主要步骤包括:
1.完成基本表和完整性约束的设计
2.为基本表选择文件组织方式,同时根据需要的功能建立索引
3.其他。。。。
Subscribe to:
Post Comments (Atom)

No comments:
Post a Comment