概念数据模型(Conceptual Data Model)也称为信息模型。它是对客观事物及其联系的抽象,用于信息世界的建模,是现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力工具。概念数据模型摆脱了计算机系统及数据库管理系统的具体技术问题,集中精力分析数据及数据之间的联系等,与具体数据库管理系统无关。概念数据模型必须转换成逻辑数据模型,才能在数据库管理系统中实现。它强调其语义表达能力,即能够较方便、直接地表达应用中的各种语义只是。这类模型概念简单、清晰、易于被用户理解,是数据库设计人员和用户之间进行交流的语言。

Pter Pin-Shan Chen在1976年提出的实体-联系的方法,简称E-R模型(Entity-Relationship Model),是最为著名的一种概念模型的表示方法。该方法用E-R图来描述现实世界的概念模型。E-R模型能够清楚地表达被描述对象的语义,用图形化方式描述数据及其之间的关系,简单、容易理解掌握、且易被转换成关系数据模型。

为了适应新的应用需求,在基本E-R模型的基础上又提出了扩展实体联系模型(Extend entity-Relationship Model),简称为“EER模型”。这种模型能表示更多的语义,扩充了子类型的概念,为面向对象的数据库设计提供了邮箱工具。

1. 概念模型的基本概念

实体(Entity)

客观存在并可相互区分的事务称为实体。实体可以是具体的人、事和物,也可以是抽象的概念或联系。例如,学生是一个实体。

属性(Attribute)

实体所具有的若干特征称为属性,其中每一个特征就称为实体的一个属性。属性必须相对实体而存在。例如,学生实体可以由学好、姓名、性别、出生年份、所属院系、入学年份等属性组成(20140505,张珊,女,1992,计算机系,2014),这些属性组合起来表征了某一个学生。

码(Key)

唯一标识实体的属性集称为码。例如,学号是学生实体的码。

域(Domain)

属性的取值范围称为该属性的域。例如,学号的域为6位整数,姓名的域为字符串集合,年龄的域为小于28的整数,性别的域为(男,女)。

实体型(Entity Type)    实体型由实体名称和属性名称集合组成的形式来抽象和刻画同一类实体。例如,学生(学号,姓名,性别,出生年份,所属院系)就是一个实体型。

实体集(Entity Set)

同一类型实体的集合称为实体集。例如,全体学生就是一个实体集。

联系(Relationship)

现实世界中事物之间的联系在概念模型中必然要加以反映。一般存在两类联系:一是实体内部联系,通常是指实体的各属性之间的联系;二是实体之间的联系,通常是指不同实体之间的联系。

2. 联系

两个实体型之间的联系称为二元联系,是现实世界大量存在的联系,可以分为3类。

(1) 一对一(1:1)联系

实体集A只和实体集B有关系,同样实体B只和实体A有关系,记为1:1,。例如,一个学校只有一个正校长,而一个校长只在一个学校任职,则学校与校长之间具有一对一联系。

(2)一对多或多对一联系

实体集A在实体集B中对应多个实体,B中每个实体对应A中的一个实体,记为1:n。反之亦然,记为n:1。例如,一个专业中有若干名学生,而每个学生只在一个专业中学习,则专业与学生之间具有一对多的联系。

(3)多对多(m:n)联系

实体集A在实体集B中对应多个实体,反之B中每个实体对应A中的多个实体,记为m:n。例如,一个教师可以有很多学生,一个学生也可以有多个老师,则教师与学生之间具有多对多的联系。

实际上,一对一联系是一对多联系的特例,而一对多联系有事多对多联系的特例。

一般情况下,3个以上的实体型之间也存在着一对一、一对多、多对多的联系,称为多元联系。例如,对于课程、教师与参考书3个实体型,如果一门课程可以有若干个教师讲授,使用若干本参考书,而每一个教师之讲授一门课程,每一本参考书只供一门课程使用,则课程与教书、参考书之间的联系是一对多的。

同一个实体集内的各个实体之间也可以存在一对一、一对多、多对多的联系,称为一元联系。例如,职工实体集内部具有领导和被领导的联系,即某一职工(干部)领导若干名职工,而一个职工仅被另外一个职工直接领导。因此是一对多的联系。

3. 概念模型的表示方法

概念模型的表示方法很多,其中最著名也是最常用的表示法是E-R方法,也称为E-R模型。它用E-R图来描述现实世界的概念模型。E-R图的主要成分是实体型、属性和联系。

(1)实体型:用矩形表示,矩形框内写明实体名。

(2)属性:用椭圆形表示,并用无向边把实体与属性连接起来。

(3)联系:用菱形表示,菱形框内写明联系名,并用无向边分别把菱形与有关实体相连接,在无向边旁标上联系的类型(1:1,1:n或m:n)。需要注意的是,如果一个联系具有属性,则这些属性也要用无向边与该联系连接起来。

例如,学校中有一个校长和若干个班级,每个班级有若干个教师和学生,每个教师教授许多学生,每个学生都有学号、姓名、性别、班级、入学时间属性。

需要说明的是,E-R图的绘制有两种方法:集成法和分离法。集成法是将一个系统的所有实体、实体属性,实体与实体之间的联系全部画在一个图上,形成一个完整的E-R图。这种画法适合描述规模不大的数据库系统,图2-5所示即是集成法绘制的E-R图。分离法是先分别画各个实体及其属性图,然后再画实体间联系图,这种画法适合描述规模较大的数据库系统。

SQL Server数据库学习笔记-概念数据模型的更多相关文章

  1. SQL Server数据库学习笔记-E-R模型

    实体(Entities)联系(Relationships)模型简称E-R模型也称E-R方法,是由P.P.Chen于1976年首先提出的.还有一个关键元素Attributes-属性,它提供不受任何数据库 ...

  2. SQL Server数据库学习笔记-设计表时应该考虑的因素

    设计数据库其实就是设计数据库中的表.到底要注意些什么才能够设计好一个数据库呢?一个宗旨,8个建议. 一个宗旨“尽量少的表,每个表中尽量少的列,合理的表结构”. 8个建议: 第一个,首先要考虑的是咱们这 ...

  3. SQL Server数据库学习笔记-三大范式

    第一范式(First Normal Form,简称1NF):数据库表中的字段都是单一属性的,不可再分.这个单一属性由基本类型构成,包括整型.实数.字符型.逻辑型.日期型等.要求一个属性只包含一个值,多 ...

  4. SQL Server数据库学习笔记-外键

    关于主键的话大家很好理解,主键的主要作用就是用来标识一条数据是唯一的,也就是保证数据的实体完整性.防止数据重复.但是外键的话就有许多的疑问了,那外键是咋回事儿呢? 1. 外键的定义: 外键(FK)是用 ...

  5. 关于SQL SERVER数据库学习总结

    对于SQL SERFVER数据库也学了有一阵子了,自己也对自己所学做了一些总结. 我们首先学习数据库设计的一些知识点和用SQL语句建库. 设计数据库步骤:需求分析阶段,概要设计阶段,详细设计阶段, 建 ...

  6. C#面试题(转载) SQL Server 数据库基础笔记分享(下) SQL Server 数据库基础笔记分享(上) Asp.Net MVC4中的全局过滤器 C#语法——泛型的多种应用

    C#面试题(转载) 原文地址:100道C#面试题(.net开发人员必备)  https://blog.csdn.net/u013519551/article/details/51220841 1. . ...

  7. SQL Server数据库学习总结

    经过一段时间的学习,也对数据库有了一些认识,数据库基本是由表,关系,操作组成:对于初学者首先要学的     一图胜“十”言:SQL Server 数据库总结 一个大概的总结 经过一段时间的学习,也对数 ...

  8. SQL Server 数据库基础笔记分享(下)

    前言 本文是个人学习SQL Server 数据库时的以往笔记的整理,内容主要是对数据库的基本增删改查的SQL语句操作和约束,视图,存储过程,触发器的基本了解. 注:内容比较基础,适合入门者对SQL S ...

  9. SQL Server 数据库基础笔记分享(上)

    前言 本文是个人学习SQL Server 数据库时的以往笔记的整理,内容主要是对数据库的基本增删改查的SQL语句操作和约束,视图,存储过程,触发器的基本了解. 注:内容比较基础,适合入门者对SQL S ...

随机推荐

  1. mysql下的常用操作

    本文继 linux下安装mysql,记录下在工作中最常用的mysql语句 MySQL添加字段和删除字段 添加字段: alter table `user_movement_log`Add column ...

  2. JavaBean和内省

    JavaBean和内省 JavaBean是一个遵循特定的写法的java类     1. 必须有一个无参的构造方法     2.属性私有化     3.私有你给的属性必须通过public类型的方法暴露给 ...

  3. WP8_检测列表是否滑动

    One of the UI features of lists on Windows Phone 7 is that the "scroll bars" don't really ...

  4. 基于s5pv210嵌入式linux使用其他动态、静态库文件程序的交叉编译

    刚刚移植了sqlite3迫切想测试一些,结果将原来在ubuntu系统下写好且测试通过的程序,重新编译就报错,无法找到已定义的函数 这是由于没有使用库或者使用了错误的就.库造成的结果. 正确做法为: a ...

  5. MySQL查询昨天、今天、7天、近30天、本月、上一月数据

    文章同步发表在博主网站朗度云,传输门:http://www.wolfbe.com/detail/201608/291.html   在开发或者统计时,我们可能需要统计某个表的数据.比如:查看今天新增的 ...

  6. [原]Python Web部署方式总结

    不要让服务器裸奔 学过PHP的都了解,php的正式环境部署非常简单,改几个文件就OK,用FastCgi方式也是分分钟的事情.相比起来,Python在web应用上的部署就繁杂的多,主要是工具繁多,主流服 ...

  7. ContentProvider与ContentResolver使用【转】

    这篇文章被转载而转载者未注明原文出处,在此未加上原文地址链接,本人向原作者致以歉意. 下面是文章内容: 使用ContentProvider共享数据: 当应用继承ContentProvider类,并重写 ...

  8. xml文件对应的DTD学习

    DTD文件: 1.DTD文档主要由(元素,属性,实体,PCDATA,CDATA) 2.声明一个元素:<!ELEMENT 元素名称 (元素内容)> eg: <!ELEMENT pers ...

  9. gRPC Client的负载均衡器

    一.gRPC是什么? gRPC是一个高性能.通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协 ...

  10. Python开发【第一篇】Python基础之字符串格式化

    字符串格式化 Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-310 ...