关系型数据库的设计规则详解

 更新时间:2021年12月09日 09:31:48   作者:感谢狂神说  
大家好,本篇文章主要讲的是关系型数据库的设计规则详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览

E-R(Entity-relationship,实体-联系)模型中有三个主要概念是:实体集、属性、联系集。

一个实体集(class)对应于数据库中的一个表,一个实体(instance)则对应数据库表中的一行,也称一条记录。一个属性对应于数据库表中的一列(column),也称一个字段。

ORM思想(Object Relational Mapping)体现:

数据库表 ↔ Java或Python的一个类

表中的一条数据 ↔ 类中的一个对象(或实体)

表中的一个类 ↔ 类中的一个字段、属性(field)

表关系设计

表与表之间的数据记录有关系(relationship)。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。表关系的四种:

1、一对一关联(one-to-one)

在实际的开发中应用不多,因为一对一可以创建成一张表。

举例:设计学生表:学号、姓名、手机号码、班级、系别、身份证号码、家庭住址、籍贯、紧急联系人、…

拆为两个表:两个表的记录是一一对应关系。

基础信息表(常用信息):学号、姓名、手机号码、班级、系别档案信息表(不常用信息):学号、身份证号码、家庭住址、籍贯、紧急联系人、…两种建表原则: 外键唯一:主表的主键和从表的外键(唯一),形成主外键关系,外键唯一。外键是主键:主表的主键和从表的主键,形成主外键关系。

在这里插入图片描述

2、一对多关系(one-to-many)

常见实例场景:客户表和订单表分类表和商品表部门表和员工表

举例: 员工表:编号、姓名、…、所属部门部门表:编号、名称、简介 一对多建表原则:在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键

在这里插入图片描述

3、多对多(many-to-many)

要表示多对多关系,必须创建第三个表,该表通常称为联接表,它将多对多关系划分为两个一对多关系。将这两个表的主键都插入到第三个表中。

举例1:学生-课程

在这里插入图片描述

学生信息表:一行代表一个学生的信息(学号、姓名、手机号码、班级、系别…)

课程信息表:一行代表一个课程的信息(课程编号、授课老师、简介…)

选课信息表:一个学生可以选多门课,一门课可以被多个学生选择

学号     课程编号  
1        1001
2        1001
1        1002

举例2:产品-订单

“订单”表和“产品”表有一种多对多的关系,这种关系是通过与“订单明细”表建立两个一对多关系来定义的。一个订单可以有多个产品,每个产品可以出现在多个订单中。

产品表:“产品”表中的每条记录表示一个产品。订单表:“订单”表中的每条记录表示一个订单。订单明细表:每个产品可以与“订单”表中的多条记录对应,即出现在多个订单中。一个订单可以与“产品”表中的多条记录对应,即包含多个产品。

举例3:用户-角色

多对多关系建表原则:需要创建第三张表,中间表中至少两个字段,这两个字段分别作为外键指向各自一方的主键。

4、自我引用(Self reference)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wHvZaTHI-1638892870457)(images/image-20210914235651997.png)]

到此这篇关于关系型数据库的设计规则详解的文章就介绍到这了,更多相关关系型数据库设计规则内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 开源数据库设计神器chiner的安装及初体验介绍

    开源数据库设计神器chiner的安装及初体验介绍

    最近在造轮子,从 0 到 1 的那种,就差前台的界面了,大家可以耐心耐心耐心期待一下。其中需要设计一些数据库表,可以通过 Navicat 这种图形化管理工具直接开搞,也可以通过一些数据库设计工具来搞,比如说 PowerDesigner,更专业一点
    2022-02-02
  • RBAC简介_动力节点Java学院整理

    RBAC简介_动力节点Java学院整理

    这篇文章主要介绍了RBAC简介,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • Navicat for MySQL导入csv文件时出现中文乱码的问题解决

    Navicat for MySQL导入csv文件时出现中文乱码的问题解决

    在做数据对接导入的时候使用的数据是CSV格式的文件,导入发现了乱码,下面这篇文章主要给大家介绍了关于Navicat for MySQL导入csv文件时出现中文乱码的问题解决办法,需要的朋友可以参考下
    2023-12-12
  • 浅谈关系型数据库中的约束及应用场景

    浅谈关系型数据库中的约束及应用场景

    这篇文章主要介绍了浅谈关系型数据库中的约束及应用场景,关系型数据库是一种广泛应用的数据库类型,它的核心是基于关系模型的结构化数据存储和管理,在关系型数据库中,约束是一种重要的概念,它可以帮助我们保证数据的完整性和一致性,需要的朋友可以参考下
    2023-07-07
  • Navicat12.1系列破解激活教程亲测有效

    Navicat12.1系列破解激活教程亲测有效

    这篇文章主要介绍了 Navicat12.1系列破解激活教程亲测有效,本文给大家介绍的非常详细,对大家的学习或工作工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • SQL中一些小巧但常用的关键字小结

    SQL中一些小巧但常用的关键字小结

    这篇文章主要给大家总结介绍了关于SQL中一些小巧但常用的关键字,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • DataGrip 连接 HiveServer2 报错的问题

    DataGrip 连接 HiveServer2 报错的问题

    这篇文章主要介绍了DataGrip 连接 HiveServer2 报错的问题,本文通过图文实例相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • 复杂系统中的用户权限数据库设计解决方案

    复杂系统中的用户权限数据库设计解决方案

    这篇文章主要介绍了复杂系统中的用户权限数据库设计解决方案,针对大型、复杂的B/S系统,需要的朋友可以参考下
    2014-06-06
  • 详解Flink同步Kafka数据到ClickHouse分布式表

    详解Flink同步Kafka数据到ClickHouse分布式表

    这篇文章主要为大家介绍了Flink同步Kafka数据到ClickHouse分布式表实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • 详解关于Dbeaver的常用操作

    详解关于Dbeaver的常用操作

    这篇文章主要介绍了详解关于Dbeaver的常用操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11

最新评论