MySQL数据库
第四章 数据库设计
一、为什么需要设计数据库
1、良好的数据库设计
(1)节省数据的存储空间
(2)能够保证数据的完整性
(3)方便进行数据库应用系统的开发
2、糟糕的数据库设计
(1)数据冗余、存储空间浪费
(2)内存空间浪费
(3)数据更新和插入的异常
二、软件项目开发周期中数据库设计
(1)需求分析阶段:分析客户的业务和数据处理需求
(2)概要设计阶段:设计数据库的E-R模型图,确认需求信息的正确和完整
(3)详细设计阶段:应用三大范式审核数据库结构
(4)代码编写阶段:物理实现数据库,编码实现应用
(5)软件测试阶段:……
(6)安装部署:……
三、E-R图
绘制E-R图
四、三大范式
1、为什么需要数据规范化
2、不合规范的表设计
(1)信息重复
(2)更新异常
(3)插入异常——无法正确表示信息
(4)删除异常——丢失有效信息
3、第一范式 (1st NF)
确保每列都是不可再分的最小数据单元。
4、第二范式 (2nd NF)
要求每张表只能描述一件事情,确保每列都与主键相关。
5、第三范式 (3nd NF)
确保表中各列必须和主键直接相关,不存在传递依赖。
五、基于角色的权限管理(Role-Based Access Control,RBAC)
又称为角色的访问控制。
1、该权限控制方案,采用了用户和角色关联,而角色和具体的功能管理,这一解决方法。在数据库层面,会采用用户信息表、角色信息表、功能权限信息表和角色功能信息表组成。
2、用户信息表和角色信息表构成了典型的多对一映射关系,但是在复杂的权限中,也有可能一个用户会被分配多个角色,以为就是说用户信息表和角色信息表形成了多对多映射关系,那么在这种情况下,就需要五张表来完成。角色信息表和功能信息表则形成了多对多的映射关系。
3、RBAC中,支持三个著名的安全原则:
(1)最小权限原则
(2)责任分离原则
(3)数据抽象原则
六、MySQL用户管理
1、为什么需要用户管理
root是超级管理员用户,很容易引发由于误操作所导致的数据不安全问题,怎么办?
2、创建普通用户
– 创建 MySQL 数据库用户 SQL 语法:
– create user ‘用户名’@‘数据库所在 IP 地址’ [identified by ‘登录密码’]
create user ‘kj210701q’@‘localhost’ identified by ‘kj210701q’;
3、 查看 MySQL 所有的用户信息
use mysql;
– 在数据库 mysql 中的 user 表,存储的就是该 MySQL 数据库的所有用户信息和权限
select * from user;
4、给用户授权
grant select on ewms_db.sys_emp to 'kj210701q'@'localhost';
授予 kj210701q 用户查看和插入 sys_dept 表权限
grant select, insert on ewms_db.sys_dept to 'kj210701q'@'localhost';
– 如果需要授予所有权限,则通过通配符 * 完成
grant select, insert, update, delete, create, drop on ewms_db.* to 'kj210701q'@'localhost';
grant select, insert, update, delete, create, drop, alter on *.* to 'kj210701q'@'localhost';
5、撤销授权
revoke 权限 on 数据库.数据表 from '用户名' @'主机名';
6、删除用户
drop user '用户名' @'主机名';