噪声收集系统——数据库设计心得

数据库设计心得

在需求分析阶段,其实数据库的设计就已经初具雏形,组内初步分析了需要哪些表来存放哪类数据,并探讨了各个表中的关键字段。但在需求分析阶段的数据库设计并不完整,只描述了部分实体,表中的属性也不能完全描述需求,数据库表间的关系没有体现,这就需要进入详细的数据库设计阶段来完善。

在数据库设计的第一阶段,还是围绕用户需求来展开工作。用户的需求在设计过程中扮演着中心角色,如果一开始对需求的分析就出现偏差,那数据库设计就很容易出现问题,好在需求分析阶段结束后我们的需求是十分明确的,项目组内根据项目的需求刻画了用户的各种数据需求。

接下来,就进入将这些数据需求转化成数据模型的概念设计阶段。采用实体-联系的模型,我先列出了实体集并尽可能找出了这些实体集之间的关系,使用POWERDESIGNER工具画出了E-R图,当然这和最后的设计有所偏差,要知道,大部分事情一开始都不是最好的,甚至是不正确的,所以我们仍需要对这个模型进行改善。实体设计中,我最初本着在能实现的需求的前提下,将实体集的属性设计的尽量精简,表现在对于很多实体的主码上,我不希望添加ID字段,而是使用能唯一标识实体的属性组合。例如所用的噪声数据实体集,我将实体主属性设计为<时间+地点>,省去了ID字段,在数据库审查过程中,还是被边老师建议添加ID字段,我在修改数据库时思考得出的结论是,应该添加ID字段,原因有二,在区分不同实体时,使用ID更为清晰,另一个原因在于,在引入外键时,使用ID更为简便。在数据库设计过程中,我时刻注意数据的完整性和冗余发生的可能性,但是,过分的追求精简也会带来问题,数据库的设计还是为了方便数据的存储和操作。

ID的添加是可选的,是否使用ID是一种决策,应该说,数据库设计不是一般的选择题,没有一个标准答案,有时候两种设计方案都能够满足数据库设计的需求,这时设计者就会面临各种各样的决策。举几个我所面临的数据库设计决策的例子,用户需求中有一项是获取自己上传噪声记录的历史。一个方法是在噪声数据实体中添加关于该噪声数据上传的信息,如上传的时间,上传的用户等。这一设计的一个问题是,某个用户可能某一次上传中,上传了多条数据,结果造成了在噪声数据表中,这些同时上传的数据在上传时间和上传用户等字段上是相同的,并不是一个很好的设计。另一个实现的方法是创建一个用户实体和噪声数据实体之间的上传记录关系集,上传记录关系集联系了某个用户和该用户所上传的噪声数据关系,添加了上传的时间和协议等信息,一个用户可以上传多条噪声数据,所以关系的映射是一对多的。这个设计已经较为合格了,但还面临另一个决策,那就是是否可以将上传记录作为一个新的实体,得到一个用户-上传记录-噪声数据的实体-联系局部。最后我们采取了这样的设计方式,在一次上传中,单个的上传记录实体联系了多个噪声数据实体,这样这些噪声数据就不存在数据上的重复,并且,也很容易分条得到用户的上传记录历史,虽然不如前一种方法紧凑,但是这一方案使得数据库得组织更为得体,也更易于扩展。

另一个面临的决策是关于噪声数据组织成噪声地图的,噪声地图实际上是由噪声数据统计得出的。最初脑海中有三种方案,一个是将噪声地图作为噪声数据的弱实体集,一种是将噪声地图作为噪声数据的视图,还有一种是将噪声地图作为一个单独的实体集,最后得出的方案是将噪声地图单独出来。这样设计的原因是,噪声数据都是历史性的,不会改变,而在某一特定时段过后,噪声地图的数据就应该生成了,在这一时段的噪声地图不再变动,单独的实体也更容易在之后的地图算法中对数据进行操作。在某些设计决策中,需要考虑到数据的某些特性,如这里数据的历史时间特性,以及数据和程序交互的方式,以得到更适合程序的数据库设计。

还有很多设计问题以及改进是在数据库审查时解决的。印象较为深刻的是,用户表中需要对用户是否激活设立一个字段,这是我在之前的设计中完全没有想到的。我毕竟还是一个年轻的程序员,也是第一次进行数据库设计,在很多类似这样的数据库设计细节,我们显然不如边老师这样有经验的大牛,还需要虚心学习,多吸取这方面的经验。

数据库设计中关于数据操作和约束的部分,并没有太大的收获,因为项目需求中对这两个部分没有实际的需求,我也没有想到什么严格的约束。希望以后有机会在其他项目中,对这些部分的设计发起挑战。

这就是数据库设计的全部心得了,目前已经在开发了,希望一切顺利,世界和平。

原文地址:https://www.cnblogs.com/xmdyd/p/10005244.html

时间: 2024-11-10 23:26:05

噪声收集系统——数据库设计心得的相关文章

手势识别项目小组——数据库设计心得

因为我们的项目是算法类,所以项目本身的需求不太明确.设计数据库的过程其实本身也是在进一步明确需求的过程. 这是我们画出的用例图: 以下是我们小组成员的数据库设计心得: JJ: 通过本次数据库设计的过程,我经历了很多也学会了很多. 首先因为课程组的要求是设计出至少15张表,而我们想要达到15张表是很困难的.我们的设计想法是先根据我们之前设计的原型先设计出一些表,根据登陆.注册.历史记录等设计了几张表.但是这些表也基本是基于用户而设计的,后来我们也寻求了指导老师的帮助,指导老师帮忙想了一个损失函数表

机房收费系统——数据库设计说明书

GB8567--88 数据库设计说明书 1      引言 优质数据库在处理大数据的程序或系统中是有非常重要的作用的,所以对于数据库的设计有很多的要求和规定.首先数据库要有很好的可维护性.灵活性,并且数据库的算法逻辑性也要有一定的优化性,这样可以对资源进行有效利用,并且处理数据的时间也会缩短. 1.1   编写目的 由于上机的人越来越多,产生的上机数据越来越多,原始的保存方式已经不能满足数据存储的需要,所以使用数据库对各种记录进行存储.并且数据库可以节省很多的资源,如人力.时间.空间等. 数据库

机房收费系统数据库设计

之前,学习编写机房收费系统的文档时,曾写过 机房收费系统数据库概念设计模型--ER图 这篇文章,现在到了机房收费系统个人版重构阶段,需要再次进行数据库的设计.可以说,之前的数据库的概念设计给我现在的设计奠定了一定的基础,但是仍然发现自己的设计中有许多不合理并且需要改进的地方. 在这次的数据库设计当中,学习了一些数据库的命名规范,重温了经典的三范式(属性原子化,避免局部依赖,避免传递依赖).但是发现,在需求面前,一些分属两张表的字段,为了方便,还是得放到一张表中,不得不破坏三范式. 现在将自己设计

VB.NET版机房收费系统—数据库设计

之前第一遍机房收费的时候,用的数据库是别人的,认知也只能建立在别人的基础上,等自考中<数据库系统原理>这本书学完了之后,再去看以前的数据库,发现数据库真的还需要进一步的优化,下面是我设计数据库的一些见解,希望大家多提些意见. 数据库设计 E-R模型: 在观念模型设计阶段,一个系统都是建立在ER模型上的,设计好ER模型,很重要. 我设计的ER图: 系统中的实体:很简单,就是将系统中的名词都抽象出来,再具体了就是转换为数据库的逻辑设计时才要考虑的. 系统中的联系:在图中可以看得很清楚,这里我要重点

ylbtech-KeFuYunWei(服务运维考核系统)-数据库设计

ylbtech-DatabaseDesgin:ylbtech-KeFuYunWei(服务运维考核系统)-数据库设计 DatabaseName:KEFUYUNWEI Model:Admin 用户后台管理数据设计 Type:管理软件 Url: 1.A,数据库关系图(Database Diagram) 返回顶部 1.B,数据库设计脚本(Database Design Script)返回顶部 use master go -- =======================================

VB.Net版机房收费系统 ---数据库设计

数据库设计是根据用户需求设计数据库结构的过程,具体来说,数据库设计是对于给定的应用环境,在厝数据库理论的指导下,构造最优的数据库模式,在数据库管理系统上建立数据库及其应用系统,使之能有效地存储数据,满足用户的各种需求的过程.到底数据库该如何设计,古往今来,每个人都有每个人的想法,所以数据库设计并没有优劣之分,好坏之别,合适的数据库设计就是最好的. 走过自考--<数据库系统原理>,看过耿建玲老师的视频,对数据库设计有了一点了解,VB版的机房收费系统,直接用原来的脚本生成的数据库,当时对数据库设计

在线笔试系统 数据库设计

试卷模板:papertemaplate 岗位类型:positiontype 题库:question 答卷:sheet 应聘者答案(答卷明细表):ansersheet 用户表(包含面试吗.HR.应聘者):user 角色表:role (用来区分用户的类型) 试卷模板和题库的关系(试卷明细表): paperdetails 应聘者和岗位的关系:userpositiondertails 用户表(用户表包含3个角色)user 列名 含义 类型 属性 id 记录编号 INT 自增.主键.非空 loginnam

创新课程管理系统数据库设计心得

因为创新课程管理系统这一个项目,是一个从无到有,没有标准可以去参考的一个项目. 这个项目专门针对该课程进行设计,所以需求的功能点很多,因此数据库有多次设计,更改再推翻重新设计再更改. 因为用户有多个类型,系统管理员,学校管理员,老师,助教,学生. 一开始的时候想把每一个都单独设计为一个表,然后登陆的时候选择身份后直接在对应的表里面进行查找即可.所以当时的用户表是如下的: 后来经过小班讨论课,又觉得可以把所有的用户全部放在一个表里面,即一个User表里面有所有用户的资料,不过这样会导致许多字段的空

评论系统数据库设计及实现

评论系统数据库设计及实现 需求分析 一般我们浏览网站的时候经常能看到如下图的这种效果(图片来自CSDN) 这种评论层层嵌套,每个评论下面还挂着若干个对评论的回复. 这种结构类似于树状结构,用户看起来一目了然,也是一种非常主流的评论系统设计. 数据库设计 在以评论为主的树形结构中,数据库的设计非常灵活,可以是单表设计,每个评论都有一个parent_id指向父评论.还可以分开为两个表,评论一张表,对评论的回复是另一张表. 这里我使用的是单表设计. 数据表设计如下.由于我开发的是一个新闻系统,所以我就