目录

前言

常见的数据库表关系

一对一

一对多

多对多

数据库表三大范式

第一范式

第二范式

第三范式

ER图

概念

画法

中间表的转换

为什么需要中间表?

中间表的结构

三个实体型之间的多对多联系和两两之间的三个多对多联系有什么区别

定义:

参考文章


 

前言

        在拿到项目业务等信息之后,需要向需求规格说明书中添加数据库关系图ER图,数据表之间的数据流图等

仅做个人记录学习所用,如有侵权,请联系我删除

常见的数据库表关系

一对一

        一张表中的一条记录与另外一张表中最多有一条明确的关系

        如:1个人只对应1张身份证,1张身份证也只对应1个人,2个都是1对1 丈夫和妻子

一对多

        一个实体的实例可以与另一个实体的多个实例相关联

        如:用户和订单 分类和商品

多对多

        描述两个实体之间的复杂数量关系,其中一个实体的实例可以与另一个实体的多个实例相关联,反之亦然。

        如:订单和商品 学生和课程

数据库表三大范式

        数据库有8种范式(Normal Form),通常只用到前3种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF),我们设计的关系数据库要满足这3种范式。

第一范式

1NF是对属性的原子性约束,要求属性具有原子性,不可再分解。

第二范式

        2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性。表中的每一条记录都要是可区分的,表中必须要有一个unique字段作为主键。

        第二范式建立在第一范式的基础上,满足第二范式必须要先满足第一范式。

第三范式

        3NF是对字段冗余性的约束,要求属性不能有依赖传递(只依赖于主键,不依赖于主键之外的其它属性),简单来说就是要求没有冗余字段。

        第三范式建立在第二范式的基础上,满足第三范式需要先满足第二范式。

        范式、冗余的取舍:有时为了提高效率,可以适当违反第三范式,冗余部分字段以减少多表查询,用空间换时间。

ER图

概念

        ER图,全称实体-关系图(Entity-Relationship Diagram),是一种用来表示实体之间关系的图形化工具,常用于数据库设计中。它由三个基本元素组成:实体(Entity)、属性(Attribute)和关系(Relationship)。

        实体(Entity):实体是现实世界中可以区分的对象。在ER图中,实体通常用矩形表示。例如,在一个图书馆管理系统中,“书籍”和“读者”都可以是实体。

        属性(Attribute):属性是实体所具有的性质或特征。在ER图中,属性通常用椭圆表示,并通过直线连接到对应的实体。例如,“书籍”实体的属性可能包括“书名”、“作者”和“ISBN号”。

        关系(Relationship):关系是实体之间的逻辑联系。在ER图中,关系通常用菱形表示,并通过直线连接到参与关系的实体。例如,“读者”和“书籍”之间可能存在“借阅”关系。

画法

  1. 先画出所有实体,矩形圈出来
  2. 再画出每个实体的属性,椭圆圈出来,实体、属性之间实线连接,作为主键的属性可以画一条下划线。
  3. 实体之间用菱形标注联系,并标注关联关系:一对一(1,1)、一对多(1,n),多对多(m,n)。

如:

中间表的转换

        在数据库设计中,中间表(也称为联结表或桥接表)通常用于处理多对多(M:N)关系。当两个实体之间存在多对多的关系时,即一个实体的实例可以与另一个实体的多个实例相关联,反之亦然,这时候就需要一个中间表来记录这种关系。

为什么需要中间表?

        在多对多关系中,如果直接在两个实体之间建立关系,就会遇到一个问题:无法确定一个实体实例与另一个实体实例之间的具体关系。例如,如果有一个“学生”实体和一个“课程”实体,每个学生可以选修多门课程,每门课程也可以被多个学生选修。如果没有中间表,就无法记录哪个学生选修了哪门课程,以及他们的选课时间、成绩等具体信息。

中间表的结构

中间表通常包含以下几部分:

  1. 主键(Primary Key):中间表自己的唯一标识。中间表的主键,可以是两个外键作为联合主键,也可以是再增加一个主键字段。
  2. 外键(Foreign Key):指向参与多对多关系的两个实体的键。这些外键在中间表中通常也是主键的一部分。
  3. 其他属性:除了外键之外,中间表还可以包含其他属性,如关系的具体信息,例如选课时间、成绩等。

三个实体型之间的多对多联系和两两之间的三个多对多联系有什么区别

定义

        在两个以上多个实体集之间,当一个实体集与其它实体集之间均(注意是均)存在多对多联系,而其它实体集之间没有联系时,这种联系才称之为多个实体集之间的多对多联系。

        比如有三个实体集:供应商、项目、零件,一个供应商可以供应多个项目多种零件;每个项目可以使用多个供应商供应的零件;每种零件可以由不同供应商提供。但项目和零件之间没有联系。因此,供应商、项目、零件三个实体之间是多对多联系。供应商<———>项目:多对多,供应商<———>零件:多对多,项目于零件无明确联系。


一道题可以帮助更好的理解:

        试给出一个实际部门的 E R 图,要求有三个实体型,而且 3 个实体型之间有多对多联系。 3 个实体型之间的多对多联系和三个实体型两两之间的三个多对多联系等价吗?为什么?

答:

        3 个实体型之间的多对多联系和 3 个实体型两两之间的 3 个多对多联系是不等价,因为它们拥有不同的语义。 3 个实体型两两之间的三个多对多联系如下图所示。

        第一问中学生和课程、教室有关系(上课),而教室和课程没有关系。第二个每两个都有自己的关系。

参考文章

原文链接:

数据库设计之ER图、三大范式_数据库表er图正确格式-CSDN博客

数据表设计:中间表——多对多关系E-R图转换-CSDN博客

三个实体型之间的多对多联系和两两之间的三个多对多联系有什么区别 - DeepSky_ - 博客园

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐