问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

开发中遇到的关于数据库历史版本设计的问题

发布网友 发布时间:2022-04-11 22:09

我来回答

3个回答

懂视网 时间:2022-04-12 02:31

11数据库中表结构的变更总是一件让人感觉不舒服的事情。 在新增加字段时,如何对以前的操作不产生影响或者将影响降至最低呢? 一种方法:直接在表上增加一个字段,给该字段设置一个默认值,该默认值用于标记以前的数据,然后用新的值来标记以后的数据。 如果

11数据库中表结构的变更总是一件让人感觉不舒服的事情。
在新增加字段时,如何对以前的操作不产生影响或者将影响降至最低呢?
一种方法:直接在表上增加一个字段,给该字段设置一个默认值,该默认值用于标记以前的数据,然后用新的值来标记以后的数据。
如果说是标记的话,那么为什么不在设计的时候就专门建立一个字段,来作为数据的版本标识呢?
但是问题好像没有这么简单,比如:在His系统的设计中,有关科室人员的设计,在最基础的版本中,只需要有科室人员的姓名,登陆密码,编号,所属科室等信息就够了。但是如果医院领导要求在更大的范围内对医院进行信息话的管理,那么在科室人员数据的设计上,就要再增加新的内容,比如:出生日期,家庭住址,学历,职称,是否是党员等等,这些数据该如何处理呢?是重新设计数据库吗?

在设计数据库的时候,里面的数据流程也是数据的生长轨迹,可否专门对生长轨迹进行处理来简化数据流程的处理呢?
用流程数据来代替标记数据。
如:chufang_mx表中,bz为标记该处方的状态:1-划价,2-收费,3-取药,4-退药,5-退费审核,6-退费。
用流程数据表示:建立一个用于维护处方数据流程的表chufang_lc(chufangid, hj,sf,qy,ty,tfsh,tf),每完成对该处方的处理,就将对应的流程数据置为1。作为流程,只要判断当前流程是否处理及上一流程是否处理,就可以知道是否可以处理当前流程。这样就可以轻松维护数据流程了(我现在实在厌烦在数据库的设计文档上标记各种状态值的含义,还有就是判断当前的处理是否满足流程要求,有没有跨过流程处理的可能性。)

对于以上设计,按照数据库的设计原则,可以设计为两个表:流程记录表(流程记录id,流程描述),流程记录明细表(流程记录id,流程记录序号,流程步骤描述,流程执行标记(布尔值)),这两个表中的数据和业务数据对应。
再加上两个流程维护表:流程信息表(流程id,流程描述),流程信息明细表(流程id,流程序号,流程步骤描述)

对于流程维护表,其信息也可以将其绑定于处理这些数据对象上,因为同一个数据集,其处理对象不同,就意味着其处理流程不同,并且可以为处理对象的各个方法标上流程中的处理序号,这样就可以轻松判断处理对象上的某个方法当前是否可以处理他对应的数据了。

对于流程,为什么不直接在设计某个实体的时候,直接给他加上流程编码呢?比如给处方表加上lc,那么定义:lc=1时,处方划价;lc=2时,处方收费。这样也可以体现流程信息。

经过几天这几天的思考,发现同一个数据,在系统流程的不同环节,对其的描述不一样.这就有一点像在现实生活中,对同一个人,处于不同环境的其它人对它的描述肯定不一样。而对于这个描述,其特征应该是复合的,即对于这个人的描述是综合了这个人的一个或者多个特征的组合来完成的。比如说:老师说小明是一个好学生,那么老师说这句话的时候,老师的大脑里一定出现了小明平时的几个特征:上课专心听讲,积极发言,认真完成作业等等。而小明的妈妈说小明是一个乖儿子,妈妈在说这句话的时候,大脑里出现的是小明的其它特征:有孝心,成绩好,能够体谅妈妈等等。这就说明,一个对象在对另一个对象进行处理时,是综合了它的特征的。那么就是说,对象应该有一个它的特征列表,这个特征列表是这个对象在处理中的前提。
呵呵,这个好像有点像游戏设计了。其实在处理商业逻辑中,也应该是这个道理。把那些分散的标记管理起来,然后对商业的逻辑对象进行处理。

根据以上思路,必须在系统中注册各个对象的描述,这些描述是系统数据处理的依据,它对了对象的特征集,而对象的每一个特征都有相应的处理方法。

热心网友 时间:2022-04-11 23:39

你说了这么多都只是在说你打算如何处理“历史记录”,但没有说明你的“历史记录”是怎么一个产生过程,这在项目设计中叫作“需求不清”。
请先表达清楚需求。

热心网友 时间:2022-04-12 00:57

你加个type之后,只要processid,name中的type变了,你就再插入一条processid,name,新type?

为什么不采取另外加个日志表的方式,记录具体信息变更
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
从第一海水浴场到中山路玉姐烧烤怎么走 爱普生针式打印机色带怎么换爱普生打印机出故障了怎么处理 EPSON爱普生打印机色带更换的详细图文教程 EPSON爱普生打印机怎么安装色带? 下泰山游三阳观是什么时候的诗 为何重游泰山三阳观,让我体会到了“一心开,万心明”? 烧水为什么要开着壶盖 水开如果滚多长时间为好 放下名利学会欣赏作文 梦见亲吻金色的人 求助,关于数据库的更改及使用 UNION和UNION ALL两者之间在性能上的区别 SQL语句中:UNION与UNION ALL的区别是什么? 数据库中union 和union all的区别 fm2012自建数据库应该放在什么地方?怎样选择自建数据库进入游戏? Android 中创建的数据库文件默认放在那里的 sqlserver上创建的数据库放在哪的 c#中新建的数据库应该放在哪里才能使应用程序访问的到? 网站的数据库放在哪里,网站的程序又放在哪里? 数据库服务器 的作用是什么,怎么配置它啊? 网站上线时数据库部署在哪 如何部署 SQL 数据库 采用大型关系型数据库,能在windows\UNIX\Linux环境下部署的 电脑坏了?我XP停留在启动画面(就是上面微软大旗,下面一个进度条在爬动)? centos 7.0装完nv驱动,启动画面变蓝白进度条了,怎么改回默认的 win98如何改启动画面?怎样更改win98启动时有进度条时屏幕中间的字“microsotf windows 98” 电脑老卡在正在启动windows的进度条画面是硬盘坏了还是主板坏了? WinXP启动一直停留在进度条画面过不去 win7启动画面变成英文进度条,无法修改回来 win7 启动画面 怎么改成vista 进度条? 数据库设计,庞大的交易信息如何存储,查询?交易信息表该如何设计? 请给个详细的建财务数据库的设计思路! 设计数据库的问题? 设计好的数据库该注意些什么? 用wordpress搭建在线学习平台靠谱吗 为什么我的电脑运行vs2010又卡又慢,求解决方法,是不是电脑内存太小了 装VMware虚拟机后,VS2010启动超慢 windows10要怎么样能让运行速度加快 为什么我用vc++6.0和vs2010编译同一段代码、运行速度天差地别 电脑速度很慢,怎样提高运行速度?执行你那个操作过后有什么后果? 有什么方法可以提高 电脑的运行速度 怎么用java的lucene对数据库进行检索 lucene根据数据库记录id删除索引无效? lucene对数据库的索引,如何更新 为什么要用lucence而不用数据库本身的索引 如何用sql server 2008进行跟踪 如何在sql server2008 r2里根据pid跟踪数据库? SQL Server Profiler 2008 怎么追踪特定种类语句如 insert,update,delete,能指定某个数据追踪吗 sql server 中怎样跟踪数据库中表的修改,更新事件,表的修改更新来自与哪个用户,哪个IP SqlServer2008更改跟踪-自动清除。 何时运行后台清除任务来删除超过了数据库的指定保持期的更改跟踪信息.