在使用数据模型对系统进行建模时,我们需要一种通用的描述语言来进行简洁高效的沟通,本文将要介绍数据模型中将要使用的符号和文本。
1. 实体
简单来说,实体主要是用来描述现实世界中所涉及到的六个问题:谁? 什么?何时?何地?为何?如何? 在数据模型中实体一般使用矩形来表示,它不是被设计用来表示或者包含处理的,相反,实体是用来小时在处理中所使用或者涉及到的一些概念。 比如生产并不适合用来表示为一个实体,而生产所涉及到的原材料,最终货物,机器,生产计划则适合使用实体来表达。
一个实体表示的是对于业务非常重要或者值得获取的事物及与之相关的信息集合,每个实体都是由一个名词词组定义,并符合六大种类之一。
| 种类 | 定义 | 实例 |
|---|---|---|
| 谁 | 对企业有益的人或组织通常人或者组织与某一角色关联 | Emplyee,Patient,Passenger,Author |
| 什么 | 对企业有益的产品或者服务,通常可以理解为组织把什么保留在业务中,对业务而言重要的东西是什么? | produce,service,Song,course |
| 何时 | 对企业有益的日程或者时间间隔,业务何时运作 | Time,Date,Month,Minute,Period |
| 何地 | 对企业有益的位置可以是实际地点,也可以是个虚拟化的场所,即业务在哪展开 | WebSiteUrl,IpAddress, |
| 为何 | 对企业有益的事件或者交易,这些事件保证业务运转,即业务运转的原因 | Order,Trade,Claim,Deposit |
| 如何 | 对企业有益的事件的文档,文档用来记录事件,如采购订单里记录了一次采购事件,记录业务中事件如何被跟踪 | Aggrement,Order,Ticket,Invoice |
实体实例: 实体的具体呈现或者实体的值,比如顾客实体,可以为Bob
概念实体: 高层次的业务流程的解决方案或者应用程序频繁定义的范围和重要术语。
基本且关键的业务信息,才能与实体的概念层相关,取决于所关注的范围,如广泛认知的概念和特定行业具有的特定概念。
逻辑实体:详细解决方案或应用程序。
使用了比概念层更多的细节来描述业务,一个概念实体可以被表示为多个逻辑数据模型实体。
物理实体:应用程序的详细的技术解决方案。
应用于某种特定技术的对象,需要在数据库执行性能以及数据存储上找到相应的解决方案,包含一些与特定数据库相关的信息。可以为表或者视或者collection(非关系型数据库)
强实体: 直角矩形,从来表示相对独立的人事物或者地点。
弱实体: 圆角矩形,至少依赖1个其它实体,不引用其它实体的实例,就无法被检索。如:冰淇淋订单是依赖于冰淇淋口味的弱实体则口味信息先于订单提交被添加。
2. 属性
对于业务而言,属性是非常重要的特征,其值可以用来识别,描述,评估实体实例。
- 属性类型
属性在概念,逻辑和物理有着不同的意义
概念级属性必须对业务起着基本且又关键的影响
逻辑级属性描述的是业务特征,每个属性对于业务解决方案都要有不同程度而的贡献。
物理级别的属性可以被理解为一个容器,用来存储数据,带有明显的存储技术特征。
- 域: 包含一组验证标准的属性值的集合,域通过检查提高数据质量,也可以提高交流性和可维护性。
域是某个属性所有可能取值的集合与验证标准。
格式域:将数据指定为数据库中的标准类型
列表域:有限值的集合,如订单状态码可以表示为varchar(10),也可以表示为Open,Closed.Shipped等状态。
范围域:取值必须在上界与下界之间。
3. 关系
关系: 数据模型中的规则即为关系。
-
类型
- 数据规则: 两种规则互相依存,成对存在。
- 结构完整型(基数规则)
- 每种产品可以出现在一个或者多个订单行
- 每个学生必须有唯一的学号
- 参照完整型(确保值的有效性)
- 订单行不可以脱离订单
- 学生必须有有效的学号
- 结构完整型(基数规则)
- 行为规则(无法在数据模型提现):指示当属性包含特定值时,需要采取什么操作。
- 如果一个订单包含5个以上产品,则优惠15%。
- 数据规则: 两种规则互相依存,成对存在。
-
层次
- 概念:高级别的规则或者概念间的导航路径。
- 逻辑:业务规则或者逻辑实体间的导航路径。
- 物理:具体的物理结构间的导航路径。
-
基数关系: 定义了每个实体可以参与关系的次数。
- 0 是个圈
- 多是个鸡爪
- 1是个竖线
-
基数关系的阅读
- 0或者多时用 '可能'
- 父实例一侧多用 '每个'
-
递归关系:同一实体的实例间规则。
-
子类型: 类似的属性或者相似且有关联的实体的关系进行分组。
4. 键
键: 便于筛选和查找数据。
- 候选键: 一个或者多个可以唯一标识实体实例的属性。
- 唯一性
- 强制性
- 最小化
- 非异变型
- 主键: 候选键中的一个
- 备用键: 也是候选键,除了主键外候选键的属性仍然可以用来检索数据,满足四个要求。
- 代理键: 代理键不可见,无业务含义,比如课程名 -> 课程号的变化,就是代理键的意义,为了简洁。
- 外键:1对多关系中,父实体把自己的主键拷贝至子实体作为外键。(1个或者多个属性)
- 辅助键: 非唯一性索引或者倒排入口,辅助查询,没有要求。