大白话理解ER模型

大白话理解下 ER 模型:

ER 模型呢,您可以把它想象成是一个给数据库画画的工具。

打个比方,如果您要建一个图书馆的数据库来管理图书、读者还有借阅记录这些东西。那么 ER 模型就是帮您先搞清楚都有哪些东西(这在模型里叫“实体” ,比如图书、读者就是实体),这些东西都有什么特点(这叫“属性”,比如图书有书名、作者、出版年份这些属性,读者有姓名、年龄、证件号等属性),还有这些东西之间是怎么联系起来的(这叫“关系”,比如一本图书可以被很多读者借阅,一个读者可以借阅很多本图书,这就是图书和读者之间的借阅关系)

然后把这些东西都用一些图形和线条画出来,让您一眼就能看明白整个数据库里的内容和它们之间的联系,方便后续按照这个设计去搭建真正的数据库

ER 模型(Entity-Relationship Model,实体 – 关系模型) 是用于数据库设计的一种概念模型方法。
一、基本元素

(一)实体(Entity)

实体是具有相同属性或特征的现实世界对象的集合,可以被唯一标识。例如,在学生管理系统中,“学生”、“课程”、“教师”都可以是实体。

(二)属性(Attribute)

属性是实体所具有的特性。每个实体都有一组属性来描述其特征。例如,“学生”实体可能具有“学号”、“姓名”、“年龄”、“性别”等属性。

(三)关系(Relationship)

关系用于表示不同实体之间的联系。关系可以是一对一(1:1)、一对多(1:N)、多对多(M:N)的类型。

一对一关系:例如,一个“学生”与一个“学生证”是一对一的关系,一个学生对应一个唯一的学生证。
一对多关系:例如,一个“班级”与多个“学生”是一对多的关系,一个班级可以有多个学生。
多对多关系:例如,“学生”与“课程”之间是多对多的关系,一个学生可以选择多门课程,一门课程也可以被多个学生选择。

二、绘制 ER 图

通常使用矩形表示实体,椭圆表示属性,菱形表示关系,并使用线段将它们连接起来,线段上标注关系的类型和基数(例如 1、N 等)。

三、作用和意义

(一)系统分析与设计

帮助开发人员和业务分析师更好地理解业务流程和数据需求,明确系统中涉及的实体、属性以及它们之间的关系,为后续的数据库设计和系统开发提供清晰的蓝图。

(二)沟通与交流

ER 模型以直观的图形方式展示了系统的数据结构和关系,方便不同利益相关者(如开发人员、业务用户、管理人员等)之间进行沟通和交流,确保各方对系统的数据需求有一致的理解。

(三)数据库设计

可以作为数据库设计的基础,将 ER 模型转换为关系模式,进而创建数据库表结构、定义字段、建立索引和约束等,保证数据库的结构能够准确地反映业务需求和数据关系。

大白话理解ER 模型中的关系:

在 ER 模型里,关系就是用来描述不同实体之间是如何相互联系、相互作用的
主要有三种关系类型:
一对一关系(1 : 1)
打个比方,一个人对应一张唯一的身份证,一个身份证也只对应一个人,这就是一对一的关系。在 ER 模型里,就用一条线把这两个实体连接起来,表示它们这种一一对应的联系
一对多关系(1 : N)
比如说,一个班级里有很多学生,但是一个学生只能属于一个班级。班级和学生之间就是一对多的关系。在 ER 模型中,会从“一”的那一方(班级)拉一条线连接到“多”的那一方(学生),并且在这条线靠近“多”的那一端画个小叉子,代表一个班级可以对应多个学生
多对多关系(M : N)
再比如,一个学生可以选择多门课程来学习,一门课程也可以有多个学生来选择。学生和课程之间就是多对多的关系。在 ER 模型里,不能直接用线把两个实体连起来了,而是需要创建一个新的“中间表”或者叫“关联表”。比如有一个“学生选课表”,里面有学生的信息和课程的信息,通过这个表来体现学生和课程之间多对多的对应关系

以下提供几个简单的 ER 图示例:

示例一:在线书店系统

实体

顾客(Customer)
属性:顾客编号(CustomerID)、姓名(Name)、地址(Address)、电话(Phone)、电子邮件(Email)
图书(Book)
属性:图书编号(BookID)、书名(Title)、作者(Author)、出版社(Publisher)、出版年份(PublicationYear)、价格(Price)、库存数量(StockQuantity)
订单(Order)
属性:订单编号(OrderID)、订单日期(OrderDate)、总金额(TotalAmount)

关系

顾客与订单是一对多的关系(一个顾客可以有多个订单)
订单与图书是多对多的关系(一个订单可以包含多本图书,一本图书可以被多个订单购买)
对应的 ER 图如下:

erDiagram

CUSTOMER {
    int CustomerID PK
    varchar Name
    varchar Address
    varchar Phone
    varchar Email
}

BOOK {
    int BookID PK
    varchar Title
    varchar Author
    varchar Publisher
    int PublicationYear
    float Price
    int StockQuantity
}

ORDER {
    int OrderID PK
    date OrderDate
    float TotalAmount
    int CustomerID FK
}

CUSTOMER ||--o{ ORDER : "一对多"
ORDER ||--|| BOOK : "多对多"

示例二:学校管理系统

实体

学生(Student)
属性:学号(StudentID)、姓名(Name)、年龄(Age)、性别(Gender)
课程(Course)
属性:课程号(CourseID)、课程名称(CourseName)、学分(Credit)
教师(Teacher)
属性:教师编号(TeacherID)、姓名(Name)、专业(Specialization)

关系

学生与课程是多对多的关系(一个学生可以选择多门课程,一门课程可以有多个学生选择)
教师与课程是一对多的关系(一个教师可以教授多门课程,一门课程只能由一个教师教授)

对应的 ER 图如下:

erDiagram
STUDENT {
int StudentID PK
varchar Name
int Age
varchar Gender
}

COURSE {
    int CourseID PK
    varchar CourseName
    int Credit
    int TeacherID FK
}

TEACHER {
    int TeacherID PK
    varchar Name
    varchar Specialization
}

STUDENT ||--|| COURSE : "多对多"
TEACHER ||--o{ COURSE : "一对多"

示例三:人力资源管理系统

实体

员工(Employee)
属性:员工编号(EmployeeID)、姓名(Name)、职位(Position)、工资(Salary)
部门(Department)
属性:部门编号(DepartmentID)、部门名称(DepartmentName)

关系

员工与部门是多对一的关系(多个员工属于一个部门,一个部门有多个员工)
对应的 ER 图如下:

erDiagram
EMPLOYEE {
int EmployeeID PK
varchar Name
varchar Position
float Salary
int DepartmentID FK
}

DEPARTMENT {
    int DepartmentID PK
    varchar DepartmentName
}

EMPLOYEE ||--o{ DEPARTMENT : "多对一"

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/418873.html

联系我们
联系我们
分享本页
返回顶部