数据库 一对多,多对多 表设计

做一个项目,必然是少不了数据库设计的!在学习阶段,基本都是单表。然而在实际开发过程中,一对多,多对多的表处处都是!简单整理一下,一对多,多对多表如何设计整理一下思路:

    数据库实体间有三种对应关系:一对一,一对多,多对多。

一对一关系示例:

    • 一个学生对应一个学生档案材料,或者每个人都有唯一的身份证编号。

一对多关系示例:

    • 一个学生只属于一个班,但是一个班级有多名学生。

多对多关系示例:

    • 一个学生可以选择多门课,一门课也有多名学生。

1.一对多关系处理:

       通过学生和班级问题了解一对多:

设计数据库表:只需在 学生表 中多添加一个班级号的ID;

注:在数据库中表中初学时,还是通过添加主外键约束,避免删除数据时造成数据混乱!

2.多对多关系处理:

    通过学生选课了解多对多问题的处理:

       在多对多中在一个表中添加一个字段就行不通了,所以处理多对多表问题时,就要考虑建立关系表了

例:

 学生表:     课程表:   关系表:

注:所以对于多对多表,通过关系表就建立起了两张表的联系!多对多表时建立主外键后,要先删除约束表内容再删除主表内容

原文地址:https://www.cnblogs.com/aliyunpang/p/8978971.html

时间: 2024-07-30 11:45:39

数据库 一对多,多对多 表设计的相关文章

随一笔:数据库一对多的联表查询

旧知识:纯属温习旧功课了 有两数据表,表 a 和表 b, 表 b 在后来的拓展需求,在表中添加了字段,所以之前的记录中,这个字段为null值. 现在需要 a.b 表联表查询 ,以表 a 为主,表 b 只需要查出和表 a 对应的记录总条数. 在试探简单实用 GROUP BY 和 GROUP_CONCAT 的时候,遇到了不能对字段都为null值的记录分组的问题,这个也是难点,解决这个问题的关键点. 根据本项目的需求特点, 我换了个思路,貌似这个解决方式还是挺不错的 上图:

多对多表的设计小案例

多对多数据表设计 场景模拟: 员工与角色:一个员工可以扮演多个角色,一个角色可以被多个员工扮演 三张表: employee,role,(关系表)emp_role employee 中的eid,关联到关系表中的r_eid,然后可以找到和r_eid同一行的一个或多个r_rtype 利用r_rtype 又可以到role表中找到rtype对应的rname,这样从第一张表的员工id到中间表的绑定关联,根据中间表的rtype字段可以引用到第三章表(role)表中,从而获取role表中的rname.如下图:

数据库表设计(一对多,多对多)

做一个项目,必然是少不了数据库设计的!在学习阶段,基本都是单表.然而在实际开发过程中,一对多,多对多的表处处都是!简单整理一下,一对多,多对多表如何设计整理一下思路:     数据库实体间有三种对应关系:一对一,一对多,多对多. 一对一关系示例: 一个学生对应一个学生档案材料,或者每个人都有唯一的身份证编号. 一对多关系示例: 一个学生只属于一个班,但是一个班级有多名学生. 多对多关系示例: 一个学生可以选择多门课,一门课也有多名学生. 1.一对多关系处理:        通过学生和班级问题了解

数据库中根据数据一对一,一对多,多对多关系设计

做一个项目,必然是少不了数据库设计的!在学习阶段,基本都是单表.然而在实际开发过程中,一对多,多对多的表处处都是!简单整理一下,一对多,多对多表如何设计整理一下思路: 数据库实体间有三种对应关系:一对一,一对多,多对多. 一对一关系示例: 一个学生对应一个学生档案材料,或者每个人都有唯一的身份证编号. 一对多关系示例: 一个学生只属于一个班,但是一个班级有多名学生. 多对多关系示例: 一个学生可以选择多门课,一门课也有多名学生. 1.一对多关系处理: 通过学生和班级问题了解一对多: 设计数据库表

数据库的表设计

创建数据库里最基本的应该就是建表,建索引.存储过程等一系列操作了.谈到表就不得不谈到实体. 一.数据实体 什么是实体,客观存在并且可以相互区别的事物称为实体.这里我们就简单的把它理解为一个表吧,描述实体的特性,我们就把他们称为了属性.也可以说当我们把一个数据库表当作一个实体,那么它里面的所有字段是不是就是一个属性了呢?结果是肯定的. 二.实体间的联系 我想说的是,很简单,数据库里表跟表间的关系莫过于三种:一对一:多对多:一对多. 一对一其实就是说我们建的主表跟相关联的表之间是一一对应的,比如说,

ERP开发分享 1 数据库表设计

这是我的ERP设计经验分享系列,今天讲的是数据库的表设计(1),主要阐述: 1.单字段的主键:2.使用int32作为主键类型:3.使用版本字段处理乐观锁定:4.生效字段标明是否允许“被使用”:5.锁定字段处理悲观锁定:6.行唯一字段处理分布式应用:

20170105数据库表设计知识点

20170105数据库表设计知识点 ------指导老师    星哥 1.PHP(MYSQL)擅长单表操作,不要做过多无谓的连接查询 2.表字段名不要使用大驼峰命名方式,最好采用下划线,命名要和团队习惯一致,通俗易懂. 3.表级.字段都要有注释 4.MyISAM 适合于一些需要大量查询的应用,但其对于有大量写操作并不是很好.甚至你只是需要update一个字段,整个表都会被锁起来,而别的进程,就算是读进程都无法操作直到读操作完成.另外,MyISAM 对于 SELECT COUNT(*) 这类的计算

无限树形结构的数据库表设计

前言: 无限树形结构的数据库表设计的是否合理,直接影响到UI层是否方便根据树来查询关联的数据. 1.表字段: F_BtEd2kTypeId int Unchecked F_Name nvarchar(50) Checked F_ParentTypeId nvarchar(50) Checked F_Code nvarchar(50) Checked F_RecordStatus int Checked 2.表数据: 3.说明: 如2所示, 1)如果上表的数据关联上了一张表A,通过BtEd2kTy

数据库表设计原则

(1)不应针对整个系统进行数据库设计,而应该根据系统架构中的组件划分,针对每个组件所处理的业务进行组件单元的数据库设计:不同组件间所对应的数据库 表之间的关联应尽可能减少,如果不同组件间的表需要外键关联也尽量不要创建外键关联,而只是记录关联表的一个主键,确保组件对应的表之间的独立性,为系统 或表结构的重构提供可能性. (2)采用领域模型驱动的方式和自顶向下的思路进行数据库设计,首先分析系统业务,根据职责定义对象.对象要符合封装的特性,确保与职责相关的数据项被定 义在一个对象之内,这些数据项能够完