首页数据库数据库设计方法,数据库设计的步骤有哪些

数据库设计方法,数据库设计的步骤有哪些

编程之家2023-10-22294次浏览

本篇文章给大家谈谈数据库设计方法,以及数据库设计的步骤有哪些对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

数据库设计方法,数据库设计的步骤有哪些

数据库设计的设计方法

设计质量与设计人员的经验和水平有直接关系

缺乏科学理论和工程方法的支持,工程的质量难以保证

数据库运行一段时间后常常又不同程度地发现各种问题,增加了维护代价基本思想:过程迭代和逐步求精

典型方法:

(1)新奥尔良(New Orleans)方法:将数据库设计分为四个阶段

S.B.Yao方法:将数据库设计分为五个步骤

数据库设计方法,数据库设计的步骤有哪些

I.R.Palmer方法:把数据库设计当成一步接一步的过程

(2)计算机辅助设计

ORACLEDesigner 2000

SYBASEPowerDesigner

数据库设计的步骤有哪些

数据库的设计过程大致可分为以下六个阶段:

1.需求分析阶段

数据库设计方法,数据库设计的步骤有哪些

需求收集和分析,结果得到数据字典描述的数据需求(和数据流图描述的处理需求)。

2.概念结构设计阶段

通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型,可以用E-R图表示。

3.逻辑结构设计阶段

将概念结构转换为某个DBMS所支持的数据模型(例如关系模型),并对其进行优化。

4.数据库物理设计阶段

为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。

5.数据库实施阶段

运用DBMS提供的数据语言(例如SQL)及其宿主语言(例如C),根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。

6.数据库运行和维护阶段

数据库应用系统经过试运行后即可投入正式运行。在数据库系统运行过程中必须不断地对其进行评价、调整与修改。

数据库概念设计的方法是什么

数据库概念构设计的任务是在需求分析阶段产生的需求说明书的基础上,按照特定的方法把它们抽象为一个不依赖于任何具体机器的数据模型,即概念模型。

概念模型使设计者的注意力能够从复杂的实现细节中解脱出来,而只集中在最重要的信息的组织结构和处理模式上。

数据库的规范化设计方法~

第一范式(1NF):数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。

例如,如下的数据库表是符合第一范式的:

字段1字段2字段3字段4

而这样的数据库表是不符合第一范式的:

字段1字段2字段3字段4

字段3.1字段3.2

很显然,在当前的任何关系数据库管理系统(DBMS)中,傻瓜也不可能做出不符合第一范式的数据库,因为这些DBMS不允许你把数据库表的一列再分成二列或多列。因此,你想在现有的DBMS中设计出不符合第一范式的数据库都是不可能的。

第二范式(2NF):数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖(部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况),也即所有非关键字段都完全依赖于任意一组候选关键字。

假定选课关系表为SelectCourse(学号,姓名,年龄,课程名称,成绩,学分),关键字为组合关键字(学号,课程名称),因为存在如下决定关系:

(学号,课程名称)→(姓名,年龄,成绩,学分)

这个数据库表不满足第二范式,因为存在如下决定关系:

(课程名称)→(学分)

(学号)→(姓名,年龄)

即存在组合关键字中的字段决定非关键字的情况。

由于不符合2NF,这个选课关系表会存在如下问题:

(1)数据冗余:

同一门课程由n个学生选修,"学分"就重复n-1次;同一个学生选修了m门课程,姓名和年龄就重复了m-1次。

(2)更新异常:

若调整了某门课程的学分,数据表中所有行的"学分"值都要更新,否则会出现同一门课程学分不同的情况。

(3)插入异常:

假设要开设一门新的课程,暂时还没有人选修。这样,由于还没有"学号"关键字,课程名称和学分也无法记录入数据库。

(4)删除异常:

假设一批学生已经完成课程的选修,这些选修记录就应该从数据库表中删除。但是,与此同时,课程名称和学分信息也被删除了。很显然,这也会导致插入异常。

把选课关系表SelectCourse改为如下三个表:

学生:Student(学号,姓名,年龄);

课程:Course(课程名称,学分);

选课关系:SelectCourse(学号,课程名称,成绩)。

这样的数据库表是符合第二范式的,消除了数据冗余、更新异常、插入异常和删除异常。

另外,所有单关键字的数据库表都符合第二范式,因为不可能存在组合关键字。

第三范式(3NF):在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三范式。所谓传递函数依赖,指的是如果存在"A→ B→ C"的决定关系,则C传递函数依赖于A。因此,满足第三范式的数据库表应该不存在如下依赖关系:

关键字段→非关键字段x→非关键字段y

假定学生关系表为Student(学号,姓名,年龄,所在学院,学院地点,学院电话),关键字为单一关键字"学号",因为存在如下决定关系:

(学号)→(姓名,年龄,所在学院,学院地点,学院电话)

这个数据库是符合2NF的,但是不符合3NF,因为存在如下决定关系:

(学号)→(所在学院)→(学院地点,学院电话)

即存在非关键字段"学院地点"、"学院电话"对关键字段"学号"的传递函数依赖。

它也会存在数据冗余、更新异常、插入异常和删除异常的情况,读者可自行分析得知。

把学生关系表分为如下两个表:

学生:(学号,姓名,年龄,所在学院);

学院:(学院,地点,电话)。

这样的数据库表是符合第三范式的,消除了数据冗余、更新异常、插入异常和删除异常。

鲍依斯-科得范式(BCNF):在第三范式的基础上,数据库表中如果不存在任何字段对任一候选关键字段的传递函数依赖则符合第三范式。

假设仓库管理关系表为StorehouseManage(仓库ID,存储物品ID,管理员ID,数量),且有一个管理员只在一个仓库工作;一个仓库可以存储多种物品。这个数据库表中存在如下决定关系:

(仓库ID,存储物品ID)→(管理员ID,数量)

(管理员ID,存储物品ID)→(仓库ID,数量)

所以,(仓库ID,存储物品ID)和(管理员ID,存储物品ID)都是StorehouseManage的候选关键字,表中的唯一非关键字段为数量,它是符合第三范式的。但是,由于存在如下决定关系:

(仓库ID)→(管理员ID)

(管理员ID)→(仓库ID)

即存在关键字段决定关键字段的情况,所以其不符合BCNF范式。它会出现如下异常情况:

(1)删除异常:

当仓库被清空后,所有"存储物品ID"和"数量"信息被删除的同时,"仓库ID"和"管理员ID"信息也被删除了。

(2)插入异常:

当仓库没有存储任何物品时,无法给仓库分配管理员。

(3)更新异常:

如果仓库换了管理员,则表中所有行的管理员ID都要修改。

把仓库管理关系表分解为二个关系表:

仓库管理:StorehouseManage(仓库ID,管理员ID);

仓库:Storehouse(仓库ID,存储物品ID,数量)。

这样的数据库表是符合BCNF范式的,消除了删除异常、插入异常和更新异常。

范式应用

我们来逐步搞定一个论坛的数据库,有如下信息:

(1)用户:用户名,email,主页,电话,联系地址

(2)帖子:发帖标题,发帖内容,回复标题,回复内容

第一次我们将数据库设计为仅仅存在表:

用户名 email主页电话联系地址发帖标题发帖内容回复标题回复内容

这个数据库表符合第一范式,但是没有任何一组候选关键字能决定数据库表的整行,唯一的关键字段用户名也不能完全决定整个元组。我们需要增加"发帖ID"、"回复ID"字段,即将表修改为:

用户名 email主页电话联系地址发帖ID发帖标题发帖内容回复ID回复标题回复内容

这样数据表中的关键字(用户名,发帖ID,回复ID)能决定整行:

(用户名,发帖ID,回复ID)→(email,主页,电话,联系地址,发帖标题,发帖内容,回复标题,回复内容)

好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!

数据库系统导论?请推荐几本数据库教材,谢谢了mysql数据库审计,如何实现MySQL数据库使用情况的审计