数据库实施步骤(E-R设计)

        数据库要实现的是:将现实世界存在的实体模型通过建模转化为信息世界的概念模型,然后再将概念模型转化为数据模型,数据模型进一步规范化后就可实施数据的创建。

        现实世界中各种各样的事物都有自己的一些性质,同时又可根据某些相似性质将它们归纳为事物类;在信息世界中,事物类就是实体集,各个事物就是各个实体,事物的性质就是属性;在数据库世界中,数据表就是实体,表中的行是记录,列是数据项。数据库实施步骤如图

4244c453074e4cd1970153067939680a.png

概念模型(E-R图)

        当我们接到一个数据库建设项目时,要进行的一个步骤就是需求分析,在需求分析阶段,我们通过         

        4 步来完成 E-R 图。

 

  1. 收集信息与需求方人员进行交流、座谈,充分理解数据库需要实现的功能。
  2. 找出实体找出数据库中要管理的关键对象或实体。在 E-R 图中,用矩形来表示实体。
  3. 标识实体的属性,标识出实体具有哪些特性。在 E-R 图中,用椭圆或圆角矩形来表示属性(椭圆较为常用)
  4. 分析出实体之间的联系,分析出实体与实体之间的相互关系,也就是联系。在E-R 图中,用菱形来表示联系。

cd9857e251914db5b5776001857f0f48.png 

        下面,我们通过构建一个学校的学生成绩管理数据库来进一步理解概念模型。

  • 第一步:与学校的项目组成员洽谈,获取这个数据库要实现的功能。我们了解到此数据库要记录每个同学选了哪些课、课程成绩及获得的学分。
  • 第二步:找出这个项目中的实体集,比如学生和课程。

a9e01b1f107444b0aea2ff245917e7f5.png

6919a6e1f1c84dcf9ec6de8a1e60b640.png

  • 第三步:根据需求标识出学生的属性和课程的属性,学生的属性有学号、姓名、性别、出生日期、民族、政治面貌、专业名称、家庭住址、联系方式、总学分、照片、备注;课程的属性有课程号、课程名、开课学期、学时、学分。

dc812d7886a8416fab683b53114c6519.png

34d82a12ec974b29bfe00c670f155b64.png

  •  第四步:学生一旦选择了某门课程,参加考试后就会产生成绩与学分,所以学生和课程这两个实体之间有选课的联系

3e0acf7d76974364a856ca79c1322e29.png

综上分析,可以得出学生成绩管理数据库的 E-R 图:

59e2d20d0d8b4b1b800a10c6bd47be13.png 

数据模型 

主键(Primary Key,PK)

        在实体的所有属性中,有一个属性或一组属性的值在所有实体对象中不会出现重复值,不能为空,那么这个属性或这组属性就是主键。比如在学生成绩管理数据库中,学生实体中每个学生的“学号”是唯一的,不可能有相同的学号而且不允许为空,那么“学号”就是主键;同理,在课程实体中每门课程的“课程号”是主键。 

实体关系

        实体与实体有 3种对应关系,分别是一对一、一对多(多对一)和多对多。下面进行详细介绍。

一对一(1:1)

        有 A和 B 两个实体集,A 中的一个实体只能与 B 中的一个实体对应,同时,B 中的一个实体只能与 A 中的一个实体对应,这时A与B就是一对一的关系,如图所示。例如,如果一个学校里只有一个校长,而这个校长只能担任一个学校的校长,那么学校与校长这两个实体就是对一的关系。 

dc8d7b9d8c1a4c8b87b2485671f7aff1.png

 一对多/多对一(1:n/0:1)

        有 A 和 B 两个实体集,A 中的一个实体可以与 B 中的多个实体对应。但是,B 中的一个实体只能与 A 中的一个实体对应,这时A与B就是一对多的关系,B与A就是多对一的关系,如图所示。例如,一个学校里可以有多名教师,但是学校中的任意一名教师只属于这个学校,这时学校和教师两个实体就是一对多的关系;反之,教师和学校就是多对一联系。

3320d47aa679498fb8aed454f96c927a.png

多对多(m:n) 

        有A和 B 两个实体集,A中的一个实体可以与 B 中的多个实体对应,同时,B 中的一个实体也可以与 A 中的多个实体对应,如图所示。例如,在学生成绩管理数据库中,个学生可以选修多门课程,同时一门课程可以被多个学生选修,这时学生和课程就是多对多的关系。

47a6bc92d0064d9ebb10a6d7d8a08fa0.png

转化为数据模型 

前面介绍了主键与实体的对应关系,下面讲述如何将 E-R 图转化为数据模型。

一对一联系的 E-R 图转换到关系模型

前面例子中的学校和校长之间就是一对一的关系,假设它们的关系模式如下。

A:学校(学校编码,学校名称)

B:校长(工号,姓名,性别,专业)转换为数据模型有两种方法。

  • 方法 1:将 A、B 两个实体的主键都放到它们的联系中,联系重新生成一个新表。
  • 在新表中,原表的主键一起作为新表的主键。
  • 学校(学校编码 PK,学校名称) 校长(工号 PK,姓名,性别,专业)属于(学校编码 PK,工号 PK)或(工号 PK,学校编码 PK)

c92c2cebc7854570a6c40f9a81de54ed.png

  • 方法 2:将 A的主键给 B,或是将 B的主键给 A。
  • 学校(学校编码 PK,学校名称,工号PK)校长(工号 PK,姓名,性别,专业)或者   
  • 学校(学校编码 PK,学校名称) 校长(工号 PK,姓名,性别,专业,学校编码PK)

 ffdbe561b2de456485226c28c2440962.png

一对多联系的 E-R 图转换到关系模型

前面例子中的学校和教师之间的关系就是一对多联系,假设它们的关系模式如下。

A:学校(学校编码,学校名称)B:教师(工号,姓名,性别,专业)转换为数据模型有两种方法。

  • 方法 1:将 A、B 两个实体的主键都放到它们的联系中,联系重新生成一个新表。
  • 在新表中原表的主键一起作为新表的主键。
  • 学校(学校编码 PK,学校名称)教师(工号PK,姓名,性别,专业)属于(学校编码 PK,工号 PK)

ad7222e359e8465099c7018bdc78bc08.png

 

  • 方法 2:将一对多的“一”方的主键给多方。
  • 学校(学校编码 PK,学校名称)教师(工号 PK,姓名,性别,专业,学校编码) 

53c5ecdb08184c899be812462fa9d3bd.png

多对多联系的 E-R 图转换到关系模型

前面例子中的学生和课程之间就是多对多联系,假设它们的关系模式如下。

A:学生(学号 PK,姓名,性别,出生日期…)B:课程(课程号 PK,课程名,开课学期,学时,学分)转换为数据模型只有一种方法:

  • 将 A、B 两个实体的主键都放到它们的联系中,联系重新生成-个新表。
  • 在新表中,原表的主键一起作为新表的主键。
  • 学生(学号 PK,姓名,性别,出生日期……)课程(课程号 PK,课程名,开课学期,学时,学分)选课(学号 PK,课程号 PK,成绩,学分) 

ddc8af3d06484c74bb04b112acd27d89.png

规范化

        一个低一级范式的关系模式通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫做”规范化“。

在实际开发走一般只会用到3NF所以5NF,4NF,BCNF就不予介绍了。各种范式之间的关系有:

5NF∈4NF∈BCNF∈3NF∈2NF∈1NF 

第一范式(1NF)

        第一范式的约束条件为:数据表中的每一个数据项都不能被拆分成两个或多个数据项,即每个数据项都是单一属性的,具有不可拆分性(原子性 )。

913ffa90c6b64070a3cfc35692bf6af5.png

        因为学历与学位是两个不同的属性,合并为一个数据项不符合1NF 的约束条件,根据 1NF的约束条件,学历和学位列只能拆分为学历列和学位列。 

第二范式(2NF)

        第二范式的约束条件为:数据表中的每一个数据项都必须依赖主键,此范式充分体现了主键的核心地位,不依赖主键的列将被移出此表。

f45a4031dd73477ab80afb559d88e3bc.png

        订单日期依赖主键订单编号,也就是说当订单编号变化时,订单日期也随其变化,而产品编号与单价都不跟随订单日期发生改变,即都不依赖订单编号,所以产品编号与单价被移出该表,它们抱团生成新表或加入其他基本表中,从第一范式开始验证 

第三范式(3NF)

        第三范式的约束条件为:除主键外,任意两列不能有依赖关系,此范式也间接体现了主键的核心地位,有依赖关系的其中一列将被移出该表。

1e2e5a3ebdaf46d792906699a140db6b.png

        在本例中,我们设定了销售价格是买入价格的 1.2倍,当买入价格发生变化时,销售价格将产生相应的变化,此时就不符合第三范式,那么只能把销售价格或买入价格移出该表。 

 

  • 39
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值