当前位置: 首页 > news >正文

软考55-上午题-【数据库】-数据库设计步骤1

一、数据库设计的步骤

新奥尔良法,四个主要阶段:

1、用户需求分析:手机用户需求,确定系统边界;

2、概念设计(概念结构设计):是抽象概念模型,较理想的是采用E-R方法。

3、逻辑设计:E-R图——>关系模式,规范化(3NF、BCNF)

4、物理设计:逻辑模式在计算机中的具体实现。

1-1、需求分析阶段

逻辑设计、物理设计均以需求分析的设计为依据。

需求分析阶段的工作以及形成的相关文档,作为概念结构设计阶段的依据。

需求分析阶段的结果文档:

  • 需求说明文档;
  • 数据字典(系统需求说明书)
  • 数据流程图(数据流图)(系统需求说明书)

1-2、概念结构设计

1-2-1、E-R图

1、E-R模型中的基本术语(概念模型、实体-联系模型)

1、实体

矩形表示,客观存在并相互区别的事物,如:单位、职工、部门、项目。

2、联系

菱形表示,实体之间的对应关系。

2-1、两个实体集之间的联系有3种类型:

(1)、1对1的联系(1:1)。如:班和班长之间的联系。

(2)、一对多的联系(1:n)。如:班和学生之间的联系。

(3)、多对多的联系(m:n)。如:课程和学生之间的联系。

示例:

2-2、两个以上实体集之间的联系:

  • 1:1:1;
  • 1:1:n;
  • 1:n:m;
  • r:m:n;

示例:

2-2、同一实体集内的二元联系:

同一实体集内的各个实体之间也存在1:1、1:n、n:m的联系。

示例:

3、属性

椭圆表示,实体的特性,一个实体可以有若干属性。

属性的具体取值:属性值;

属性域:属性值的取值范围,如年龄的取值范围是18~60。

如:学生实体的若干属性(学号、姓名、性别、出生日期、班号)

3-1、属性的分类:

1、简单属性、复合属性

简单属性:原子的、不可再分的;

复合属性:可以细分为别的属性;例如:通信地址属性,可以再分为:邮编、省、市、街道。

2、单值属性、多值属性

单值属性:定义的属性对于特定的实体,只有一个单独的值;如:特定的职工,只对应一个职工号、职工姓名。

多值属性:一个属性对应一组值。如:职工可能有多个亲属,则职工的亲属姓名可能有多个数目。

3、NULL值属性

4、派生属性

从其他属性得来;如:工作年限的值 = 当前时间 - 入职时间,工作年限就是派生属性。

3-2、真题

真题1:

真题2:

2、E-R图实例

3、E-R图中的主要构建

4、弱实体

这种实体对另一些实体具有很强的依赖关系,即,一个实体的存在必须以另一个实体为前提。如:职工与家属,家属总是属于职工。示例:

1-2-2、概念结构设计

用E-R方式建立概念模型:

对需求分析阶段得到的数据进行分类、聚集、概括,确定:实体、属性、联系。

概念结构的具体工作步骤:选择局部应用、逐一设计分析E-R图、E-R图合并。

局部E-R图合并,示例:

合并:

没什么特别的,只是两个E-R图的合并而已。

概念结构设计阶段:

1、选择局部应用;

2、逐一设计分E-R图(局部E-R图)

3、局部E-R图的合并;

合并的过程中要解决分E-R图之间存在的冲突。

1-2-2-1、分E-R图之间的冲突,分类:
1、属性冲突

如:分数属性

学校考试的分数,取值范围:0~100

四级英语考试的分数,取值范围:0~600

2、命名冲突
  • 异名同义
  • 同名异义

示例:

3、结构冲突
  • 同一实体,在不同的分E-R图中有不同的属性;
  • 同一对象,在一个分E-R图中被抽象为实体,,在另一个分E-R图中被抽象为属性。

示例:

1-2-2-2、真题

真题1:

真题2:

教师、职工属于同一个实体。

结构冲突:

同一实体,在不同的分E-R图中有不同的属性;

http://www.lryc.cn/news/310265.html

相关文章:

  • 速盾:使用cdn后速度慢是怎么回事?
  • 考研复试类比社团招新,无所谓“公平”,导师选谁都是他的权力
  • 阿里面试,有点焦虑。。
  • 24计算机考研调剂 | 石家庄铁道大学
  • 勇敢尝鲜之Springboot3大坑-集成Mybatisplus报错:ddlApplicationRunner
  • linux高级编程:线程(二)、进程间的通信方式
  • Unity 佳能SDK 及数据获取
  • Unity(第二十三部)导航
  • 根据建表sql语句生成go的struct代码工具
  • Qt 自定义长条进度条(类似播放器进度条)
  • 休息日的思考与额外题——双指针、原地哈希day28
  • 数据修改
  • Android JNI复杂用法,回调,C++中调用Java方法
  • C++从零开始的打怪升级之路(day41)
  • uni-app app实现web-view H5图片长按下载
  • 全量知识系统问题及SmartChat给出的答复 之5
  • DolphinScheduler——工作流实例的生命周期
  • 阻塞和非阻塞网络io有什么区别,分别有哪些应用场景?
  • 面试数据库篇(mysql)- 12分库分表
  • LaTeX中的多行数学公式
  • 绕过5秒盾Cloudflare和DDoS-GUARD
  • react 原理揭秘
  • el-table实现转置表格
  • (3)(3.1) FlightDeck FrSky发射器应用程序
  • 【Unity】导入IAP插件后依赖冲突问题 com.android.billingclient冲突
  • docker 转为docker-compose(composerize 命令)
  • 【Golang切片】
  • React-router的创建和第一个组件
  • 计算机设计大赛 深度学习猫狗分类 - python opencv cnn
  • Linux服务器磁盘及内存用量监控Python脚本(推送钉钉群通知)