数据库(25)——多表关系介绍

在项目开发中,进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,各个表之间的结构基本上分为三种:一对多,多对多,一对一。

一对多

例如,一个学校可以有多个学生,而一个学生对应一个学校

实现:在多的一方建立外键,指向一的一方的主键。

多对多

例如,一个学生可以选修多门课程,一门课程也可以有多名学生。

实现:建立第三张中间表,中间表至少包含两个外键,分别关联两边的主键。

示例:新创建一张course表,使其与之前的user表连接,这中间需要用一张中间表进行连接。

CREATE table course(
    id int auto_increment primary key comment '主键id',
    course_name varchar(10) comment '课程名称'
)comment '课程表';
insert into course value (null,'java'),(null,'vue'),(null,'MySQL');

create table student_course(
    id int auto_increment comment '主键' primary key ,
    studentid int not null comment '学生id',
    courseid int not null comment '课程id',
    constraint fk_courseid foreign key (courseid) references course(id),
    constraint fk_studentid foreign key (studentid) references user(id)--添加外键
)comment '学生中间表';

 此时已经成功连接上两张表,在DataGrip里可以更直观的看到这些表的联系。

右击中间表点击Diagrams,选择Show Diagram

 

一对一

例如学生与学生信息的关系。

关系:一对一的关系,多用于单表拆分,将一张表的基础字段放在一张表中,其他详情字段放在另一张表中,以提升操作效率。

实现:在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一(UNIQUE)的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/682981.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PromptPerfect:AI Prompt生成与优化专家

PromptPerfect:AI Prompt生成与优化专家 PromptPerfect是一款专业的AI Prompt生成与优化工具,旨在帮助用户解锁和最大化GPT-4、ChatGPT、Midjourney等先进AI模型的潜力。它通过智能生成和精细优化Prompt,帮助用户获得更精确、更相关、更高效…

Aws EC2,kubeadm方式安装kubernetes(k8s)

版本 docker版本:20.10.25 k8s版本(kubeadm,kubelet和kubectl):1.20.10-0 初始化 # 禁用 SELinux sudo setenforce 0 sudo sed -i s/^SELINUXenforcing$/SELINUXpermissive/ /etc/selinux/config# 关闭防火墙 sudo …

题号:BC19 题目:反向输出一个四位数

题号:BC19 题目:反向输出一个四位数 废话不多说,上题目: 解题思路: 我们发现可以用%和/两个操作符就可以解决。 代码如下: int main() {int a 0;scanf("%d ",& a);while (a){printf("%d "…

【实物+仿真设计】基于单片机的物流皮带传输监控系统设计

《基于单片机的物流皮带传输监控系统设计 实物仿真》 整体功能: 本设计采用以单片机为核心控制器,以及传感器检测部分作为输入部分,以报警、显示、洒水、排烟、电机停止模块作为输出部分,构成整个物流皮带传输监控系统。 本设计…

Kolmogorov–Arnold Networks (KAN) 即将改变 AI 世界

目录 一、说明 二、KAN介绍 2.1 什么是 Kolmogorov-Arnold Networks (KAN): 2.2 KAN 的秘诀,Splines! 2.3 了解KAN工作的最简单方法 三、KAN的主要优点 四、KAN 的 Python 实现 (PyKAN) 4.1 …

神经网络 | 深度学习背后的数学

神经网分析 机器学习处理的是数据,通过学习输入的数据,从而建立模型,以便预测新的数据的输出 按照类型可以进行如下分类 监督分类 非监督分类 强化学习 神经元 生物学中,人的大脑是由多个神经元互相连接形成网络而构成的。也…

访问vue乱码解决

前情提要: 前端 vue工程npm run build生成的dist静态文件 后端 springboot 后端mvn install 生成war包,前端dist放进war包 报错: 页面访问白屏 报错如图 可以看到chunk-vendors.xxxx.js出现了中文乱码,这个js文件是vue build生成的…

2024版本---LabVIEW 软件安装及使用教程

目录 第1章 LabVIEW 软件安装及使用教程 1. 简介 2. 安装教程 2.1 下载 LabVIEW 2024 版本 2.2 安装 LabVIEW 3. 激活 LabVIEW 4. LabVIEW 基本使用教程 4.1 用户界面介绍 4.2 创建一个简单的 VI(虚拟仪器) 4.3 数据采集示例 5. 进阶功能介绍…

秋招突击——算法打卡——6/5——提高{(状态机模型)股票买卖、(单调队列优化DP)最大子序列和}——新做:{考试的最大困扰度}

文章目录 提高(状态机模型)股票买卖IV思路分析实现代码参考代码 新作考试的最大困扰度个人实现参考思路 总结 提高 (状态机模型)股票买卖IV 上一次的思路总结,上次写的时候忘记总结了,现在重新画一下图 思路分析 这道题是一个经典的状态机模型&#…

【数据挖掘】学习笔记

文章目录 第一章 引论1.1 为什么进行数据挖掘1.2 什么是数据挖掘?1.3 可以挖掘什么类型的数据1.4 可以挖掘什么类型的模式1.4.1 类/概念描述:特征化和区分1.4.2 挖掘频繁模式、关联规则和相关性1.4.3 用于预测分析的分类和回归1.4.4 聚类分析1.4.5 离群点…

【C语言之排序】-------六大排序

作者主页:作者主页 数据结构专栏:数据结构 创作时间 :2024年5月18日 前言: 今天我们就给大家带来几种排序的讲解,包括冒泡排序,插入排序,希尔排序,选择排序,堆排序&…

计算机网络ppt和课后题总结(下)

常用端口总结 计算机网络中,端口是TCP/IP协议的一部分,用于标识运行在同一台计算机上的不同服务。端口号是一个16位的数字,范围从0到65535。通常,0到1023的端口被称为“熟知端口”或“系统端口”,它们被保留给一些标准…

【Python数据类型的奥秘】:构建程序基石,驾驭信息之海

文章目录 🚀Python数据类型🌈1. 基本概念⭐2. 转化👊3. 数值运算💥4. 数值运算扩展(math库常用函数) 🚀Python数据类型 🌈1. 基本概念 整数(int):整数是没有小数部分的数…

保研面试408复习 8——计算机网络(浏览器http)、离散数学(平面图)、操作系统、数据结构

文章目录 一、计算机网络1、从在浏览器输入网址到页面显示的过程1. 输入网址2. DNS 解析3. 建立TCP连接4. 发送HTTP请求5. 服务器处理请求并响应6. 浏览器处理响应7. 页面渲染 二、离散数学一、平面图1、平面图性质2、Kuratowski定理 三、操作系统四、数据结构 一、计算机网络 …

Unity3d使用3D WebView for Windows and macOS打开全景网页(720云)操作问题记录

问题描述 使用Unity3d内嵌网页的形式打开720云中的全景图这个功能,使用的是3D WebView for Windows and macOS插件,720云的全景图在浏览器上的操作是滑动鼠标滚轮推远/拉近全景图,鼠标左键拖拽网页可以旋转全景图内容。网页的打开过程是正常…

CSS函数:scale、scale3d函数的使用

CSS函数scale()主要是为了实现元素的放大和缩小效果,使用的是元素的变换效果。使用的是元素的转换属性:transform的,该函数可以实现指定X轴和Y轴的放大、缩小效果。除此之外,我们还可以通过如下两种方式实现指定方向的转换&#x…

C++结合OpenCV进行图像处理与分类

⭐️我叫忆_恒心,一名喜欢书写博客的在读研究生👨‍🎓。 如果觉得本文能帮到您,麻烦点个赞👍呗! 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三…

选择排序-Java版本

选择排序 算法的思想&#xff1a;java模拟 算法的思想&#xff1a; 每遍历一次就找一个最小的数 *外层 一共遍历 length-1次 总遍历次数符合等差数列 时间复杂度为O(n^2)内部查找 并 返回 数值 和 下标 java模拟 public static void selectSort(int[] arr) {for(int i 0;i<…

Flask 学习笔记 总结

python基础 服务端开发编程 第一个是赋值运算&#xff0c;第二是乘法&#xff0c;最后是一个是幂&#xff08;即a2&#xff09; a 2 a * 2 a ** 2 Python支持多重赋值&#xff1a; a, b, c 2, 3, 4 这句命令相当于&#xff1a; a 2 b 3 c 4 Python支持对字符串的灵活…

网络编程(一)

网络编程&#xff08;一&#xff09; 网络基础网络体系结构**OSI的7层模型**&#xff1a;&#xff08;理想化&#xff09;**每层的功能** **TCP/IP的4层模型**&#xff1a;&#xff08;在使用&#xff09;常见的协议IP地址IPV4分类A类&#xff08;第1位固定为0&#xff09;B类&…