银行如何建设企业级数据库基础逻辑数据模型

银行如何建设企业级数据库基础逻辑数据模型,第1张

前言:逻辑数据模型LDM是一种图形化的展现方式,一般采用面向对象的设计方法,有效组织来源多样的各种业务数据,使用统一的逻辑语言描述业务。借助相对抽象、逻辑统一且结构稳健的结构,实现数据仓库系统所要求的数据存储目标,支持大量的分析应用,是实现业务智能的重要基础,同时也是数据管理分析的工具和交流的有效手段。 需要强调的是,数据仓库逻辑数据模型特指数据仓库系统的核心基础模型,在搭建企业级数据仓库系统时,需要充分了解和分析种前台业务处理系统和应用,在此基础上进行有效的重组和整合,为各种分析应用(如客户关系管理、风险管理等)提供单一的、整合的数据基础,保证全行不同业务部门从不同的视角都可以使用统一的数据实现各自的分析需求。——担负这种数据重组和整合任务的数据模型称为数据仓库系统的“基础逻辑数据模型”。 基础逻辑数据模型建设好之后,银行可根据不同的分析应用需要(如客户关系管理、绩效考核、风险管理等),根据应用产品和功能设计不同的分析应用模型,包含具体的、特定的分析逻辑,往往这种模型中都含有较多加工处理的成分。——这种为实现特定用途而设计的数据模型称为数据仓库系统的“应用数据模型”。 因此,不夸张地说核心基础数据模型建设的成败性会影响到整个数据仓库系统的建设乃至后续各种分析应用,应引起银行科技建设和业务分析人员的高度重视。 本文尝试从银行建设基础逻辑数据模型的角度出发,分析、探讨建设过程中应该考虑的主要因素、建设的方法以及注意的问题。 一、整体规划、明确目标、合理定位 银行建设数据仓库系统时应充分明确建设目标,核心的逻辑数据模型是对银行业务的高度抽象、能够提供对关键业务数据的组织和整理,建立一套完整、统一、规范的标准,以便进行各类分析。一个好的核心基础数据数据模型应该满足以下条件: 概念上:具有高度抽象的、中性的、可共享的的概念,可有效、全面、完整地适应与涵盖银行现有的业务范畴以及数据范围不针对某个特别的应用而设计结构上:应是稳定的、灵活的、可扩展的能以满足第三范式的方法构建模型,存放最详尽的数据,保证足够的灵活性,适应复杂的实际业务情况,在业务发生变化或者新增数据源时易于扩展核心结构在很长时间内应保持稳定性,便于回答不断产生、不断变化且无法预先定义的业务问题表现形式:应是规范的,易懂的包括各类命名规范,业务规则定义,度量方式等。使用统一的业务语言进行模型设计,易于业务人员的理解和使用也有利于IT部门和业务部门人员的沟通数据仓库系统的建设目的和方法不同于传统业务系统,其开发建设方式也有所不同,它的建设绝不是一蹴而就的事情,不能期望一朝一夕就可以全部完成,比较成熟的建设步骤应该是分阶段实施,逐步进行完善和增强因此作为项目起步的LDM建设对于规范和推动整个数据仓库系统的建设都将起到一个很好的促进。整个建设过程最关键的阶段就是项目的最初阶段,应将工作重心放在搭建模型框架、建立模型设计思想和培养模型设计人员三个方面。 明确了建设目标,具体实施应该如何开展呢? 二、审慎选择、量体裁衣、度身定做 银行在明确建设目标之后,如何选择具体的实施策略、制定设计的阶段和步骤呢?常见的主要有以下两种: 第一种:自主研发:银行根据以往的业务经验提炼本行业务的关键主题再设计出本行的概念模型然后通过具体的业务反复论证,同时考虑将来的分析需求进行基础逻辑数据模型的详细设计。 这种方法可以快速启动,完全依托本行的业务元素和规则,使用行内技术人员和业务人员比较熟悉的语言进行模型的设计,具有很好的适用性。但是整个建设周期比较长,同时往往由于经验不足等原因给项目带来一些不可控的风险,由于参与人员经验的不足,不能够站在全行的高度,从管理分析的角度去理解所有的业务以及相应的数据,造成一些局限性。 第二种:依托业成熟产品进行客户化:银行研究不同的业界模型产品,从中选择一个作为蓝本,结合本行的业务数据和应用系统进行具体的定制化。 这种方法的建设周期短、风险小,同时也能够很好地借鉴成熟的逻辑数据模型中蕴涵的经营管理理念。但是银行需要研究和比较多个业界流行的逻辑数据模型,熟悉各自的设计思想和理念,并从中挑选一个适合本行的模型产品进行客户化。 从国际、国内商业银行建设数据仓库系统的经验和案例来看,为了保证项目的成功实施,避免和控制项目风险,他们几乎都选择了第二种方法:客户化。那银行在面对众多逻辑数据模型产品进行选择的过程中主要应该都关注一些什么样的内容呢? 产品层面: 覆盖范围:模型产品应能够适合、涵盖银行的所有业务范围,可以在单一模型中能支撑金零售银行、公司业务、保险、xyk、经纪、证券和电子商务等,满足未来混业经营的需要对业务发展的适应性:模型产品应有高度的概括和归纳,既满足范式化要求,又具有足够的灵活性,在扩展业务、新增品种或改变规则时,模型通过简单的调整和扩展即可适应对应用的支撑和扩充:模型产品不应偏向某个部门或某些专业的特定应用,要能够支持绩效管理、客户关系管理、资产负债管理、资金财务管理、风险管理等应用,并与国际金融业完全接轨,从数据接口层面支撑业界监管需要模型的开放性:模型产品应有清晰、严谨的模型架构,满足模块化和结构化的设计要求,真正实现数据一次导入,多次使用转化成物理数据模型的方便性:LDM设计完成,进行一些物理化的定义之后就可以直接利用建模工具平滑地完成物理模型设计。 服务层面: 客户化方法与能力:逻辑数据模型必须有经过实际项目验证过的客户化方法论做指导,明确严格的工作步骤、流程、任务分配,并提供必要模板业绩经验与表现:应具有国际化大型(特别是国内)商业银行相关项目和领域的成功实施案例在行业内具有良好的信誉和业绩全球支持能力:全球专职研发团队——各国家地区的具体实施团队高级建模顾问——高级金融行业顾问不难看出,上述这些考核的方面都是和将来的实施密切相关的。的确,一个成熟的优秀的模型产品,如果没有得到成功的实施,最终也不能为银行创造效益。下一部分主要讨论在实施过程中的关键因素。 三、关键成功因素 (1)参与人员的业务经验 LDM的设计和实施不是一个纯粹的技术问题,需要参与人员具有较高的银行业务修养和素质,设计人员应能够凭借丰富的业务经验和知识,将散落在各种不同业务系统以及日常经营管理中的各种数据元素进行高度的抽象和概况,形成本行的几个主题域(如当事人、协议、产品、事件等),用以清晰地表达业务逻辑和关系。同时,他们也必须时刻以目标(建设数据仓库系统)为导向,有选择地从前台业务系统中抽取相关的数据信息进行映射。 (2)设计团队的沟通机制 逻辑数据模型的设计过程本身就是一个不断发现问题、解决问题的过程,不可能某一个人就能够掌握庞杂银行业务中的点点滴滴,因此需要整个项目团队的密切配合。每个设计人员都必应具有良好的学习沟通能力,能够对建模工作达成共识,根据所定义的结构,将具体的业务数据映射到模型中,同时进行一些修改和校正。 (3)银行内部IT管理的水平 LDM设计过程中很大量的工作都是对现有业务系统的分析,包括对系统架构和功能的梳理、业务规则和关键业务元素的提炼、系统之间的逻辑关系等,并结合样本数据初步了解数据质量。如果没有一套有效的管理模式和有力的技术支持,如果没有现有业务系统的完备资料如果没有快速问题反馈和解决机制,LDM的建设只能是空谈,因此这给银行内部IT管理水平提出了很高的要求。 (4)模型的管理和维护 在LDM整个建设周期内还应高度重视维护和管理工作,必需有严格的建模技术规范做指导和约束,包括命名、描述、版本控制等。随着时间的推移和项目建设阶段和目标的变化,为了使建成的基础数据模型具有持续的生命力,应在建设的所有阶段把涉及的建模规范内容文档化并强制执行在人员发生变动时规定新参与人员应严格遵守这些规范,不能另行编制,保证前后的一致性。 总结: 尽管LDM仅仅是一个逻辑的概念,数据仓库系统需要在逻辑数据模型的指导下,进行真正的物理实施,将把分散在不同平台、以不同方式组织的各种业务数据以及部分外部信息经过清洗和转化,在保证数据一致性、准确性和实效性的前提下,开发各种应用,奠定实现银行商业智能的重要基础。 但是可以看到,通过数据仓库系统逻辑数据模型的设计,将有利于对银行现有业务过程的全局认识和系统把握,同时还能够从整体上对全行使用的 *** 作型业务系统进行回顾,从而提供改造和完善的建议,最终探索出一条符合银行自身业务实际发展要求的分析型应用系统的道路,为数据仓库系统的建设奠定坚实的基础。

功能一:

create database bank

功能二:

create table userinfo(

customerID number(10) not null,

customerName varchar2(10) not null,

PID char(18) not null,

telephone char(11) not null,

address varchar2(255) not null

)

create table cardinfo(

cardID varchar2(19) not null,

cardCustomerID number(10) not null,

curtype char(3) not null,

savingtype char(4) not null,

openDate date not null,

openmoney number(10,2) not null,

blance number(10,2) not null,

password char(6) not null,

isreportLoss char(2) not null

)

create table transinfo(

id number(15) not null,

transcustomerID number(10) not null,

transcardID varchar2(19) not null,

transdate date not null,

transmoney number(10,2) not null,

transtype char(4) not null,

remark varchar2(255) not null

)

功能三:

alter table userinfo add constraint pk_userinfo primary key (customerID)

alter table userinfo add constraint ck_PID check(length(PID)=18)

alter table cardinfo add constraint pk_cardinfo primary key (cardID)

alter table cardinfo add constraint fk_CustomerID_card foreign key cardCustomerID references userinfo(customerID)

alter table transinfo add constraint pk_transinfo primary key (id)

alter table transinfo add constraint fk_CustomerID_trans foreign key cardCustomerID references userinfo(customerID)

alter table transinfo add constraint fk_transcardID_trans foreign key cardCustomerID references cardinfo(cardID)

功能四:

insert into userinfo values(1,'张三','123456789012345671','13012345671','地址1')

insert into userinfo values(2,'李四','123456789012345672','13012345672','地址2')

insert into userinfo values(3,'王五','123456789012345673','13012345673','地址3')

insert into cardinfo values('1234567890123456789',1,'RMB','活期',sysdate,5.04,5.04,'123456','否')

insert into cardinfo values('1234567890123456788',2,'JPY','活期',sysdate,3.22,3.22,'123457','否')

insert into cardinfo values('1234567890123456787',3,'USA','定期',sysdate,6.78,6.78,'123458','否')

insert into transinfo values(1,1,'1234567890123456789',sysdate,0.23,'存入','存钱')

insert into transinfo values(2,2,'1234567890123456788',sysdate,1.27,'支取','取钱')

insert into transinfo values(3,3,'1234567890123456787',sysdate,2.34,'存入','存钱')

功能五:

select transcardID,transmoney from transinfo where to_char(transdate,'mm')=to_char(sysdate,'mm') and transmoney=max(transmoney)

功能六:

create procedure p_c

is

cursor cr is

select b.cardID,a.customerName,a.telephone from userinfo a,cardinfo b where a.customerID=b.cardCustomerID and to_char(sysdate,'dd') in ('28','29','30','31') and b.blance<200

cur_info cr

begin

for cur_info in cr loop

dbms_output.put_line('卡号:' || cur_info.cardID || '&&' || '姓名:' || cur_info.customerName || '电话:' || cur_info.telephone)

end loop

end p_c


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6769585.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-28
下一篇 2023-03-28

发表评论

登录后才能评论

评论列表(0条)

保存