SQL之ER图

E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。

它是描述现实世界关系概念模型的有效方法。是表示概念关系模型的一种方式。用“矩形框”表示实体型,矩形框内写明实体名称;用“椭圆图框”或圆角矩形表示实体的属性,并用“实心线段”将其与相应关系的“实体型”连接起来;

用”菱形框“表示实体型之间的联系成因,在菱形框内写明联系名,并用”实心线段“分别与有关实体型连接起来,同时在”实心线段“旁标上联系的类型(1:1,1:n或m:n)。

下图为一个E/R图

在这里插入图片描述

上图显示的关系都是2元关系,也可以有多元关系,下图为3元关系

在这里插入图片描述

多对多联系

用直线连接,如上上例所示,实体与实体之间有关系,连线都是直线,以likes为例,一个drinker可以喜欢很多的beer,一个beer也可以被很多的drinker喜欢。

多对一联系

用箭头连接,如下图的favorite,每个drinker最喜欢的beer最多只能有一种,即0或1,而每一种beer可以是很多的drinker最喜欢的。注意箭头的方向!!!

在这里插入图片描述

一对一联系

用圆箭头连接,如下图的best-seller,每个厂商有且只有一个销售最好的beer,而每个厂商有很多的beer,因此beer可能是best-seller,也可能不是。

在这里插入图片描述

角色

在这里插入图片描述

如上图,同样是drinker,但由于之间的关系为married,因此需要区分husband和wife。

子类

同面向对象的子类一样的意思。

在这里插入图片描述

如上图的Ales,是beers的一个字类,继承了bees的属性,同时多出了color这个属性。

弱实体集

在这里插入图片描述

如上图players,即为一个弱实体集,即players中的主键number无法唯一确定,还需要加上teams的主键name才能够唯一确定,简单说,以NBA为例,一个号码加上一个球队名才能够唯一确定一名球员。注意弱实体集与其关联的实体之间的关系形状(如上图的plays-on)。

弱实体集的主要应用场景是,假设将drinkers(name, addr)和favorite(drinker, beer)进行合并成drinker1(name, addr, favBeer),则如下图所示,addr重复了,即产生了冗余。

在这里插入图片描述

E/R图转换成关系

在这里插入图片描述

如上图右下角即为最终转换成的关系。

子类转换成关系

总共有三种方式(以下图为例):

在这里插入图片描述

1.面向对象(Object-oriented)

在这里插入图片描述

即将beers和ales看成两个单独的实体,同时子类继承了父类的所有属性。

2.E/R图风格(E/R style)

在这里插入图片描述

即子类只继承了父类的主键,同时子类的数据在父类中也有

3.用NULL值代替(Use nulls)

在这里插入图片描述

即将子类合并到父类中,而缺失的数据用NULL代替。

### 创建和理解 SQL 实体关系 (ER ) #### 需求分析 在创建 ER 之前,需先进行需求分析。此阶段旨在收集并整理所有必要的业务规则和数据处理逻辑,确保所构建的数据模型能够满足实际应用的需求[^1]。 #### 确定实体 识别系统中的主要对象作为实体。每个实体代表一类具有共同特征的事物集合,在数据库中通常对应一张表。例如,“学生”可以作为一个实体来表示学校里所有的学生信息。 #### 定义属性 对于每一个已确定下来的实体,定义其具体特性即为该实体的属性。这些属性描述了有关这个特定实例的信息项,并将在最终的关系型数据库表格中成为列名。比如“姓名”,“年龄”就是属于“学生”的两个不同属性。 #### 建立联系 通过建立各实体之间的关联方式表达它们之间存在的相互作用或者依赖程度。常见的三种基本类型包括一对一(One-to-One),一对多(One-to-Many)以及多对多(Many-to-Many)。 #### 绘制初步草稿 利用形化工具按照上述原则绘制出各个实体及其间连接线组成的框架结构;此时不必过分追求完美,重点在于清晰展示整体布局与核心要素间的交互模式。 #### 检查调整优化 反复审查和完善初版ER直至达到最佳状态为止。这一步骤可能涉及到重新审视先前设定的一些假设条件或是引入新的约束机制以增强系统的稳定性和效率。 ```sql -- 示例:创建一个简单的ER对应的SQL语句 CREATE TABLE Students ( student_id INT PRIMARY KEY, name VARCHAR(50), age INT ); CREATE TABLE Courses ( course_id INT PRIMARY KEY, title VARCHAR(100) ); ALTER TABLE Enrollments ADD CONSTRAINT fk_student FOREIGN KEY(student_id) REFERENCES Students(student_id); ALTER TABLE Enrollments ADD CONSTRAINT fk_course FOREIGN KEY(course_id) REFERENCES Courses(course_id); ``` #### 应用场景 尽管 E-R 模型最常用于概念可视化和物理数据库设计方面的工作,但在某些特殊场合下也能发挥重要作用。例如当面对复杂的数据存储架构规划或者是想要更直观地向非技术人员解释现有信息系统内部运作原理时,一份精心制作好的E-R表往往能起到事半功倍的效果[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花无凋零之时

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值