登陆注册
8724600000018

第18章 数据分析、设计及实现(1)

5.1数据库分析与设计

5.1.1数据库分析与设计概述

数据库设计是指对于给定的一个应用环境(DBMS、系统软件、操作系统和硬件环境),构造最优的数据库模式,使之能够有效地存储和索取数据,满足各种用户的应用需求。数据库设计存在不同的方法,包括传统的设计方法、Barker方法、改进的设计方法等。

不同的设计方法有不同的侧重点,不过总体来说一定包括以下3个基本阶段。

1.需求信息的收集

此阶段主要是对企业现有业务的了解,搜集业务数据,构建现有业务模型。

2.数据建模

通过可视化方式分析业务数据,将业务模型转换为物理模型。

3.数据库设计和规范化

选择合理的范式,对数据库进行规范化处理。

5.1.2数据库设计的基本阶段

仿照软件生存期,把数据库应用系统从开始规划、设计、实现、维护到最后被新的系统所代替称为一个生命周期,包括以下几个阶段。

1)规划阶段

对于数据库系统,特别是大型数据库系统,规划阶段是十分必要的。规划的好坏将直接影响到整个系统的成功与否。规划阶段需要完成以下内容:

①定义任务描述:对于要设计的数据库整体目标的概括描述,包括数据库的目标、数据库的使用者、客户如何访问数据库等。

②制订工作计划:包括设计小组的建立、基本的标准和命名规范、所使用的开发环境等。

③制订工作进度和各阶段成果:定义不同的设计阶段完成的目标和时间期限。

2)需求描述和分析阶段

这个阶段是计算机人员和用户双方共同收集数据库所需要的信息内容和用户对处理的要求,并以相应的文档形式确定下来,作为以后开发和验证系统的依据。

3)概念设计阶段

概念设计的目标是产生反映企业组织信息需求的数据库概念结构,即概念模式。概念模式是从现实世界中抽象出来的实体类型及实体间联系,能够充分反映现实世界中实体之间的联系,又是各种基本数据类型的共同基础,易于向关系模式转换。

(1)ER图的概念和组成

实体关系图(Entity Relationship Model,ER)用来描述概念模式,是直观表示概念模式的有力工具。在ER图中有下面4个基本部分:

①矩形框,表示实体类型,实体指的是客观存在且可以互相区别的东西。它可以是具体的对象,如一辆汽车,也可以是抽象的事件,如一次购物等。

②菱形框,表示联系类型,即实体之间的联系。

③椭圆形框,表示实体类型和联系类型的属性。

④直线,联系类型与其涉及的实体类型之间以直线连接,用来表示它们之间的联系,并在直线端部标注联系的种类(1∶1、1∶N或M∶N)。

对于不同的设计工具,ER图的图形表示会有所不同,不过ER图的基本元素是相同的,即都包括实体、实体联系和属性。

(2)ER图设计和实现

设计ER图的步骤如下:

①确定实体类型。

②确定联系类型。

③把实体类型和联系类型组成ER图。

④确定实体类型和联系类型的属性,加入实体和联系的具体属性。

⑤把所有实体和联系类型连接在一起,组成一个完整的ER图。

4)逻辑设计阶段

逻辑设计的任务是把概念设计阶段得到的全局ER模式转换成关系模式。

(1)ER图到关系模式的转换

ER图到关系模式的转换包括两种情况,一种是实体的转换,一种是关系的转换,下面具体说明。

①每一个实体类型转换为一个关系表,实体的属性即为关系的属性。

例如,部门实体转换为关系表。

部门(部门名称,部门地址,电话)

②实体间是1∶1的关系,将一个表的主键和联系类型中的属性放在另一个表中。其中主键作为另一个表的外键。

例如,一个部门有一个经理,部门和经理是1对1的关系,即一个部门只有一个经理。

将经理编号和聘用时间放在部门表里面:

部门(部门编号,部门名称,部门地址,电话,经理编号,聘用时间)

经理(经理编号,姓名,性别,出生日期)

③实体间是1∶N的关系,将关系是1的表中的主键作为外键放在N端的表中。联系类型的属性也放在N端的表中。

例如部门和职工是1∶N关系:

部门(部门编号,部门名称,部门地址,电话)

职工(职工编号,姓名,性别,出生日期,部门编号,聘用时间)

④实体间是M∶N的关系,将联系类型也转换为关系表,其属性为两实体表的键加上联系类型的属性,键为两端实体键的组合。

例如,一个职工可以承担多个项目,一个项目需要多个职工,他们之间是多对多的关系。

项目(项目编号,项目名称)

施工(项目编号,职工编号,开始时间)

职工(职工编号,姓名,性别,出生日期)

(2)规范化

把ER图转换为关系模式(表)后,要对关系模式进行规范化。规范化的目的是减少乃至消除关系模式中存在的各种异常,改善完整性、一致性和存储效率。具体地讲,规范化设计的过程就是按不同的范式,将一个二维表不断分解成多个二维表并建立表之间的关联,最终达到一个表只描述一个实体或者实体间的一种联系的目标。目前遵循的主要范式包括1NF、2NF、3NF、BCNF、4NF和5NF等几种,一般以规范到3NF为准。

①第一范式(1NF)的应用

如果关系模式r的属性值都是不可分的原子值,那么称r是第一范式(first normal form,1NF)的模式。

1NF的具体要求是:

多值字段(multivalued field)必须被移动到另一个表里;

每个字段必须是原子型的(atomic),或者说要尽量小;

每个字段都必须有一个关键字(key);

重复的值必须被移动到另一个表里。

下面举例说明1NF的具体实施。现有一张存储书籍信息的表Books,包括以下字段:

{Title,Author,ISBN,Price,Publisher,Category}

应用1NF的第一步是确保表没有包含多值字段,所谓多值字段,是指字段能够保存一个以上可能的条目。最初的表有两个地方会违反这一规则:Author(作者)和Category(分类)。许多书都有多个作者,所以Author字段就会出现问题。类似的,一本书可以被归入多个类别。例如《金银岛(Treasure Island)》可以被归为儿童读物、冒险类、经典类及其他类等。

更正这个问题的方法是把出现多值的字段移到另一个表里,新创建两个新表:Authors和Categories,如下所示:

Books:{Title,ISBN,Price,Publisher}

Authors:{Author}

Categories:{Category}

应用1NF的第二步是要求每个字段都必须是原子型的,这就是表示每个字段必须保存可能会有的最小数据元素。这条规则有助于搜索和排序。Author字段就存在问题了,因为一个名字可以包含名和姓,所以将Author分解为FirstName和LastName两个字段。

Authors:{FirstName,LastName}

应用1NF的第三步是要求每个表都必须有一个关键字段(key)。关系模型不允许表包含有重复记录。所以,一个表中的关键字的值必须是唯一的。大多数关系数据库管理系统(RDBMS)都会提供一类计数或者自动编号的数据类型,它会为每条记录分配一个连续的数值,通常使用这样的字段作为表的关键字。当然了,也可以选择表中有意义的字段和字段组合作为关键字,这样便于用有意义的方式查询到记录。以下用自动编号的字段作为关键字:

Books:{BookID,Title,ISBN,Price,Publisher}

Authors:{AuthorID,FirstName,LastName}

Categories:{CategoryID,Category}

应用1NF的第四步是删除重复值。在没有录入真实数据之前,要确定是否满足这一要求是有难度的。在遇到重复输入字段值的时候,就要考虑把这个字段移动到一个新的表里。

例如,Books表中的Publisher(出版商)字段,会一次又一次地输入相同的出版商,为了满足1NF,必须把这个字段移动到另一个表中:

Books:{BookID,Title,ISBN,Price,Publisher}

Authors:{AuthorID,FirstName,LastName}

Categories:{CategoryID,Category}

Publishers:{PublisherID,Publisher}

②第二范式(2NF)的应用

如果关系模式R(U,F)中的所有非主属性都完全依赖于任意一个候选关键字,则称关系R是属于第二范式的。第二范式实际上是消除非主属性对于主关键字的部分依赖。

2NF有以下要求:

为重复应用到多条记录的字段建立独立的表;

通过一个foreignkey来关联这些表。

下面举例来说明2NF的实施。

例:选课关系SCI(SNO,CNO,GRADE,CREDIT),其中SNO为学号,CNO为课程号,GRADEGE为成绩,CREDIT为学分。关键字为组合关键字(SNO,CNO)。

在应用中使用以上关系模式有以下问题。

数据冗余。假设同一门课由40个学生选修,学分就重复40次。

更新异常。若调整了某课程的学分,相应的元组CREDIT值都要更新,有可能会出现同一门课学分不同。

插入异常。如计划开新课,由于没人选修,没有学号关键字,只能等有人选修才能把课程和学分存入。

删除异常。若学生已经结业,则从当前数据库删除选修记录;若某些门课程新生尚未选修,则此门课程及学分记录无法保存。

原因:非关键字属性CREDIT仅函数依赖于CNO,也就是CREDIT部分依赖组合关键字(SNO,CNO)而不是完全依赖。

解决方法:分成两个关系模式SC1(SNO,CNO,GRADE),C2(CNO,CREDIT)。

新关系包括两个关系模式,它们之间通过SC1中的外关键字CNO相联系,需要时再进行自然连接,恢复了原来的关系。

③第三范式(3NF)的应用

如果关系模式R(U,F)中的所有非主属性对任何候选关键字都不存在传递信赖,则称关系R是属于第三范式的。

例:S1(SNO,SNAME,DNO,DNAME,LOCATION)各属性分别代表学号,姓名,所在系,系名称,系地址。

关键字SNO决定各个属性。由于是单个关键字,没有部分依赖的问题,肯定是2NF。但这关系肯定有大量的冗余,有关学生所在的几个属性DNO,DNAME,LOCATION将重复存储、插入、删除和修改时也将产生类似以上异常的情况。

原因:关系中存在传递依赖造成的。即SNO—>;DNO。而DNO—>;SNO却不存在,DNO—>;LOCATION,因此关键字SNO对LOCATION的函数决定是通过传递依赖SNO—>;LOCATION实现的。也就是说,SNO不直接决定非主属性LOCATION。

解决目的:每个关系模式中不能留有传递依赖。

解决方法:分为两个关系S(SNO,SNAME,DNO)和D(DNO,DNAME,LOCATION)。

(3)非规范化

非规范化(也称为反规范化)设计的基本思想是,现实世界并不总是依从于某一完美的数学化的关系模式。强制性地对事物进行规范化设计,形式上显得简单化,内容上趋于复杂化,更重要的是导致数据库运行效率减低。非规范化要求适当地降低甚至抛弃关系模式的范式,不再要求一个表只描述一个实体或者实体间的一种联系。其主要目的在于提高数据库的运行效率。非规范化处理的主要技术包括增加冗余或派生列,对表进行合并、分割或增加重复表。

一般认为,在下列情况下可以考虑进行非规范化处理。

①大量频繁的查询过程所涉及的表都需要进行连接。

②主要的应用程序在执行时要将表连接起来进行查询。

③对数据的计算需要临时表或进行复杂的查询。

非规范化是用适当的冗余信息来减少系统开销,用空间代价来换取时间代价。

例如:一个订单信息表Order Detail里面记录了投递员信息、收款员信息、物品信息、价格策略、客户信息……这些信息分别在投递员信息表、收款员信息表、物品信息表、价格策略表、客户信息表……中存放。如果按照规范化的要求,Order Detail查询时就必须要与这么多个表进行连接或者嵌套查询。如果Order Detail表中的数据量是在百万级的,那么一次查询所需要的时间可能会有好几个小时。事实上,只要在设计时保证数据的逻辑有效性,很多信息都可以直接冗余在OrderDetail表中,这些冗余的数据能够极大地提高了查询效率,从而减少了CPU和I/O操作。

同类推荐
  • FlashCS动画制作基础

    FlashCS动画制作基础

    适合爱好flash动画制作的初、中级读者作为入门学习的参考书,还可以供从事网页制作与动画设计的人员参考,同时也可以作为初、中级电脑短训班的培训教材,对有一定经验的flashcs5使用者也有很高的参考价值。
  • 如何组装电脑

    如何组装电脑

    本书以问答的形式介绍了组装电脑的基本知识。内容包括:电脑硬件的部件组成、CPU的发展历程、CPU主频、内存的组成、内存的主要性能参数等。
  • 多媒体技术

    多媒体技术

    多媒体技术多媒体技术多媒体技术多媒体技术多媒体技术多媒体技术多媒体技术多媒体技术多媒体技术多媒体技术多媒体技术
  • 中国网络传播研究2009(第三辑)

    中国网络传播研究2009(第三辑)

    本文以传统社区研究的“场域论”为基础,探讨网络传播中场域性互动对社会舆论的影响。文章首先从传统社区传播的场域性特征出发,探讨网络传播的社区性和场域性。然后分别分析了传统门户、BBS论坛和私人博客等三种主流的网络传播的场域性互动、意见表达和舆论形成的特点。最后结合“张殊凡事件”、“王石捐款”事件以及“黑砖窑”事件,探讨网络传播中的场域性互动对社会舆论从虚拟到现实的影响。
  • SEO智慧

    SEO智慧

    本书不仅是系统讲述搜索引擎优化(SEO)的原理、技法、思维、经验的畅销作品,而且论述了市场学、营销学、心理学怎样与搜索营销形成综合战略的经典著作。从说明网站的搭建该怎样围绕搜索引擎优化开始,到网站优化的具体策划和技术细节,再到搜索营销的持续开展,说明打造投资回报率高的网站应该怎样具备必需的搜索营销思维和战略做法,是作者12年网站营销经验,特别是搜索引擎优化(SEO)实现营销方面的技术和实践总结。
热门推荐
  • 我的江湖为啥到处都有你

    我的江湖为啥到处都有你

    天下太平,百姓和乐,王朝繁荣。天下出现了门派,门派造就了江湖,江湖制造了魔人,邪教,邪教又……打住,这些都不是重点,听说皇家那两个熊孩子又跑去闹街了?还被一个箭宗女子追了三条街?听说战将军要回京,那个少丞要返京了,京城五大美男会面终于要举行了!听说魔人和邪教又不老实了,王族中竟然有他们的卧底?少年们会怎样应对?来看看这些少年们的逗比故事吧!
  • 王牌特工

    王牌特工

    他,一个王牌特工杀手,一身傲骨,一次特殊的任务却让他进入了黑道,这里美女如云,金钱如土。这里是真男人的天下,这里是拳头与智慧的天下,他是否可以建立自己的一片天地呢?
  • 仅存的王

    仅存的王

    原先只是一名默默无闻的大学生,一朝穿越至武斗大陆,原先手无缚鸡之力,穿越后拥有了传奇实力,在这片大陆中成为–传奇之王
  • 柯南之吃软饭的小白脸助手

    柯南之吃软饭的小白脸助手

    这大概是一个致力于成为优秀律师的人却莫名其妙成为了小白脸的故事。(ps:女主已定妃英理。)日常狗粮文,涉及案件的章节很少。对女主接受不能的话,慎入,感谢。
  • 修炼你的独到之处

    修炼你的独到之处

    本书针对会计类大学生的学习、生活、娱乐及其思想动态,回答了他们最为关心、关注、迷茫和困惑的若干热点问题。
  • TFBOYS之梦想之战

    TFBOYS之梦想之战

    每一个人都有一个梦想,有些人放弃,有些人坚持,有些人无所谓,儿时的他们见了面,就彼此忘不了对方,都有一个相同的梦想,他们一起努力,可因为家庭的仇恨,使他们不能一直在对方身边,但这并阻挡不了他们的友情,但好景不长,男孩的爸爸逼迫他和自己搬家,女孩很难过,五年后,女孩和自己的8个伙伴,一起去了重庆,并加入了TF家族,终于她见到了男孩,他们最终能在一起吗?
  • TFBOYS之让我等十年的少年

    TFBOYS之让我等十年的少年

    三个霸气、呆萌、高冷的豪们富家千金,和三个众人皆知、帅气的阳光少年!他(她)们之间会擦出怎样的火花?,尽情期待
  • 太极情缘

    太极情缘

    她是左右分不清的太极小白痴,他是孤傲俊秀的太极小王子,他们明明姓氏不同,却是兄妹,而且是对剑拔弩张的坏脾气兄妹。太极小白痴被逼加入了太极拳社,还由太极小王子亲自指导,这下可惨了……等等等等,他手上拿的是什么?戒尺?他要做什么?这算什么?草菅人命?体罚?还是家暴?不要啦,她可不可以不让这头喷火龙教啊——
  • 万剑

    万剑

    万剑之下,万物服臣。剑者为王,与天衡之。人为灵物,与天不和。人与天逆,且与天不谋,人生而逆者,以我为我,有心且无意。不为生,不畏死,只为己。心无天,则自为天,与天为敌,逆天则改命,不逆则死。
  • 恶魔小姐的天使微笑

    恶魔小姐的天使微笑

    蓝可欣,蓝氏集团董事长独女,自小就倍受宠爱。十岁那年,因为某些原因逃出了蓝家,独自一人在外漂泊。十四岁那年,她佷幸运的遇到了上官锦泽,他给了她新的身份,两人合手建立了杀手组织暗影。年之内就将暗影发展为世界有名的杀手组织。两年的朝夕相处,她对上官锦泽只有感激,把他当作亲生哥哥一样,虽然答应了十八岁那年会嫁给他,但对他没有一丝爱意。传言,暗影帮主上官无心,有着双重性格:愤怒时,她是来自地狱的恶魔,残暴、嗜血、心狠手辣。微笑时,她是不染尘世的天使,温柔、美丽、善解人意。换了新的身份,作为上官无心的她。十六岁那年,她找到了真爱,她不想伤害上官锦泽,更不想辜负赵毅,两难之间她将会怎样选择?