设计数据库
1. 为什么要设计数据库
当数据库比较复杂的手,我们就需要设计了
- 糟糕的数据库设计:
- 数据冗余,浪费空间
- 数据库插入和删除都会麻烦、异常
- 程序的性能差
- 良好的数据库设计:
- 节省内存空间
- 保证数据库的完整性
- 方便我们开发系统
2.设计数据库的步骤:
- 收集信息,分析需求
- 标识实体
- 标识实体之间的关系
三大范式
1. 为什么需要数据规范化
- 信息重复
- 更新异常
- 插入异常
- 无法正常显示信息
- 删除异常
- 丢失有效的信息
2. 三大范式
- 第一范式(1NF)
- 原子性:保证每一列不可再分
- 第二范式(2NF)
- 前提:满足第一范式
- 每张表只描述一件事情
- 第三范式(3NF)
- 前提:满足第一范式和第二范式
- 第三范式需要确保数据的每一列数据都和主键直接相关,而不能间接相关。
3.规范性和性能的问题
关联查询的表不得超过三张
- 考虑商业化的需求和目标,数据库的性能更加重要
- 在规范性能的问题的时候,需要适当的考虑一下规范性!
- 故意给某些表增加一下冗余的字段。
- 故意增加一些计算列。
mysql正则表达式
模式 | 示例 | 描述 |
---|---|---|
^ | ^st | 以st开头的所有数据 |
$ | st$ | 以st结尾的所有数据 |
[……] | [st] | 字符集合,匹配包含s或t的所有数据 |
[^……] | [^st] | 负字符集合,匹配不包含s或t的所有数据 |
p1|p2 | s|t | 匹配s或t |
* | st* | 匹配s或stt,* 等价于{0,}。 |
+ | st+ | 能匹配st或stt,+ 等价于 {1,}。 |
{n} | s{2} | 只能匹配包含两个ss的数据,匹配确定两次 |
{n,m} | st{0,1} | 匹配s或st,最少匹配0次,最多1次 |