数据库设计 ER图

数据库设计 ER图一、ER图简介ER图,简单来说,E是实体,实体有一组属性;R是关系。找打系统中的实体以及实体关系就可以绘制出ER图了。例如,下图是网上找到的ER图,矩形的是实体,椭圆是属性,实体何实体时间的关系用菱形,关系也有熟悉,例如,学生选修课程,有成绩属性,当然如果系统需要,也可以记录选修的时间等属性信息。认真看下,你会发现ER图理解起来还是比较容易的二、ER图绘制常见问题但是真的落实到自己绘制,很多同学就会遇到困难。下面我们通过反例来学习ER图1.反例1区分功能和关系.

大家好,又见面了,我是你们的朋友全栈君。

一、ER图简介

ER图,简单来说,E是实体,实体有一组属性;R是关系。找到系统中的实体以及实体关系就可以绘制出ER图了。

例如,下图是网上找到的ER图,矩形的是实体,椭圆是属性,实体和实体时间的关系用菱形,关系也有属性,例如,学生选修课程,有成绩属性,当然如果系统需要,也可以记录选修的时间等属性信息。

数据库设计 ER图

认真看下,你会发现ER图理解起来还是比较容易的。

ER图中识别出实体后,找到实体之间的关系很重要。而关系可能是一对一(1:1)、一对多(1:n),多对多(m:n),关系用菱形表示,而关系的类型在菱形的两条与实体的连接线上标注,

判断两个实体的关系是,先让实体A假设为1,看它能对应实体B的个数,然后反过来,假设实体B为1个,看实体A对应的个数,就可以得到实体对应关系。

例如,

1个学生关注多个商品,而1个商品被多个学生关注,所以学生和商品的关系是多对多

1个学生属于1个班级,而1个班级可以多个学生,所以班级和学生的关系是一对多

1个学生拥有1张饭卡,而1张饭卡属于1个学生。所以学生和饭卡的关系是一对一

数据库设计 ER图

二、ER图绘制常见问题

但是真的落实到自己绘制,很多同学就会遇到困难。下面我们通过反例来学习ER图

1.反例1  区分功能和关系

例如,管理员可以管理用户。但是如果系统不记录哪个管理员可以管理哪些用户,那么就无需在ER图上绘制该关系。只有需要在数据库保存的关系,才需要在ER图上保存。

2. 反例2:区分程序功能和数据库数据

挂号排队信息

我个人挂号排队一般不用保存到数据库,所以无需在ER图上表示

另外,如果要显示排队信息,我认为应当是给每个用户一个id序号,程序实现排队,而不是数据库去记录这个排队信息、

数据库设计 ER图

三。ER图转关系模式

数据库设计 ER图

 所有的实体应当转为一张表。所以上面的班级 学生 课程 教师都是一张表

班级表包含字段:班级号,班级名,专业,人数  主键:班级号

学生表包含字段:学号,姓名,性别,年龄 主键:学生号

课程表包含字段:课程号,课程名,课时,学分  主键:课程号

教师表包含字段:编号,姓名,职称,年龄,性别 主键:编号

根据关系是1:1  1:n   m:n 转成表

1)  对于 1:1的  可以将关系保存到任何一个实体表中,

2) 对于1:n的,可以将关系保存到n的那个实体里,例如图中的班级和学生是1对多,那么可以在学生表中增加一个班级id的字段,说明该学生是哪个班级的

学生表包含字段:学号,姓名,性别,年龄,班级ID 主键:学生号

3)对于多对多的关系  m:n的 ,关系保存到新表中

例如,学生和课程是多对多的关系,那么吧两个表的主键拿出来,加上关系属性,组成一个表

学生成绩表 学号 课程号 成绩  主键:学号  课程号

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/152026.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 游戏开发学习路线

    游戏开发学习路线当你在吃鸡,王者农药的时候是否有想过如何才能做出一款这样让人神迷的游戏?游戏开发这个方向看起来目标很明确,但其实是个领域很广的方向,入门的时候如果得不到指点一二,很容易误入歧途,相反,如果走这条路之前能得到前人的一些指引,是可以事半功倍的。下面就结合自己的学习历程和大家分享下游戏开发的学习路线。1.介绍游戏开发分为客户端和服务端两条不同的路线,路线不同,所需的技能也不同。但有些…

    2022年4月19日
    77
  • phpmailer的SMTP ERROR: Failed to connect to server: 10

    phpmailer的SMTP ERROR: Failed to connect to server: 10

    2021年9月25日
    70
  • springboot线程池的使用和扩展

    springboot线程池的使用和扩展我们常用ThreadPoolExecutor提供的线程池服务,springboot框架提供了@Async注解,帮助我们更方便的将业务逻辑提交到线程池中异步执行,今天我们就来实战体验这个线程池服务;本文地址:http://blog.csdn.net/boling_cavalry/article/details/79120268实战环境windowns10;jdk1.8;spring

    2022年6月30日
    19
  • 简单谈谈什么是Hystrix,以及SpringCloud的各种超时时间配置效果,和简单谈谈微服务优化[通俗易懂]

    简单谈谈什么是Hystrix,以及SpringCloud的各种超时时间配置效果,和简单谈谈微服务优化[通俗易懂]1.前言Springcloud框架中,超时时间的设置通常有三个层面:zuul网关#默认1000zuul.host.socket-timeout-millis=2000#默认2000zuul.host.connect-timeout-millis=4000ribbonribbon:OkToRetryOnAllOperations:false#对所有操作请求都进…

    2025年6月8日
    1
  • 怎么修改Ubuntu更新源服务器为国内地址

    怎么修改Ubuntu更新源服务器为国内地址 Ubuntu系统安装完默认更新源是国外服务器,总所周知的原因我天朝连接外国的速度那是很有讲究的,如果偶尔用用Ubuntu也就无所谓了,但是经常使用肯定会让你崩溃的,国内国外速度相差十倍都不止。更新源地址也很简单,有两种方法,一种是如果安装了图形界面,通过配置中心来更改是很方便的;还有一种就是纯服务器版,没有图形界面通过更改配置文件来更换源地址,并且命令行的方法可以随意添加任何可用的更新源地址,…

    2022年5月14日
    48
  • log库spdlog简介及使用[通俗易懂]

    log库spdlog简介及使用[通俗易懂]spdlog是一个开源的、快速的、仅有头文件的C++11日志库,code地址在https://github.com/gabime/spdlog,目前最新的发布版本为0.14.0。它提供了向流、标准输出、文件、系统日志、调试器等目标输出日志的能力。它支持的平台包括Windows、Linux、Mac、Android。spdlog特性:(1)、非常快,性能是它的主要目标;(2)、仅包括…

    2022年6月23日
    47

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号