首页 > 数据库 >数据库表关系详解

数据库表关系详解

时间:2023-03-06 16:02:58浏览次数:62  
标签:关系 name 数据库 外键 1002 详解 111 表中 id

 1、一对一

  A表中的一条数据最多只能和B表中的一条数据对应;B表中的一条数据也最多只能和A表中的一条数据相对应;

  例子就是:学生卡和学生信息表;

  数据库设计时有两种方式:一种是共享主键;另一种是加上唯一性外键;

    共享主键:两张表的主键一致

学生表student
id     name
1001    张三
1002    张四

学生卡表card
id      name
1001    card1
1002    card2

    唯一性外键:在一张表里加上外键,用这个外键关联到另一张表的主键,注意这个外键要有唯一性约束,不然就会变成一对多。

学生表student
id     name
1001    张三
1002    张四

学生卡表card
id      name	stuent_id(设计表时给该字段添加唯一性约束)
111    card1	 1001
222    card2	 1002

 

 

2、一对多

  A表中的一条数据可以对应到B表中的多条数据,但B表中的一条数据最多只能对应到A表中的一条数据。

  例子就是:学生信息表和班级表。

//学生表student
id     name   class_id(外键非空:班级id)
1001    张三      111
1002    张四      222
1003    王五      111
1004    赵六      111

//班级表class
id      name
111     class1
222     class2

  注意:其实这和一对一中的唯一外键差不多,只不过这个外键不需要加唯一约束;

      删除数据时,先删除子表再删除父表;添加数据时先添加父表再添加子表;

      实际设计表时,记住:一对多,两张表,多的表加外键。

 

3、多对多

  A表中的一条记录可以对应B表中的多条数据;B表中的一条记录也可以对应A表中的多条数据 

  例子就是学生信息表和课程表;

// 学生信息表
id      name
1001    张三
1002    张四
1003    王五
1004    赵六


//课程表
id     name   
111    java   
222    mysql

  需要一个额外的中间表来实现这种多对多的关系;其实也可以看成两次一对多的关系。

  实际设计表时,记住口诀:多对多,三张表,关系表加外键。

 

 

参考链接:

https://blog.csdn.net/YXXXYX/article/details/123270424

标签:关系,name,数据库,外键,1002,详解,111,表中,id
From: https://www.cnblogs.com/ReturnOfTheKing/p/17183575.html

相关文章

  • 详解Docker容器运行GUI程序的方法
    摘要:本文为大家详解如何直接进入Docker容器运行或通过SSH连接Docker容器运行GUI程序的方法。本文分享自华为云社区《Docker容器运行GUI程序的方法(直接进入Docker容器运行......
  • MySQL如何查看数据库、表占用磁盘大小
    一、查询指定数据库(例“test”)占用磁盘空间大小SELECTTABLE_SCHEMAAS"数据库",sum(table_rows)AS"记录数",concat(TRUNCATE(sum(data_length)......
  • 详解Docker容器运行GUI程序的方法
    摘要:本文为大家详解如何直接进入Docker容器运行或通过SSH连接Docker容器运行GUI程序的方法。本文分享自华为云社区《​​Docker容器运行GUI程序的方法(直接进入Docker容器运......
  • LightDB数据库分布式部署实践
    当今做大型数据库应用的时候,随着业务越做越大,数据量也会越来越大,计算也会越来越复杂。对性能,可靠性,可扩展性的需求越来越强烈,集中式数据库显然已经满足不了需求。......
  • ABP使用SQLite本地数据库
    1、修改EFCore中的依赖,添加Sqlite的依赖,移除原先的sqlserver的依赖  2、修改配置中的使用  3、修改Web.Host中的配置文件中appsettings.json中数据库的地址 ......
  • 为ABP框架配置数据库
    目录创建标准的EFCore数据库上下文连接字符串定义隔离的上下文多数据库支持和配置Freesql配置服务在 AbpBase.Database 中,通过Nuget添加以下几个库:版本......
  • 安装数据库CentOS 7.6+MySQL5.6
    1.安装编译源码所需的工具和库root@iZbp16tff364has58lxi61Z~]#yum-yinstallgccgcc-c++ncurses-develperlroot@iZbp16tff364has58lxi61Z~]#yum-ygroupinstal......
  • clickhouse高级功能之MaterializeMySQL详解
    clickhouse20.8将新增MaterializeMySQL引擎,可通过binlog日志实时物化mysql数据,极大提升了数仓的查询性能和数据同步的时效性;原有mysql中承担的数据分析工作可交由click......
  • 《数据万象带你玩转视图场景》第一期:avif图片压缩详解
    前言随着硬件的发展,不管是手机还是专业摄像设备拍出的图片随便可能就有几M,甚至几十M,并且现在我们处于随处可及的信息海洋里,海量的图片带来了存储问题、带宽问题、加载时延......
  • 设计数据库
    1、规范数据库设计1.1、为什么需要要设计数据库当数据库比较复杂的时候,我们就需要设计了糟糕的数据库设计:数据冗余,浪费空间数据插入和删除都会麻烦、异常【屏蔽使用......