根据我们小组数据库设计的整个流程,我们将整个数据库设计划分为两个具体的阶段,在每个阶段需要进行不同的准备,有不同的注意事项,接下来我们将结合在数据库设计过程中遇到的一些问题和困难,提出自己的一些观点,希望能对大家有所启发。如有异议,欢迎指正。

一、准备阶段:

在数据库设计前,需要准备以下几样东西:

1:设计工具

数据库设计过程中会用到一些软件,例如powerdesigner(实际上不仅仅是用于数据库设计)。想要设计好数据库,熟练运用软件是必不可少的。至于如何学习使用其进行数据库设计,主要的方法还是利用其自带的文档/网上找资料。

在使用该软件之前,最好先从E-R图开始入手,同时数据库的基本知识也要有,这些都是数据库设计的基础。

2:用例图

用例图能够帮助我们理清各类用户,以及他们所需要功能。有这些数据,我们可以划分不同的功能模块,然后再对每个功能模块设计其对应数据库。这样做就不会出现不知道从哪张表开始设计的情况。不同功能模块相对独立,这样做就可以将设计任务分成若干部分。至于不同的用户则是这些功能模块的所有者,并起到桥梁的作用。

以我们的项目为例:用户只有两类,医生和患者,医生功能有查看并处理预约,自我提醒,积分,提醒患者,上传资料等,患者功能主要有预约并且及时查看提醒并回复。

实际设计步骤中也是按照模块一个一个设计的。

		      图1 项目总的用例

3:需求文档

需求文档中主要提供了对各种功能以及相关数据的详细描述。相关数据的主要来源是我们设计的表中的属性。除此之外,需求文档还可以揭示一部分的关系,例如实体和实体之间的联系(一对一,一对多,多对多等)。

            图2 预约用例说明

图2 展示的只是预约功能中一部分,我们可以从中知道患者预约时需要选择(业务和时间),其中业务显然是医生方提供的。除此之外,不允许患者重复预约(对预约的约束)。

详细的需求说明在设计数据库的过程中是十分重要的,需要弄清楚整体需求之后才能开始设计。当然,需求说明并不是万能的,有些说明中提供的数据可能不完善,或者是描述不清。此时可以选择和相关人员交流,或者通过参考已有案例来填充这部分。

二、设计

概念数据模型(CDM)是我们的本次设计的重点。具体的任务有以下几个

1:实体的建立

建立一个实体并不容易,既要考虑实体所具有的属性,以及属性的数据类型,属性的默认值,一些简单的约束,是否为空,还要考虑主键,候选key(标识符)。

其中一个比较常规的做法是为每一张表添加一个标号属性(并不一定有用),并作为主键,以此作为唯一识别的标识符,同时也作为多表关系中的外键。

当然,这么做比联合主键这类利用其他属性作为主键的做法要简单,但是在数据的约束上可能会有更高要求。因为原来作为主键可以让其不重复,但是不作为主键可以必须使用unique约束来完成这一点。

下图3中就是使用编号作为主键,但是编号本身没有意义,因此实际过程中可能需要患者姓名+电话号码或者单纯的电话号码作为标识符。

           图3 患者基本信息实体

2:关系的确定

关系是实体和实体之间的桥梁,无论是一对一,一对多,还是多对多关系,都是如此。值得注意的是,一对一其实是指在A表中的一条对应B表中的一条记录。关系之间还有强相关,弱相关,弱相关(只对与一方来说,可能另外一方是强相关)是指A表中的一条记录不一定在B表中有对应记录。具体可以在关系的描述中看到。

至于带属性的关系其实可以转换成实体,这里就不再阐述了。

图4中只是一种实现方式,在当前业务,账户和用户是一对一的关系,即一个用户只有一个账号,一个账号对应一个用户。(至于那种相同的注册两个账号,看作是两个不同的人)

         图4 账号和患者基本信息

3:PDM

PDM主要由CDM转换而成。值得注意的是,PDM是最终参考的依据,外键能够显示在PDM中,因此具有很强的参考价值。但是要注意由CDM直接生成的PDM有时候并不完全满足我们的要求,因此,在生成PDM之后,必须要进行检查。

4:视图和索引

我们认为视图和索引的创建是与具体的应用相结合的,因此这两个部分我们还在设计之中,并没有具体的实现。

三、总结:

数据库设计有一定难度,我们组是一边探索一边设计的,并且在过程中积极讨论,询问老师获取意见,修改了很多次才有现在的这个版本,因为需求不是一成不变的。在此后的开发过程中,我们还会根据需求的变动与实际情况对数据库进行调整,使其更加符合项目的功能需求与生活应用,并且要积极在组内,小组之间,以及和老师,就设计中出现的问题展开讨论,寻求解决方案。同时希望小组成员能在这次数据库设计中掌握基本的设计原理与概要。

我们在数据库设计上花费了很多时间和精力,在后续开发过程中我们会充分利用我们设计出来的数据库。

祝各位开发顺利!

医生智能提醒小程序数据库设计心得——Legends Never Die的更多相关文章

  1. 微信小程序js学习心得体会

    微信小程序js学习心得体会 页面控制的bindtap和catchtap 用法,区别 <button id='123' data-userDate='100' bindtap='tabMessag ...

  2. 从微信小程序开发者工具源码看实现原理(一)- - 小程序架构设计

    使用微信小程序开发已经很长时间了,对小程序开发已经相当熟练了:但是作为一名对技术有追求的前端开发,仅仅熟练掌握小程序的开发感觉还是不够的,我们应该更进一步的去理解其背后实现的原理以及对应的考量,这可能 ...

  3. 小程序UI设计(4)-符合视觉规范-表单输入视觉规范

    下图是微信官方的要求 按照小程序UI设计(3)-符合视觉规范-列表视觉规范同样的方式,我们可以设计一样符合规范的输入项目.规范中没有说明padding-left的大小,我们暂定是15px.这样最外层v ...

  4. 小程序UI设计(3)-符合视觉规范-列表视觉规范

    上一篇我们介绍了字体规范,此贴介绍一下在列表中如何组合使用.下图是微信官方的要求   在工具中通过拖拽组件可以制作出一样的效果拖拽一个WViewRow.这个组件是小程序的view,flex-direc ...

  5. 小程序UI设计(1)-布局

    工欲善其事必先利其器.下面为大家介绍一款工具软件,如何做到轻松布局. 工具简介:小程序layout设计工具,可视化方式进行小程序UI设计.通过鼠标拖拽组件方式进行UI布局.工具提供符合微信视觉统一的模 ...

  6. NoiseSystem数据库设计心得-洋芋好想飞

    团队:洋芋好想飞 成员:乔祥硕 石高飞 杨慧慧 梁家豪 潘景渝 整理:乔祥硕 PM乔祥硕: 10月25日14:30到17:30,10月27日14:30到17:30,11月1日14:30到17:30,这 ...

  7. 小程序UI设计(10)-巧用模板,事半功倍

    工具中为小程序员们准备了符合微信开发规范的模板.之前帖子中介绍的规范都在模板中已经设计好了,可以直接复制粘贴使用.下图中的样式是从模板直接复制过来的.实际使用时只要更换为自己的图片和文字即可.自动生成 ...

  8. 小程序UI设计(9)-文字排版

    小程序中一般很少大段落的文字,基本是4.5个字的主题.一行标题.一行摘要.两行描述.显示时超出部分用省略号代替.下面结合工具使用介绍一下文字排版的方法.先看效果图.  工具中属性设置如下图:两行文字属 ...

  9. 小程序UI设计(2)-符合视觉规范-字体规范

    下图是微信小程序官方要求字体规范 根据此要求小程序设计工具定制了符合规范的组件.如下图 工具使用时,将左侧组件拖拽到设计区域即可.字体大小和颜色都是按照规范设置的.在使用时根据微信要求在不同位置摆放即 ...

随机推荐

  1. 2019年最新超级有趣好玩的html+css网页布局课程,前端入门基础,html5+css3零基础入门课程-黑马程序员pink老师精心录制

    大家好,我是黑马程序员pink老师!! 本次视频是前端零基础入门的课程,pink老师采取有趣好玩讲法,带你快乐的学习枯燥的html+css知识,学完之后让你能快速布局pc端页面.代码也可以讲的好玩有趣 ...

  2. 1. jQuery中的DOM操作

    1)查找节点 通过jQuery选择器来完成 2)创建节点 创建元素节点:var newTd = $("<td></td>") 创建文本节点:在创建元素节点时 ...

  3. ELK日志分析系统(3)-logstash数据处理

    1. 概述 logspout收集数据以后,就会把数据发送给logstash进行处理,本文主要讲解logstash的input, filter, output处理 2. input 数据的输入处理 支持 ...

  4. java中&和&&

    &和&&都可以用作逻辑与的运算符,表示逻辑与(and) &&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如: If(x==33 ...

  5. 走进JavaWeb技术世界1:JavaWeb的由来和基础知识

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  6. sql 外键 on update cascade 和 on delete cascade 作用区别?

    这是数据库外键定义的一个可选项,用来设置当主键表中的被参考列的数据发生变化时,外键表中响应字段的变换规则的.update 则是主键表中被参考字段的值更新,delete是指在主键表中删除一条记录:on ...

  7. idea 添加 注释 配置

    为类添加自动注释模版 File-->Settings-->Editor-->File and Code Templates 启用该模板才有效一定要勾上 /** * @author : ...

  8. abp(net core)+easyui+efcore实现仓储管理系统——EasyUI之货物管理五 (二十三)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  9. javascript语言学习

    本课将和大家一起学习简单的js dom 操作,涵盖DOM API以及JQuery的方法. 相关简介             JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语 ...

  10. Hadoop和YARN :map+shuffle+reduce走读

    今天做了一个hadoop分享,总结下来,包括mapreduce,及shuffle深度讲解,还有YARN框架的详细说明等. v\:* {behavior:url(#default#VML);} o\:* ...