目录
- 多表及使用场景介绍
- 多表设计案例
- 使用多表的优点
多表及应用场景介绍
- 多表顾名思义就是在数据库设计中使用多张表格来实现数据存储的要求
- 在实际的项目开发中,数据量大而且复杂,需要分库分表
- 分表:按照一定的规则,对原有的数据库和表进行拆分
- 表与表之间可以通过外键建立连接
多表设计案例
- 创建一张员工信息表,包含字段:
- eid 员工ID (自增主键)
- ename 员工姓名
- age 年龄
- gender 性别
- dept_name 所在部门
- dept_id 部门ID
- dept_manager 部门主管
- dept_location 所在地点
以单表的形式完成建表
- 创建员工信息表
CREATE TABLE emp( emp_id INT PRIMARY KEY AUTO_INCREMENT, ename VARCHAR(20), age INT , gender VARCHAR(10), dept_name VARCHAR(20), dept_id INT, dept_manager VARCHAR(20), dept_location VARCHAR(20) );
插入数据
INSERT INTO emp VALUES (1,'张三', 20, '男','研发部',1,'张无忌','北京'); INSERT INTO emp(ename, age,gender,dept_name,dept_id,dept_manager, dept_location) VALUES ('李四', 25, '男','研发部',1,'张无忌','北京'); INSERT INTO emp(ename, age,gender,dept_name,dept_id,dept_manager, dept_location) VALUES ('宋江', 40, '男','研发部',1,'张无忌','北京'); INSERT INTO emp(ename, age,gender,dept_name,dept_id,dept_manager, dept_location) VALUES ('林冲', 25, '男','研发部',1,'张无忌','北京'); INSERT INTO emp(ename, age,gender,dept_name,dept_id,dept_manager, dept_location) VALUES ('林徽因', 25, '女','研发部',1,'张无忌','北京'); INSERT INTO emp(ename, age,gender,dept_name,dept_id,dept_manager, dept_location) VALUES ('周芷若', 25, '女','运营部',2,'赵敏','深圳'); INSERT INTO emp(ename, age,gender,dept_name,dept_id,dept_manager, dept_location) VALUES ('任盈盈', 25, '女','运营部',2,'赵敏','深圳');
单表数据冗余
多表设计模式
- 将数据拆分为员工信息表employee和部门信息表dept
- 两个表之间通过部门id:dept_id字段连接
# 创建员工信息表 CREATE TABLE emp_part( emp_id INT PRIMARY KEY AUTO_INCREMENT, ename VARCHAR(20), age INT , gender VARCHAR(10), dept_id INT ); # 创建部门表 CREATE TABLE dept( id INT PRIMARY KEY AUTO_INCREMENT, dept_name VARCHAR(20), dept_manager VARCHAR(20), dept_location VARCHAR(20) );
插入数据
# 向部门表插入数据 INSERT INTO dept(dept_name,dept_manager,dept_location) VALUES('研发部','张无忌','北京'); INSERT INTO dept(dept_name,dept_manager,dept_location) VALUES('运营部','赵敏','深圳'); # 向员工信息表插入数据 INSERT INTO emp_part(ename,age,gender,dept_id) VALUES ('李四', 25, '男',1); INSERT INTO emp_part(ename,age,gender,dept_id) VALUES ('宋江', 40, '男',1); INSERT INTO emp_part(ename,age,gender,dept_id) VALUES ('张三', 20, '男',1); INSERT INTO emp_part(ename,age,gender,dept_id) VALUES ('林冲', 25, '男',1); INSERT INTO emp_part(ename,age,gender,dept_id) VALUES ('林徽因', 25,'女',1); INSERT INTO emp_part(ename,age,gender,dept_id) VALUES ('周芷若', 25,'女',2); INSERT INTO emp_part(ename,age,gender,dept_id) VALUES ('任盈盈', 25, '女',2);
多表关系
多表的优点
- 简化数据
- 提高复用性
- 方便权限控制
- 提高系统的稳定性和负载能力
分类:
测试开发 / SQL语法与数据库
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现