数据模型设计思考与实践
李俊杰
概述
在当前的主要软件应用项目中,数据库在项目中的作用是极其重要的,因此作为项目基础的数据模型的设计就显得非常重要,不仅事关数据的存储和使用,而且反映了对需求的理解和未来变化需求的适应性和扩展性,数据模型设计的好坏还影响存取效率和性能,同时也决定了项目的实现机制和扩展性,特别是对于分布式系统而言,数据的同步及网络通信的设计也非常重要。
数据的应用特性和分库存储设计
系统中的数据有着不同的应用特性,有的是静态数据,如系统运行配置信息,在系统运行上线前必须初始化的,还有系统业务配置信息,也是在系统运行之初必须设置的,这些数据可能在系统下线都不会变化。有的是半静态的数据,很少作更新处理,如一些产品定义数据只有在发布新的产品才会有所变化,其他时间一直处在休眠状态。有的则是工作数据,在一个业务处理过程中会频繁地进行更新,始终处于活跃期,会不断地被访问更新。
传统的数据库设计过程中,所有的数据放在一个数据库中,好处是在数据存取时可最大限度地利用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
分享到:
相关推荐
快手模型规范治理实践:数据孤岛治理 快手模型规范治理实践:指标一致性治理 快手模型规范治理实践:公共模型稳定性治理 快手模型规范治理实践:模型产出时效性治理 快手数据治理体系思考:整体框架 手数据治理体系思考:...
### 2024华为云客服AI助手的大模型实践与思考 #### 华为云客服AI“养成之路” 华为云客服AI助手的发展历程可以分为以下几个阶段: 1. **探路篇**:2017~2019年,重点在于实现业务作业过程的线上化,包括工单处理...
数据模型的建立则需要考虑维度的取舍与命名,确保数据在不同层之间保持一致性。 数据仓库在项目流程中扮演着重要角色,从数据的设计初始化,到功能的迭代和开发,再到数据流与模型的设计变更,都需要严格遵循一定的...
首先,我们从标题"数据模型设计心得"出发,可以理解这是对数据模型设计经验的分享,可能涵盖了作者在实践中遇到的问题、解决方法以及对数据模型设计原则的理解。数据模型设计通常包括概念数据模型、逻辑数据模型和...
2. 数据模型的设计:数据模型的设计需要考虑数据的结构和关系。 三、数据流和数据模型 数据流是指数据在不同系统和应用之间的流动,数据模型是指对数据的结构和关系的描述。数据流和数据模型是数据治理的关键组件...
1. 数据的采集与整合:包括交通调查数据、OD调查数据、GPS数据等,为模型提供充分的数据支持。 2. 模型框架设计:模型框架需适应广东省的地理特征、交通特征和政策导向。 3. 算法与计算方法的选择:根据模型的需求,...
### 2024大模型场景下智算平台的设计与优化实践 #### 一、大模型时代,智算平台新特点 随着人工智能技术的发展,尤其是深度学习领域的大模型逐渐成为主流,智算平台面临着新的挑战与机遇。相较于传统的小模型,大...
《大数据分析 数据科学应用场景与实践精髓》首先介绍了大数据分析的业务应用场景、分析建模过程和主要任务,以及模型商用的关键点;接着讲述了数据收集、抽样和预处理的实施要点;之后系统性地讨论了各种模型技术...
基于AIGC的实践与.pptx 阿里云大数据AI一体化最佳实践.pptx 大模型与数据治理.pptx 滴滴指标标准化实践.pptx 第三代指标平台如何做轻数仓.pptx 抖音电商埋点与归因分析实践思考.pptx 抖音电商数仓数据血缘探索和实践...
### 陌陌数据治理方面的思考与系统实践 #### 一、背景与意义 随着大数据时代的到来,企业对数据的需求越来越强烈。数据不仅成为了驱动企业发展的重要因素之一,同时也是提高竞争力的关键。陌陌作为一家社交网络...
金融业数据安全实践与思考; 利用虚拟现实技术.构建真实数字世界; 面向电网企业的零信任.数据安全实践; 面向电信行业的数据安全监管运营实践; 企业数据安全解决方案的实践; 企业数据安全体系建设; 数据安全-...
在本文的最后,我们讨论了基于BOPPPS教学模型的教学案例设计的实践应用,包括Python在数据管理中的应用、数据挖掘与知识管理等研究方向。我们认为,基于BOPPPS教学模型的教学案例设计可以有效地提高研究生大数据思维...
计算机组成原理是一门深入理解计算机硬件系统核心构造的学科,其课程设计通常要求学生实际动手设计和实现一个简化的计算机...整个设计过程涉及到大量的计算、逻辑分析和创新思考,是提升计算机科学素养的重要实践环节。
数据模型设计与构建实践 从数据质量检查到可观测性——源于DataLeap的数据建设思考 低代码指标平台,构建人人可用的敏捷指标工具 DataLeap计算治理自动化解决方案实践和思考 基于统一语义层构建的智能化数据分析平台...
快手统一数据服务平台设计与实践 埋点数据标准化实践 面向营销场景的数据中台建设思路 数仓 Onedata 体系建设方法论 数仓建模平台在网易严选的探索实践 数据湖 iceberg 在小米的应用场景 数据开发平台架构实践 - ...
MaxCompute半结构化数据思考与创新.pdf文件中提到了半结构化数据模型的简析,传统方案优劣对比,MaxCompute的思考与实践,收益分析关系模型大行其道等内容。下面是从该文件中生成的相关知识点: 1. 半结构化数据...
### OLTP与OLAP系统数据库建模思考与实践 #### 一、引言 随着信息技术的发展,企业对数据处理的需求日益增长。为了更好地满足不同场景下的数据处理需求,出现了两种主流的数据处理方式:联机事务处理(Online ...
在实际的设计过程中,产品设计师需要不断运用这五层模型进行思考和迭代,以确保数据产品的用户体验能够满足用户需求,并通过数据挖掘技术辅助用户做出更好的决策。 数据产品设计是一个涉及数据分析、产品设计和用户...
### 基本模型机的设计与实现实验报告知识点总结 #### 实验目的 1. **深入了解基本模型计算机的功能和组成:** 学习者需掌握基本模型机的基本构成及其功能,包括数据路径、控制器等关键组成部分。 2. **深入学习...
### 实验四-基本模型机设计与实现 #### 一、实验目的与要求解析 本实验旨在通过实际操作,使学生能够将理论知识应用于实践,具体目标包括: 1. **模型计算机的构建**:学生需将之前学习的微程序控制器模块、运算...