版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhang___gang/article/details/84348763
数据库设计(数据库开发前期重要部分)
- 逻辑模型-->物理模型-->转换成SQL,创建表等对象
- Power Design等软件都可以绘制ER图
- 物理模型可以直接转换成SQL语句
- 实体关系:
- 区域
- 部门
- 员工
- 客户
- >各个实体之间的关系??
- 所有内容不能写在一个表中,如下表可以拆出一个区域表和其他表
-
名字 入职时间 薪资 部门名 区域名 aa ... 5000 java工程师 1 bb 8000 java工程师 1 cc 8000 测试 2 -
区域表:
id 区域名 1 华东区 2 华中区 3 华北区
数据库设计范式:用来规范数据库的设计
目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)第四范式(4NF)、第五范式(5NF,又称为完美范式)
后一个是基于前一个的,比前一个更严格
通常只需遵循到第三范式
- 1NF:列应该是不可拆分的,原子的,不应该包含多个字段值
- 2NF:要求数据库表中的每个实例或记录必须可以被唯一区分
- 要求每个表都有一个主键列,能唯一的代表这个表,其它的列完全依赖于这个列
- 我们通常会选择一个与业务无关的列id
- 3NF:简而言之,第三范式要求一个关系中不包含也在其它关系也包含的非关键字消息,消除冗余
- 实际中,有时为了查询方便,反而会适当加一个冗余字段
- 如:
- 员工表:id,first_name,last_name,start_date,dept_id,name
- 部门表:id,name,region_id name完全依赖于id
- 每个员工都有员工部门编号
- dept_id依赖于id
- name依赖dept_id
- name依赖id
实体:表
实体的关系:表的关系
- 一对一:
- 丈夫和妻子
- 一个丈夫最多只能有一个妻子,一个妻子最多只能有一个丈夫
- 外键:两侧都可以
- 一个丈夫最多只能有一个妻子,一个妻子最多只能有一个丈夫
- 人和护照
- 一个人最多只能有一个护照,一个护照最多只能有一个人
- 外键:护照一侧合理(ps:人可能没有护照,护照一定有对应的人)
- 一个人最多只能有一个护照,一个护照最多只能有一个人
- 丈夫和妻子
- 一对多
- 父亲和孩子
- 一个父亲可以有多个孩子,一个孩子只能有一个父亲
- 外键:在多的一侧加外键
- 一个父亲可以有多个孩子,一个孩子只能有一个父亲
- 部门和员工
- 员工部门可以有多个员工,一个员工属于一个部门
- 外键:在多的一侧加外键
- 员工部门可以有多个员工,一个员工属于一个部门
- 父亲和孩子
- 多对多
- 学生和老师
- 一个学生可以有多个老师,一个老师可以有多个学生
- 外键:
- 一般会创建一个中间表
id stu_id tea_id 1 1 1 2 1 2 3 1 3 4 2 1 -
学生<-->选课<-->老师
-
老师和选课:一对多
-
学生和选课:一对多
- 一般会创建一个中间表
- 外键:
- 一个学生可以有多个老师,一个老师可以有多个学生
- 学生和老师