为什么要先设计不直接编码
按照项目的正规流程必须先设计再开发,必须先出设计方案,经评审会议审核通过才能进行编码开发,而且设计文档,也是交付项目客户付款的必要条件之一。
而且先进行设计也是为了我们理清思路的必要条件,我们说真正的开发中设计占到80%的时间或者更多,写代码占到20%左右时间
看一下数据中台数据库设计的实际例子
数据库设计最终目的就是如何将需求转换为二维表的过程。
和java里建类一样
Java工作中如何使用数据库的例子,以酒店管理系统举例
首先我们有了展示歌手信息的需求,有了管理歌手信息的需求,那么我们需要把需求中的歌手,转换为(抽象成实体信息) ,为歌手建模,1.明确歌手有哪些属性,歌手和其他实体有没有关联。2.画出歌手的ER图,实体关系图 3.根据ER图建表4.使用JAVA程序连接数据库用程序来调用歌手信息
数据库设计
- 首先将现实世界的类抽象成实体
- 建立ER图
- 建表
专业的ER图工具有 PowerDesigner Microsoft Office Visio
我经常使用的是
https://www.processon.com/ 在线工具
ER举例
- 实体 用户就是一个实体,ER图中用矩形表示
-
实体中的属性 用与实体相连的椭圆表示
-
-
实体中的主标识 比如 用户编号,属性下面加下划线表示,能够代表这个用户的唯一性
4.实体间的联系,也叫关系
实体间的关系通常有:1对1(1:1),1对多(1:m),多对多(m:n)等
一对一:一对一关系是指对于实体集A与实体集B,A中的每一个实体至多与B中一个实体有关系;反之,在实体集B中的每个实体至多与实体集A中一个实体有关系。
公民和身份证号就是1对1的关系
男女朋友就是一对一关系
一对多:一对多关系是指实体集A与实体集B中至少有N(N>0)个实体有关系;并且实体集B中每一个实体至多与实体集A中一个实体有关系
一个班级有多个学生,班级和学生就是1对多的关系,班级是1方,学生是多方,用1:n或是1:m表示
单位和职员,它们的关系就是1:n,一个单位可以有多个职员
分类和商品,它们的关系就是1:n,一个分类有多个商品
多对多:多对多关系是指实体集A中的每一个实体与实体集B中至少有M(M>0)个实体有关系,并且实体集B中的每一个实体与实体集A中的至少N(N>0)个实体有关系。
课程和学生就是多对多关系,一个课程有多个学生选,一个学生可以选多个课程
关系用m:n 或用m:n,或用n:n
例子
问题描述:
- 一个学生可选修多门课,一门课有若干学生选修;
- 一个教师可讲授多门课,一门课只有一个教师讲授;
- 一个学生选修一门课,仅有一个成绩。
- 学生的属性有学号、学生姓名;教师的属性有教师编号,教师姓名;课程的属性有课程号、课程名。
ER图画完,我们就要设计表结构
关系模式 表的逻辑结构和特征的描述
E-R图转换为表的规则
每个实体转化为一张表Employees,实体的主标识EID称为主键
组合属性Address,city street state 三个属性 将其子属性转化为表中的属性
多值属性(Hobbies 一个人的爱好有多个 称为多值属性)和实体的主标识属性组合转化为一张表,通过EID和Employees表关联
1.1:1的联系不必引入关系表
将关系的属性(allowance)及非多方(1.老师表)的主标识(tid)加入到多方表(m 课程表)
多方表的外键是非多方实体的主标识
外键就是在一个表中引用了另一个表的主键tid
3.对于M:N(多对多)的关系我们要引入关系表(中间表)
将关系的属性及两个实体的主标识(id)形成关系表。
关系表的主键为两个实体主标识的组合 主键就是唯一标识这条数据的值
例2