6.1概要设计
抽取实体:业务模型->实体模型(java类+c++类)内存
class Book{name, bookNo, author};
数据库设计:
业务模型/实体模型->数据模型(硬盘)
数据库表设计
问题:如何设计?
详细设计:
类详细,属性和方法
6.2三大范式
设计原则:建议设计的表尽量遵守三大范式
第一范式:要求表的每个字段必须是不可分割的独立单元
student : name ---违反第一范式
lucy|rose
student : name oldname ---符合第一范式
lucy rose
第二范式:在第一范式的基础上,要求每张表只表达一个意思,表的每个字段都和表的主键有依赖
employee(员工):员工编号 员工姓名 部门名称 订单名称 --违反了第二范式
员工表:员工编号 员工姓名 部门名称
订单表:订单编号 订单名称 --符合第二范式
第三范式:在第二范式的基础上,要求每张表的主键之外的其他字段都和只能和主键有直接的依赖关系
员工表:员工编号(主键) 员工姓名 部门编号 部门名称 ---符合第二范式,违反了第三范式(数据冗余高)
员工表:员工编号(主键) 员工姓名 部门编号 符合第三范式(降低数据冗余)
部门表:部门编号 部门名称