数据模型
它是对现实数据特征的抽象,数据模型是数据库系统的核心和基础。
概念模型
按用户的观点对数据和信息进行建模
逻辑模型和物理模型
逻辑模型
层次模型(hierarchical model)
有且只有一个节点没有双亲结点,这个节点称为根节点
根以外的其他节点有且只有一个双亲节点
网状模型(network model)
允许一个以上的节点没有双亲
一个节点可以有多于一个双亲
关系模型(relational model)
关系模型是指用二维表的形式表示实体和实体间联系的数据模型。
(1)关系(Relation):一个关系对应着一个二维表,二维表就是关系名。
(2)元组(Tuple):在二维表中的一行,称为一个元组。
(3)属性(Attribute):在二维表中的列,称为属性。属性的个数称为关系的元或度。列的值称为属性值;
(4)(值)域(Domain):属性值的取值范围为值域。
(5)分量:每一行对应的列的属性值,即元组中的一个属性值。
(6)关系模式:在二维表中的行定义,即对关系的描述称为关系模式。一般表示为(属性1,属性2,……,属性n),如老师的关系模型可以表示为教师(教师号,姓名,性别,年龄,职称,所在系)。
(7)键(码):如果在一个关系中存在唯一标识一个实体的一个属性或属性集称为实体的键,即使得在该关系的任何一个关系状态中的两个元组,在该属性上的值的组合都不同。
(8)候选键(候选码):若关系中的某一属性的值能唯一标识一个元组如果在关系的一个键中不能移去任何一个属性,否则它就不是这个关系的键,则称这个被指定的候选键为该关系的候选键或者候选码。
面向对象数据模型(object oriented data model)
面向对象模型是一种新兴的数据模型,它采用面向对象的方法来设计数据库。面向对象的数据库存储对象是以对象为单位,每个对象包含对象的属性和方法,具有类和继承等特点。
对象关系数据模型(object relational data model)
半结构化数据模型(semistructured data model)
有关半结构化数据还没有一个统一的定义,Serge Abiteboul定义半结构化数据为:半结构化数据是指那些既不是完全无结构的,也不是传统数据库系统中那样有严格结构的数据
物理模型
物理模型是对数据底层的抽象,描述数据在系统内部的表示方法和存取方法,或在磁盘上的存取方法,是面向计算机系统的。
实体—联系方法 E-R图
以下内容取自https://www.cnblogs.com/Feq1007/p/9687270.html
(原网站有例题)
在学习E-R图之前,我们应该先搞清楚,E-R图是干什么的?
E-R图由什么构成以及如何才能画一个E-R图?
我们就按照这个顺序来一起学习一下E-R图。
首先,E-R图,全称为实体联系模型、实体关系模型或实体联系模式图(ERD)(英语:Entity-relationship model)由美籍华裔计算机科学家陈品山发明,是概念数据模型的高层描述所使用的数据模型或模式图。也就是说,我们可以通过E-R图,对信息世界进行建模,对现实世界进行第一层抽象。说白了就是用图的方式描述事物的属性和事物之间的关系!
既然是要描述事物属性,我们首先要知道一些信息世界的基本概念:
(1)实体(Entity):
客观存在并可相互区别的事物。实体可以是具体的人、事、物,也可以是抽象的概念或联系。比如一个学生、一门课、老师与学院的工作关系等都属于实体。
(2)属性(Attribute):
实体所具有的某一特性。一个实体可以由多个属性来刻画。这个应该很好理解,就像人的实体有名字,身高,体重,出生年月等等。这些属性组合起来表征一个人。
(3)码(Key):
唯一标识实体的属性集称为码。例如学生的学号就唯一标识了学生实体,还有我们的身份证唯一标识了我们。
(4)域(Key):
域是一组具有相同数据类型的值和集合。属性的取值范围来自某个域。比如,姓名的域是字符串集合,年龄的域是整数,性别的域为(男,女)。
(5)实体型(Entity Type):
具有相同属性的实体必然具有共同的特征和性质。用实体名以及其属性名集合来抽象和刻画同类实体,称为实体型。举个栗子:学生(学号、姓名、性别、出生年月、所在院系、入学时间)就是一个实体型。
(6)实体集(Entity Set):
同一类实体的集合就是实体集。比如:全体学生就是一个实体集。
(7)联系(Relationship):
现实世界中,事物内部及事物之间的关系,反映在信息世界中即是实体(型)内部的联系和实体(型)之间的联系。实体内部的联系通常指实体各属性之间的联系;实体间的联系通常指不同实体集之间的联系。
介绍完信息世界中基本概念后,即是完成了描述事物的属性这一步,接下来就是事物之间的关系这一步了。
首先是两个实体型之间的联系,几乎所有复杂的联系,都可以简化为好几个两个实体集之间的联系,所以我们先讨论两个实体型之间的联系。
两个实体型之间的联系可以分为三类:
(1)一对一联系(1:1):
对于实体集A中每一个实体,实体集B中最多有一个(也可以没有)实体与之联系,反之亦然,则称实体集A和实体集B具有一对一联系。
举个梨子:一般来说,一个班级只有一个正班长,且一个班长只在一个班中任职,所以我们说班长和班级之间具有一对一联系。
(2)一对多联系(1:n):
实体集A中每一个实体,实体集B中有n个实体(n ≥ 0)与之联系,反之,B中的每一个实体,实体集A中至多只有一个与之联系,则称实体集A与实体集B具有一对多联系。
举个苹果:一般来说,一个班级中有若干个学生,而每个学生只在一个班级中学习,则班级与学生之间具有一对多的联系。
(3)多对多联系(m:n):
因该不难推测,多对多就是实体集A中每一个实体,在实体集B中有n(n ≥ 0)个与之联系,反正实体集B中每一个实体,A中也有m(m ≥ 0)个实体与之联系。我们则称A与B具有多对多联系。
举个香蕉:一门课程同时有若干个学生选修,一个学生一次可以选择若干门课程,所以课程与学生之间的联系属于多对多的联系。
单个实体型内的联系:
我们首先要知道,单个实体型之间也是存在一对一,一对多和多对多的联系的。例如职工实体型就有领导和被领导的联系,一般来说这是一种一对多的联系,一名领导领导多名员工,多名员工被一个领导领导。
在我们实际生活中,更多的是多个实体集之间的联系,由于可以存在多个实体集之间有着共同的关系,所以当我们要描述的问题比较大的时候,很难用语言来描述其中的关系,我们需要一种能够简化这种关系,让我们简单清楚的发现其中的关系的一种方法,所以才有了E-R图。
要画E-R图,我们要先知道E-R由什么组成:
四个E-R图的组成:
矩形框:
表示实体,在框中记入实体名。
菱形框:
表示联系,在框中记入联系名。
椭圆形框:表示实体或联系的属性,将属性名记入框中。对于主属性名,则在其名称下划一下划线。
连线:
实体与属性之间;实体与联系之间;联系与属性之间用直线相连,并在直线上标注联系的类型。(对于一对一联系,要在两个实体连线方向各写1; 对于一对多联系,要在一的一方写1,多的一方写N;对于多对多关系,则要在两个实体连线方向各写N,M。)
画法
然后我们就可以画了,以上面举的例子为例:
两个实体(1:1): 两个实体(1:n):两个实体(n:m):
三个实体之间:单个实体之间一对多实例:
这就是简单的E-R图。
总结一下吧:
首先要找到所有的名词,然后去掉具有相同含义的词,还有就是确认两个是不是同一实体,如果是的话就保留一个,如果不是就千万不能合在一起;
然后就是从一个实体出发,分析与他有关的其他实体,像网一样慢慢展开,注意分析考察每一对究竟是三种当中的哪一种;
对于不同实体连接到统一实体的,如果可以合并的就合并;
最后,我们可以暂时不用管实体的属性,在其他地方将实体的属性单独画出来,因为有时候实体属性太多,如果全部画在图上的话会反而变得“难看”。
内容参考自:数据库系统概论(第四版)