前三章我们学习了如何使用DBMS我们学会了增删改查,插入数据库,创建视图...
这一章是我们的数据库刚刚建立,只有一个需求,需要根据用户的需求来创建数据库,每个表有哪些属性,参照关系是什么,主键是什么.......
数据库的设计过程
- 概念设计
- 逻辑设计
- 物理设计
具体解释一下,概念模式:比如我想用创建STudent和SC两个表,通过学号作为参照关系,学生通过选课这个操作建立起和课程之间的联系,每个学生的课程都会有一个成绩,这都是一个个的概念。逻辑设计:我是想用postgres的table还是文档,就建立相应的数据表。物理设计,比如建立索引让运行的效率尽可能地高
实体联系模型---ER模型(概念设计)
本质是一个建模工具,图形化方法---ER图
ER基本概念/术语
还是以一个实际的例子来理解这些概念
实体:现实世界中客观存在的事物、对象,所有大写的单词都是实体。
属性:用来刻画实体,比如员工的序号、姓名、出生日期,类似于查询语言中的键(Key)
那么都有哪些属性?属性的分类
多值属性:一个员工可以有两个电话号 派生属性:BMI可以通过身高和体重计算出来
实体和实体型:对象和类 我和学生 部门
同一类的实体基本属性相同
实体型的ER图表示 案例分析设计
规则(rule)
案例
部门是一个实体,有许多个部门ABC,他们共同的类型是Department,起这么一个名字,我们还发现每个部门有姓名、编号、管理这个部门的经理,还有经理上任的日期,每个部门有很多的地点
- 画红字的表示抽出来的属性
- 部门有一个属性是编号所以画出来一个圈,连上去表示number是department的一个属性,并且部门是是一个键属性因为每个部门的编号不一样
- 人会重名,但是部门一般不能重名,所以部门一般也可以作为键值。
- 一个部门可以有多个loactions工作地点,所以locations可以有多个值,是多值属性。
- 由于不同部门的经理相同并且只能有一个经理,所以只能画单圈。
每一个部门都会有很多个项目,每个项目都有唯一的名称唯一的编号,和一个唯一的地点(但不同的项目可以一个地点,一个部门可以管多个项目
每个员工可以为一个部门工作,但是可以work on多个项目,works on很特殊,他既是一个符合属性,也是一个多值属性
DEPENDENT类
与联系相关的概念
刚才我们只能刻画一个实体类的属性,但是不同实体类之间的联系我们没有说明,每一个实体类是独立的,如何建立起类似学生和课程之间的联系是我们需要思考的一个问题。部门和项目之间的管控关系,学生和老师的教课联系........
基本概念(联系、联系型、联系型的度、联系集)
毕业时哈工大公司个人之间是三元联系。
联系型的表示
体现一种直接管理的方式
上方未修改只是一种描述,但是要体现员工管理项目的关系不如直接换成这种联系型的更好 刻画员工和项目之间的参与关系,原来设计的很繁琐还要整多值关系,理解起来也不是很直接。
同一实体型的关联
同一个部门可能存在主管关系 员工和员工之间的关系,员工的主管也是员工,这种画法中间有字,
联系型的约束
比如夫妻关系是唯一的,校长和老师的关系是一对多的关系,学生和老师的关系是一对多的关系,如何区分,在线上写数字。注意方向不要反
可视化分析
依赖型约束
老师和学生通过讲课建立联系:
学生都必须要上课,是全部参与,每个学生至少参与到一个联系中;但不是所有的老师都要讲课,有的老师只负责科研,所以老师部分是部分参与 部分参与画单线 全部参与画双线