数据库概念设计之几点见解

如果将数据库设计比作是福尔摩斯破案,根据各种条件,限制,规则,抽丝拨茧,寻找其中的相互联系,一步一步深入案件的中间,最终解决案件。但破案首先需要有方法,那么对于数据库设计目前以使用已久的一系列设计数据库结构的成熟方法(比如:规范化)都可以作为破案所需方法的良好的根基。实际上,这些方法几乎都是经典的设计方法,因此,在进行数据库设计的时候,遵循这些方法并不会感觉到太困难。正如同我们所知,我们可以直接将你按方法的设计可以直接转变成SQL SERVER表。
但是,除非你只是为了抓一个现显的小偷,否则需要各种条件,规则,限制,联系都必须考虑到。如同我们在需要统一的考虑数据库解决方案中的分布、冗余、集群、24/7支持、存取过程、触发器、约束和完整性等问题的时候,就需要引入数据库结构的技术。这种技术没有提供物理地实现数据库的方法,但可以通过它来选择一种最佳的方法。
在现代按照不同的设计可以将整个数据库系统按不同服务需求分解成不同的组成部分,而不是使用一种技术完成整个的任务。它们可以分为:
● OLTP(联机事务处理)--OLTP数据库存储当前业务运作所需要得数据,它的主要目的是使当前的公共数据完整合理,要达到这个目的需要遵循两条原则:1、每一个当前数据块只能存储在一个可供编辑的位置,此处的如何改动都会反映倒所有使用这一数据的地方。2、提供事务支持,以便对数据库进行多项更改一起生效。如果事务中的一个更改失败了,其他的所有更改也都不允许生效,事务中止,所有操作回滚。
● 业务数据存储(Operational Data Store,ODS)――用于日报表的汇总数据。这些数据经常取之几个完全不同的地方,并进行了一定程度的预汇总,以便节省查询的时间。它的目的是向用户提供操作数据并跟踪近期的趋势,以便做出决策。
● 数据仓库(Data Warehouse)――保存整个公司的重要数据和历史数据,它的目的一是利用公司现存历史信息做出决策;二是从数据库系统的角度将活动的事务处理从报告中分力出来,以便更加细致地进行查询,而不会影响用户在OLTP系统中创建和存储的数据的能力。
● 数据集市(Data Mart)――为汇总而优先的专用数据存储,用于特定的场合,其存储的内容作为数据仓库的子集。数据集市通常使用被成为OLAP的技术进行处理。它通常为一个公司的特定需求,或一个机构的特定业务而建立的,一般有两种特殊的数据库结构:星型模式和雪花模式。
对于以上四种类型,最终采用的数据库总体结构完全取决于该数据库将要解决的问题规模。
现在的大部分计算机系统中,数据库是核心。即使不是一个以数据库为核心的系统,也拥有一个数据存储的需要。软件归根结底,也是对数据的处理。
在Internet中,在银行、政府机关、公司、学校、超市、药店等地方,都有许多数据库实例。这类数据库设计的过程一般可以分解成下面几个步骤:
● 定义目标――不要由于觉得显而易见而一笑置之,这个很重要,因为很多项目都是由于开发者不清楚用户实际上要做什么或需要什么,而冒然断定或没有能够很好地听取用户的正确意见或全部意见而带来的麻烦。在这个阶段,我们要为最终创建的系统定义功能、性能、面向客户群,并写需求报告。
● 逻辑设计――为了达到最终的目标而,通过对用户业务的分析,实施的逻辑设计
● 物理设计――利用逻辑设计的成果,并将其转换成一个真正的实现。这个阶段涉及到数据库系统如何物理地实现以及我们需要使用那些硬件和软件。
● 物理实现――项目的实现阶段涉及实际的物理数据、数据库服务器的制定以及编写存取数据的代码。
● 复查――评定是否达到最终目标的过程。大多数的项目都忽视了这个阶段,原因是耗时太长,并且引发不起人们的一点兴趣:测试、编写文档以及完成一些不愿意做,但又必须做的事情。这个阶段,应该有一个利用用户反馈信息的方法和维护更改所有问题的计划。
在用户使用过程中,用户实际只要能够浏览和处理他们所需的数据,就很少对原始数据或者用来存取数据的实际接口感兴趣。项目设计分析人员,可能因为这样那样原因,往往使一些系统使用起来非常笨拙,考虑欠佳的原因。
下面几点是我从学校、从同事、从书籍,从实际设计中得到的一些概念设计经验之谈:
1、定义目标阶段:信息采集,收集数据库项目中的信息。
a、在这里应该尽量避免一开始就设计结构。即使你具有数据库设计的经验,也不要在这里定义表和字段等等,你应该对它们逐步地进行处理。在听取用户讲解其想法和需求,并归纳出该项目应该应该完成的任务之前,不要深入到某一个具体的部分。我们常常在对所完成的任务没有足够了解之前,就对它实施一种结构和一种解决方案,这样即不利于客户也不利于我们。
b、在分析过程中,尽快地将所需的数据编写成文档是一个很好的习惯。例如:在公司,因为一个员工生病或者另谋高就,为了不对开发速度造成很大的影响,接替人员需全力以赴地了解项目的全部内容,能够为其提供帮助的唯一途径就是全部的信息文档。因此你了解编写文档重要性,要求是不把任何项目内容留在你的脑袋中。在对用户需求进行记录时应注意:
△ 维护一套共享的系统设计和说明书文档。文档应该主要包含:设计会议记录,记录口头更改需求的文档和最终的所有说明书,比如,功能、技术、测试等各方面的内容。
△ 除了规范的文档外,要为所有的信息而开发和维护一个公共资料库。
△ 花一些时间召开会议,在客户讲述时,尽量不要发表你个人的意见。让客户畅所欲言,注意倾听客户的每一个建议、请求或想法。
△ 注意那些你添加的而没有得到用户许可的信息。
△ 应早确立项目使用的范围,并始终牢记在心。这样做可以避免日后开发的项目过大或遗漏了有用的东西。编写项目操作范围的说明书(任务说明或任务对象),用以来描述项目的参数。该说明书应该在项目的设计、实现过程中不断地进行协商、对比、完善,直到最后完成为止。若项目的对象和最终目标在这个阶段不予确认,或者没有记载任何内容,当你和客户的想法出现不一致时,就很可能与用户发生冲突。因此,要确保客户对你将要实现的系统十分清楚,并使用清晰易懂的语言进行描叙,尽可能详细描述项目所有内容。
c、在整个数据库设计期间,客户通常会对字段名、字段定义、业务规则、用户界面和颜色做一些修改,为此,你要做好思想准备。无论客户有什么要求,都应该给予支持,这个项目最终要由用户控制使用,所以你必须要使系统能够灵活地适用各种用途的变化,不管是次要的还是主要的,但对于这些客户的想法都要在客户在设计阶段对你做出的决策确认签字的基础上。
因为在任何时候,客户都有可能对你说,“怎么这里少了一项”、“我根本没这样说”等等。如果你在说话时,手中没有文档为自己撑腰,就会带来很多麻烦。因此,保存文档,如果你做出的决策与客户所说的不同,就应该利用文档来证明自己决策的正确性。
d、数据库原型作为公司与客户签定合约时相互交流信息所使用的画面。每次协商都要借助于开发的原型,它可以很好的反映开发商最终开发的产品。数据库设计者可以利用其为工作模型,设计文档所使用,避免用户所需信息的缺失。
e、与客户商谈时应注意,不要抢先发言;威胁客户;以及在他们向你讲述他们想要做的事情之前大谈你的看法,而不顾用户的期望都有可能造成项目的失败。与客户进行友善地商谈是我们获得设计信息得坚实基础。如果基础不牢靠,最终的产品也不会成功。在向客户提出:
1、谁使用这些数据?
2、如何使用这些数据?
3、客户需要那些报表?
4、以前数据处理办法?
5、由那些规则控制数据的使用?
这几个问题都很有必要了解清楚。
2、逻辑设计阶段
a、我认为在逻辑设计阶段,应禁止谈论性能问题,应该瞄准概念模型。作为一般建议,设计者最好尝试规范化尽量高的级别。如果在系统测试中,发现了性能问题,则可以反向规范化这个系统。但我们永远不要为了调整应用程序的性能而放弃规范化的结构。所以,提倡等到物理模型化阶段或至少迫不得已的理由再反向规范化。
b、在逻辑设计结束,下一步开始时,建议考虑一下以下问题:
1、数据的用法
报表的处理;数据的使用和所有权;与外部系统的接口;数据转换计划
2、容量的测定
表和数据库的增长
3、项目计划
4、最后的文档复审
通读所有文档,并对其修改和校准。使客户在合同上签字。
c、作为设计者,你还应对客户在未来可能产生的需求进行必要预测和文档编写。这样可以在客户未来的业务到来时,可以获得更多的操作时间。

结束语
当然,随着数据库技术的发展,各种技术,新方法都会不断的出现。这都需要我们在纷繁错杂中去探寻,去发掘。

参考文献
1 Louis Davidson编著,《SQL SERVER 2000数据库设计权威指南》 中国电力出版 2003
2 George Reese,Randy Jay Yarger,Tim King Gugb E. Williams著 《MySQL权威指南》:中国电力出版社 2003

创新谈-数据库概念设计之几点见解-吴雨光相关推荐

  1. E-R方法进行数据库概念设计

    0.试述采用E-R方法进行数据库概念设计的过程. 答:采用E-R方法进行数据库概念设计,可以分成3步进行:首先设计局部E-R模式,然后把各局部E-R模式综合成一个全局的E-R模式,最后对全局E-R模式 ...

  2. 论文中如何写mysql的介绍_论文中数据库概念设计怎么写

    试论网络课程的艺术设计 [摘 要] 网络课程的设计不仅仅是一个计算机技术问题和教学问题,更是一个艺术问题,网络课程的设计水平直接体现设计者的艺术修养.网络课程设计最常用的载体是网页,网页的艺术设计,日 ...

  3. 删库不必跑路,谈数据库删除设计

    作者:杜哥 原文链接:https://my.oschina.net/yangyishe/blog/3138204 1 常见删除策略 凡是做业务逻辑系统, 总是离不开对删除逻辑的处理. 本文论述重点是伪 ...

  4. 计算机辅助概念设计的内涵,12 计算机辅助概念设计.doc

    12 计算机辅助概念设计 第1章 绪 论 1.1 产品创新的核心--产品概念设计 中国已经成为工业生产的大国,但还不是工业生产的强国.我国的产品大多以OEM贴牌加工的方式变成了外国的货品,而即使是我们 ...

  5. 数据库课程设计——学生宿舍信息管理系统

    数据库课程设计--学生宿舍信息管理系统 目录 1.设计目的... 2 2.任务与要求... 2 3.学生宿舍管理系统课程设计... 2 3.1 引言... 2 3.2需求分析... 2 3.2.1. ...

  6. 数据库课程设计——火车票售票系统

    摘要 数据库课程设计的题目,设计了一个火车票售票系统,实现了列车信息查询,车票查询及购买,订单查询,个人信息管理等功能,数据是从12306爬取的真实数据. 项目链接 前端项目链接:https://gi ...

  7. 数据库表设计(一)——基本原则和概念

    数据库表设计的技巧 1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对 应且只对应一个实体.在特殊情况下,它们可能是一对多或多对一的 ...

  8. Python 基于python+mysql浅谈redis缓存设计与数据库关联数据处理

    基于python+mysql浅谈redis缓存设计与数据库关联数据处理 by:授客  QQ:1033553122 测试环境 redis-3.0.7 CentOS 6.5-x86_64 python 3 ...

  9. 朱峰谈概念设计(七)创作性绘画教程

    这个月我会动笔给大家演示一下,看看我如何为游戏或者电影创作一张概念绘画. 这个教程总述了我过去几个月谈到过的所有话题,还讲解了我每一步的细节工作. 我会尝试着用4个小时左右的时间来完成这幅作品-4个小 ...

最新文章

  1. codeforces 700B Connecting Universities
  2. win7(x64)安装oracle 10g 32位的方法
  3. 【C语言】switch…case无break情况(2)
  4. Universe Naming Rule
  5. java applet配置_配置Java Applet的运行环境
  6. matlab 捕食者和猎物,MATLAB - 追求曲线(捕食者/猎物)
  7. HashMap是如何工作的
  8. 【WebRTC---入门篇】(五)Web服务器原理与Nodejs搭建
  9. 自定义标签 (choose)
  10. 第一章、第一节 Angular基础
  11. 你应该要掌握的7种回归分析方法
  12. 紫皮java_java如果已知一个日期为2007/3/8,求10天后是哪一天,367天后呢
  13. SAP License:SAP系统与ERP系统的区别是什么?
  14. 【TCP/IP】TCP的三次握手和四次挥手
  15. JsChart组件使用
  16. 苹果Mac突然没有声音,3 种方法快速检测
  17. 贝叶斯(三)先验分布的确定
  18. 北京大学冬令营(PKUWC2018)总结
  19. 安装AAE v11.x Control Room简易教程
  20. 使用unity制作的一款生存类游戏demo(一)

热门文章

  1. android 来电压力测试,50次之后,来电无法唤醒屏幕
  2. 利用json+webservice实现android访问远程数据库,利用JSON+WebService实现Android访问远程数据库...
  3. 东师《近代物理实验》离线作业网考
  4. 遇到问题 SCO UNIX 不能TELNET 本机
  5. 爬虫 JavaScript 逆向进阶!利用 AST 技术还原混淆代码
  6. ndk开发入门!对Android开发的现状和未来发展的思考,灵魂拷问
  7. opencv接口那些不为人知的事!
  8. Python:函数的参数、混搭、开包
  9. 无人便利店和无人售货机的区别在哪
  10. 7、PN结的电容效应