暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

大白话理解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 图示例:


示例一:在线书店系统


实体

  1. 顾客(Customer)

    • 属性:顾客编号(CustomerID)、姓名(Name)、地址(Address)、电话(Phone)、电子邮件(Email)

  2. 图书(Book)

    • 属性:图书编号(BookID)、书名(Title)、作者(Author)、出版社(Publisher)、出版年份(PublicationYear)、价格(Price)、库存数量(StockQuantity)

  3. 订单(Order)

    • 属性:订单编号(OrderID)、订单日期(OrderDate)、总金额(TotalAmount)


关系

  1. 顾客与订单是一对多的关系(一个顾客可以有多个订单)

  2. 订单与图书是多对多的关系(一个订单可以包含多本图书,一本图书可以被多个订单购买)

对应的 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 : "多对多"

示例二:学校管理系统

实体

  1. 学生(Student)

    • 属性:学号(StudentID)、姓名(Name)、年龄(Age)、性别(Gender)

  2. 课程(Course)

    • 属性:课程号(CourseID)、课程名称(CourseName)、学分(Credit)

  3. 教师(Teacher)

    • 属性:教师编号(TeacherID)、姓名(Name)、专业(Specialization)


关系

  1. 学生与课程是多对多的关系(一个学生可以选择多门课程,一门课程可以有多个学生选择)

  2. 教师与课程是一对多的关系(一个教师可以教授多门课程,一门课程只能由一个教师教授)


对应的 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 : "一对多"

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

实体

  1. 员工(Employee)

    • 属性:员工编号(EmployeeID)、姓名(Name)、职位(Position)、工资(Salary)

  2. 部门(Department)

    • 属性:部门编号(DepartmentID)、部门名称(DepartmentName)


关系

  1. 员工与部门是多对一的关系(多个员工属于一个部门,一个部门有多个员工)

对应的 ER 图如下:

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

    DEPARTMENT {
        int DepartmentID PK
        varchar DepartmentName
    }

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





点 击 下 方  关注+星标  公众号



文章转载自SQL 数据库入门学习,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论