数据库-多表设计

概述:

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

一对多

多对多

一对一

一对多

根据页面原型及需求文档,完成部门及员工模块的表结构设计

外键约束(语法)

创建表时指定

create table 表名(

字段名 数据类型,

...

constraint 外键名称 foreign key (外键字段名) references 主表(字段名);


建完表后,添加外键

alter table 表名 add constraint 外键名称 foreign (外键字段名) referness主表(字段名);

缺点:

影响增、删、改的效率

仅用于单节点数据库,不适用于分布式,集群场景

容易引发数据库的死锁问题,消耗性能

一对一

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

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

多对多

**关系:**一个学生可以选修多门课程,一门课程也可以被多个学生选择

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

相关推荐
赵渝强老师4 小时前
【赵渝强老师】崖山数据库的联机重做日志文件
数据库·国产数据库·yashandb·崖山数据库
南城以南溫暖如初1474 小时前
树洞交友系统架构设计与匿名聊天实战指南
java·spring boot·mysql·系统架构·vue·mybatis·交友
家有娇妻张兔兔4 小时前
Redis 报错 “MISCONF Redis is configured to save RDB snapshots“?一文讲透根因与根除方案
数据库·redis·故障排查·misconf
迷迭香yy4 小时前
回测过拟合检测体系从样本内外到组合稳健性评估 IG50免费开源股票数据API接口
服务器·开发语言·数据库·人工智能·python
敲上瘾5 小时前
Redis持久化存储机制:从RDB到AOF再到混合持久化的配置与实践
linux·数据库·redis·缓存
2401_894915539 小时前
GEO 优化源码全解析:从搜索引擎到 AI 引擎的底层改写逻辑
java·服务器·前端·数据库·人工智能·分布式·搜索引擎
正儿八经的少年14 小时前
布隆过滤器(解决redis缓存穿透步骤之一)
数据库·redis·缓存
xrandzj14 小时前
MySQL8.0 从零通关核心操作手册(Ubuntu实战版)
数据库·mysql
我不会插花弄玉14 小时前
4.数据类型【由浅入深-MySQL】
数据库·mysql
denggun1234514 小时前
yield
前端·数据库·python