摘要
  在管理信息系统开发中,数据库设计的目标是建立DBMS能识别的关系数据模型。而关系数据模型建立的基础是首先建立E-R模型,通过E-R模型才能转换为关系数据模型。如何建立E-R模型以及如何将E-R模型转换为关系数据模型,是管理信息系统开发中数据库设计的关键。摘自《价值工程》

可以通俗理解为E-R模型能够更好的去帮助我们去分析创建关系数据库中的所需的表

一、那么什么是E-R模型?

 E-R模型即实体-联系模型,E-R模型的提出基于这样一种认识,数据库总是存储现实世界中有意义的数据,而现实世界是由一组实体和实体的联系组,E-R模型可以成功描述数据库所存储的数据。

二、为什么要设计E-R模型?

 设计E-R模型能够更有效和更好的模拟现实世界。

三、E-R模型的基本要素

1) 实体 :实体是E-R模型的基本对象,是现实世界中各种事物的抽象,凡是可以相互区别,并可以被识别的事、物概念等均可认为是实体。在一个单位中,具有共性的一类实体可以划分为一个实体集,例如,学生李明,黄颖等都是实体,为了便于描述,可以定义学生这样的一个实体集,所有学生都是这个集合的成员。

2)属性:每个实体都具有各种特征,称其为实体的属性,如学生有学号,姓名,年龄等属性。实体的属性值是数据库存储的主要数据。能唯一标识实体的属性或属性组称为实体键,如一个实体有多个键存在。则可从中选取一个作为主键。

3)实体间会存在各种关系,如人与人之间可能存在领导与雇员关系等,实体间的关系被抽象为联系。

以下例子解释的很好 :引自《Oracle 11g基础教程与实验指导》

联系可分为以下 3 种类型:

 (1) 一对一联系(1 ∶1)

 对于实体集A和实体集B来说,如果对于A中的每一个实体a,B中至多有一个实体b与之有联系,而反过来也是如此,则称实体集A与实体集B存在一对一联系。

例如,一个部门有一个经理,而每个经理只在一个部门任职,则部门与经理的联系是一对一的。

 (2) 一对多联系(1 ∶N)

对于实体集A和实体集B来说,如果对于A中的每一个实体a,B中有N个实体b与之有联系,而实体B中每一个实体b,A中至多有一个与之有联系,则称体集A与实体集B存在一对多联系。

例如,某校一个班级可以有多个学生,但一个学生只能有一个班级

(3) 多对多联系(M ∶N)

对于实体集A和实体集B来说,如果对于A中的每一个实体a,B中有N个实体b与之有联系,而实体B中每一个实体b,A中有M个与之有联系,则称实体集A与实体集B存在多对多联系。
      
实体符号用矩形表示,并标以实体名称,属性用椭圆表示,并标以属性名称,联系用菱形表示,并标以联系名称
  
(1) 一对一联系(1 ∶1)E-R图(画图画的请见谅、)
    
   

在关系模型中一张二维表格(行,列)对应一个表格,二维表中的每行代表一个实体,每个实体的列代表该实体属性。E-R图最终需要转换为关系模型才有意义。

四、将E-R模型转化为关系模型

1、实体转化为关系  

实体集转化为关系非常简单,只需将实体的属性作为关系的列即可(实体的所有属性);

2、联系转化为关系

 1)一对一联系需要将其中一个实体的主键作为另一个实体的属性。反映到映射中,将一个关系的主键作为另一个关系的普通列联系本身的属性也应当以列的形式植入。对于一对一关系可将主从关系颠倒,也不会导致信息丢失

可将角色编号作为用户关系中的一个普通列,反过来也可以!

2)一对多联系,需要将一的一方作为主表,多的一方作为从表。联系的所有属性为从表的列,这样才不会导致信息丢失。

  如学生与班级:学生信息为从表,班级信息为主表

3)一对多。无论联系加入到哪一方都将造成信息丢失。

  如学生与选课。可以将学号,课程Id,以及关系的属性---学分作为新关系的列

《参考文献》:郝安林,康会光,《Oracle 11g基础教程与实验指导》

https://www.cnblogs.com/fanhongyun/p/4423330.html

基于E-R模型的关系型数据库设计方法的更多相关文章

  1. 数据库系统(四)---关系型数据库设计及E-R图

    1.关系型数据库: 关系型数据库是一类采用关系模型作为逻辑数据模型的数据库系统,遵从数据库设计的基本步骤,包括:需求分析.概念结构设计.逻辑结构设计.物理结构设计.数据库实施.数据库的运行和维护等阶段 ...

  2. 关系型数据库设计——E-R图

    一.数据管理技术的三个发展阶段: 1)人工管理阶段(20世纪50年代中期) 特点:数据不保存:应用程序管理数据:数据不共享:数据没有独立性: 2)文件系统阶段(20世纪50年代后—60年代)特点:数据 ...

  3. 关系型数据库和NoSQL数据库

    一.数据库排名和流行趋势 1.1 Complete ranking 链接: https://db-engines.com/en/ranking 在这个网站列出了所有数据库的排名,还可以看到所属数据库类 ...

  4. 数据库:mongodb与关系型数据库相比的优缺点 (转)

    与关系型数据库相比,MongoDB的优点:①弱一致性(最终一致),更能保证用户的访问速度:举例来说,在传统的关系型数据库中,一个COUNT类型的操作会锁定数据集,这样可以保证得到“当前”情况下的精确值 ...

  5. 数据库:mongodb与关系型数据库相比的优缺点

      与关系型数据库相比,MongoDB的优点:①弱一致性(最终一致),更能保证用户的访问速度:举例来说,在传统的关系型数据库中,一个COUNT类型的操作会锁定数据集,这样可以保证得到“当前”情况下的精 ...

  6. 数据库:mongodb与关系型数据库相比的优缺点zz (转)

    与关系型数据库相比,MongoDB的优点:①弱一致性(最终一致),更能保证用户的访问速度:举例来说,在传统的关系型数据库中,一个COUNT类型的操作会锁定数据集,这样可以保证得到“当前”情况下的精确值 ...

  7. Mysql之数据库设计

    一.三大范式 1.第一范式:消除一个字段包含多个数据库值,消除一个记录包含重复的组(单独的一列包含多个项目),即可满足1NF. 2.第二范式:消除部分依赖性即可转化为2NF.部分依赖性表示一个记录中包 ...

  8. [MongoDB]MongoDB的优缺点及与关系型数据库的比较

    汇总: 1. [MongoDB]安装MongoDB2. [MongoDB]Mongo基本使用:3. [MongoDB]MongoDB的优缺点及与关系型数据库的比较4. [MongoDB]MongoDB ...

  9. (转)Mongodb相对于关系型数据库的优缺点

    与关系型数据库相比,MongoDB的优点:①弱一致性(最终一致),更能保证用户的访问速度:举例来说,在传统的关系型数据库中,一个COUNT类型的操作会锁定数据集,这样可以保证得到“当前”情况下的精确值 ...

随机推荐

  1. Xcode自定义字体不能应用的原因

    想给UILabel换一个自定义的字体,从字体册选择兰亭黑: 然后选择 在Finder中显示,找到字体文件为Lantinghei.ttc: 将其拷贝到项目中,在info.plist里添加字体支持key, ...

  2. 43个优秀的Swift开源项目推荐

    "轮子" 工具类 项目 开发者 备注 SwiftyJSON tangplin, lingoer GitHub 上最为开发者认可的 JSON 解析类 Dollar.swift Ank ...

  3. Unity Singleton 单例类(Unity3D开发之二十)

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/47335197 ...

  4. Android监听自身卸载,弹出用户反馈调查

    1,情景分析 在上上篇博客中我写了一下NDK开发实践项目,使用开源的LAME库转码MP3,作为前面几篇基础博客的加深理解使用的,但是这样的项目用处不大,除了练练NDK功底.这篇博客,我将讲述一下一个各 ...

  5. OpenCV图片矩阵操作相关,对png图片操作(多通道)

    文献链接: http://www.cnblogs.com/tornadomeet/archive/2012/12/26/2834336.html 下面这个高手,写了个小程序我还没有调试,回头 调试看看 ...

  6. Linux系统下常用的快捷键

    快捷键 ctrl +  shift + '+'   将当前的终端放大 ctrl +  '-'           将当前的终端放小 ctrl +  l             清屏 ctrl +  u ...

  7. Java核心技术第四章——1.封装性

    封装性(有时称为数据隐藏): 实现封装的关键在于绝对不能让类中的方法直接地访问其他类的实例域值.程序仅通过对象的方法与对象的数据进行交互. 给对象赋予了"黑盒"的特征,提高了重用性 ...

  8. Spring Boot 多模块与 Maven 私有仓库

    前言 系统复杂了,抽离单一职责的模块几乎是必须的:若需维护多个项目,抽离公用包上传私有仓库管理也几乎是必须的.其优点无需赘述,以下将记录操作过程. 1. 多模块拆分 在.NET 中由于其统一性,实现上 ...

  9. oracle dmp数据导入

    11.245.2.55  root:root su  - pams --注意pams前面的空格 /cnaps2/pams/backup   exp_pams_20141219.dmp drop tab ...

  10. access登录窗口校验代码一

    Private Sub login_Click()If IsNull(Me.username) ThenMsgBox "请输入用户名!", vbExclamationElseIf ...