Mysql数据库中数据表的优化、外键与三范式用法实例分析
作者:shichen2014 发布时间:2024-01-23 10:09:00
标签:Mysql,优化,外键,三范式
本文实例讲述了Mysql数据库中数据表的优化、外键与三范式用法。分享给大家供大家参考,具体如下:
数据表优化
将商品信息表进行优化
1.创建商品种类表:
create table if not exists goods_cates(
id int unsigned primary key auto_increment,
name varchar(40) not null
);
2.将商品种类写入商品种类表中:
注意:插入另一个表的查询结果不需要加values
insert into goods_cates(name)
(select cate_name from goods group by cate_name);
3.将商品种类表更新到商品表中:
将商品表与种类表连接,用种类表id代替商品表种类内容
update (goods_cates inner join goods on goods_cates.name=goods.cate_name)
set goods.cate_name=goods_cates.id;
4.修改表结构:
将商品表商品种类名字段名cate_name重命名为cate_id
alter table goods change cate_name cate_id int unsigned not null;
外键
1.外键的使用:
添加外键约束,插入数据线判断cate_id是否存在于goods_cates中的id,不存在,则插入数据失败
alter table 表名1 add foreign key (字段名1) references 表名2(字段名2);
(设置外键后可以防止非法数据的录入)
foreign key(字段名1) references 表名2(字段名2);
(也可在创建表时直接设置外键,前提是要连接的表存在)
2.外键的缺点:
虽然外键可以有效防止非法数据的录入,但是会极大降低表的更新效率,所以实际开发中,一般不适用外键约束,可以再事务层面去判断数据的合法性。
3.外键的删除:
显示创建表的语句
show create table goods;
获取外键名称后删除外键:
alter table goods drop foreign key goods_ibfk_1;
三范式
1.第一范式(1NF):强调列的原子性,即列不能再分成其他列。
2.第二范式(2NF):基于1NF,表必须有一个主键,非主键字段必须完全依赖与主键,而不是只依赖于主键的一部分。
3.第三范式(3NF):基于2NF,非主键列必须直接依赖于主键,不能存在传递依赖。
符合第三范式的数据库,是比较合理的数据库。
希望本文所述对大家MySQL数据库计有所帮助。


猜你喜欢
- 1 分布式锁概述谈到分布式锁,必然是因为单机锁无法满足要求,在现阶段微服务多实例部署的情况下,单机语言级别的锁,无法满足并发互斥资源的安全访
- 如果你忘记了你的MYSQL的root口令的话,你可以通过下面的过程恢复。 1. 向mysqld
- Guide to the Section 508 Standards for Electronic and Information Tech
- 变量(variable)是Python语言中一个非常重要的概念。变量的主要作用就是为Python程序中的某个值起一个名字。类似于“张三”、“
- 本文实例讲述了Vue开发之封装上传文件组件与用法。分享给大家供大家参考,具体如下:使用elementui的 el-upload插件实现图片上
- SQL,数据分析岗的必备技能,你可以不懂Python,R,不懂可视化,不懂机器学习。但SQL,你必须懂。要不然领导让你跑个数据来汇.....
- 本文介绍了python 支持向量机非线性回归SVR模型,废话不多说,具体如下:import numpy as npimport matplo
- 安装 Python去 Python 官方网站找到 Python 3 的下载地址,根据你的系统选择 32 位或者 64 位的安装包,下载好后双
- 1.v-for直接上代码。示例一:<!DOCTYPE html><html><head> <met
- 去掉html中的table代码 Function OutTable(str) dim a,re&nb
- 前言以mysql为例,汇总sql查询最高分、最低分、平均分等sql语句,oracle语法类似,可自行修改以下sql语句创建两个数据库表,一个
- 找到工具》选项》Designers》表设计器和数据库设计器 然后将“阻止保存要求重新创建表的更改” 的这一项的钩钩去掉就OK了
- 直接update的弊端最近做一个需求,更新3w条数据,一个一个update去更新的,结果花了80分钟,这样性能上很差,也容易阻塞,所以就找了
- Vue金额、日期格式化插件@formatjs/intl使用vue项目中我们可以使用第三方比较牛的日期、金额数字格式化的插件:@formatj
- 最近迷上了高效处理数据的pandas,其实这个是用来做数据分析的,如果你是做大数据分析和测试的,那么这个是非常的有用的!!但是其实我们平时在
- Anaconda下需要使用Python与MySQL数据库进行交互,所以需要import一个mysql-python的包,但是在ipython
- 在Thread和Process中,应当优选Process,因为Process更稳定,而且,Process可以分布到多台机器上,而Thread
- Python DataFrame 如何设置列表字段/元素类型?比如笔者想将列表的两个字段由float64设置为int64,那么就要用到Dat
- 本文实例讲述了Vue插槽原理与用法。分享给大家供大家参考,具体如下:1 插槽内容Vue 实现了一套内容分发的 API,这套 API 基于当前
- 在本篇的开始之前,我必须阐明,我们对数组无论是索引还是切片,我是通过编号(或称为序列号)来进行操作,请记住:无论是 0轴(行)还是 1轴(列