MySQL-权限管理+备份+范式
权限管理
SQL操作命令
# 创建用户
# oracle:create user 用户名 identified by 密码 default tablespace 表空间表;
CREATE USER xxx IDENTIFIED BY '123';
# 修改密码(当前用户)
SET PASSWORD = PASSWORD('1234');
# mysql8修改密码命令 ALTER USER "root"@"localhost" IDENTIFIED BY "你的新密码";
# 修改密码(指定当前用户)
SET PASSWORD FOR xxx = PASSWORD('1234');
# 重命名 RENAME USER 原来名字 To 新名字
RENAME USER xxx To xxx2;
# 用户授权 ALL PRIVILEGES 全部的权限, 库,表
# *.* 所有表 ,可以改为指定表
# 除了 给别人授权
GRANT ALL PRIVILEGES ON *.* To xxx2;
# 可以给别人授权
GRANT ALL PRIVILEGES ON *.* To xxx2 WITH GRANT OPTION;
# 查询权限
SHOW GRANT FOR xxx2;
SHOW GRANT FOR root@localhost;
# 撤销权限 REVOKE 哪些权限 在哪个库撤销,给谁撤销
REVOKE ALL PRIVILEGES ON *.* FROM xxx2;
# 删除用户
DROP USER xxx2;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
备份
# CMD命令行备份
# mysqlump -h主机 -uroot用户名 -p密码 库名 表名1 表名2 表名3 > 物理磁盘位置/文件名.sql
mysqlump -hlocalhost -uroot -p123456 school student > D:/a.sql
# mssql -u用户名 -p密码 库名 < 备份文件
# 登录
mysql> use school:
mysql> source D:/a.sql
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
规范数据库设计
设计数据库
- 分析需求:分析业务和需要处理的数据库的需求
- 概要设计:设计关系图E-R图
个人博客步骤:
- 收集信息,分析需求
- 用户表(用户登录注销,用户个人信息,写博客,创建分类)
- 粉丝表(被关注人的ID,关乎人的ID)
- 分类表(文章分类,谁创建的)
- 文章表(文章题目,作者ID,时间,分类,内容)
- 评论表(所属文章,评论人ID,内容,时间,回复人ID)
- 友链表(友链信息,网站链接,排序)
- 自定义表(系统信息,关键的字,主字段) key:value
- 标识实体(把需求落地到每一个字段)
- 标识视图之间的关系
- 写博客:user–>blog
- 创建分类:user–>category
- 关注:user–>user
- 友链:links
- 评论:user–>user–>blog
依赖
若X->Y,即由X能确定Y,或者说一个已知的X能确定一个唯一的Y,则称Y依赖于Y(跟初中的函数定义一致)。
一个学生只能属于一个学院,即知道学号X,就能确定对应的学院代码Y,所以学院代码Y依赖于学号X。
部分函数依赖
设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。
举个例子:通过AB能得出C,通过A也能得出C,通过B也能得出C,那么说C部分依赖于AB。
比如(学号,姓名)->(系主任),显然,只需(学号,姓名)里的学号就能确定系主任!因此:(系主任)部分函数依赖于(学号,姓名)
完全函数依赖
设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。
举个例子:通过AB能得出C,但是AB单独得不出C,那么说C完全依赖于AB。
比如(学号,课程号)->某科成绩,显然,因为一个学号一般有多个课程的成绩,即一个所以要查某科的成绩,需要同时知道学号和课程号。即:(某科成绩)完全函数依赖于(学号,课程号)。
传递函数依赖
设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。
举个例子:通过A得到B,通过B得到C,但是C得不到B,B得不到A,那么成C传递依赖于A。
系主任函数依赖于系,系函数依赖于学号,因此系主任传递依赖于学号。
主码(主键)
主码中的属性叫做主属性,其他属性叫做非主属性。
比如:(学号,姓名,性别)中,学号为主码(主键),因此学号为主属性,姓名和性别是非主属性。
三大范式
为什么需要数据规范化:信息重复,更新异常,插入异常(无法正常显示信息),删除异常(丢失有效信息)
第一范式(1NF)
原子性:保证每一列数据不可分。数据的一个字段里存在两个值。
第二范式(2NF)
前提:满足第一范式。第二范式:消除各个非主属性的部分函数依赖
一张表只描述一件事情。
第三范式(3NF)
前提:满足第一,二范式。
第三范式需要确保数据表中的每一列数据都要和主键直接相关,不能间接相关。传递函数依赖
规范和性能
关联查询的表不得超过三张表。
- 考虑到商业化需求和目标,数据库性能更加重要,考虑规范性
- 故意添加一些冗余的字段,将多表查询变为单表查询(根据订单表里面的商品id,再通过商品id查询商品表。但为了性能可以直接在订单表里面放商品所有信息)
- 估计添加一些计算列(大数据量降为小数据量的查询:索引)
文章来源: blog.csdn.net,作者:αβγθ,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/weixin_38022166/article/details/116708978
- 点赞
- 收藏
- 关注作者
评论(0)