发表于: 2019-12-28 23:59:19
1 1056
今天完成的事情:
关于数据库设计的基本步骤:
1)需求分析:业务系统中有哪些数据?这些数据有哪些属性?
2)逻辑设计:将需求转化为数据库的逻辑模型,通过ER图形式将逻辑模型描述展示出来
3)物理设计:这个阶段涉及到数据库中建表,选择字段类型的问题,列的数据类型一方面影响相应数据的存储空间的开销,另一方面也会影响数据查询性能。当一个列可以选择多种数据类型时,应该优先考虑数字类型,其次是日期或二进制,最后是字符串类型。对于相同级别的数据类型,在满足业务的情况下,应该优先选择占用空间小的数据类型。在对数据进行比较操作时,同样的数据,字符串处理比数字处理更慢。
选择数据类型优先度:数字 > 日期/二进制 >字符串
学习了最常用的数据库设计三大范式:
第一 数据库表中的所有字段值都是不可分解的原子值
这个最好理解,就是每个字段不能再拆分
比如:
可以拆成:
第二范式:保证一张表只描述一件事情
这是通俗的说法,用第二范式的定义描述第二范式,说的是在满足第一范式的基础上,数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖,也即所有非关键字段都完全依赖于任一组候选关键字。
这谁看得懂啊,继续举例子
4、删除异常:假设一批学生已经完成课程的选修,这些选修记录就应该从数据库表中删除。但是,与此同时,"课程"和"学分"也被删除了,显然,这最终可能会导致插入异常

增加了表,将学生信息与课程信息通过一张中间表关联,很好地解决了上面的几个问题
这就是第二范式的中心: 保证一张表只讲一件事情。
第三范式----保证每列都和主键直接相关
简单的说就是说表中的字段和主键直接对应不依靠其他中间字段,说白了就是,决定某字段值的必须是主键。

存在问题:
这个表的主键是学号,但主键学号 无法决定 学院地点 和学员电话,只能决定 姓名,年龄,学院
而学院才能决定 学院地点和学院电话
这就不符合第三范式
修改之后的表结构如下图:
完毕
另外关于1对1 1 对多 多对多的主键外键设置
1. 一对一实例:
一个人对应一张身份证,一张身份证对应一个人
一对一关系是最好理解的一种关系,在数据库建表的时候可以将人表的主键放置与身份证表里面,也可以将身份证表的主键放置于人表里面
一个班级拥有多个学生,一个学生只能够属于某个班级
班级表是1 学生表是多
那么多端里面应该放置1端的主键
学生表里面应该放置班级表里面的主键
3.多对多实例
一个学生可以选修多门课程,一个课程可以被多个学生选修
两个多对多关系的表 是无法互相设置外键的
这个就需要一个新建中间表作为转换
中间表可以和学生表是1对多关系
中间表可以和课程表是1对多关系
然后在多的表里设置1的主键
关于主键 外键 和索引
今天学习了半天,学的少,只学习了这些。
明天计划的事情:
创建数据表 及 接口文档
评论