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