当前位置: 首页 > news >正文

MySql 多表设计

项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本分为:一对多,多对多,一对一。

一对多

CREATE TABLE tb_dept (id int UNSIGNED primary key auto_increment COMMENT 'id',name VARCHAR(10) not null UNIQUE comment '部门名称',create_time datetime not null COMMENT '创建时间',update_time datetime not null COMMENT '修改时间') COMMENT '部门表';
CREATE TABLE `tb_emp` (`id` int NOT NULL AUTO_INCREMENT COMMENT '主键id',`username` varchar(20) NOT NULL COMMENT '用户名',`password` varchar(23) DEFAULT NULL COMMENT '密码',`name` varchar(10) DEFAULT NULL COMMENT '姓名',`gender` tinyint DEFAULT NULL COMMENT '性别:1男,2女',`image` varchar(300) DEFAULT NULL COMMENT '图像url',`job` tinyint DEFAULT NULL COMMENT '职位:1班主任,2讲师,3学工主管,4教研主管',`entrydate` datetime DEFAULT NULL COMMENT '入职日期',`dept_id` int COMMENT '归属部门id',`creat_time` datetime NOT NULL COMMENT '创建时间',`update_time` datetime NOT NULL COMMENT '修改时间',PRIMARY KEY (`id`),UNIQUE KEY `username` (`username`)
) COMMENT='员工表' ;

多表问题:上述两张表在数据库层面并未建立关联,所以是无法保证数据的一致性和完整性的。

外键约束

-- 创建表时指定
create table 表名 (字段名 数据类型,...[constraint] [外键名称] foreign key (外键字段名) references 主表(字段名)
);-- 建完表后,添加外键
alter table 表名 add constraint 外键名称 foreign key (外键字段名) references 主表(字段名);

使用foreign key定义外键关联另外一张表的缺点有:

  • 影响增删改查的效率(需要检查外键关系)。
  • 仅用于单节点数据库,不适用于分布式、集群场景。
  • 容易引发数据库的死锁问题,消耗性能。

逻辑外键:在业务层逻辑中,解决外键关联。通过逻辑外键,可以很方便的解决上述问题。

一对一

一对一关系,多用于单表拆分,将一张表的基础字段放在一张表中,其他字段放在另一张表中以提高效率。典型案例:用户与身份证信息的关系。

多对多

一个学生可以选修多门课程,一个课程也可以供多个学校选择。

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

相关文章:

MySql 多表设计

项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本分为:一对多,多对多&a…...

wpf实现新用户页面引导

第一步 第二部 部分代码: private void show(int xh, FrameworkElement fe, string con, Visibility vis Visibility.Visible) {Point point fe.TransformToAncestor(Window.GetWindow(fe)).Transform(new Point(0, 0));//获取控件坐标点RectangleGeometry rg new Rectangl…...

【小白向】机器人入门之ROS系统的学习(Ubuntu24.04+ROS2)

目录 一.复杂的机器人系统 二.ROS机器人系统 1.简介 1.节点 2.话题 2.安装 3.测试 4.可视化 RQT: RVIZ: 显示属性: 显示状态: 一.复杂的机器人系统 依照我们现在的技术来看,机器人系统仍是极其复杂的,往…...

SNAP-MS策略:可溶性水凝胶微珠,高效表征蛋白质复合物

大家好!今天来了解一种高效的蛋白质复合物纯化和表征策略的文章——《Biofunctionalized dissolvable hydrogel microbeads enable efficient characterization of native protein complexes》发表于《Nature Communications》。蛋白质复合物在生命过程中起着关键作…...

java对象序列化Serializable的应用场景

目录 Java对象序列化的应用场景 网络通信: 对象持久化: 分布式计算: 缓存存储: 远程方法调用(RMI): 基于JMS的消息传递: Java集合类中的对象需要被存储: 对象深…...

springboot-网站开发-linux服务器部署jar格式图片存档路径问题

springboot-网站开发-linux服务器部署jar格式图片存档路径问题!近期在部署自己的网站源码,使用的是jar格式的编码格式。发布到远程服务器后,发现客户捐款的证书图片存在异常。 经过排查代码,找到了原因。下面分享给大家。 1&…...

面试--java基础

Java基础 Java 中的几种基本数据类型了解么?基本类型和包装类型的区别?包装类型的缓存机制了解么?成员变量与局部变量的区别?静态变量有什么作用?静态方法为什么不能调用非静态成员?重载和重写有什么区别&#xff1f…...

NLP自然语言处理

计算机视觉和图像处理 Tensorflow入门深度神经网络图像分类目标检测图像分割OpenCVPytorchNLP自然语言处理 NLP自然语言处理 一、NLP简介二、文本预处理2.1 文本预处理简介2.2 文本处理的基本方法2.3 文本张量表示方法2.3.1 onehot编码2.3.2 word2vec编码 2.4 文本数据分析2.5…...

web自动化测试基础(从配置环境到自动化实现登录测试用例的执行,vscode如何导入自己的python包)

接下来的一段时间里我会和大家分享自动化测试相关的一些知识希望大家可以多多支持,一起进步。 一、环境的配置 前提安装好了python解释器并配好了环境,并安装好了VScode 下载的浏览器和浏览器驱动需要一样的版本号(只看大版本)。 1、安装浏览器 Chro…...

鸿蒙 Next 实战: 电子木鱼

前言 正所谓:Hello Word 是程序员学任何一门语言的第一个程序实践。这其实也是一个不错的正反馈,那如何让学习鸿蒙 Next 更有成就感呢?下面就演示一下从零开发一个鸿蒙 Next 版的电子木鱼,主打就是一个抽象! 实现要点…...

SQLite SQL调优指南及高级SQL技巧

记忆已更新 以下是《SQLite SQL调优指南及高级SQL技巧》文章的完整输出,字数目标为30000字,详细介绍并结合2024年最新技术趋势和优化策略。代码部分不计入字数统计。 SQLite SQL调优指南及高级SQL技巧 SQLite 是广泛使用的嵌入式数据库,因其…...

WordPress 6.7即将发布的新功能(和截图)

我们一直在密切关注 WordPress 6.7 的开发并测试该版本的测试版,它将带来一些令人兴奋的更新和几个新功能。 例如,我们很高兴地发现即将发布的版本将附带全新的默认主题,并对块编辑器和站点编辑体验进行大规模改进。 在本文中,我…...

SpringBoot整合QQ邮箱

SpringBoot可以通过导入依赖的方式集成多种技术,这当然少不了我们常用的邮箱,现在本章演示SpringBoot整合QQ邮箱发送邮件.... 下面按步骤进行: 1.获取QQ邮箱授权码 1.1 登录QQ邮箱 1.2 开启SMTP服务 找到下图中的SMTP服务区域,…...

低质量数据的多模态融合方法

目录 多模态融合 低质量多模态融合的核心挑战 噪声多模态数据学习 缺失模态插补 平衡多模态融合 动态多模态融合 启发式动态融合 基于注意力的动态融合 不确定性感知动态融合 论文 多模态融合 多模态融合侧重于整合多种模态的信息,以实现更准确的预测,在自动驾驶、…...

计算机毕业设计 基于Django的在线考试系统的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…...

Shell脚本linux登录自动检查

.bashrc 用于设置用户的 Bash shell 环境&#xff0c;在每次打开一个新的终端窗口或启动一个新的 Bash 会话时被执行 代码 login_check.sh #!/bin/bash clear LogFileNamepolling.$(date %F-%T) EchoFormat$(for (( i0; i<30; i )); do echo -n ""; done)# 显示…...

Golang | Leetcode Golang题解之第450题删除二叉搜索树的节点

题目&#xff1a; 题解&#xff1a; func deleteNode(root *TreeNode, key int) *TreeNode {var cur, curParent *TreeNode root, nilfor cur ! nil && cur.Val ! key {curParent curif cur.Val > key {cur cur.Left} else {cur cur.Right}}if cur nil {retur…...

Linux 之 Linux应用编程概念、文件IO、标准IO

Linux应用编程概念、文件IO、标准IO 学习任务&#xff1a; 1、 学习Linux 应用开发概念&#xff0c;什么是系统调用&#xff0c;什么是库函数 2、 学习文件IO&#xff1a;包括 read、write、open、close、lseek 3、 深入文件IO&#xff1a;错误处理、exit 等 4、 学习标准IO&a…...

PDF处理技巧:Windows电脑如何选择合适的 PDF 编辑器

您可以阅读本文以了解用于在 PC 上编辑 PDF 的顶级免费软件&#xff0c;而无需花费任何费用即可轻松进行快速编辑、拆分、合并、注释、转换和共享您的 PDF。 PDF 或可移植文档文件是由 Adobe 创建的一种多功能文件格式。它可以帮助您轻松可靠地交换文档&#xff0c;无论相关方…...

【c++】初步了解类和对象2

1、类的作用域 类定义了一个新的作用域&#xff0c;类的所有成员都在类的作用域中。在类体外定义成员时&#xff0c;需要使用 :: 作用域操作符指明成员属于哪个类域。 如图&#xff0c;此时在类内声明了函数firstUniqChar()&#xff0c;在类外进行了函数体的具体定义。 但是却…...

手把手教你用Simulink复现EKF电池SOC估算模型(附完整模型文件)

从理论到实践&#xff1a;Simulink实现EKF电池SOC估算全流程解析 锂离子电池作为现代储能系统的核心组件&#xff0c;其荷电状态&#xff08;SOC&#xff09;的精确估算直接关系到电池管理系统的可靠性和安全性。扩展卡尔曼滤波&#xff08;EKF&#xff09;算法因其优秀的非线性…...

科哥二次开发AWPortrait-Z体验:批量生成人像,效率提升300%

科哥二次开发AWPortrait-Z体验&#xff1a;批量生成人像&#xff0c;效率提升300% 1. 为什么选择AWPortrait-Z进行人像生成&#xff1f; 在当今内容创作领域&#xff0c;高质量人像需求呈现爆发式增长。从电商产品展示到社交媒体内容&#xff0c;专业级人像已经成为刚需。然而…...

基于stm32的公司考勤系统[单片机]-计算机毕业设计源码+LW文档

摘要&#xff1a;本文设计了一款基于STM32单片机的公司考勤系统&#xff0c;详细阐述了其硬件组成和软件算法。该系统利用RFID&#xff08;或指纹识别等&#xff09;技术进行员工身份识别&#xff0c;结合实时时钟模块记录考勤时间&#xff0c;并通过OLED显示屏实时显示考勤信息…...

pygcn终极指南:解决图神经网络开发者最常遇到的10个核心问题

pygcn终极指南&#xff1a;解决图神经网络开发者最常遇到的10个核心问题 【免费下载链接】pygcn Graph Convolutional Networks in PyTorch 项目地址: https://gitcode.com/gh_mirrors/py/pygcn pygcn是一个基于PyTorch实现的图卷积网络&#xff08;GCN&#xff09;框架…...

Svelte 现实世界指南(四)

原文&#xff1a;zh.annas-archive.org/md5/14dc6d5ba3099ee8ed407418d0a0711b 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第十五章&#xff1a;使用过渡实现无障碍 在过去两章中&#xff0c;我们学习了如何在 Svelte 中使用过渡。当正确使用时&#xff0c;过渡可…...

新手如何快速掌握多层板设计?从电源PCB叠层结构讲起

引言&#xff1a;从双板板到多层板&#xff0c;你准备好了吗&#xff1f;作为一名硬件工程师&#xff0c;你是否也经历过这样的困惑&#xff1a;刚学会画双板板&#xff0c;项目需求就变成了4层、6层甚至8层板&#xff1f;面对叠层结构的选择&#xff0c;你是否感到无从下手&am…...

从‘数值灾难’到平稳训练:深入浅出聊聊MoE中路由Z-loss的设计哲学

从‘数值灾难’到平稳训练&#xff1a;深入浅出聊聊MoE中路由Z-loss的设计哲学 想象一下&#xff0c;你正在指挥一个由数百名专家组成的交响乐团。每位音乐家都技艺精湛&#xff0c;但如果在演奏时某个乐器的音量突然爆表&#xff08;比如小号手过于兴奋&#xff09;&#xff…...

Python AOT编译成本如何从$280K/年压至$49K/年?2026前最后窗口期的6个不可逆决策点

第一章&#xff1a;Python AOT编译成本断崖式下降的战略本质Python 长期以来被诟病于运行时开销高、启动慢、内存占用大&#xff0c;其核心瓶颈在于 CPython 解释器的字节码解释执行机制。而近年来&#xff0c;以 Nuitka、Cython&#xff08;搭配 --aot 模式&#xff09;、以及…...

哈佛医学院做了5679次组学分析:大模型能力没差别,关键在验证

哈佛医学院Zitnik团队的MEDEA 给出了一条明确的技术路线&#xff1a;与其追求更强的骨干大模型&#xff0c;不如在分析流程的每一步嵌入验证机制。在理解 MEDEA 的设计逻辑之前&#xff0c;先看一组来自消融实验的数据。在细胞类型特异性靶点发现任务中&#xff0c;研究团队将M…...

Linux五种I/O模型详解与性能对比

1. Linux I/O 模型基础概念解析在深入探讨五种I/O模型之前&#xff0c;我们需要先理解几个关键的基础概念。这些概念是理解不同I/O模型差异的基石&#xff0c;也是很多开发者在实际工作中容易混淆的地方。1.1 用户态与内核态Linux系统将运行环境分为用户态(User mode)和内核态(…...