[转]设计数据库的ER图和表字段类型定义
原文链接:
如何画好ER图——博客园
数据库ER图——CSDN
如何处理E-R图中的“关系的属性”【关系代数骚操作】——CSDN
设计并生成ER图#
了解ER图的基本组成,以及如何在viso中画ER图。
什么是ER图#
ER图是实体关系图,用矩形表示实体,用椭圆形表示属性,用棱形表示两实体之间的联系。相互用直接联接起来,是一种数据建模工具。用来描述现实世界的概念模型 。
怎么画,用什么工具画#
最常见是用VISIO来画,也可以在线网站Processon里画。
ER图的组成部分#
-
实体(entity):即数据模型中的数据对象,例如人、学生、音乐都可以作为一个数据对象,用矩形表示 ,内写明实名名。每个实体都有自己的实体成员(entity member)或者说实体对象(entity instance),例如学生实体里包括张三、李四等,实体成员(entity member)不需要出现在ER图中。
-
属性(attribute):即数据对象所具有的属性(所具有的列),例如学生具有姓名、学号、年级等属性,用椭圆形表示,用直接与实体连接。属性分为唯一属性(unique attribute)和非唯一属性,唯一属性(主键)指的是唯一可用来标识该实体实例或者成员的属性,一般来讲实体都至少有一个唯一属性。
-
关系/联系(relationship):用来表现数据对象与数据对象之间的联系,例如学生的实体和成绩表的实体之间有一定的联系,每个学生都有自己的成绩表,这就是一种关系。用菱形表示,里面写两个实体之间是如何关联的。分别与两边实体直线相联,同时在直线上标着联系类型。如(1:1, 1:n , 或M:N)。
ER图中的三种关联关系#
- 1对1(1:1):1对1关系是指对于实体集A与实体集B,A中的每一个实体至多与B中一个实体有关系;反之,在实体集B中的每个实体至多与实体集A中一个实体有关系。
- 1对多(1:N):1对多关系是指实体集A与实体集B中至少有N(N>0)个实体有关系;并且实体集B中每一个实体至多与实体集A中一个实体有关系。
- 多对多(M:N):多对多关系是指实体集A中的每一个实体与实体集B中至少有M(M>0)个实体有关系,并且实体集B中的每一个实体与实体集A中的至少N(N>0)个实体有关系。
如何在visio中画ER图#
在visio2013中可以直接用chen's 数据库表示法画。
路径:更多形状-》软件和数据库-》数据库-》chens数据库表示法。
提醒:按ctrl键拖动相当于复制同类元素,不用每新都新建,来回调整大小,这样可以保证大小都一致。
ER图和关系模型到数据库表#
了解如何通过ER图定义数据库表。
ER图和关系模型#
在创建数据库表之前,首先需要设计数据库表。设计数据库表的主要工具是ER图,数据库表的ER图如下:
ER图给出了数据库表的图形化描述,但还缺乏建立数据库表必要的字段名称、字段类型等信息,还需要把ER图归纳为满足一定约束条件二维表的形式才可以开始创建数据库表。数据库二维表见下表:
如何处理E-R图中的“关系”及“关系的属性”#
参考如何处理E-R图中的“关系的属性”【关系代数骚操作】——CSDN的三结论:
- 仅在多对多关系的情况下为关系提供属性。
- 如果两个实体之间的关系是多对多,我们将需要一个额外的关系表,新表应该至少有两个属性(外键)来自每个表(它们各自的主键)。
- 如果多对多关系没有属性,那么就不用第三张表,可以利用json列表来存放这种关系。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!