/**
*数据库设计范式?-----------数据库设计的规范!
* MySQL 增删改查!
*
* 一、第一范式
* 1.原子性要求【不能再分了!】 ( 范式 事务acid 线程)
* 2.一致性 undo 数据库缓存
* 3.隔离性 两个事物之间的隔离级别
*
* 列是固定的 行多个 【关系型数据库!】mysql oracle
* 【非关系型数据库】 是关系型数据库的补充(基于内存!)
*
* 两种错误的数据库设计范式!
*
* 错误1. 违背了 关系型数据库
* id name age tele、tel1、tel2、tel3
*
* 错误2. 违背了 原子性要求
* id name tel
* 1 zs 110,120,119
*
* 正确示范!
* user用户表 解决一个用户有多个十几号的问题!
*
* uid name age
* 1 张三 12
*
* telephone
* id uid tele
* 1 1 110
* 2 1 120
*
* user表中用户zs两个手机号 通过内连接的方式 实现用户的 多个手机号!
*
* 二、第二范式 唯一性!
*
* 学生选修课 成绩表!
* id name age select mark
* 1 张三 12 math 99
* 2 李四 12 music 99
* 3 张三 12 java 99
* 4 李四 12 pe 98
*
* 一个zs有多个主键?解决方案 建两表 1. 2.
* 1.学生表
* id name age
* 1 张三 12
* 2 李四 12
* 2.成绩表
*
* id sid 课程 成绩
* 1 1 math 99
* 2 2 music 99
* 3 1 java 99
* 4 2 pe 98
* 使用内连接的方式 查询结果
SELECT s.name,s.age,m.`课程`,m.`成绩`
FROM studendemo s,mark m
WHERE s.id=m.sid
*
* 3.第三范式 减少冗余!
* student学生信息表
* id name age gname classer
* 1 zs 12 qy97 luo
* 2 ss 13 qy97 luo
* 3 as 45 qy97 luo
* 4 ws 88 qy97 luo
*
* 观察得出 表中的 gname 和 classer 相同信息重复------->冗余
*
* 解决方式:新建表 garden
*
* id uid gname classer
* 1 1 qy97 luo
* 2 2 qy98 luo
*
* 通过观察发现 为满足这三种范式,我们基本上都是,创建两张表来解决!
*
* 思考?
* 主表和从表的关系? 那张表应该加外键?
*
*
* 后面的范式要满足前面的要求!
*
* 反三范式 ? 在实际开发中 适当的冗余 可以提高开发效率。
*
*
*
* 练习2
*
*我现在的问题是 熟练掌握 数据库设计的三种范式
* 理解反三范式的意义!(没有必要,完全墨守成规,一切以实际开发为准 ,怎们简单,怎么设计数据库表)
*
* 设计表 学生 老师
*
* 主键 和未见得区别?
* 我有一个学生表 当做主表 id age name tall sex (学生特有这些属性)第一范性 原子性 不可分割! 目的 保证数据的唯一性 尽量避免数据的冗余性!
*/