`
lijj_72
  • 浏览: 21960 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

数据模型设计思考与实践

阅读更多

数据模型设计思考与实践

李俊杰

概述

在当前的主要软件应用项目中,数据库在项目中的作用是极其重要的,因此作为项目基础的数据模型的设计就显得非常重要,不仅事关数据的存储和使用,而且反映了对需求的理解和未来变化需求的适应性和扩展性,数据模型设计的好坏还影响存取效率和性能,同时也决定了项目的实现机制和扩展性,特别是对于分布式系统而言,数据的同步及网络通信的设计也非常重要。

数据的应用特性和分库存储设计

系统中的数据有着不同的应用特性,有的是静态数据,如系统运行配置信息,在系统运行上线前必须初始化的,还有系统业务配置信息,也是在系统运行之初必须设置的,这些数据可能在系统下线都不会变化。有的是半静态的数据,很少作更新处理,如一些产品定义数据只有在发布新的产品才会有所变化,其他时间一直处在休眠状态。有的则是工作数据,在一个业务处理过程中会频繁地进行更新,始终处于活跃期,会不断地被访问更新。

传统的数据库设计过程中,所有的数据放在一个数据库中,好处是在数据存取时可最大限度地利用DBMS本身提供的功能来提高数据的存取效率。但从数据备份和数据管理的角度来看,就存在着一定的缺陷和问题。

按照数据的使用特性进行存储管理根据其使用特性在实际应用中是有现实意义的,原因是:根据不同的数据应用特性进行分库,可以有针对性地对不同的库制定备份策略,在大型项目中数据量非常大,从数据安全和数据存储管理方面考虑备份策略就非常有意义,另外分库存储设计提高了数据的访问效率,因为可以针对业务数据的存取进行优化,对业务数据的访问制定负载平衡策略,提高系统的访问量和缩短系统的相应时间,当然提高系统的性能是一项复杂的系统工程,需要多方面的协作和优化,分库存储设计仅仅是其中之一。

文本型数据的代码化和格式化

在系统的需求分析阶段,有许多东西都是以文字描述的,设计人员要对这些内容庞杂的信息进行梳理和抽象,如何组织成为计算机能够识别,且为实际系统应用中显示操作人员所熟知的专业术语和行业术语,答案就是文本数据的代码化和格式化。如单位性质(经济分类):00  其它企业单位,01       国有,02       集体,03       私营,04       个体。这样,就可以在前台显示文本,在数据库相关表中存储代码,这样有利于优化存储,有利于需求的变更,如有些文本变化,只需更新相应的代码表,并且针对统计分析需求就会非常容易。

还有代码的版本的设计,如疾病代码,不同时期采用不同版本的代码,不同的行业采用不同版本,只须设计疾病版本表,疾病表(其中疾病版本号是外键)。

复杂的文本代码化,如职业代码,就可以分为职业大类,职业子类(其中职业大类代码是外键),职业细类代码(其中职业子类代码是外键),从表的命名和外键的分布,显然可以理解三个表的关系,另外同样职业细类的代码是“职业大类代码”+“职业代码子类”+“职业代码细类序号”,如:

            大类               子类              细类        代码       说明

00                  00                00           000000     无职业

00                  00                01           000001     离退休

 

还有一种情况,即该类代码只在一个表的一个字段中使用,不据通用性,通常的设计是在Power Designer中列属性的标准选项(standard checks 中设置相关代码,如理赔给付类型代码:1 合同给付 2   比例给付, 3  协议给付 5  责任给付, 9  拒赔给付。

视图的设计与使用          

视图是一种虚表,它依赖数据源的实表而存在,视图的主要用途是针对数据安全方面考虑的,但在实际设计中,可以把常用的联合查询以视图的形式设计在数据库中,可以避免编程人员写过多的数据库sql语句,并且可以进行复杂逻辑处理、提高运算速度和节省存储空间,同时也可以起到信息隐藏的目的,即你后台的数据库表发生变化,只要视图显示的字段不变,前台调用视图就不用改变。特别是对你的数据库不太了解的人员,其意义就更大了。

表字段的灵活运用

字段的借用,例如表中有两个字段,一个是code_type,一个是code。这样根据code_type的不同,则code字段中存储不同的代码。

表之间的虚依赖关系。例如一个表和依赖于两个以上的表中的一个,那么就有了这样的情况。类似于字段的借用,code_type的值不同,则code存储的值是所依赖的不同的表的外键。

面向对象设计思想在数据模型设计中的作用

特别是对于应用系统,其需求往往是笼统和复杂的,首先分析需求不变和变化的部分,进而分析数据的相互关系,从顶到下,划分其逻辑联系,把相关的内容抽象成若干相互作用的对象,而每一个对象都有若干属性,则每一属性就可作为一个表所对应的字段。还要澄清一个问题,数据模型(表)和对象并不是一一对应的关系,数据模型主要考虑数据存储和数据之间的关系。而对象是数据和行为的结合体。表之间的关联主要是主表和子表的关系,主键和外键的关系,但在对象设计时,有些表现为继承关系,但大多数表现为聚合关系。在数据模型的设计中,常常使用中间表把多对多关系变成两个一对多的关系。但在对象设计时就不会把中间表作为一个对象。

表和表之间的依赖关系,在对象设计中并不完全表示为继承关系,而更多地表示为例如类型表(type),字段有类型编码(type_code),类型名称(type_name), 类型描述(type_dscr);其子表如合同,在设计时把合同设计为一个类,而类型只是它的一个属性,即合成关系。另外一种情况,合同表中设计一个类型字段,然后根据该类型字段,其更详尽的属性放到相关的子表中,类型不同,则需要不同的子表来描述其特性。这时就类似于继承关系,但在面向对象设计中就会把合同设计成类,包括类型类接口属性,类型类接口属性的实现类则表示为合同子表的内容。

总之,数据模型的设计要综合考虑诸多因素,例如提高数据库的运行效率,必须从数据库系统级优化、数据库设计级优化、程序实现级优化等等,以上只是本人在数据模型设计中的体会和经验,仅供参考。

    

     努力,在于我热爱我的事业,与中国的软件一起走向成熟,走向世界。

 

联系作者:lijj_72@hotmail.com

 

分享到:
评论

相关推荐

    快手从模型规范开始的数据治理实践.pdf

    快手模型规范治理实践:数据孤岛治理 快手模型规范治理实践:指标一致性治理 快手模型规范治理实践:公共模型稳定性治理 快手模型规范治理实践:模型产出时效性治理 快手数据治理体系思考:整体框架 手数据治理体系思考:...

    数据治理方面的思考与系统实践.pdf

    什么是数据仓库 数据分层 数据流 & 数据模型 项目流程 角色与流程 自动化 & 工具化 元数据管理 数据血缘 数据质量 数仓架构图 能力模型

    云原生数据安全治理思考与实践.pdf

    云原生时代数据安全面临的挑战 “云原生”时代的数据安全命题 ...基于IPDRR模型构建数据安全治理体系 腾讯云原生安全架构 腾讯云原生数据安全技术蓝图 极简化云上数据安全保护和治理 云原生数据安全主要的风险与难点

    大数据分析-数据科学应用场景与实践精髓--高清扫描版

    《大数据分析 数据科学应用场景与实践精髓》首先介绍了大数据分析的业务应用场景、分析建模过程和主要任务,以及模型商用的关键点;接着讲述了数据收集、抽样和预处理的实施要点;之后系统性地讨论了各种模型技术...

    【推荐】最新数据安全解决方案和实践合集.zip

    金融业数据安全实践与思考; 利用虚拟现实技术.构建真实数字世界; 面向电网企业的零信任.数据安全实践; 面向电信行业的数据安全监管运营实践; 企业数据安全解决方案的实践; 企业数据安全体系建设; 数据安全-...

    2023数据平台架构峰会(公开)PPT汇总(21份).zip

    快手统一数据服务平台设计与实践 埋点数据标准化实践 面向营销场景的数据中台建设思路 数仓 Onedata 体系建设方法论 数仓建模平台在网易严选的探索实践 数据湖 iceberg 在小米的应用场景 数据开发平台架构实践 - ...

    2023数据平台架构峰会(公开)PPT汇总(23份).zip

    数据模型设计与构建实践 从数据质量检查到可观测性——源于DataLeap的数据建设思考 低代码指标平台,构建人人可用的敏捷指标工具 DataLeap计算治理自动化解决方案实践和思考 基于统一语义层构建的智能化数据分析平台...

    CassandraNoSQL数据模型设计指南

    这篇文章非常受欢迎,并促使我思考如何设计出高质量的Cassandra数据模型,以避免在设计的过程中掉入陷阱。在互联网上,你可以找到很多有关适配数据模型设计规则和设计模式的优秀文章,例如:ApacheCassandra数据建模...

    用于毕业设计模型训练的数据集.zip

    毕业设计是高等教育阶段学生完成学业的一个重要环节...学术规范: 毕业设计要求学生按照学术规范完成研究,包括文献综述、研究设计、数据采集与分析、结论和讨论等环节。学生需要撰写一篇完整的毕业论文,并进行答辩。

    DataFunSummit:2022年数据科学在线峰会PPT合集(41份).zip

    数据模型治理最佳实践 大数据体系建设经验分享 数据技术助力工业企业数智化转型的实践与思考 隐私计算行业发展及合规发展思考 数邦平台的可信联盟链 基于大数据及机器人对话技术在综合理财平台下的应用实践 跨界数据...

    SOA实践指南-分布式系统设计的艺术.pdf

     18.3 实践中的元模型  18.4 建立mdsd过程  18.5 工具  18.6 避免瓶颈  18.7 总结 第19章:建立soa和soa监管  19.1 引入soa  19.2 soa监管  19.3 按部就班soa  19.4 其他soa方法  19.5 其他建议...

    毕业设计,在缺失数据的情况下训练arma模型.zip

    毕业设计是高等教育阶段学生完成学业的一个重要环节...学术规范: 毕业设计要求学生按照学术规范完成研究,包括文献综述、研究设计、数据采集与分析、结论和讨论等环节。学生需要撰写一篇完整的毕业论文,并进行答辩。

    毕业设计 语音控制家电开关 模型设计.zip

    毕业设计是高等教育阶段学生完成学业的一个重要环节...学术规范: 毕业设计要求学生按照学术规范完成研究,包括文献综述、研究设计、数据采集与分析、结论和讨论等环节。学生需要撰写一篇完整的毕业论文,并进行答辩。

    DataFunSummit:2021年数据产品在线峰会PPT合集(16份).zip

    以终为始,相爱相杀——聊一聊数据在业务与运营中的实践 AB测试驱动增长实践 数据中台的底层逻辑 WY数据治理工具产品实践 DataWorks数据集成(DataX)架构&实践分享 用户画像场景与技术实现方案 画像标签体系建设...

    2023智能风控峰会(公开)PPT汇总(17份).zip

    风控体系中情报系统的设计与实践 手游反欺诈设计与思考 4、风控系统架构 斗鱼直播实时风控引擎快速对抗探索实践 风控场景全流程模型构建及应用实践 实时风险洞察的架构演进与思考 数据+实验+模型+策略生态闭环 5、...

    毕业设计 主要是对项目进行记录和代码存储 《基于深度学习的多任务空气质量预测模型设计与实现》.zip

    毕业设计是高等教育阶段学生完成学业的一个重要环节...学术规范: 毕业设计要求学生按照学术规范完成研究,包括文献综述、研究设计、数据采集与分析、结论和讨论等环节。学生需要撰写一篇完整的毕业论文,并进行答辩。

    数据分析师行业峰会嘉宾PPT分享(21个70M).zip

    数据分析师行业峰会嘉宾PPT分享(21个70M): 数据营销洞察数据价值 数据可视化无所不在 让数据成为生产力 大数据领域的创业思考 量化投资大数据处理 ...P2P金融评分卡模型 ...医学数据挖掘的成果与实践

    【推荐】最新金融安全解决方案和实践合集.zip

    金融业数据安全实践与思考; 金融APP安全分析; 平安集团金融安全3.0工作实践; 企业安全建设进阶; 区块链在金融场景里的安全分享; 实战解读金融行业攻防演练; 数字金融反欺诈白皮书; 数字金融内生安全建设论坛...

    2021数据产品在线峰会 共16份

    以终为始,相爱相杀——聊一聊数据在业务与运营中的实践 用户画像场景与技术实现方案 活动专题数据产品建设 字节跳动AB测试驱动增长实践 如何通过数据化管理提升工作效率 模型如何嵌入策略 数据安全工具建设经验...

Global site tag (gtag.js) - Google Analytics