mysql三大范式_MySQL学习笔记

1、数据库结构设计

1、总-总体流程图

41ca9ad0fbeeef2be11a1fd818eb8c83.png
2、分-【提取属性】业务分析
评价的属性:{用户,课程主标题,内容,综合评分,内容实用,简洁易懂,逻辑分析,发布时间}
问答评论属性:{类型,标题,内容,关联章节,笔记标题,笔记内容,发布时间}
3、分-【属性->对象】逻辑设计

(1)宽表设计模式:存在数据冗余问题

53011341de5180cc447660c081a1e854.png
宽表设计模式

(2)数据库三大范式:解决数据冗余问题

85f8874cbc35113599ef3d5c73989274.png
数据库三大范式

(3)反范式设计:空间换时间

主要针对关联表进行反范式化设计

2、数据库物理设计

(1)常见引擎

引擎名称事务说明
INNODBY最常用的事务存储引擎

(2)根据INNODB特性优化表

  • 根据INNODB特性优化表逻辑:
    • 数据库主键替换业务主键
    • 减少关联表提高查询效率【增加了数据冗余】
    • 保证数据的一致【建立主外键】
  • 操作步骤:
    • 将表的自增列添加进去
    • 将关联列改造为主外键

(3)数据类型

  • 优先选择符合存储数据需求的最小数据类型
  • 谨慎使用ENUM,TEXT字符串类型
  • 财务相关,必须使用decimal类型

(4)对象命名

  • 库/表/列 用小写英文和下划线
  • 禁止使用保留字
  • 见名知意
  • 临时表,前缀:tmp,后缀:日期
  • 备份表,前缀:bak,后缀:日期
  • 所有存储相同数据的列名和列类型必一致

3、数据库的访问

- MAC下连接数据库:cd /usr/local/mysql/bin/./mysql -uroot -p
- Windows下连接数据库:mysql -u root -p- 查看用户列表mysql> select user,host from mysql.user;+------------------+-----------+| user             | host      |+------------------+-----------+| mc_class         | 127.0.0.1 || mysql.infoschema | localhost || mysql.session    | localhost || mysql.sys        | localhost || root             | localhost |+------------------+-----------+5 rows in set (0.00 sec)

4、开发阶段:

(1)创建数据库账户

- 查看创建命令help create user;
- 查看mysql支持的插件show plugins;
- 创建一个用户CREATE USER mc_class@'127.0.0.1'IDENTIFIED WITH 'mysql_native_password' by '123456';
- 连接:./mysql -umc_class -p123456 -h127.0.0.1

(2)权限的下放和回收

- 查看数据库支持哪些权限:show privilegesG;
- 可以授予的权限-- insert-- delete-- update-- select-- execute
- 实战【授予查询权限】-- 赋予用户查询某表中某列mysql> GRANT select(user,host) on mysql.user to mc_class@'127.0.0.1';Query OK, 0 rows affected (0.01 sec)-- 赋予用户查询某表下所有列mysql> GRANT select on mysql.user to mc_class@'127.0.0.1';Query OK, 0 rows affected (0.01 sec)-- 赋予用户查询某数据库下所有表的权限mysql> GRANT select on mysql.* to mc_class@'127.0.0.1';Query OK, 0 rows affected (0.01 sec)--赋予增删改查mysql> GRANT select,delete,insert,update ON mysql.* To mc_class@'127.0.0.1';Query OK, 0 rows affected (0.01 sec)
- 回收用户权限mysql> REVOKE delete,insert,update ON mysql.* FROM mc_class@'127.0.0.1';Query OK, 0 rows affected (0.01 sec)

(3)数据库对象的创建操作

- DDL建立/修改/删除数据库:create/alter/drop databasecreate DATABASE imc_db;建立/修改/删除表:create/alter/drop table建立/修改/删除索引:create/alter/drop index清空表:truncate table(先删除数据,再保留结构,不会有删除日志)重命名表:rename table建立/修改/删除:create/alter/drop view

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT webkit 各个类之间关系--QWebView-QWebPag

一、QT webkit简介 1.Qt Qt(发音同 cute)是一个跨平台的C应用程式开发框架,有时又被称为C部件工具箱。Qt被用在KDE桌面环境、Opera、Google Earth、Skype、Adobe Photoshop Album和VirtualBox的开发中。它是挪威Qt Software 的产品&#xff0…

vue 文件转换二进制_在vue中使用axios实现post方式获取二进制流下载文件(实例代码)...

需求点击导出下载表格对应的excel文件在 vue 项目中,使用的 axios ,后台 java 提供的 post 接口 api实现第一步,在 axios 请求中加入参数,表示接收的数据为二进制文件流responseType: "blob"第二步,在拿到数据流之后,把流转为指定文件格式并创建a标签,模拟点击下载,实…

vs生成qt moc文件

1. 右键需要生成moc文件的头文件 2. 将生产的moc加入工程中

javascript好文---深入理解定位父级offsetParent及偏移大小

前面的话 偏移量(offset dimension)是javascript中的一个重要的概念。涉及到偏移量的主要是offsetLeft、offsetTop、offsetHeight、offsetWidth这四个属性。当然,还有一个偏移参照——定位父级offsetParent。本文将详细介绍该部分内容 offsetParent定位父级 在理解…

bash中将字符串split成数组的方法

相信编程时,字符串的处理是很频繁被处理的问题,其中大家肯定不陌生各种语言的string.split(sp)将字符串按照某个字符或子串切分成一个数组。 同样,我们在用shell处理文本信息时也可以方便地实现该功能。 这里主要使用了bash中关于字符串变量的…

理解 e.clientX,e.clientY e.pageX

event.clientX、event.clientY 鼠标相对于浏览器窗口可视区域的X,Y坐标(窗口坐标),可视区域不包括工具栏和滚动条。IE事件和标准事件都定义了这2个属性 event.pageX、event.pageY 类似于event.clientX、event.clientY,…

基于FlashPaper的文档播放器

本文主要讨论、描述了使用Adobe公司的Flex与FlashPaper产品完成对发布到网上的文档资料进行只读控制,也就是说只允许浏览操作、对下载、打印进行控制。FlashPaper FlashPaper是Macromedia的一款用于将操作系统所识别的文档的内容通过虚拟打印机制将内容转换为swf文件…

python经纬度转换xy坐标公式 pyqt_EXCEL公式进行经纬度与XY坐标的相互转换

一、用EXCEL进行高斯投影换算从经纬度B、L换算到高斯平面直角坐标X、Y(高斯投影正算),或从X、Y换算成B、L(高斯投影反算),一般需要专用计算机软件完成。在目前流行的换算软件中不足之处,就是灵活性较差,大都需要一个点一个点地进行…

java桥_JAVA 桥模式

桥梁模式的用意是“将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化”。这句话很短,但是第一次读到这句话的人很可能都会思考良久而不解其意。这句话有三个关键词,也就是抽象化、实现化和脱耦。理解这三个词所代表…

java utf8 byte_byte以及UTF-8的转码规则

https://www.cnblogs.com/hell8088/p/9184336.html多年来闲麻烦,只记录笔记,不曾编写BLOG,本文为原创,如需转载请标明出处废话不说,直奔主题ascii计算机只接受 “高”、“低”电压,所以使用二进制 1 和 …

理解GL_TRIANGLE_STRIP等绘制三角形序列的三种方式

GL_TRIANGLE_STRIP绘制三角形方式很多时候令人疑惑,在这里对其运作机理进行解释。 一般情况下有三种绘制一系列三角形的方式,分别是GL_TRIANGLES、GL_TRIANGLE_STRIP和GL_TRIANGLE_FAN。 如下图所示: GL_TRIANGLES是以每三个顶点绘制一个三…

jpa mysql乐观锁_【快学springboot】8.JPA乐观锁OptimisticLocking

介绍当涉及到企业应用程序时,正确地管理对数据库的并发访问是至关重要的。为此,我们可以使用Java Persistence API提供的乐观锁定机制。它导致在同一时间对同一数据进行多次更新不会相互干扰。为了使用OptimisticLocking,我们需要一个实体(En…

php mysql 库存变负数_php解决秒杀并发入库导致的库存负数

我们知道数据库处理sql是一条条处理的,假设购买商品的流程是这样的:sql1:查询商品库存1 if(库存数量 > 0)2 {3 //生成订单4 //库存-15 >当没有并发时,上面的流程看起来是如此完美,假设同时两个人下单,而库存只有…

python if else格式_Python if else条件语句详解

我们看到的代码都是顺序执行的,也就是先执行第1条语句,然后是第2条、第3条……一直到最后一条语句,这称为顺序结构。但是对于很多情况,顺序结构的代码是远远不够的,比如一个程序限制了只能成年人使用,儿童因…

UE4 HTC VIVE - 番外篇 - 局域网联机(一)

--------------------引擎环境配置文件修改与项目在线模式启动修改--------------------1)我们就直接用默认名创建一个第三人称项目Paste_Image.png2)右键资源栏,创建一个新的C类创建一个C类选择不继承任何UE提供的基类3)打开【解…

UE4 HTC VIVE - 番外篇 - 局域网联机(二)

开始之前先说一下网游中服务器与客户端的大致关系:网络游戏中各段关系图客户端职责:1)接收玩家的输入翻译得到【玩家指令】上传服务器;2)接收服务器下发的【游戏指令】并将其实现服务器职责:1)接…

启动文件、简单的消息框

C中打开文件的方法。 1.system(); 函数原型: int system(char *command); 作用:发出一个DOS命令。 特点:该函数是同步的,不灵活。只是能够改为system("start XXX"); 2.WinExec(&#…

UE4 HTC VIVE 多人联机

1. editor的VR模式不支持网络,所以在VR模式下没法调试多人联机程序 2. editor的standalone模式,引擎的源码里面把VR模式关闭了,所以需要修改引擎源码 3.可以在命令行下打开VR模式

.net开发微信公众平台

一、说明:公众平台信息接口为开发者提供了一种新的消息处理方式,只有申请成为开发者后,你才能使用公众平台的开发功能,在这里你需要填写一个URL和一个Token,这两项信息也需要你拥有自己的服务器(外网服务器…