实体的动态属性在数据库设计中的解决方案.docVIP

实体的动态属性在数据库设计中的解决方案.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实体的动态属性在数据库设计中的解决方案.doc

  实体的动态属性在数据库设计中的解决方案 摘要:该文主要是针对数据库设计中遇到实体的动态属性的问题,分别结合关系型和非关系型两大类数据库技术,介绍解决实体属性可变性问题的解决方法:关系弄的解决方案是改行为列和使用两个关系实体,非关系型的解决方案是采用HBase模型和MongoDB模型。这些方案为开发用户的数据需求提供多种可选方案,极大地为用户提供了方便。 中国 8/vie   ?P键词: 实体动态属性;数据库设计;关系数据库;非关系数据库   中图分类号:TP311 文献标识码:A :1009-3044(2017)05-0009-02   1 问题的提出   随着大数据时代的来临,结构化数据、半结构化数据与非结构化数据已广泛存在于各个软件应用中。任何移动应用和系统都离不开数据库进行存储数据,而数据的复杂性给它们的开发带来了困难和挑战。   在现实生活中,社会现实中的万事成物都是一个动态系统。随着时间的推移和事情的发展,各种实体都会发展变化,具体体现在实体属性的变化上,因此,我们称之为实体的动态属性[1]。例如,在一款银行绩效考核系统中的客户经理实体,随着业务的发展,客户经理的其考核内容也会发生变化,会有存款业绩、贷款业务、基金业绩、是否投诉等不断增加,也会产生相对应的业绩数值,这些不断业绩都称为该客户经理实体的动态性,详情如表1客户经理实体2017年1月份业务需求表所示。   在实际的项目开发中,固定数量的、明确的实体属性,有利于软件设计与开发人员进行项目开发。但是,动态属性的实体,由于实体属性的个数未知,属性名称未知,在系统运行过程中,根据业务的需要,随时增添新的属性,因此,给项目开发人员带来了困难和挑战。笔者在数据库设计方面经过长期的实践,探索出了针对该问题的实体的动态属性在数据库设计中的解决方法,希望对有相同需要的数据库设计人员或软件开发人提供一点参考价值。   2 定义相关数据结构   数据库中的数据结构与数据对象的数据类型、内容、性质有关的,是对数据对象的一个静态描述。为了便于说明,还以上述绩效考核系统中的客户经理实体为例进行描述。该客户经理实体包括存款业绩、贷款业务、基金业绩、是否投诉等属性,其在关系数据库中可以定义成相关字段,具体详细结构描述如下:   Create Table ClientManager(   ame nvarchar(50), //姓名字段   CDeposit decimal(18, 2), //存款业绩字段   CLoan decimal(18, 2), //贷款业绩字段   CFund decimal(18, 2), //基金业绩字段   CIsplain nvarchar(2), //是否投诉字段   ... //未知属性字段   )   很显然,由于实体未知属性的存在,上述结构中的字段不明确,这样的设计在目前的数据库技术中不能得以实现。   3 关系数据库中实体的设计方法   目前,市场要流行的关系型数据库门类众多,有甲骨文公司的Oracle、MySQL,有微软公司的SQL Server,还有针对移动应用的SQLite。下面针对上述实体的动态属性问题,给出两种关系型数据库的解决方法。   3.1 采用改行为列   为了改变上述字段不明确的问题,从表1中可以看出是二维表中的字段不明确,采用以行来代替列的形式,就可以把未知的列的值作为一条记录存储于表中,这样,就可以根据需求动态满足字段的增加或减少,解决该问题。但是,这样需要解决两个问题,一个是属性名的问题和另一个属性值的问题。因此,行转为列的形式中,二维表中需要属性名和属性值两列。具体的在客户经理实体中,定义为经理姓名、业绩名称和业绩额,具体详细结构描述如下:   Create Table ClientManager(   ame nvarchar(50), //经理姓名   CAchieveName nvarchar(50), //业绩名称字段   CAchieveValue nvarchar(50) //业绩额字段   )   在关系数据库中,客户经理的实体二维表中的业绩和业绩额从以行的形式转为以列的形式,但是,表中的记录数据增加,其具体形式如表2客户经理实体行转成列后的样式表所示。   3.2 采用两个关系实体   采用行转为列的方式能够适应简单属性值全都一个数据类型的动态属性的问题,比如,例子中的业绩额全为数值类型,开发人员在进行开发实现功能时可以进行统一计算。但是,如果属性不是一个统一的类型,比如例子中的业绩额有数值类型的,还有字符类型的。这种情况下,程序开发人员,在进行数据取值时,要有目的的进行运算,而在例子中属性值的数据类型不明确,给开发人员带来了麻烦。解决这种复

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档