【软考论文】论数据库建模方法及应用
本文以该项目建设为例,讨论了数据库建模的几种常用方法,如实体关系模型(ER模型)、面向对象数据模型(OODM)和关系数据模型(RDM)、以及在本系统中的具体应用以及遇到的问题和解决方案。项目于2021年11月顺利通过验收上线运行,已稳定运行2年多的时间,获得用户一致好评。
摘要
2021年初,我所在的研发部承担了公司自研XXXX管理平台项目的建设,为客户公司提供一站式的股权管理服务。我在该项目中中承担架构设计师的职务,主要负责该项目的系统架构、技术方案评估与实现、项目立项论证等工作。平台为上市公司提供资金管理、财富管理、税务服务等一站式XXXX相关服务的支持,涵盖股权管理、估值管理、多样化激励方案信息化管理、税务与财务咨询服务及系统个性化定制服务等。
本文以该项目建设为例,讨论了数据库建模的几种常用方法,如实体关系模型(ER模型)、面向对象数据模型(OODM)和关系数据模型(RDM)、以及在本系统中的具体应用以及遇到的问题和解决方案。项目于2021年11月顺利通过验收上线运行,已稳定运行2年多的时间,获得用户一致好评。
正文
国务院发布的《关于支持浙江高质量发展建设共同富裕示范区的意见》中提到了浙江到2025年和2035年要实现的共同富裕相关目标。越来越多的上市企业选择对员工开展XXXX计划。我所在的某集团公司,为了集团的发展,需要在XXXX相关服务这一赛道上保持竞争力,根据这一目标,XXXX管理平台这一项目应运而生。2021年初,我所在的研发部承担了公司自研XXXX管理平台项目的建设,为客户公司提供一站式的股权管理服务。我在该项目中中承担系统分析师的职务,主要负责该项目的系统分析和设计工作。整个平台为上市公司提供资金管理、财富管理、税务服务等一站式XXXX相关服务的支持,涵盖股权管理、估值管理、多样化激励方案信息化管理、税务与财务咨询服务及系统个性化定制服务等,更高效、更便捷地为企业客户提供“一篮子”金融解决方案。整个平台涉及证券、税务、银行、电子签署等过个复杂业务逻辑,业务流程复杂、系统可靠性和可扩展性要求较高,影像的范围比较广。整个平台以多租户的模式,进行统一的管理及日常运营,通过组织机构管理提供给上市公司进行业务的管理和服务。
在软件开发项目中,数据库设计是至关重要的一环。良好的数据库设计能够确保数据的准确性、完整性和一致性,提高系统的性能和可维护性。而数据库建模作为数据库设计的基础,其重要性不言而喻。常用的数据库建模方法有实体关系模型、面向对象数据模型以及关系数据模型三种。一、实体关系模型是一种用于描述概念世界和建立概念模型的实用工具,通过图形化的方式展示实体、属性和实体之间的联系。在ER模型中,实体表示现实世界中的对象或事物,如用户、商品等;属性用于描述实体的特征或性质,如用户的姓名、年龄等;关系则用于表示实体之间的联系或依赖关系。ER模型具有直观、易懂的优点,能够帮助开发人员快速理解数据之间的关系和结构。二、面向对象数据模型是一种以面向对象思想为基础的数据建模方法。它将现实世界中的事物抽象为对象,并通过类、继承、封装等机制来描述对象之间的关系和行为。面向对象数据模型具有封装性、继承性和多态性等特点,能够更加自然地表达复杂的数据结构和行为。然而,由于面向对象数据模型在数据库实现上存在一些困难,如对象的存储和查询等,因此在实际应用中较少使用。三、关系数据模型是数据库领域中最常用的数据模型之一。它以关系代数和关系演算为基础,通过二维表来表示数据之间的结构和关系。在关系数据模型中,每个关系都具有一个唯一的标识符,用于唯一标识关系中的每一行数据。同时,关系之间可以通过外键等约束条件来表示关联关系。关系数据模型具有结构简单、易于实现和查询效率高等优点,因此在实际应用中得到了广泛应用。
在XXXX管理平台项目中,我主要采用了实体关系模型(ER模型)进行数据库建模。下面我将结合项目实践,具体阐述如何应用ER模型进行数据库设计。
在需求分析阶段,为了高效地进行需求收集,我们将团队划分为若干专门小组,每个小组负责研究不同的领域,如股权、税务、协议等。在梳理股权管理的需求时,对于XXXX计划执行过程中如何进行激励计划窗口期的管理、参与方的行权和解禁处理等流程不是很清晰,所以我们选择了现场观摩和沟通的方式进行需求收集。我们首先选取了几家具有代表性公司作为重点研究对象,并逐步扩大研究范围。通过深入访谈这些公司的董事会秘书和业务人员,我们全面了解了XXXX管理系统的核心功能以及激励计划执行过程中各个阶段的用户活动。随着需求分析进入后期阶段,我们已经基本完成了大部分业务需求的收集工作。
在概念设计阶段,我们根据需求分析的结果,识别出了系统中的主要实体、属性和关系,并绘制了数据模型图。使用ER模型的方法定义了实体、属性和关系。我们使用了开源的工具DrawSQL对不同的业务模块分别绘制了ER图,共映射出78个实体,例如XXXX管理模块中的激励计划、窗口期、行权解禁、激励计划参与方;用户管理模块的用户账号、角色权限;消息推送模块的消息流水等。同时,我们也确定了它们之间的依赖关系和约束条件。比如一个激励计划会有多个窗口期、有多个参与方;每个参与方会有多次的资金归集以及电子协议签署等等。通过绘制ER图来直观地表示数据模型的结构和内容,团队成员能够更好地理解数据之间的关系和属性。
在逻辑设计阶段,我们需要将ER图转换为关系表的形式,并根据实体定义关系表的主键和外键以及定义表之间的关联关系。同时,我们还需要考虑数据的完整性和一致性约束条件。在该项目中,我首先将ER图中的实体转换成数据库中的表,确保每个实体都对应一个唯一的表。例如,“XXXX计划”、“参与方”、“窗口期”等实体分别被映射成“stock_incentive_plan”,“incentive_employee”,“incentive_window”等表。然后,根据实体间的关系定义表之间的关联,如通过外键实现一对多或一对一的关系,确保数据的一致性和完整性。我们特别注意了主键的选择,通常选择那些唯一且稳定的属性作为主键,在“incentive_employee”表和incentive_window表中,我设置了incentive_id作为外键,引用stock_incentive_plan表的主键,确保了每个参与方和窗口期都能正确地关联到对应的激励计划。同时,我为这些外键添加了ON DELETE CASCADE和ON UPDATE CASCADE的约束,这样当激励计划信息更新或删除时,可以自动更新或清理相关的参与方信息,维持数据的连贯性。此外,我还会根据查询需求设计合适的索引,以提高查询性能。对于高频率查询的字段,如消息推送流水表中的消息接收人和消息查看状态字段,我创建了复合索引,大大提高了客户筛选消息的查询速度。
在物理设计阶段,需要根据具体的数据库管理系统和硬件环境来设计数据库的物理结构。包括确定数据的存储方式、索引结构、数据分区和存储参数、数据的备份和恢复策略等。根据业务部门的评估,我们系统的目标客户公司数量约1000个,客户公司执行激励计划的总数量共约5万个,系统用户量约10万个,系统消息数量约千万级。考虑到系统业务的特点,数据库通常需要处理大量的读操作,远超写操作的数量。在项目中,我们根据业务部门对系统数据量的评估和技术选型确定了使用MySQL作为数据库管理系统。然后,对表结构进行了优化,将热点数据和非热点数据分离存储,以提高查询效率。同时,由于整个平台会给用户推送大量的通知消息,所以我们对消息流水表还采用了分库分表的策略,将消息流水表拆分成存储在4个数据库,每个数据库8张表的设计,以降低单个数据表的数据量,提高查询效率。在存储参数配置方面,我们根据服务器的硬件资源和DBMS的特点进行了调整。例如,增大了InnoDB缓冲池的大小,以提高缓存命中率;同时调整了日志文件的大小和数量,以保证系统的稳定性和可恢复性。最后,在数据备份和恢复策略方面,我们制定了定期全量备份和增量备份的计划,并将备份数据存储在异地机房。通过以上措施,在物理设计阶段我们充分考虑了数据库的性能、扩展性和安全性等因素,为整个软件系统的稳定运行提供了有力保障。
2021年11月,XXXX管理系统正式上线运行,至今已经稳定地运行了超过两年的时间,期间不仅顺利应对了访问量激增的挑战,例如某个客户公司员工约5000人,在公司发起与员工进行电子协议签署后,由于大量员工同时进行线上签署,导致签署服务由于负载过高而全部宕机。还成功处理了紧急情况下客户公司的接入需求,这些都是对我们运维能力的巨大考验。数据库建模方法在软件开发项目中扮演着至关重要的角色,它能够帮助我们更好地理解数据之间的关系、属性和约束,从而设计出高效、稳定、易扩展的数据库系统。在实际项目中,我们应该根据项目的需求和特点选择合适的建模方法和工具,并灵活运用它们来进行数据库设计。经过这次数据库建模方法的应用效果后,我也看到了自己身上的不足之处,在未来还会不断地更新知识,完善本系统在各方面的设计,为项目的成功实施提供有力的支持。
【软考论文】论数据库建模方法及应用