1、数据库结构设计

1、总-总体流程图

2、分-【提取属性】业务分析

评价的属性:{用户,课程主标题,内容,综合评分,内容实用,简洁易懂,逻辑分析,发布时间}
问答评论属性:{类型,标题,内容,关联章节,笔记标题,笔记内容,发布时间}

3、分-【属性->对象】逻辑设计

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

宽表设计模式

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

数据库三大范式

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

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

2、数据库物理设计

(1)常见引擎

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

(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

mysql三大范式_MySQL学习笔记相关推荐

  1. mysql分页概念_MySQL学习笔记之数据定义表约束,分页方法总结

    本文实例讲述了MySQL学习笔记之数据定义表约束,分页方法.分享给大家供大家参考,具体如下: 1. primary key 主键 特点:主键是用于唯一标识一条记录的约束,一张表最多只能有一个主键,不能 ...

  2. mysql 临时表 事务_MySQL学习笔记十:游标/动态SQL/临时表/事务

    逆天十三少 发表于:2020-11-12 08:12 阅读: 90次 这篇教程主要讲解了MySQL学习笔记十:游标/动态SQL/临时表/事务,并附有相关的代码样列,我觉得非常有帮助,现在分享出来大家一 ...

  3. mysql 分组链接_MySQL学习笔记(四)——分组函数,分组查询,链接查询

    MySQL学习笔记(四)--分组函数,分组查询,链接查询 做者:就叫易易好了 日期:2020/11/18 1.分组函数 功能:用做统计使用,又称为聚合函数或统计函数mysql 分类:web sum函数 ...

  4. Mysql成语数据库_mysql学习笔记

    今天开始学习mysql数据库了,也是第一次在这里写技术笔记,相信好记忆不如烂笔头,就以此来见证自己的成长吧! 首先安装mysql服务器的过程这里就不啰嗦啦,相信大家都懂的,直接进入主题吧,欢迎那些也是 ...

  5. MySQL编程技巧_MySQL学习笔记---MySQL开发技巧

    SQL语句分类 DDL:数据定义语言 --- CREATE.ALTER.DROP.TRUNCATE TPL:事务处理语言 --- COMMIT.ROLLBACK.SAVEPOINT.SET TRANS ...

  6. mysql数据库管理指导_mysql学习笔记一(数据库管理控制)

    一.数据库常用命令 1 创建数据库 1.1 创建mydb1数据库,使用默认字符集 create database mydb1; 1.2 创建数据库mydb2,字符集使用utf8 create data ...

  7. mysql innodb 事务_MySQL学习笔记之InnoDB事务实现

    我们都知道事务的几种性质,数据库为了维护这些性质,尤其是一致性和隔离性,一般使用加锁这种方式. 同时数据库又是个高并发的应用,同一时间会有大量的并发访问,如果加锁过度,会极大的降低并发处理能力. 所以 ...

  8. mysql数据类型选择_MySQL学习笔记(二):MySQL数据类型汇总及选择参考

    本文主要介绍了MySQL 的常用数据类型,以及实际应用时如何选择合适的类型. ******几个通用的简单原则:******* 1. 更小的通常更好.但是要确保没有低估需要存储的值的范围,如果无法确定哪 ...

  9. mysql iif函数_MySQL学习笔记七:常用函数

    一.字符串函数 1.1.CONCAT(str1,str2,...) 作用:将传入的字符连接成一个字符串,任何字符与null进行连接结果都是null. SELECT CONCAT(`name`,'-', ...

最新文章

  1. linux redis经常自动关闭,Linux开启关闭redis
  2. 一篇网站架构的文章:一步步构建大型网站架构
  3. php打开并填充表单,php – 创建一个’机器人’来填充带有一些页面的表单
  4. Hibernate占位符问题[use named parameters or JPA-style positional parameters instead.]
  5. Angular中实现路由跳转并通过get方式传递参数
  6. 过程工程中的计算机应用基础,CDIO工程教育培养模式在《计算机应用基础》课中的应用...
  7. ubuntu-14.04.2-desktop-i386.iso:ubuntu-14.04.2-desktop-i386:安装Oracle11gR2
  8. 嵌入式开发环境搭建:开发板tftp下载环境搭建
  9. 写一段jdbc连oracle的程序java类_并实现数据查询_一段Jdbc连Oracle的程序,并实现数据查询....
  10. [JNI] 开发基础(5)内存分配
  11. 基于javaweb的超市管理系统设计与实现(含论文和源码)
  12. 【从零开始的OpenGL学习】1. 配置OpenGL,绘制最简单的一个三角形,HelloWorld(学习笔记)
  13. Admob的注意事项
  14. 多个桌面Deskspace如何使用
  15. springboot自定义启动logo
  16. 正则表达式 '^[a-zA-Z0-9''-'\s]{1,30}$' 代表什么意思?
  17. Hack The Box——Academy
  18. 麦吉尔商业与计算机科学,麦吉尔大学与UBC大学那个好考
  19. 怎么制作有趣的表情包
  20. linux下qt软件使用方法,QT入门 QT Creator 使用

热门文章

  1. svn redis和rabbitmq服务启动
  2. 1017 A除以B (20分)
  3. (JAVA)获取对象
  4. 不用AJAX框架实现AJAX效果
  5. 创建好centos7虚拟机之后连xshell连不上虚机
  6. web.xml 配置文件 超详细说明!!!
  7. idea ssm项目移包报错问题
  8. jquery datatable 获取当前分页的数据
  9. BZOJ2948 : [Poi2001]绿色游戏
  10. Oracle创建表_01