数据库备份、权限管理、数据库设计
一、数据库备份
1、为什么要备份
①保证重要的数据不丢失
②数据转移
2、数据库备份的方式
①直接拷贝物理文件data
②在可视化工具中手动导出
③使用命令行导出:mysqldump -h 主机 -u 用户名 -p 密码 数据库 > D:\a.sql
导出:mysqldump -u用户名 -p密码 -A --master-data=2 --single-transaction>/tmp/masterdb.sql
导入:mysql -u用户名 -p密码 </tmp/masterdb.sql
二、权限管理
①创建普通用户,可以远程连接:create user 'test'@'%' identified by '123456';
②授权所有库,只能查询操作:grant select on *.* to test@'%'identified by '123456';
这是授予所有权限:grant all privileges on *.* to test@'%'identified by '123456';
③刷新权限:flush privileges;
④查询用户:select user,host from mysql.user;
三、数据库设计
1、为什么要设计
当数据库比较复杂的时候,就需要设计数据库
糟糕的数据库设计:数据冗余、浪费空间
良好的数据库设计:节省内存空间、保证数据库完整性、方便开发
2、软件开发中,关于数据库设计
分析需求,分析业务和需要处理数据库的需求
概要设计:设计关系图
3、设计数据库的步骤
①收集信息,分析需求
用户表:用户登录注册,用户的个人信息,写博客,创建分类
分类表:文章分类,谁创建的
文章表:文章的信息
评论表:文章的评论
友链表:友链信息
自定义表:系统信息,某个关键的字或者一些主字段
②标识实体(把需求落到每个字段)
③标识实体之间的关系
4、三大范式
https://www.cnblogs.com/wsg25/p/9615100.html
为什么需要数据规范化:信息重复、更新异常、插入异常(无法正常显示信息)、删除异常(丢失有效信息)
①第一范式
原子性:保证每一列不可分
②第二范式
前提:满足第一范式
每张表只描述一件事情
③第三范式
前提:满足第一范式、第二范式
第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关
5、规范性和性能问题
关联查询的表不得超过三张表:
①考虑商业化的需求和目标(成本、用户体验),数据库的性能更加重要
②在规范性能问题的时候,需要适当的考虑一下规范性
③故意给某些表增加一些冗余的字段(从多表查询中变为单表查询)
④故意增加一些计算列(ongoing大数据量降低为小数据量的查询:索引)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现