三十章 MySQL – 设计
一.了解设计数据库的步骤
数据库设计的作用:
随着项目的规模变大 设计变得越来越重要
良好的数据库设计能节省数据的存储空间,能够保证数据的完整性,方便进行数据库的应用系统开发
糟糕的设计会产生冗余 存储空间浪费,内存空间浪费 数据更新和插入的异常
数据库设计的步骤(生命周期)
1.需求分析:分析客户的业务和数据处理需求 明确客户意图
2.概要设计阶段:设计数据库的E-R模型图 保证需求完整
3.详细设计阶段: 应用三大范式进行审核 完善
4.代码编写:构建真实的数据库
5.软件测试:测试数据库是否能满足真实的场景需求
6.安装部署: 试运行阶段
7.生产环境使用
需求:设计一个酒店管理系统 能够事项旅客入住手续和客房管理
A需求分析:
1.收集信息 与有关人员进行沟通 座谈详细了解相应的需求
2.标识实体 存储各类信息
旅客信息 ,客房信息
3.标识实体属性
旅客:
编号 姓名 性别 身份证号 手机号 入住时间 退房时间 押金 消费总金额 入住客房
客房:
编号 客房号 客房类型 客房床位数 客房入住人数 客房状态
4.标注实体关系:
旅客入住客房
二.掌握如何绘制数据库的E-R图
B概要设计:E-R图
实体间关系的分类:
一对一 身份证号唯一属于一个公民(这种关系完全可以放在一张表中)
一对多 客房和客人
多对一 客人和客房
多对多 学生和课程属于多对多 但是往往 商品和订单 (拆分为两个一对多)
C详细设计 先进行规范化 然后再进行模型图绘制
三 掌握如何绘制数据库模型图
二维模型图 Visio 或者 powerDesigner
四 掌握使用数据库设计的三大范式
1.确保每列的原子性(不可分割) 即一张表中的每个字段存储的信息足够单一
2.一张表只能表示一件事 如果在一张表中描述过多的事情 则会导致数据的冗余和不完整
3.表的字段之间不允许出现传递依赖
A-> B -> C A 和 C就是传递依赖
可以将传递依赖的信息抽取到多张或者一张数据字典表
数据字典表:
类型:大床房 双人间 豪华双人间…
客房状态:已预定 已入住 空闲
酒店设施:是否有早餐 有无空调 有无窗户 有无停车位 有无wifi
规范化和实际性能/复杂度等方面的关系
为降低查询的复杂度和提升性能:
1.允许一定的冗余列
2.允许一些特别的计算列
根据实际情况和需求决定规范和性能的取舍
五 掌握 用户管理和用户授权
--%表示任意机器 localhost 表示 本机
--创建用户:
CREATE USER xiaoming@local host INENTIFIED BY `ming123`;
-- 给用户授权(可以只是授权 也可以授权的同时创建对应的用户)
GRANT 授权名 ON 数据库.数据表名 TO 用户名@本机地址
-- 授权时创建用户(ALL表示所有权限)
GRANT ALL ON 数据库.* TO xiaoming@本机地址 INENTIFIED BY 'ming123'
-- 删除用户 可以同时删除多个用户 以,隔开
DROP USER xiaoming@本机地址
-- 修改用户密码
--1.找到mysql的User表 然后修改对应的用户密码(root用户才能修改 修改自己或普通用户)
use mysql;
update user set password = password = ('密码') where user = xx and host = xxx;
-- 2.普通用户和root都可以使用
SET PASSWORD = PASSWORD('密码');
--root才能改其他的
SET PASSWORD FOR 用户名@主机地址 = PASSWORD = ('密码');
--3.利用DOS程序 mysqladmin
mysqladmin -u用户名 - p旧密码 password '新密码';
-- 4 当丢失了密码如何找回 仅限root
在mysql的配置文件 my.ini 添加一行 ship-grant-table
这样的话登录root 不需要输入密码 进去之后按上方的规则可以修改密码 记得用完之后再将选项删除