数据库学习:数据模型

共 2194字,需浏览 5分钟

 ·

2020-08-24 06:43

前言

数据建模就是通过减低数据库设计的复杂度得到各个方面都能理解的数据抽象,包括定义实以及它们之间的关系。接下来学习数据建模的基本概念以及数据模型的发展过程。

正题

在开始编写文章前,有几个问题需要思考一下:

  • 什么数据模型

  • 生成数据模型的业务规则

  • 数据模型构成

  • 数据模型的类别

  • 数据模型的抽象层次

1. 什么是数据模型

数据模型(data model)是对复杂现实世界数据结构的一种简单表达,如采用图形方式。广而言之,模型是对复杂现实世界对象或事件的抽象,它能帮助我们理解现实世界的复杂性。而在数据库环境中,数据模型则是表示数据结构及其特征、关系、约束、变换以及为特定问题域提供支持的其他组成。

2. 生成数据模型的业务规则

当数据库设计人员决定使用实体、属性和联系建立数据模型时,他们首先应对企业的数据进行全面了解和分析,如企业有哪些数据种类、如何使用及何时使用这些数据等。但是,这些数据和信息本身不会对企业整个业务的了解。从数据库角度看,数据只有在其能正确反映所定义的业务规则时才有意义。业务规则(Business Rule)是对特定组织的策略、规程和准则的简要、清晰和无歧义描述。从某种意义上讲,业务规则是一个误称,实际上也可应用于存储和利用数据产生信息的任意规模组织,如企业、政府机构、宗教团体或研究所等。

业务规则来自对企业操作的详细描述,可帮助企业创建和实施具体活动,因此必须明确制定并及时更新,以正确反映企业操作环境的变化。

正确的业务规则可用于定义实体、属性、联系和约束。任何时候,当我们看到“一个代理人可以为多个客户服务,而每个客户只能由一个代理人服务”的联系描述时,那就是业务规则在发生作用。

为了提高效率,业务规则应简单易懂且广泛宣传,以确保组织中的所有人都能正确理解。业务规则是用简单语言描述从公司视觉所看到数据的特征。例如:

  • 一个客户可以产生多张发票。

  • 一张发票只能由一个客户产生。

  • 少于 10 名雇员或超过 30 名雇员都不能安排培训会议。

这些业务规则可建立实体、联系和约束。

2.1 发现业务规则

业务规则的主要来源是公司经理、策略制定者、部门经理以及书面文档(如公司的规程、标准或操作手册)。一个更加快速直接获得业务规则的方法是直接同用户对话。但不幸的是,由于各个人的理解不同,当需要制定特定的业务规则时,用户显得不太靠谱。例如,维护部门的技工可能认为任何一个技工都可以启动一个维护程序,然而,事实上只有授权检查的人才能完成此项任务。这种区别看起来似乎很平常,但是可能产生重大的法律后果。虽然用户是制定业务规则的决定性因素,但是用户的理解仍需做进一步验证。如果与许多从事相同工作的人进行交流,常常会对该项工作产生不同的理解,这很可能被认为是管理上的问题。因此,这种泛泛的调查分析不能帮助数据库设计人员,他们的职责就是要协调这些差异并对产生的结果进行验证,以确保得到合适且准确的业务规则。

识别和确定业务规则对数据库设计至关重要,因为它能够:

  • 帮助企业进行数据标准化。

  • 为用户和设计人员提供交流工具。

  • 帮助设计人员理解数据的本质、作用和范围。

  • 帮助设计人员理解业务流程。

  • 帮助设计人员开发出合适的联系参与规则和约束,并建立正确的数据模型。

当然,并不是所有的业务规则都可以被建模。

2.2 将业务规则转化成数据模型组件

业务规则为正确识别实体、属性、联系和约束提供了基础。在现实世界中,通常用名称来标识对象。如果业务环境需要保持对象的状态,那么应对其产生专门的业务规则。一般来说,业务规则中的名词可转化成数据模型中的实体,而与名词相连的动词(主动或被动)则可转化成实体之间的联系。例如,业务规则“一位客户可产生多张发票”包含两个名词(客户和发票)和一个动词(产生),我们可从中推出:

  • 客户和发票是系统感兴趣的对象,应表示为实体。

  • 客户和发票间存在“产生”联系。

为正确判定联系的类型,应考虑联系的双向特性。如果在上面规则的基础上在增加一条规则“一张发票只能由一位客户所产生”,那么该联系就是一对多(1:M)联系,其中客户是“一”,发票是“多”。

作为一般准则,可通过下列两个问题判定联系的类型:

  • 有多少 B 的实例与一个 A 的实例关联?

  • 有多少 A 的实例与一个 B 的实例关联?


3. 数据模型构成

数据模型的基本组成包括实体、属性、联系和约束。

  • 实体(Entity):可以是任何事物,如一个人,一个地点、一个物件或一个事件等,其数据将被收集和存储。一个实体表示现实世界中一类特定类型对象。实体是“可区分的”,即每个实体是独特且唯一的。

  • 属性(Attribute):用于描述实体的特征。属性等同于文件系统中的字段。

  • 联系(Relationship):用于描述实体之间的关联。联系有 3 种类型:一对多、多对多、一对一,可分别用符号 1:M(或 1..*)、M:N(或 *..*)和 1:1(或 1..1)表示。



    《数据科学与人工智能》公众号推荐朋友们学习和使用Python语言,需要加入Python语言群的,请扫码加我个人微信,备注【姓名-Python群】,我诚邀你入群,大家学习和分享。



浏览 52
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报