从0到1的建模

      单纯从交互图抽离建立映射关系,不符合3NF,会导致一些代码冗余,耦合交错,以及表的冗余,随着系统逐渐扩容,分库分表也会逐步困难,怎么样用一种较为先进建模方法为标尺进行构筑?本文做一些详细的分解阐述。
      设计一个大型软件系统,就像设计一座高楼大厦,需要各种各样的“图纸”。在软件设计中,一般把类似于“图纸”的部分称为“模型”,并把设计软件模型的过程称为“软件分析建模”。
      李凯教授曾对存储的意义思索了一年,花一些时间在本质问题上的思索还是值得的。
      通常一个系统的架构至少要从实体关系层、业务逻辑层和表现层等层次考虑。万丈高楼从地起,实体关系层(或者说数据模型)永远是最重要的。对一个项目,我通常会首先花一个月的时间对实体关系做仔细的分析和设计,而其要点是实体及关系的设计要用一条清晰、简洁的关系脉络将各实体间的关系表现出来。
       所谓实体关系的清晰脉络,就是要找到若干核心实体并围绕核心实体来构造关系,非核心实体之间的关联尽量通过核心实体实现,避免随意的相关。这样的设计通常会导出若干聚焦的实体团块,团块内部关系密切,团块之间关联简洁。这样设计的好处是既符合实体的现实关联方式,也有利于在实现分布存贮时分割。
以下这张图兼具美感,系统大约在31张表,如下图所示:

曾对一些系统做逆向工程,无法还原ERD,大于50表的系统,如果不进行建模,后续系统会越来越臃肿,依然需要进行重构。
一个健全的系统,包括以下几种元素:

大体上分析的步骤如下所示:
(1)SWOT分析
(2)思维导图
(3)BPMN详细勾勒
(4)DFD数据流程图
(5)ERD建模

一、什么是SWOT分析?
公司需要了解其业务环境的变化才能实现业务目标。SWOT分析通常用于企业的战略决策。在战略规划中,SWOT应该被视为一种常用的分析方法,即力量-竞争优势,劣势-劣势,机会,威胁。
优缺点是公司(产品)的内部因素,受产品质量,材料,人员,机器,渠道和服务等因素影响。机会和威胁是公司(产品)的外部因素,并受市场,经济,社会和政策的影响。SWOT的分析指导组织确定产品的优势,劣势,机会和威胁。只有更好地了解自己,了解对手并了解环境,才能保持适应性,并更快,更好地应对变化。
SWOT分析一目了然:



二、什么是思维导图?
思维导图是使用最广泛的想法管理工具之一。
这是一张视觉地图,显示您的想法。
























三、什么是数据流程图?
数据流图(DFD)是软件设计中经常使用的图。它直观地表示给定系统中整个过程的数据流。
DFD显示将输入到流程和从流程输出的信息的种类以及数据的存储位置。

思维导图是使用最广泛的想法管理工具之一。

这是一张视觉地图,显示您的想法。

DFD流程图

DFD类型
DFD有两种主要类型:物理和逻辑。
物理DFD:通过显示“如何”实施系统,着重于系统的物理方面
逻辑DFD:着眼于系统的更高层次及其实现的“目的”。

【实验教学管理系统需求分析】:
4.1、需求获取
4.1.1、获取业务需求
       信息工程学院的实验数据如实验报告、实验室使用记录、实验仪器使用记录等都采用纸质记录,造成保存不便,统计检索速度慢、不准确,管理繁琐,数据不完整等。
      实验教学管理系统能够实现实验数据电子化,方便对实验教学过程中产生的数据进行管理,节约教师学生实验时间、节约人力物力资源,方便教学管理人员对数据进行统计分析,提高实验教学管理效率,促进管理规范化、信息化、正规化。

4.1.2、获取用户需求
系统主要角色分三类:学生、教师、管理员。
管理员所需主要功能包括:
学生管理、教师管理、机构管理、课程管理、课表管理、仪器使用记录管理、实验室、管理、统计管理、课表管理、管理员管理、注销等功能。
教师所需主要功能包括:
个人信息管理、实验室使用记录管理、师生交流、批改报告、实验报告成绩管理、实验项目管理、注销等功能。
学生所需主要功能包括:
个人信息管理、仪器使记录管理、师生交流、实验报告管理、查看实验报告成绩、注销等功能。

①加工说明
添加:教师填写实验项目名称、类型、学时、目标、内容等信息,验证合格后保存到实验项目表中。
查询:教师可以查看自己课程的实验项目,选择一个可以查询项目详细信息。
修改:教师查看项目列表,选择需要修改的项目,读取原来的内容,进行修改,验证合格后将项目保存到实验项目表中。
删除:教师可以删除一个或多个项目。
统计:管理员可以统计一门课程的项目数,可按学期、专业统计实验类型、实验数量、类型比率等统计。

②数据流说明
添加项目请求:教师添加实验项目的请求。
查询请求:教师查询本人添加的实验项目请求。
删除请求:教师请求删除选定的实验项目请求。
修改请求:教师请求修改选定的实验项目的请求。
添加的项目:教师新增的实验项目。
删除的项目:选定的需要删除的实验项目。
修改的信息:教师修改后的实验项目。
统计请求:管理员统计实验项目的请求,包括根据学期、课程、实验类型等条件的请求。
项目统计信息:根据管理员输入的条件,返回统计信息。
项目信息:实验项目的信息,包括项目名称、性质、学时、项目要求等。
③数据存储及数据项说明
实验项目表=项目ID+项目名称+项目类型+项目目的+项目环境+项目状态+开课课程+教师ID+开设学期。
项目ID:整型,长度11,不允许为空。
项目名称:字符类型,长度20,不允许为空。
项目类型:字符类型,长度20,不允许为空。
项目目的:字符类型,长度255,不允许为空。
项目环境:字符类型,长度255,不允许为空。
项目状态:字符类型,长度11,不允许为空。
开课课程:字符类型,长度11,不允许为空。
教师ID:整型,允许空。
开设学期:字符类型,长度11,不允许为空。
2)实验报告管理可以细化为批改、导出、成绩统计、查看、修改、添加、查看成绩7个子加工,每个加工都要同实验报告表进行交互,为了避免数据流交叉,将实验报告表出现2次。与数据存储相连的数据流可以没有名称,其他数据流必须有名称,如图2-5所示:

1层数据流图-实验报告管理

①加工说明
添加:学生请求添加实验报告,按照实验学期、项目、姓名、班级、实验室,填写实验目的、内容、结论等信息,验证合格后保存到有以实验报告表中。只有已提交的实验报告,教师才能看到。
查看:学生可以查看所有实验报告(提交的和未提交的)、教师能查看所有提交的实验报告。
修改:学生可以查看自己所有的实验报告,选择一个查看详情并请求修改,将修改信息填写完成后,验证合格保存到实验报告表中。
批改:教师能够查看自己课程的所有学生提交的实验报告,选择一个查看详情进行批改,批改要写评语和给出实验成绩。
导出:教师可以按实验项目导出所有学生提交的实验报告。
成绩统计:教师批改完成后可以查看所有学生的成绩,统计出及格、不及格、优秀学生人数。
查看成绩:教师批改后,学生在实施报告列表中可以看到实验成绩,通过详情可以看到教师的评语和成绩。

②数据流说明
批改请求:教师请求批改选择的实验报告。
成绩:教师录入的实验报告成绩。
查询请求:教师查询实验报请法度,请求的条件可根据实验项目和实验班级来查询。学生的查询请求依据学生本人信息和课程来查询。
导出请求:教师请求导出一个班的某个实验项目的所有实验报告请求。
添加报告请求:学生请求添加实验报告。
实验报告:包含课程信息、实验项目、实验室、教师、学期、实验目的、实验要求、实验内容、实验结果等信息的实验报告。
拒绝信息:教师批改实验报告后,学生提出请求修改实验报告被拒绝的信息。

③数据存储及数据项说明
A、实验报告表=实验报告ID+学期+课程+实验项目ID+班级+学生+实验室+填写时间+内容+结果+评语+成绩+教师ID+批阅时间+实验报告状态。
实验报告ID:整型,长度11,不允许为空。
学期:字符类型,长度11,不允许为空。
课程:字符类型,长度11,不允许为空。
实验项目ID:整型,长度11,不允许为空。
班级:字符类型,长度11,不允许为空。
学生:字符类型,长度11,不允许为空。
实验室:字符类型,长度11,不允许为空。
填写时间:字符类型,长度30,不允许为空。
内容:文本类型,允许空。
结果:文本类型,允许空。
评语:文本类型,允许空。
成绩:浮点类型,不允许为空。
教师ID:整型,可以为空。
批阅时间:字符类型,长度20,允许空。
实验报告状态:整型,长度11,不允许为空,取值0,1,2

B、学期表=学期ID+学期名称+学期状态
学期ID:整型,长度11,不允许为空,主键
学期名称:字符类型,长度50,不允许为空。
学期名称:字符类型,长度50,不允许为空。
学期状态:字符类型,长度11,不允许为空。

C、实验室表=实验室ID+实验室编号+实验室名称+实验室位置+实验室机器数量+实验室联系方式+实验室方式
实验室ID:整型,长度11,不允许为空。
实验室编号:字符型10,不允许为空,且不允许重复。
实验室位置:字符型20,允许空。
实验室机器数量:整型,11位,允许空。
实验室机器数量:整型,11位,允许空。
实验室联系方式:字符型,20位,允许空。
实验室状态:整型,11位,允许空。

D、课程表=课程ID+课程编号+课程名称+课程类型+课程学分+开设专业+开设学期
课程ID:整型11位,不允许空。
课程编号:字符型,20位,不允许空,唯一。
课程名称:字符型,20位,允许空。
课程类型:字符型,20位,允许空。
课程学分:浮点型,允许空。
开设专业:整型11位,与专业表关联。
开设学期:整型11位,与学期表关系。

E、教师表=教师ID+教师工号+教师姓名+教师职称+教师密码+教师性别+教师电话+教师院系
教师ID:整型,11位,不允许空。
教师工号:字符型,15位,不允许空,唯一。
教师姓名:字符型,20位,不允许空。
教师职称:字符型,20位,不允许空。
教师密码:字符型,50位,不允许空。
教师性别:字符型,4位,允许空。
教师电话:字符型20位,允许空。
教师院系:整型11位,不允许空,与院系表关联。

3)仪器使用记录管理
仪器使用记录管理可以细化为添加仪器使用记录、删除仪器使用记录、查询仪器使用记录、导出仪器使用记录、统计仪器使用记录5个子加工,每个子加工都需要与数据存储实验仪器使用记录表进行交互,其数据流图如图2-6所示:

图2-6仪器使用记录管理数据流图

数据存储及数据项说明如下:
A、班级表=班级ID+班级编号+班级名称+学生人数+所属专业
班级ID:整型11位,不允许为空。
班级编号:字符型8位,不允许空。
班级名称:字符型20位,允许空。
班级名称:字符型20位,允许空。
学生人数:整型11位,允许空。
所属专业:整型11位,与专业表关联。

B、课表=课ID+周几+上课时间+单双周+学期ID+班级ID+实验室ID+课程ID+教师ID
课ID:整型11位,不允许空。
周几:字符型15位,允许空。
上课时间:字符型15位,允许空。
单双周:字符型15位,允许空。
学期ID:整型11位,与学期表关联。
班级ID:整型11位,与班级表关联。
学期ID:整型11位,与学期表关联。
班级ID:整型11位,与班级表关联。
实验室ID:整型11位,与实验室表关联。
课程ID:整型11位,与课程表关联。
教师ID:整型11位,与教师表关联。

数据加工说明如下:
检查状态:系统接收到学生修改请求后,首先检查实验报告状态,若状态为已经批改,则拒绝修改请求;若未批改,则允许修改。
读取内容:从数据库中读取原来的实验内容。
检查:修改的信息是否符合数据要求,不符合则返回不合格的信息,合格进行提交。
提交:将修改后的信息提交到数据库,保存到实验报告表。

5)对图进行检查和合理布局,主要检查分解是否恰当、彻底,DFD中各层是否有遗漏、重复、冲突之外,各层DFD及同层DFD之间之间关系是否正确及命名、编号是否确切、合理等,对错误及不当之处进行修改。
修改后和用户进行交流,在用户完全理解数据图的内容的基础上征求用户的意见。

4.2.2、建立数据模型
(1)找出所有实体,确定实体属性。
实验教学管理系统的主要实体及其属性如下。
管理员:管理员帐号、管理员密码、管理员名字、管理员联系电话。
院系:院系编号、院系名称、院系联系电话、院系地址。
专业:专业编号、专业名称、所属院系。
班级:班级编号、班级名称、班级人数、所属专业。
学生:学生学号、学生姓名、学生性别、学生密码、所属班级。
教师:教师工号、教师姓名、教师性别、教师密码、教师职称、教师电话、所属院系。
实验室:实验室编号、实验室名称、实验室位置、实验室机器数量、实验室联系方式、开放状态。
实验项目:项目名称、项目类型、项目目的、项目环境、项目状态、开设课程、教师ID、开设学期。
学期:学期名称。
实验仪器使用记录:仪器使用记录日期、工作内容、运行启动时间、运行终止时间、使用附件、设备编号、机器IP、实际使用时数、使用人、教师签名、备注、实验室、学期。
实验室使用记录:实验室使用记录日期、工作内容、实验时间、实验人数、仪器使用情况、设备编号、机器IP、教师签名、实验班级、实验室、学期。
实验报告:学期、课程、项目、班级、学生、实验室、填写实验报告时间、实验内容、实验结果、教师评论、实验内容、实验结果、教师评论、实验报告成绩、教师ID。
课表:学期、班级、实验室、课程、教师、周、上课时间、单双周制。
留言:交流标题、交流内容、交流状态、教师回复、学生、教师。

(2)确定实体间的联系,画出实体联系图(E-R图)。
一个院系可以拥有多个专业,一个专业属于一个院系,关系是一对多。
一个专业可以拥有多个班级,一个班级属于一个专业,关系是一对多。
一个班级可以拥有多个学生,一个学生属于一个班级,关系是一对多。
一个院系可以拥有多个教师,一个教师属于一个院系,关系是一对多。
一个教师可以教授多门课程,一门课程可以被一个或多个教师所教授,授课与教师的关系是多对一,且授课与课程的关系也是多对一,以授课表为连接,实现教师与课程的关系是多对多。
一个课程可以有多个实验项目,一个实验项目属于一个课程,关系是一对多。
一个实验项目可以有多个实验报告,一个实验报告属于一个实验项目,关系是一对多。
一个院系可以有多一个实验室可以有多个实验室使用记录,一个实验室使用记录属于一个实验室,关系是一对多。个实验室,一个实验室属于一个院系,关系是一对多。
一个教师可以写多个留言,一个留言属于一个教师,关系是一对多。

实体及其联系如图2-8所示:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,591评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,448评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,823评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,204评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,228评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,190评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,078评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,923评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,334评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,550评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,727评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,428评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,022评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,672评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,826评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,734评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,619评论 2 354