数据库设计系列4---实体建模

简介:
一旦完成了数据库系统生命周期中的需求收集和分析阶段的工作,并且把数据库需求整理成了文档,就可以开始进行数据库设计了。数据库设计中最困难的一个方面就是设计人员,程序员和最终用户看待和使用数据的方式不同,除非能够获得反映公司运行的共性的理解,否则,设计将达不到用户的要求。为了能够让设计人员,程序员和最终用户准确理解数据的本质,理解公司使用这些数据的方法,需要有一个通信模型,这个模型和技术无关,并且没有二义性,EREntity-RelationShip实体-关系)模型就是这样的例子。ER建模示一种自上而下的数据库设计方法,通过标示模型中必须要表示的重要数据(实体)以及数据间的关系开始建立ER模型,然后增加细节,如实体关系索要具有的信息(属性),以及实体,关系和属性上的限制。首先介绍一些概念:
1.               实体(ENTITY)一组有相同属性的对象,被用户或者团体标识为独立存在的对象的集合。ER模型的一个基本概念就是实体,代表一组现实世界中的对象集合,他们有相同的属性,每个对象必须在一个集合众被唯一地标示,叫做实体事件。一个实体事独立存在的,代表一组物理存在(现实如员工)或者概念存在(抽象如经理角色)的对象的集合。使用一个唯一的名字和一些特征(属性)来标示每个实体,虽然一个实体有不同的属性集合,但是每个实体对每个属性都有自己的值,实体使用矩形表示,矩形框上写入实体的名字。
2.               关系:实体之间的具有某种含义的关联。一个关系是特定实体之间的一组关联,和实体一样,每个关系在集合中也要被唯一的标识,一个可以唯一标示的关联叫做关系事件。每一个关系有一个名字,此名字描述关系的功能,如角色经理与实体员工之间通过manages关联,一个关系仅在一个方向上标示,代表一个关系仅在一个方向上起作用,因此一旦选择了关系名,必须在名字旁边加箭头指示正确的方向。
a)        关系的度:包含子特定关系中的实体叫做参与者,在关系中参与者的数目叫做关系的度,指明了参与在一个关系中的实体的数目,度数为 1 的关系成为一元关系,通常被称为递归关系,度数为 2 的关系叫做二元关系,度数超过 2 的关系叫做复杂关系,度数为 3 的关系叫做 3 元关系,一次类推,经常遇到的关系为二元关系,偶尔会遇到 3 元关系和四元关系。
a)        递归关系:一元关系,在不同的角色中有多次具有相同实体参与的关系。
民工
例如经理管理员工关系,
在这里,工头也是员工中的一员,换句话说,员工实体参与管理   关系两次,第一次作为工头参与,第二次作为一个民工参与。可以给关系一个角色名字以表明每个参与的实体在关系中所起的作用,角色名字对于递归关系决定参与实体的作用是非常重要的,
 
1.               属性:实体或者关系的性质,实体的性质叫做属性,属性代表我们需要知道的有关实体的内容。
a)        简单属性和符合属性
                                       i.               简单属性,仅由单个元素组成的属性,简单属性是不能在分的属性,如邮政编码。
                                     ii.               符合属性:由多个元素组成的属性,比如姓名,由姓和名两个元素组成
把姓名属性建模成简单属性还是分解成姓和名的符合属性,取决于访问姓名属性的方式,作为一个整体还是单个组成元素访问。
b)       单值属性和多值属性
                                       i.               单值属性:对于一个实体只有一个值得属性,比如姓名
                                     ii.               多值属性,对于一个实体可以有多个值的属性,比如一个公司有多个电话号码。
简单属性和复合属性侧重于属性的种类,单值属性和多值属性侧重于属性的个数,两者不互相排斥。
       C )派生属性,属性质代表一个从相关属性或者属性集派生的值,再相同实体中不时必须的值。比如一个人的年龄可以从出生年月导出来,因此年龄和出生年月是相关联的,年龄通常不存储在数据库中。某些情况下,属性从其他多个属性中导出。
       D )键的概念
               超键:可以唯一标识一个实体的属性或者属性组。
               候选键:可以唯一标识一个实体的具有最小属性数目的超键。
               主键:被选中作为标示实体的候选键。
               备用键:没有被选中作为实体的候选键。
        属性的图形化表示:
               实体使用矩形表示,如果知道了主键,主键应该被首先列出来,后面使用 {pk} 表示,如果是被选键使用 {AK} 表示,如果是派生属性,使用 /age 加以标示,如果知道基数,使用 [1..10] 的方式列出来。
通过以上的描述,我们可以把实体分为强实体和弱实体,强实体:不依赖于另一个实体的实体,换句话说:也就是有自己的主键,并自主键中的任何一个属性不是外键。相对的,弱实体是主键的部分或者全部依赖于其他一个或者多个实体的主键而存在的实体,主键的部分或者全部为外键的实体成为弱实体,强实体有时候被叫做父实体,拥有者或者统治实体,弱实体则相应被叫做子实体,依赖实体或者从属实体。
本文转自凌辉博客51CTO博客,原文链接http://blog.51cto.com/tianli/49045如需转载请自行联系原作者

lili00okok
相关文章
|
存储 缓存 NoSQL
数据库实体与关系模型
【5月更文挑战第16天】本文介绍了数据库模型和UML关系,UML包括依赖、关联(聚合、组合)、泛化和实现4类关系。UML有13种图,分为结构图、行为图和交互图。数据库的基本数据模型包括外模式(用户视图)、概念模式(全局逻辑结构)和内模式(物理存储)。数据模型三要素是数据结构、操作和约束条件。简单易用的缓存数据模型适用于需求灵活、高性能、大数据量且不要求强一致性的场景。
483 5
数据库实体与关系模型
|
前端开发 Java 关系型数据库
【Mybatis-Plus】mybatisplus更新时,实体字段为空,数据库不更新的解决方案
【Mybatis-Plus】mybatisplus更新时,实体字段为空,数据库不更新的解决方案
1344 0
|
SQL 关系型数据库 MySQL
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
|
Java 数据库连接 数据库
AI 时代风起云涌,Hibernate 实体映射引领数据库高效之路,最佳实践与陷阱全解析!
【8月更文挑战第31天】Hibernate 是一款强大的 Java 持久化框架,可将 Java 对象映射到关系数据库表中。本文通过代码示例详细介绍了 Hibernate 实体映射的最佳实践,包括合理使用关联映射(如 `@OneToMany` 和 `@ManyToOne`)以及正确处理继承关系(如单表继承)。此外,还探讨了常见陷阱,例如循环依赖可能导致的无限递归问题,并提供了使用 `@JsonIgnore` 等注解来避免此类问题的方法。通过遵循这些最佳实践,可以显著提升开发效率和数据库操作性能。
321 0
|
存储 关系型数据库 MySQL
MySQL周内训参照1、ER实体关系图与数据库模型图绘制
MySQL周内训参照1、ER实体关系图与数据库模型图绘制
910 1
|
存储 监控 数据管理
数据库原理与应用——简答题练习(数据管理技术发展、数据库主要特征、数据模型、关系模型、实体性之间的关系、DBMS的功能、相关术语解释、数据库系统)
数据库原理与应用——简答题练习(数据管理技术发展、数据库主要特征、数据模型、关系模型、实体性之间的关系、DBMS的功能、相关术语解释、数据库系统)
230 0
|
存储 关系型数据库 MySQL
MySQL技能完整学习列表4、数据库设计——2、数据库规范化(Normalization)——3、实体-关系模型(ER Modeling)
MySQL技能完整学习列表4、数据库设计——2、数据库规范化(Normalization)——3、实体-关系模型(ER Modeling)
353 0
|
存储 JSON 定位技术
4.Cesium中实体Entity的增删改查及性能优化(超详细)
Cesium 作为一个功能强大的 WebGL 三维地球仪库,内置了丰富的三维地图展示能力。在 Cesium 中,我们可以通过 Entity(实体)在三维场景中添加和控制各种三维对象,如点、线、面、模型等。本文将介绍 Cesium 中实体的增删改查操作。
3950 0
|
自然语言处理 算法 NoSQL
手把手教学小型金融知识图谱构建:量化分析、图数据库neo4j、图算法、关系预测、命名实体识别、Cypher Cheetsheet详细教学等
手把手教学小型金融知识图谱构建:量化分析、图数据库neo4j、图算法、关系预测、命名实体识别、Cypher Cheetsheet详细教学等
手把手教学小型金融知识图谱构建:量化分析、图数据库neo4j、图算法、关系预测、命名实体识别、Cypher Cheetsheet详细教学等
|
Java 关系型数据库 MySQL
Mybatis数据库连接报错:对实体 “characterEncoding“ 的引用必须以 ‘;‘ 分隔符结尾
Mybatis数据库连接报错:对实体 “characterEncoding“ 的引用必须以 ‘;‘ 分隔符结尾
151 0

热门文章

最新文章