机房重构之数据库设计

一、画ER图

E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联 系的方法,用来描述现实世界的概念模型。

绘制方法:

⑴确定所有的实体集合

⑵选择实体集应包含的属性

⑶确定实体集之间的联系

⑷确定实体集的关键字,用下划线在属性上表明关键字的属性组合

⑸确定联系的类型,在用线将表示联系的菱形框联系到实体集时,在线旁注明是1或n(多)来表示联系的类型

二、将ER图转化成关系模式

1:1 :例如 CardInfo 和StudentInfo 是1:1的关系

CardInfo(CardNo,Balance,CardState)

StudentInfo(StuID,StuName,StuDept,StuSex,StuClass,,StuState)

转化后

StudentInfo(StuID,CardNo,StuName,StuDept,StuSex,StuClass,,StuState)

CardInfo(CardNo,StuNo,Balance,CardState)

即把主键加入到任一方均可

1:n : 例如UserInfo 和 CardInfo 是在注册方面是1:n的关系

UserInfo(UserID,Password,UserName,UserLevel)

CardInfo(CardNo,Balance,CardState)

转换后

CardInfo(CardNo,UserID,Balance,CardState)

即把主键放到n方

n:m :例如UserInfo 和 CardInfo 是在充值方面是n:m的关系(一个用户可以充值多   张卡,一张卡可以被多个用户充值)

CardInfo(CardNo,Balance,CardState)

UserInfo(UserID,Password,UserName,UserLevel)

转化后

CardInfo(CardNo,Balance,CardState)

UserInfo(UserID,Password,UserName,UserLevel)

Recharge(CardNo,UserID,Money,OpTime)

加入一个新的关系模式并把两个的主键分别加入到新的关系模式中

三、用三范式规范数据库

1、第一范式(原子性)

本系统中没有找到很好的例子,随便举一个例子说明问题

非第一范式关系


系名称


高级职称人数


教授


副教授


计算机系


6


10


信息管理系


3


5

第一范式关系


系名称


教授人数


副教授人数


计算机系


6


10


信息管理系


3


5

第一个表中“高级职称人数”不是原子属性,他还包括两个子值

2、第二范式(不存在局部依赖)

Recharge(CardNo,UserID,Money,OpTime)

在这个充值关系中,CardNo,UserID  决定 OpTime,所以他俩组合做主键,但是CardNo 自己就可以决定Money,因此存在局部依赖。

优化为

Recharge(CardNo,UserID,OpTime)

Balance(CardNo,Money)

即满足第二范式要求

3、第三范式(不含传递依赖)

没有在此系统中找到合适的例子,举其他例子说明此问题

Student(StuNo,StuDept,StuDeptTeacher)

stuNo 可以决定stuDept

StuDept可以决定 StuDeptTeacher

这样就存在传递依赖

优化后

Student(StuNo,StuDept)

Dept(StuDept,StuDeptTeacher)

4、三范式的关系

满足第三范式必须满足第一和第二范式

时间: 2024-10-21 18:47:06

机房重构之数据库设计的相关文章

机房收费系统数据库设计

之前,学习编写机房收费系统的文档时,曾写过 机房收费系统数据库概念设计模型--ER图 这篇文章,现在到了机房收费系统个人版重构阶段,需要再次进行数据库的设计.可以说,之前的数据库的概念设计给我现在的设计奠定了一定的基础,但是仍然发现自己的设计中有许多不合理并且需要改进的地方. 在这次的数据库设计当中,学习了一些数据库的命名规范,重温了经典的三范式(属性原子化,避免局部依赖,避免传递依赖).但是发现,在需求面前,一些分属两张表的字段,为了方便,还是得放到一张表中,不得不破坏三范式. 现在将自己设计

VB.Net版机房收费系统 ---数据库设计

数据库设计是根据用户需求设计数据库结构的过程,具体来说,数据库设计是对于给定的应用环境,在厝数据库理论的指导下,构造最优的数据库模式,在数据库管理系统上建立数据库及其应用系统,使之能有效地存储数据,满足用户的各种需求的过程.到底数据库该如何设计,古往今来,每个人都有每个人的想法,所以数据库设计并没有优劣之分,好坏之别,合适的数据库设计就是最好的. 走过自考--<数据库系统原理>,看过耿建玲老师的视频,对数据库设计有了一点了解,VB版的机房收费系统,直接用原来的脚本生成的数据库,当时对数据库设计

机房收费系统——数据库设计说明书

GB8567--88 数据库设计说明书 1      引言 优质数据库在处理大数据的程序或系统中是有非常重要的作用的,所以对于数据库的设计有很多的要求和规定.首先数据库要有很好的可维护性.灵活性,并且数据库的算法逻辑性也要有一定的优化性,这样可以对资源进行有效利用,并且处理数据的时间也会缩短. 1.1   编写目的 由于上机的人越来越多,产生的上机数据越来越多,原始的保存方式已经不能满足数据存储的需要,所以使用数据库对各种记录进行存储.并且数据库可以节省很多的资源,如人力.时间.空间等. 数据库

VB.NET版机房收费系统—数据库设计

之前第一遍机房收费的时候,用的数据库是别人的,认知也只能建立在别人的基础上,等自考中<数据库系统原理>这本书学完了之后,再去看以前的数据库,发现数据库真的还需要进一步的优化,下面是我设计数据库的一些见解,希望大家多提些意见. 数据库设计 E-R模型: 在观念模型设计阶段,一个系统都是建立在ER模型上的,设计好ER模型,很重要. 我设计的ER图: 系统中的实体:很简单,就是将系统中的名词都抽象出来,再具体了就是转换为数据库的逻辑设计时才要考虑的. 系统中的联系:在图中可以看得很清楚,这里我要重点

重构机房收费系统——数据库设计

曾记得,第一次编写机房收费系统的文档模板,整整有12个文档需要编写,仅仅花了两三天的时间就让师傅验收,完结项目,就这样囫囵吞枣的文档编写完成了. 要知道:欠下的账,终究是要还的.现在到了机房收费系统个人版重构阶段, (1)进行数据抽象,设计局部概念模型: (2)将局部概念模型综合成全局概念模型 (3)就可以按要求绘制机房收费系统数据库概念设计模型--ER关系图. 可以说,之前的数据库的概念设计给我奠定了一丢丢的设计基础,外加<数据库系统原理>中的三范式定理,本着求知好学.虚心请教的理念,于是乎

#【数据库】机房收费系统数据库设计

前言 前一段时间要参加自考,要考<数据库原理>,在其中也更加了解了好多数据库的问题.比如,如何创建一个好的数据库,怎么创建数据库. 图一 数据库创建框架 现在开始机房的重构,以前用的是师哥师姐设计的数据库,现在发现自己也可以设计出来了,所以,按这步骤来自己设计一个机房收费系统的数据库. 一.规划 由于机房收费系统是第二遍做的,所以在总体规划阶段很容易看出系统在技术.经济.效益.法律是可行的:目标就是要更好的搭配应用程序合理运行. 二.需求分析 这一阶段是计算机人员(系统分析员)和用户双方共同收

数据库设计——三范式概念+实战

在利用三范式设计数据库的时候,以前总以为是先画完ER图,然后导出关系模式,最后用三范式去检验数据库设计的是否合理,but not!我们在一开始画ER图的时候,就应当和三范式联系起来,将错误消灭在源头.为了能最早的检验出错误,我们就要对ER图转换成关系模式的算法和三范式是如何消除冗余,避免冲突有深刻的了解,才能知道如何最早发现错误. 本文主要以机房收费系统数据库设计中的一些东西为例,结合三范式概念,简述下三范式. 一,1NF 定义: 如果关系模式R的每个关系r的属性值都是不可分的原子值,那么称R是

机房收费系统重构——数据库设计

终于,走到了机房收费系统重构的阶段-- 之前的一遍机房收费系统的数据库是用的给的那个,只是把每个表都看了一下,当时也没有学习数据库原理那本书,然后就没有深究-- 现在不一样了,我们进行机房收费系统重构,况且学习了数据库原理这本书,对数据库有了更深的认识.所以对于数据库要好好的设计,按照步骤走-- 数据库技术是信息资源管理最有效地手段.数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,有效存储数据,满足用户信息要求和处理要求. 数据库的设计的步骤和各阶段的主要内容

机房重构—数据库设计

数据库设计--概念设计阶段 这个阶段主要是根据需求画出ER图,如下图所示,是我根据机房收费系统的需求画出的ER图,图中有6个实体,分别为:教师.学生.卡.基础数据.账单.电脑,它们之间有一对多的关系也有多对多的关系,其中教师还有很多不同的角色,这里没做细分,不过以后我们会做安全机制方面的设计就要仔细对待了.根据转换原则,但我们把ER图转换为表时多对多的关系就会抽出一张表,这样在逻辑设计阶段我们就可以得到相应的10张表(电脑只有一个属性,故省略). 数据库设计--逻辑设计阶段 下图是我根据ER图得