ER模型的概念

  • 实体
    画图时用方形表示

  • 属性
    椭圆形表示

  • 关系
    菱形表示

  • 主键(主码)
    在主属性下面画划线

  • 外键(外码)
    这里一般是用于一对多或者一对一有关系的时候将某个主属性作为另一方的外键时候要用到,这里是在外键属性下波浪线表示外键(外码)

如何画ER图

画ER图的总结反思:

  • 实体之间基本都是用关系(菱形) 关联起来
  • 关系之间标上对应数量 1:1 / 1:n / n:m
  • 实体还可以与自身创建关系(比如:职工与领导,领导本身也是职工的一员,这时候就可以开一个关系叫做“带领”/“领导”之类的动词作为关系 ,然后与自身连起来)
  • 在画关系的时候,有时候一个关系也要唯一标识的时候就需要加上某些属性,比如说借书这个关系,借书需要有借书时间,借书人ID等等,这就是权衡利弊的时候了,设也是我认为设计数据库的魅力之一。

ER图转换为关系数据库

  • 实体转化为一个关系数据表即可(考虑主键的设计)
  • 1:1关系
    当出现1:1的二者实体的关系的时候,很简单,只需要将一方的主键添加到另一方中作为外键属性
    举例子:一对一,一个院对应一个院长,要么将院长(ID)主键加入到系的表中作为外键或者将院的ID加入到院长的属性中作为外键,这里可能会很容易想到将院ID加入院长中不切实际,因为其他教师也要加入用来分辨该老师属于哪一个院的,所以这也是数据库设计的一大魅力,这里的需求肯定是第一种方式解决最好。
  • 1:n关系
    1:n需要将1的一方的主键添加到n一方实体的属性中作为外键。
    举例子:一个院对应多名老师,这时候本该的操作肯定是将院的ID加入到多名老师中,假设我们不这么做会发生什么?假设不这么做,而是将多名老师的ID加入到院中,正常人一想到这肯定就知道了这数据冗余是有多大,而且我们要查某个老师是哪一个院的时候我们还要去院表中查,这既不方便又充斥着无用数据在院表中,因为不止一个院不止一个老师。还方便查找等等。
  • n:m关系
    出现这个多对多的关系之后就要求把这个关系也设计出来一个单独的关系(表),我认为比较暴力有用的方法就是将这个关系连接的两者的主键取出来作为该关系的联合主键,然后这关系该有的属性也一并添加进去即可
    举例子:书籍与借书人的关系,我们不能把书籍信息放进借书人表中,因为不止借一本,借书人表信息一般只对应一个与元组,因为有他自己注册的ID账号嘛,做过数据库的都知道不可能多个主键存储,反过来对于书籍也是一样,不可能为了你这个借书人特地为这个书籍存储的信息记录借书人的信息,更不要说一本书以后会有多个人借阅了,这时候就需要另外创建一个表,用来记录二者的关系,查找的时候也方便,将二者的主键添加到ER关系的关系表中,然后也方便查找,正产人思维去到前台不都是报自己的账户然后书名查看自己到底有没有借还某本书,或者一查账户就知道借还了什么书。(同理还有学生与课程之间有一个选课关系也要单独提取出来为一个表,因为是多对多的关系,一个学生不可能只学习一门课程,一门课程也不可能只为一个学生开设。)
  • 用鲁琴老师的课件例题作为参考复习

数据库—ER模型概念设计的更多相关文章

  1. 数据库 E-R模型

    数据库 E-R模型被定义被两种模型  "实体模型"  AND "关系模型" 1.1 实体模型 如图:这是一个"项目表" Project    ...

  2. 17数据表&E-R模型&概念数据模型上-选学天轰穿大话数据库视频教程

    大纲:解剖“数据表”,戏说E-R模型,概念数据模型(E-R 到 CDM),使用PowerDesigner创建概念模型,生成逻辑数据模型 土豆超清地址: 腾讯超清地址: 百度云盘下载地址:上传ing,稍 ...

  3. 数据库E-R模型,数据字典

    概述:实体-联系模型(简称E-R模型) 模型结构: E-R模型的构成成分是实体集.属性和联系集,其表示方法如下: (1) 实体集用矩形框表示,矩形框内写上实体名. (2) 实体的属性用椭圆框表示,框内 ...

  4. 18数据表&E-R模型&概念数据模型-下(选学)-天轰穿大话数据库视频教程

    关键字:数据表 三大范式 外键 主键 数据表设计 天轰穿 sqlserver 数据库大纲:属性与主键,外键&联系,三大范式,设计表时应该考虑的因素 土豆超清地址: 优酷超清地址: 原文地址:h ...

  5. 数据库设计与 ER 模型 - 数据库系统原理

    数据库系统生存周期 数据库应用系统的开发是一项软件工程,一般具有信息的采集.组织.加工.抽取.综合.传播等功能,但又有自己的特点,所以称为 数据库工程. 数据库应用系统从开始规划.设计.实现.维护到最 ...

  6. 数据库设计和ER模型-------之ER模型的基本概念(第二章)

    ER模型(实体联系模型)的基本元素 实体:是一个数据对象,在ER模型中,实体用方框表示,方框内注明实体的名称 联系:表示一个或多个实体之间的关联关系,联系用菱形框表示,并用线段将其与相关的实体联系起来 ...

  7. 数据库设计和ER模型-------之关系模型的基本概念(第二章)

    关系模型的基本术语 定义:用二维表格来表示实体集,用关键码表示实体之间联系的数据模型称为关系模型 有时也习惯称呼关系为表或表格,元组为行(Row),属性为列.关系中属性个数称为“元数”,元组个数称为“ ...

  8. 基于E-R模型的关系型数据库设计方法

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

  9. 数据库设计和ER模型-------之数据库系统生存期(第二章)

    数据库设计 概念:开发人员利用开发环境表达用户要求.设计构造最优的数据模型,然后据此建立数据库以及其应用系统,这个过程称为数据库设计 数据库生存期 1968年首次提出“软件工程”的概念 概念:我们把数 ...

  10. MySQL数据分析-(5)数据库设计之ER模型

    大家好,我是jacky,很高兴跟大家分享本课时的内容,从本节课开始,就开始了我们第二章的学习,第一章我们抛出了若干问题,从第二章开始往后,都是解决问题的一个过程: 第一章的案例中,我们拿手机销售公司举 ...

随机推荐

  1. #错排,高精度#洛谷 3182 [HAOI2016]放棋子

    题目 分析 这题目太迷惑人了: 每行有一个障碍,数据保证任意两个障碍不在同一行,任意两个障碍不在同一列 \(n\) 个棋子也满足每行只有一枚棋子,每列只有一枚棋子 仔细想想会发现求的是错排方案,那也就 ...

  2. OpenHarmony应用开发—ArkUI组件集合

    介绍 本示例为 ArkUI 中组件.通用.动画.全局方法的集合. 效果预览 使用说明: 1.点击组件.通用.动画.全局方法四个按钮或左右滑动切换不同视图. 2.点击二级导航(如通用属性.通用事件等), ...

  3. 深入理解MD5算法:原理、应用与安全

    第一章:引言 导言 在当今数字化时代,数据安全和完整性变得至关重要.消息摘要算法是一种用于验证数据完整性和安全性的重要工具.在众多消息摘要算法中,MD5(Message Digest Algorith ...

  4. ASP.NET 部署常见问题及解决方案

    ASP.NET 部署部署过程中常见问题及解决方案 Could not load file or assembly 'XXXXX' or one of its dependencies. Access ...

  5. BZOJ 4403序列统计

    假设存在一个满足条件的长度为i的不下降序列(显然是一定存在的)那么只需要从中选出i个数即可 (不必在意选出具体数的大小,可以把满足条件的序列写下来,选几个数感受一下). 但是$n \choose m ...

  6. docker 应用篇————docker 自定义网络[十八]

    前言 看下如何自定义网络. 正文 在了解自定义网络之前呢? 需要明白一件事. 就是其实我们在启动docker的时候是有默认参数的. docker run -d -p --name tomcat01 - ...

  7. 重新整理数据结构与算法(c#)—— 算法套路分治算法[二十五]

    前言 有一个汉罗塔的游戏如下: 汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具. 大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘. 大梵天 ...

  8. ImportError: Cannot load backend 'TkAgg' which requires the 'tk' interactive framework, as 'headless' is currently running

    MMdetection多卡训练常遇到的两个错误,百度无果,没解决,去github里mmdetection的issue模块搜索了一下找到正解. 这里记录一下,方便后者. 1️⃣ ImportError: ...

  9. Pytorch-卷积神经网络CNN之ResNet的Pytorch代码实现

    先说一个小知识,助于理解代码中各个层之间维度是怎么变换的. 卷积函数:一般只用来改变输入数据的维度,例如3维到16维. Conv2d() Conv2d(in_channels:int,out_chan ...

  10. axios 使用与 拦截器

    未拦截使用使用: 由于axios每个请求都是异步.例如有ABC三个请求,C需要拿到AB请求回来的值作为参数,则需同步加载才能,所以使用axios.all才好完成.... 拦截器:为了处理axios中g ...