期末考试结束了,寒假全职生活如期而至,终于可以开始全身心的投入我的机房重构了。又是一个新的项目,万事开头难,但不开头更难。自己也只能是一步一步往上爬,机房重构便从数据库设计开始。
    回想去年的自考学习,《数据库系统原理》中的知识就可以在机房重构的时候好好应用一把了。第二章的《数据库设计和ER模型》很仔细地教了我们如何进行数据库设计。所以,在参考自考书的基础上,把重构时的数据库全新地设计了一番。
    首先明确数据库系统的生存期一般可划分为七个阶段:规划、需求分析、概念设计、逻辑设计、物理设计、实现、运行维护。有了第一遍机房收费系统的经验基础,对该系统的需求有了一定的了解,下面就从采用ER模型的数据库概念设计步骤开始写起,看看数据库是怎么一步一步设计的。
一.设计局部ER模型
    1.确定局部结构范围。划分方式一般有两种,一种是依据系统的当前用户进行自然划分,例如,机房收费系统中的用户包含学生、操作员和管理员三种用户类型;另一种是按用户要求数据库提供的服务归纳成几类,使每一类应用范文的数据显著地不同于其他类,然后为每类应用设计一个局部ER模型。例如,机房收费系统中的操作员下可划分为:注册、充值、退卡等等几类。这里我将采用第二种方式设计。
    2.定义实体。任务就是从信息需求和局部范围定义出发,确定每一个实体类型的属性和键。这里我定义的实体包括:学生、操作员和管理员。
    3.定义联系。用于刻画实体之间的关联。依据需求分析的结果,考察是否存在联系。若有联系,进一步确认是1:1、1:N,还是M:N等。
    4.分配属性。确定属性的原则是:属性应该是不可再分解的语义单位;实体与属性之间的关系只能是1:N的;不同实体类型的属性之间应无直接关联关系。
二.设计全局ER模型
    1.确定公共实体类型。一般把同名实体类型作为公共实体类型的一类候选,把具有相同键的实体类型作为公共实体类型的另一类候选。
    2.合并局部ER模型。合并原则:首先进行两两合并;从公共实体类型开始,最后再加入独立的局部结构。
    3.消除冲突。包括属性冲突,即属性值的类型不同,如数据有字符串类型,数值型等;结构冲突,同一对象在不同应用中的不同抽象,如管理员,有时充当实体,有时又是另一应用的属性;命名冲突,这在我第一次机房中的数据库设计中有很大的共鸣,那时候同一字段都采用了不同的命名,所以自己总是得回头看看在某个表中它的实际含义。
三.全局ER模型的优化
    1.合并实体类型。一般在权衡利弊后,可以把1:1联系的两个实体类型合并。
    2.消除冗余属性。一般同一非键的属性出现在几个实体类型中,或者一个属性值可从其他属性的值导出,此时,应把冗余的属性从全局模型中去掉。
    3.消除冗余联系。
在经过了上面三个大阶段之后,机房重构的ER图(不包括各个属性)就在下面了:

接着根据将ER模型向关系模型的转换,就可以将关系模式给设计出来了。
    1.如果联系是1:1,可以在两个关系模式中的任意一个的属性中加入另一个模式的键作为外键。
    2.如果联系是1:N,则在N端实体类型转换成的关系模式中加入1端实体类型的键作为外键。
    3.如果联系是M:N,则将联系类型转换成关系模式,其属性为两端实体类型的键作为外键。
下面便是机房重构数据库系统的设计表:

    最后,就是要真正开始创建新的数据库,数据表了。第一次机房的时候就是在SQL中用代码编写的,不过对于其中的各个字段的数据类型都是很含混,一点也不严谨。所以,在这次重构的时候,需要将某些类型修改一番,不可能会做到完美,但必须要做的比前一次好。在浏览相关网页的时候,发现还可以将在Visio画出的ER图直接生成数据库系统的各个表,以后一定得试试。
    学习心得:
    总体说来,之所以在机房重构的这一次将数据库的设计也详细地做了一个总结,就是在自考中学过。那时候,学三范式,画ER图,写关系模式,都只是为了考试,没有实践,更多的只是做题,也就那样过去了,而这次机房重构是一次将其加以应用的好机会。
    在此过程中,虽然花费了不少时间,但相信,数据库设计得好些,后面的路会顺利些。从这几天的机房重构过程中,我想的最多的周杰伦《蜗牛》中唱的那一句歌词:我要一步一步往上爬。我不是想做蜗牛,但我需要学习蜗牛的精神。
    所以在机房重构这阶段中,我将用此句话来总结出我的系列文章,敬请期待~~

【机房重构】一步一步往上爬——数据库设计相关推荐

  1. 【机房重构】一步一步往上爬——验收给了我什么

    整个机房重构过程中,一共经历了两次验收.一次是关于系统编程:一次是关于画图与文档,每一次,师父都是耐心.细心地指导.要问验收给了我什么,看下面的博客内容便清楚了.个人机房重构可分为两个阶段,前期主要是 ...

  2. 【机房重构】一步一步往上爬——不仅仅是三层

    不知道大家还记不记得之前学习的UML中一个单独列出来的一种图,也就是这次我想说的包图.那个时候,让我们画机房收费系统的各种图,用例图.类图等等,通过自己反复琢磨,还都勉勉强强画出来了.唯独只有包图,我 ...

  3. 简单四步開始树莓派上的Docker之旅

    简单四步開始树莓派上的Docker之旅 大概这篇博文发表之后,应该算是我个人的第一篇翻译作品了,翻译的可能不是非常到位,望各位看官大刀砍过来. 原文链接:http://resin.io/blog/do ...

  4. 一步一步指引你在Windows7上配置编译使用Caffe(https://github.com/fengbingchun/Caffe_Test)

    之前写过几篇关于Caffe源码在Windows764位上配置编译及使用过程,只是没有把整个工程放到网上,最近把整个工程整理清理了下,把它放到了GitHub上.下面对这个工程的使用作几点说明: 1.   ...

  5. 手挽手带你学React:四档(上)一步一步学会react-redux (自己写个Redux)

    手挽手带你学React入门四档,用人话教你react-redux,理解redux架构,以及运用在react中.学完这一章,你就可以开始自己的react项目了. 之前在思否看到过某个大神的redux搭建 ...

  6. 教你一步一步用C语言实现sift算法、上

    原文:http://blog.csdn.net/v_july_v/article/details/6245939 引言:     在我写的关于sift算法的前倆篇文章里头,已经对sift算法有了初步的 ...

  7. C语言实现寻找极值点,九之再续:教你一步一步用c语言实现sift算法、上

    教你一步一步用c语言实现sift算法.上 作者:July.二零一一年三月十二日 出处:http://blog.csdn.net/v_JULY_v 参考:Rob Hess维护的sift 库 环境:win ...

  8. python str 换行_一步一步学Python3(小学生也适用) 第八篇: 字符串(str)类型(上)...

    前面两篇,我们学习了整型(int)和浮点型(float),这一篇我们将学习Python的字符串(str)类型. 一.Python字符串(str)类型 Python的字符串(str)就是若干个字符的集合 ...

  9. 魔方教程一步一步图解(史上最简单的魔方入门教程)新手一看就会

    IT数学系列最常见的魔方是三阶魔方,是匈牙利布达佩斯建筑学院厄尔诺·鲁比克教授在1974年发明的.魔方教程一步一步图解新手一看就会. 魔方教程一步一步图解 魔方共6色6面,每面又分为中央块(最中间的块 ...

最新文章

  1. python【力扣LeetCode算法题库】1160-拼写单词
  2. 牛客网暑期ACM多校训练营(第一场)J Different Integers
  3. WebSocket 的通信机制
  4. Mybatis实现CRUD操作
  5. 【Python】Python中的关键字
  6. 解析函數論 Page 28 連續復變函數的最簡單的性質
  7. c++ 使用nacos_超赞!用阿里开源的Nacos做SpringCloud注册中心真贴心...
  8. 为何马云“惧怕”沃尔玛
  9. Shell脚本监控CPU、内存和硬盘利用率
  10. python 输出函数表达式——LaTeX数学公式
  11. WebService 教程
  12. html5 侧面板展开折叠,css实现侧边展开收起
  13. three.js 05-01 之 PlaneGeometry 几何体
  14. 基于微信小程序的便捷记账本家庭个人理财小程序#毕业设计
  15. 全国多年太阳辐射空间分布数据1981-2022年、气温分布数据、蒸散量数据、蒸发量数据、降雨量分布数据、日照数据、风速数据
  16. Banner实现图片轮播
  17. NameNode HA的部署方法
  18. 千亿电子签赛道,谁是中国版DocuSign?
  19. Open CASCADE安装及+MFC
  20. ▲ Android自定义方框EditText注册验证码

热门文章

  1. 【C语言每日一练——第1练:字母大小写转换】
  2. android根据两点经纬度计算方位角
  3. 2018年的25个最佳数据可视化
  4. 数组中有两种数出现奇数次,其他数出现偶数次,打印奇数次的数
  5. 单灯闪烁c语言程序,51单片机,C语言编程,控制指示灯闪烁的频率
  6. 手机屏幕如何投屏到电脑显示器上?
  7. 斗鱼直播Android开发二面被刷,跳槽薪资翻倍
  8. 关于出差,也是外包的一些事情
  9. SSL基础:20:使用x509子命令为其他证书签名
  10. 新点软件怎么导入清单_表格软件excel怎样导入数据 | 新点软件怎么导入excel清单表格 表格有什么要求???...