搜档网
当前位置:搜档网 › 关系数据库设计

关系数据库设计

关系数据库设计
关系数据库设计

目录

一 Codd的RDBMS12法则——RDBMS的起源

二关系型数据库设计阶段

三设计原则

四命名规则

数据库设计,一个软件项目成功的基石。很多从业人员都认为,数据库设计其实不那么重要。现实中的情景也相当雷同,开发人员的数量是数据库设计人员的数倍。多数人使用数据库中的一部分,所以也会把数据库设计想的如此简单。其实不然,数据库设计也是门学问。

从笔者的经历看来,笔者更赞成在项目早期由开发者进行数据库设计(后期调优需要DBA)。根据笔者的项目经验,一个精通OOP和ORM的开发者,设计的数据库往往更为合理,更能适应需求的变化,如果追其原因,笔者个人猜测是因为数据库的规范化,与OO的部分思想雷同(如内聚)。而DBA,设计的数据库的优势是能将DBMS的能力发挥到极致,能够使用SQL和DBMS实现很多程序实现的逻辑,与开发者相比,DBA优化过的数据库更为高效和稳定。如标题所示,本文旨在分享一名开发者的数据库设计经验,并不涉及复杂的SQL语句或DBMS使用,因此也不会局限到某种DBMS产品上。真切地希望这篇文章对开发者能有所帮助,也希望读者能帮助笔者查漏补缺。

一?Codd的RDBMS12法则——RDBMS的起源

Edgar Frank Codd(埃德加·弗兰克·科德)被誉为“关系数据库之父”,并因为在数据库管理系统的理论和实践方面的杰出贡献于1981年获图灵奖。在1985年,Codd 博士发布了12条规则,这些规则简明的定义出一个关系型数据库的理念,它们被作为所有关系数据库系统的设计指导性方针。

1.信息法则?关系数据库中的所有信息都用唯一的一种方式表示——表中的值。

2.保证访问法则?依靠表名、主键值和列名的组合,保证能访问每个数据项。

3.空值的系统化处理?支持空值(NULL),以系统化的方式处理空值,空值不依赖于数据类型。

4.基于关系模型的动态联机目录?数据库的描述应该是自描述的,在逻辑级别上和普通数据采用同样

的表示方式,即数据库必须含有描述该数据库结构的系统表或者数据库描述信息应该包含在用

户可以访问的表中。

5.统一的数据子语言法则?一个关系数据库系统可以支持几种语言和多种终端使用方式,但必须至少

有一种语言,它的语句能够一某种定义良好的语法表示为字符串,并能全面地支持以下所有规

则:数据定义、视图定义、数据操作、约束、授权以及事务。(这种语言就是SQL)

6.视图更新法则?所有理论上可以更新的视图也可以由系统更新。

7.高级的插入、更新和删除操作?把一个基础关系或派生关系作为单个操作对象处理的能力不仅适应

于数据的检索,还适用于数据的插入、修改个删除,即在插入、修改和删除操作中数据行被视

作集合。

8.数据的物理独立性?不管数据库的数据在存储表示或访问方式上怎么变化,应用程序和终端活动都

保持着逻辑上的不变性。

9.数据的逻辑独立性?当对表做了理论上不会损害信息的改变时,应用程序和终端活动都会保持逻辑

上的不变性。

10.数据完整性的独立性?专用于某个关系型数据库的完整性约束必须可以用关系数据库子语言定

义,而且可以存储在数据目录中,而非程序中。

11.分布独立性?不管数据在物理是否分布式存储,或者任何时候改变分布策略,RDBMS的数据操纵

子语言必须能使应用程序和终端活动保持逻辑上的不变性。

12.非破坏性法则?如果一个关系数据库系统支持某种低级(一次处理单个记录)语言,那么这个低

级语言不能违反或绕过更高级语言(一次处理多个记录)规定的完整性法则或约束,即用户不

能以任何方式违反数据库的约束。

二?关系型数据库设计阶段

(一)规划阶段

规划阶段的主要工作是对数据库的必要性和可行性进行分析。确定是否需要使用数据库,使用哪种类型的数据库,使用哪个数据库产品。

(二)概念阶段

概念阶段的主要工作是收集并分析需求。识别需求,主要是识别数据实体和业务规则。对于一个系统来说,数据库的主要包括业务数据和非业务数据,而业务数据的定义,则依赖于在此阶段对用户需求的分析。需要尽量识别业务实体和业务规则,对系统的整体有初步的认识,并理解数据的流动过程。理论上,该阶段将参考或产出多种文档,比如“用例图”,“数据流图”以及其他一些项目文档。如果能够在该阶段产出这些成果,无疑将会对后期进行莫大的帮助。当然,很多文档已超出数据库设计者的考虑范围。而且,如果你并不精通该领域以及用户的业务,那么请放弃自己独立完成用户需求分析的想法。用户并不是技术专家,而当你自身不能扮演“业务顾问”的角色时,请你选择与项目组的相关人员合作,或者将其视为风险呈报给PM。再次强调,大多数情况,用户只是行业从业者,而非职业技术人员,我们仅仅从用户那里收集需求,而非依赖于用户的知识。

记录用户需求时,可以使用一些技巧,当然这部分内容有些可能会超出数据库设计人员的职责:

努力维护一系列包含了系统设计和规格说明信息的文档,如会议记录、访谈记录、关键用户期望、功能规格、技术规格、测试规格等。

频繁与干系人沟通并收集反馈。

标记出你自己添加的,不属于客户要求的,未决内容。

与所有关键干系人尽快确认项目范围,并力求冻结需求。

此外,必须严谨处理业务规则,并详细记录。在之后的阶段,将会根据这些业务规则进行设计。

当该阶段结束时,你应该能够回答以下问题:

需要哪些数据?

数据该被怎样使用?

哪些规则控制着数据的使用?

谁会使用何种数据?

客户想在核心功能界面或者报表上看到哪些内容?

数据现在在哪里?

数据是否与其他系统有交互、集成或同步?

主题数据有哪些?

核心数据价值几何,对可靠性的要求程度?

并且得到如下信息:

实体和关系

属性和域

可以在数据库中强制执行的业务规则

需要使用数据库的业务过程

(三)逻辑阶段

逻辑阶段的主要工作是绘制E-R图,或者说是建模。建模工具很多,有不同的图形表示方法和软件。这些工具和软件的使用并非关键,笔者也不建议读者花大量时间在建模方法的选择上。对于大多数应用来说,E-R图足以描述实体间的关系。建模关键是思想而不是工具,软件只是起到辅助作用,识别实体关系才是本阶段的重点。

除了实体关系,我们还应该考虑属性的域(值类型、范围、约束)

(四)实现阶段

实现阶段主要针对选择的RDBMS定义E-R图对应的表,考虑属性类型和范围以及约束。

(五)物理阶段

物理阶段是一个验证并调优的阶段,是在实际物理设备上部署数据库,并进行测试和调优。

三设计原则

(一)降低对数据库功能的依赖

功能应该由程序实现,而非DB实现。原因在于,如果功能由DB实现时,一旦更换的DBMS不如之前的系统强大,不能实现某些功能,这时我们将不得不去修改代码。所以,为了杜绝此类情况的发生,功能应该有程序实现,数据库仅仅负责数据的存储,以达到最低的耦合。

(二)定义实体关系的原则

当定义一个实体与其他实体之间的关系时,需要考量如下:

牵涉到的实体?识别出关系所涉及的所有实体。

所有权?考虑一个实体“拥有”另一个实体的情况。

基数?考量一个实体的实例和另一个实体实例关联的数量。

关系与表数量

描述1:1关系最少需要1张表。

描述1:n关系最少需要2张表。

描述n:n关系最少需要3张表。

(三)列意味着唯一的值

如果表示坐标(0,0),应该使用两列表示,而不是将“0,0”放在1个列中。

(四)列的顺序

列的顺序对于表来说无关紧要,但是从习惯上来说,采用“主键+外键+实体数据+非实体数据”这样的顺序对列进行排序显然能得到比较好的可读性。

(五)定义主键和外键

数据表必须定义主键和外键(如果有外键)。定义主键和外键不仅是RDBMS的要求,同时也是开发的要求。几乎所有的代码生成器都需要这些信息来生成常用方法的代码(包括SQL文和引用),所以,定义主键和外键在开发阶段是必须的。之所以说在开发阶段是必须的是因为,有不少团队出于性能考虑会在进行大量测试后,在保证参照完整性不会出现大的缺陷后,会删除掉DB的所有外键,以达到最优性能。笔者认为,在性能没有出现问题时应该保留外键,而即便性能真的出现问题,也应该对SQL文进行优化,而非放弃外键约束。

(六)选择键

1 人工键与自然键

人工健——实体的非自然属性,根据需要由人强加的,如GUID,其对实体毫无意义;自然健——实体的自然属性,如身份证编号。

人工键的好处:

键值永远不变

永远是单列存储

人工键的缺点:

因为人工键是没有实际意义的唯一值,所以不能通过人工键来避免重复行。

笔者建议全部使用人工键。原因如下:

在设计阶段我们无法预测到代码真正需要的值,所以干脆放弃猜测键,而使用人工键。

人工键复杂处理实体关系,而不负责任何属性描述,这样的设计使得实体关系与实体内容得到高度解耦,这样做的设计思路更加清晰。

笔者的另一个建议是——每张表都需要有一个对用户而言有意义的自然键,在特殊情况下也许找不到这样一个项,此时可以使用复合键。这个键我在程序中并不会使用其作为唯一标识,但是却可以在对数据库直接进行查询时使用。

使用人工键的另一根弊端,主要源自对查询性能的考量,因此选择人工键的形式(列的类型)很重要:

自增值类型?由于类型轻巧查询效率更好,但取值有限。

GUID?查询效率不如值类型,但是取值无限,且对开发人员更加亲切。

2 智能健与非智能键

智能键——键值包含额外信息,其根据某种约定好的编码规范进行编码,从键值本身可以获取某些信息;非智能键,单纯的无意义键值,如自增的数字或GUID。

智能键是一把双刃剑,开发人员偏爱这种包含信息的键值,程序盼望着其中潜在的数据;数据库管理员或者设计者则讨厌这种智能键,原因也是很显然的,智能键对数据库是潜在的风险。前面提到,数据库设计的原则之一是不要把具有独立意义的值的组合实现到一个单一的列中,应该使用多个独立的列。数据库设计者,更希望开发人员通过拼接多个列来得到智能键,即以复合主键的形式给开发人员使用,而不是

将一个列的值分解后使用。开发人员应该接受这种数据库设计,但是很多开发者却想不明白两者的优略。笔者认为,使用单一列实现智能键存在这样一个风险,就是我们可能在设计阶段无法预期到编码规则可能会在后期发生变化。比如,构成智能键的局部键的值用完而引起规则变化或者长度变化,这种编码规则的变化对于程序的有效性验证与智能键解析是破坏性的,这是系统运维人员最不希望看到的。所以笔者建议如果需要智能键,请在业务逻辑层封装(使用只读属性),不要再持久化层实现,以避免上述问题。

(七)是否允许NULL

关于NULL我们需要了解它的几个特性:

任何值和NULL拼接后都为NULL。

所有与NULL进行的数学操作都返回NULL。

引入NULL后,逻辑不易处理。

那么我们是否应该允许列为空呢?笔者认为这个问题的答案受到我们的开发语言的影响。以C#为例,因为引入了可空类型来处理数据库值类型为NULL的情形,所以是否允许为空对开发者来说意义并不大。但有一点必须注意,就是验证非空必须要在程序集进行处理,而不该依赖于DBMS的非空约束,必须确保完整数据(所有必须的属性均被赋值)到达DB(所谓的“安全区”,我们必须定义在多层系统中那些区域得到的数据是安全而纯净的)。

(八)属性切割

一种错误想法是,属性与列是1:1的关系。对于开发者,我们公开属性而非字段。举个例子来说,对于实体“员工”有“名字”这一属性,“名字”可以再被分解为“姓”和“名”,对于开发人员来说,显然第二种数据结构更受青睐(“姓”和“名”作为两个字段)。所以,在设计时我们也应该根据需要考虑是否切割属性。

(九)规范化——范式

当笔者还在大学时,范式是学习关系型数据库时最头疼的问题。我想也许会有读者仍然不理解范式的价值,简单来说——范式将帮助我们来保证数据的有效性和完整性。规范化的目的如下:

消灭重复数据。

避免编写不必要的,用来使重复数据同步的代码。

保持表的瘦身,以及减从一张表中读取数据时需要进行的读操作数量。

最大化聚集索引的使用,从而可以进行更优化的数据访问和联结。

减少每张表使用的索引数量,因为维护索引的成本很高。

规范化旨在——挑出复杂的实体,从中抽取出简单的实体。这个过程一直持续下去,直到数据库中每个表都只代表一件事物,并且表中每个描述的都是这件事物为止。

1 规范化实体和属性(去除冗余)

1NF:每个属性都只应表示一个单一的值,而非多个值。

需要考虑几点:

属性是原子性的?需要考虑熟悉是否分解的足够彻底,使得每个属性都表示一个单一的值。(和“(三)列意味着唯一的值”描述的原则相同。)分解原则为——当你需要分开处理每个部分时才分解值,并且分解到足够用就行。(即使当前不需要彻底分解属性,也应该考虑未来可能的需求变更。)

属性的所有实例必须包含相同数量的值?实体有固定数量的属性(表有固定数量的列)。设计实体时,要让每个属性只有固定数量的值与其相关联。

实体中出现的所有实体类型都必须不同

当前设计不符合1NF的“臭味”:

包含分隔符类字符的字符串数据。

名字尾端有数字的属性。

没有定义键或键定义不好的表。

2 属性间的关系(去除冗余)

2NF-实体必须符合1NF,每个属性描述的东西都必须针对整个键(可以理解为oop中类型属性的内聚性)。

当前设计不符合2NF的“臭味”:

重复的键属性名字前缀(设计之外的数据冗余)?表明这些值可能描述了某些额外的实体。

有重复的数据组(设计之外的数据冗余)?这标志着属性间有函数依赖型。

没有外键的复合主键?这标志着键中的键值可能标识了多种事物,而不是一种事物。

3NF-实体必须符合2NF,非键属性不能描述其他非键属性。(与2NF不同,3NF处理的是非键属性和非键属性之间的关系,而不是和键属性之间的关系。

当前设计不符合3NF的“臭味”:

多个属性有同样的前缀。

重复的数据组。

汇总的数据,所引用的数据在一个完全不同的实体中。(有些人倾向于使用视图,我更倾向于使用对象集合,即由程序来完成。)

BCNF-实体满足第一范式,所有属性完全依赖于某个键,如果所有的判定都是一个键,则实体满足BCNF。(BCNF简单地扩展了以前的范式,它说的是:一个实体可能有若干个键,所有属性都必须依赖于这些键中的一个,也可以理解为“每个键必须唯一标识实体,每个非键熟悉必须描述实体。”

3 去除实体组合键中的冗余

4NF-实体必须满足BCNF,在一个属性与实体的键之间,多值依赖(一条记录在整个表的唯一性由多个值组合起来决定的)不能超过一个。

当前设计不符合4NF的“臭味”:

三元关系(实体:实体:实体)。

潜伏的多值属性。(如多个手机号。)

临时数据或历史值。(需要将历史数据的主体提出,否则将存在大量冗余。)

4 尽量将所有关系分解为二元关系

5NF-实体必须满足4NF,当分解的信息无损的时候,确保所有关系都被分解为二元关系。

5NF保证在第四范式中存在的任何可以分解为实体的三元关系都被分解。有的三元关系可以在不丢失信息的前提下被分解为二元关系,当分解为两个二元关系的过程要丢失信息时,关系被宣称为处于第四范式中。所以,第五范式建议是,最好把现有的三元关系都分解为3个二元关系。

需要注意的是,规范化的结果可能是更多的表,更复杂的查询。因此,处理到何种程度,取决于性能和数据架构的多方考量。建议规范化到第四范式,原因是5NF的判断太过隐晦。例如:表X(老师,学生,课程)是一个三元关系,可以分解为表A(老师,学生),表B(学生,课程),表C(老师,课程)。表X表示某个老师是上某个学生的某个课程的老师;表A表示老师教学生;表B表示学生上课;表C表示老师教课。单独看是无法发现问题的,但是从数据出发,"表X=表A+表B+表C"并不一定成立,即不能通过连接构建分解前的数据。因为可能有多种组合,丧失了表X反馈出的业务规则。这种现象,容易在设计阶段被忽略,但好在在开放阶段会被显现,而且并不经常发生。

推荐做法:

尽可能地遵守上述规范化原则。

所有属性描述的都应该是体现被建模实体的本质的内容。

至少必须有一个键,它唯一地标识和描述了所建实体的本质。

主键要谨慎选择。

在逻辑阶段能做多少规范化就做多少(性能不是逻辑阶段考虑的范畴)。

(十)选择数据类型(MS SQL 2008)

MS SQL的常用类型:

精确数字不会发生精度损失bit tinyint smallint int bigint decimal

近似数字对于极值可能发生精度

损失

float(N) real

日期和时间?date time smalldatetime datetime datetime2 datetimeoffset 二进制数据?bingary(N) varbinary(N) varbinary(max)

字符(串)数据?

char(N) varchar(N) varchar(max) nchar(N) nvarchar(N)

nvarchar(max)

存储任意数据?sql_variant

时间戳?timestamp GUID?uniqueidentifier

XML 不要试图使用该类型规

避1NF

xml

空间数据?geometry geography

层次数据?heirarchyid

MS SQL中不在支持的或糟糕的类型选择

image:被varbinary(max)取代。

text和ntext:被varchar(max)和nvarchar(max)取代。

money和smallmoney:开发过程中不好用,建议使用decimal。

常用类型选择:

类型选择的最基本规则是选择满足需要的最轻的类型,因为这样查询更快。

bool建议使用bit而非char(1),因为开发语言对其支持觉好,可以直接映射为bool或bool?。

大值数据使用所有备选类型中最小的那种,类型越大,查询越慢,当字节大于8000时,应使用max。

主键自增主键根据预期范围选择int或bigint,GUID使用uniqueidentifier而非varchar(N)。(十一)优化并行

设计DB时就应该考虑到对并行进行优化,比如,MS SQL中的timestamp类型就是极好的选择。

四命名规则

表——“模块名_表名”。表名最好不要用复数,原因是在使用ORM框架开发时,代码生成器根据DB生成类定义,表生成了某个实例的类型定义,而不是实例集合。表名不要太长。原因之一,某些软件对表名最大长度有限制;原因之二,使用代码生成器往往会根据表名生产类型名称,之后懒人会直接使用这一名称,如果将太长的名称跨网络边界显然不是明智之举。

字段——bool类型用“Is”、“Can”、“Has”等表示;日期类型命名必须包含“Date”;时间类型必须包含“Time”。

存储过程——使用“proc_”前缀。

视图——使用“view_”前缀。

触发器——使用“trig_”前缀。

数据库设计理论

数据库的设计理论 第一节,关系模式的设计问题 一概念: 1. 关系模型:用二维表来表示实体集,用外键来表示实体间的联系,这样的数据模型,叫做关系数据模型。 关系模型包含内涵和外延两个方面: 外延:就是关系或实例、或当前值。它与时间有关,随时间的变化而变化。(主要是由于元组的插入、删除、修改等操作引起的) 内涵:内涵是与时间独立的,它包括关系属性、以及域的一些定义和说明。还有数据的各种完整性约束。 数据的完整性约束分为静态约束和动态约束。 静态约束包括数据之间的联系(称为数据依赖),主键的设计和各种限制。 动态约束主要定义如插入、删除和修改等操作的影响。 通常我们称内涵为关系模式。 2. 关系模式:是对一个关系的描述,二维表的表头那一行称为关系模式,又称为表的框架或记录类型。 关系模式的定义包括:模式名、属性名、值域名和模式的主键。关系模式仅仅是对数据特征的描述。 关系模式的一般形式为R ( U , D , DOM , F ) R 是关系名。 U 是全部属性的集合。 D 是属性域的集合。 DOM 是U 和D 之间的映射关系,关系运算的安全限制。 F 是属性间的各种约束关系,也称为数据依赖。

关系模式可以表示为: 关系模式(属性名1,属性名2 ,……,属性名n ) 示例:学生(学号,姓名,年龄,性别,籍贯)。 当且仅当U 上的一个关系r 满足 F 时,r 就称为关系模式R(U,F)上的一个关系,R是关系的型,r 是关系的值,每个值称为R 的一个关系。 关系数据库模式: 一个数据库是由多个关系构成的。 一个关系数据库对应多个不同的关系模式,关系数据库模式是一个数据库中所有的关系模式的集合。它规定了数据库的全局逻辑结构。 关系数据库模式可以表示为: S = { Ri < Ui , Di , DOM , Fi > | i = 1,2,…, n } 3. 关系子模式 关系子模式是用户所用到的那部分数据的描述。 外模式是关系子模式的集合。 4. 存储模式 存储模式及内模式。 关系数据库理论的主要内容: (1)数据依赖。数据依赖起着核心的作用。 (2)范式。 (3)模式的设计方法。 如何设计一个合理的数据库模式: (1)与实际问题相结合。 泛关系模式:把现实问题的所有属性组成一个关系模式 泛关系:泛关系模式的实例称为泛关系。 泛关系模式中存在的问题: a 数据冗余 b 更新异常, c 插入异常 d 删除异常。

数据库原理期中练习答案

一、选择题 1.同一个关系模型的任意两个元组值(A )。 A. 不能全同 B. 可全同 C. 必须全同 D. 以上都不是2.关系模式R中的属性全部是主属性,则R的最高范式必定是(B )。 A. 2NF B. 3NF C. BCNF D. 4NF 3.下列哪个不是数据库系统必须提供的数据控制功能(B )。 A. 安全性 B. 可移植性 C. 完整性 D. 并发控制 4.若关系R的候选码都是由单属性构成的,则R的最高范式必定是(B )。 A. 1NF B. 2NF C. 3NF D.无法确定 5.下列哪些运算是关系代数的基本运算(D )。 A. 交、并、差 B. 投影、选取、除、联结 C. 联结、自然联结、笛卡尔乘积 D. 投影、选取、笛卡尔乘积、差运算6.SQL语句的一次查询结果是(D )。 A. 数据项 B. 记录 C. 元组 D. 表 7.在关系R(R#, RN, S#)和S(S#,SN, SD)中,R的主码是R#, S的主码是S#,则S#在R中称为(A )。 A. 外码候选码 C. 主码 D. 超码 8.在DBS中,DBMS和OS之间关系是(D )。 A. 并发运行 B. 相互调用 C. OS调用DBMS DBMS调用OS 9.层次模型、网状模型和关系模型的划分根据是(D )。 A. 记录长度 B. 文件的大小 C. 联系的复杂程度 D. 数据之间的联系 10.下列哪个是单目运算(C )。 A. 差 B. 并 C. 投影 D. 除法 11.采用SQL查询语言对关系进行查询操作,若要求查询结果中不能出现重复元组,可在SELECT子句后增加保留字( A )。 A. DISTINCT B. UNIQUE C. NOT NULL D. SINGLE 12.下列SQL语句中,能够实现“给用户teacher授予查询SC的权限”这一功能的是(A )。 A. GRANT SELECT on SC to teacher B. REVOKE SELECT on SC to teacher C. GRANT SELECT on TABLE to teacher D. REVOKE SELECT on TABLE to teacher 13.设有关系S (SNO,SNAME,DNAME,DADDR),将其规范化到第三范式正确的答案是( B )。 A. S1(SNO,SNAME)S2(DNAME,DADDR) B. S1 (SNO,SNAME,DNAME)DEPT(DNAME,DADDR) C. S1(SNO,SNAME,DADDR)S2(SNO,SNAME)

关系数据库逻辑设计(一)

关系数据库逻辑设计(一) (总分:116.98,做题时间:90分钟) 一、选择题(总题数:37,分数:37.00) 1.数据库逻辑设计的依据不包括______。 A) 概念模型 B) 安全性要求 C) 数据约束 D) 功能模型 (分数:1.00) A. B. C. D. √ 解析:[解析] 数据库逻辑设计的依据是数据库概念设计的结果,包括概念数据模型、数据处理要求、数据约束、安全性要求及DBMS的相关信息,因此本题答案为D。 2.以下关于数据库逻辑设计叙述错误的是______。 A) 数据库逻辑设计是面向机器世界的 B) 这个阶段将按照数据库管理系统支持的数据模型来组织和存储数据 C) 目标是得到实际的数据库管理系统可处理的数据库模式,并做到数据结构合理 D) 包括定义和描述数据库的局部逻辑结构、数据之间的关系、数据完整性及安全性要求等 (分数:1.00) A. B. C. D. √ 解析:[解析] 数据库逻辑设计包括定义和描述数据库的全局逻辑结构、数据之间的关系、数据完整性及安全性要求等。因此本题答案为D。 3.在关系数据库设计中,设计关系模式是数据库设计中哪个阶段的任务______。 A) 逻辑设计阶段 B) 概念设计阶段 C) 物理设计阶段 D) 需求分析阶段 (分数:1.00) A. √ B. C. D. 解析:[解析] 关系数据模型是常用的逻辑数据模型,所以设计关系模式是数据库设计中逻辑设计阶段的任务,因此本题答案为A。 4.对于关系的主码必须满足的条件,有下列说法: Ⅰ.一个关系中的主码属性或属性组能函数决定该关系中的所有其他属性 Ⅱ.一个关系中的主码属性不能与其他关系中的主码属性重名 Ⅲ.在一个关系中,一个主码属性的任一真子集都不能函数决定其他属性

关系数据库设计理论练习题答案

第四章关系数据库设计理论练习题 一、选择题 1、关系规范化中的删除操作异常是指①A,插入操作异常是指②D A、不该删除的数据被删除. B、不该插入的数据被插入; C、应该删除的数据未被删除; D、应该插入的数据未被插入. 2、关系数据库规范化是为解决关系数据库中()问题而引入的。 A、插入异常、删除异常和数据冗余; B、提高查询速度; C、减少数据操作的复杂性; D、保证数据的安全性和完整性。 3、假设关系模式R(A,B)属于3NF,下列说法中()是正确的。 A、R一定消除了插入和删除异常; B、R仍可能存在一定的插入和删除异常; C、R一定属于BCNF; D、A和C都是. 4、关系模式的分解 A、唯一 B、不唯一. 5、设有关系W(工号,姓名,工种,定额),将其规范化到第三范式正确的答案是() A、W1(工号,姓名),W2(工种,定额); B、W1(工号,工种,定额),W2(工号,姓名); C、W1(工号,姓名,工种),W2(工种,定额); D、以上都不对. 6、设学生关系模式为:学生(学号,姓名,年龄,性别,平均成绩,专业),则该关系模式的主键是() A、姓名; B、学号,姓名; C、学号; D、学号,姓名,年龄. 7根据数据库规范化理论,下面命题中正确的是() A、若R∈2NF,则R∈3NF B、若R∈1NF,则R不属于BCNF C、若R∈3NF,则R∈BCNF D、若R∈BCNF,则R∈3NF 8、关系数据库设计理论中,起核心作用的是 A、范式; B、模式设计; C、函数依赖; D、数据完整性. 9、设计性能较优的关系模设称为规范化,规范化的主要理论依据是() A、关系规范化理论; B、关系运算理论;

关系数据库设计

目录 一Codd的RDBMS12法则——RDBMS的起源 二关系型数据库设计阶段 三设计原则 四命名规则 数据库设计,一个软件项目成功的基石。很多从业人员都认为,数据库设计其实不那么重要。现实中的情景也相当雷同,开发人员的数量是数据库设计人员的数倍。多数人使用数据库中的一部分,所以也会把数据库设计想的如此简单。其实不然,数据库设计也是门学问。 从笔者的经历看来,笔者更赞成在项目早期由开发者进行数据库设计(后期调优需要DBA)。根据笔者的项目经验,一个精通OOP和ORM的开发者,设计的数据库往往更为合理,更能适应需求的变化,如果追其原因,笔者个人猜测是因为数据库的规范化,与OO的部分思想雷同(如内聚)。而DBA,设计的数据库的优势是能将DBMS的能力发挥到极致,能够使用SQL和DBMS实现很多程序实现的逻辑,与开发者相比,DBA优化过的数据库更为高效和稳定。如标题所示,本文旨在分享一名开发者的数据库设计经验,并不涉及复杂的SQL语句或DBMS使用,因此也不会局限到某种DBMS产品上。真切地希望这篇文章对开发者能有所帮助,也希望读者能帮助笔者查漏补缺。 一 Codd的RDBMS12法则——RDBMS的起源 Edgar Frank Codd(埃德加·弗兰克·科德)被誉为“关系数据库之父”,并因为在数据库管理系统的理论和实践方面的杰出贡献于1981年获图灵奖。在1985年,Codd 博士发布了12条规则,这些规则简明的定义出一个关系型数据库的理念,它们被作为所有关系数据库系统的设计指导性方针。 1. 信息法则关系数据库中的所有信息都用唯一的一种方式表示——表中的值。 2. 保证访问法则依靠表名、主键值和列名的组合,保证能访问每个数据项。 3. 空值的系统化处理支持空值(NULL),以系统化的方式处理空值,空值不依赖于数据类型。 4. 基于关系模型的动态联机目录数据库的描述应该是自描述的,在逻辑级别上和普通数据采用同样 的表示方式,即数据库必须含有描述该数据库结构的系统表或者数据库描述信息应该包含在用 户可以访问的表中。 5. 统一的数据子语言法则一个关系数据库系统可以支持几种语言和多种终端使用方式,但必须至少 有一种语言,它的语句能够一某种定义良好的语法表示为字符串,并能全面地支持以下所有规 则:数据定义、视图定义、数据操作、约束、授权以及事务。(这种语言就是SQL) 6. 视图更新法则所有理论上可以更新的视图也可以由系统更新。 7. 高级的插入、更新和删除操作把一个基础关系或派生关系作为单个操作对象处理的能力不仅适应 于数据的检索,还适用于数据的插入、修改个删除,即在插入、修改和删除操作中数据行被视 作集合。 8. 数据的物理独立性不管数据库的数据在存储表示或访问方式上怎么变化,应用程序和终端活动都 保持着逻辑上的不变性。 9. 数据的逻辑独立性当对表做了理论上不会损害信息的改变时,应用程序和终端活动都会保持逻辑 上的不变性。 10. 数据完整性的独立性专用于某个关系型数据库的完整性约束必须可以用关系数据库子语言定 义,而且可以存储在数据目录中,而非程序中。

《数据库原理》知识点总结

《数据库原理》知识点总结标准化文件发布号:(9312-EUATWW-MWUB-WUNN-INNUL-DQQTY-

目录未找到目录项。 一数据库基础知识(第1、2章) 一、有关概念 1.数据 2.数据库(DB) 3.数据库管理系统(DBMS) Access 桌面DBMS VFP SQL Server Oracle 客户机/服务器型DBMS MySQL DB2 4.数据库系统(DBS) 数据库(DB) 数据库管理系统(DBMS) 开发工具 应用系统 二、数据管理技术的发展 1.数据管理的三个阶段 概念模型 一、模型的三个世界 1.现实世界

2.信息世界:即根据需求分析画概念模型(即E-R图),E-R图与DBMS 无关。 3.机器世界:将E-R图转换为某一种数据模型,数据模型与DBMS相关。 注意:信息世界又称概念模型,机器世界又称数据模型 二、实体及属性 1.实体:客观存在并可相互区别的事物。 2.属性: 3.关键词(码、key):能唯一标识每个实体又不含多余属性的属性组合。 一个表的码可以有多个,但主码只能有一个。 例:借书表(学号,姓名,书号,书名,作者,定价,借期,还期) 规定:学生一次可以借多本书,同一种书只能借一本,但可以多次续借。 4.实体型:即二维表的结构 例 student(no,name,sex,age,dept) 5.实体集:即整个二维表 三、实体间的联系: 1.两实体集间实体之间的联系 1:1联系 1:n联系 m:n联系 2.同一实体集内实体之间的联系 1:1联系 1:n联系 m:n联系 四、概念模型(常用E-R图表示) 属性: 联系: 说明:① E-R图作为用户与开发人员的中间语言。 ② E-R图可以等价转换为层次、网状、关系模型。 举例: 学校有若干个系,每个系有若干班级和教研室,每个教研室有若干教员,其中有的教授 和副教授每人各带若干研究生。每个班有若干学生,每个学生选修若干课程,每门课程有若干学生选修。用E-R图画出概念模型。

关系数据库规范化理论常见试题及答案

关系数据库规范化理论常见试题及答案 1.关系规范化中的操作异常有哪些?它是由什么引起的?解决的办法是什么? 答:关系规范化中的操作异常有插入异常、更新异常和删除异常,这些异常是由于关系中存在不好的函数依赖关系引起的。消除不良函数依赖的办法是进行模式分解,即将一个关系模式分解为多个关系模式。 2.第一范式、第二范式和第三范式的关系的定义是什么? 答:不包含非原子项属性的关系就是第一范式的关系;对于第一范式的关系,如果此关系中的每个非主属性都完全函数依赖于主键,则此关系属于第二范式;对于第二范式的关系,如果所有的非主属性都不传递依赖于主键,则此关系就是第三范式的。 3.什么是部分依赖?什么是传递依赖?请举例说明。 答:部分依赖关系是指某个属性只由构成主键的部分列决定,而和另一些列无关。例如对关系:学生选课(学号,姓名,课程号,成绩),此关系的主键是(学号,课程号),而“姓名”列只由“学号”决定,与“课程号”无关,这就是部分依赖关系。 传递依赖指的是某个非主键属性是由另一个非主键属性决定的,而这个非主键属性再由主键决定。例如对关系:学生(学号、姓名、所在系,系主任),此关系的主键为(学号),而“系主任”由“所在系”决定,“所在系”又由“学号”决定,因此“系主任” 对“学号”是传递依赖关系。 4.第三范式的表是否一定不包含部分依赖关系? 答:是的。 5.对于主键只由一个属性组成的关系,如果它是第一范式关系,则它是否一定也是第二范式关系?答:是的。因为如果一个关系的主键只由一个属性组成,则此关系中一定不会存在部分依赖关系。 6.设有关系模式:学生修课管理(学号,姓名,所在系,性别,课程号,课程名,学分,成绩)。设一名学生可以选修多门课程,一门课程可以被多名学生选修。一名学生有唯一的所在系,每门课程有唯一的课程名和学分。请指出此关系模式的候选键,判断此关系模式是第几范式的;若不是第三范式的,请将其规范化为第三范式关系模式,并指出分解后的每个关系模式的主键和外键。 答:候选键为:(学号,课程号),它也是此关系模式的主键。由于存在函数依赖:学号→姓名,课程号→课程名 因此,存在非主属性对主键的部分函数依赖关系,因此它不是第二范式的表。分解如下:学生表(学号,姓名,所在系,性别),主键为“学号”,已属于第三范式。 课程表(课程号,课程名,学分),主键为“课程号”,已属于第三范式。 选课表(学号,课程号,成绩),主键为(学号,课程号),已属于第三范式 7.设有关系模式:学生表(学号,姓名,所在系,班号,班主任,系主任),其语义为:一名学生只在一个系的一个班学习,一个系只有一名系主任,一个班只有一名班主任,一个系可以有多个班。请指出此关系模式的候选键,判断此关系模式是第几范式的;若不是第三范式的,请将其规范化为第三范式关系模式,并指出分解后的每个关系模式的主键和外键。

关系数据库设计

目录 一 Codd的RDBMS12法则——RDBMS的起源 二关系型数据库设计阶段 三设计原则 四命名规则 数据库设计,一个软件项目成功的基石。很多从业人员都认为,数据库设计其实不那么重要。现实中的情景也相当雷同,开发人员的数量是数据库设计人员的数倍。多数人使用数据库中的一部分,所以也会把数据库设计想的如此简单。其实不然,数据库设计也是门学问。 从笔者的经历看来,笔者更赞成在项目早期由开发者进行数据库设计(后期调优需要DBA)。根据笔者的项目经验,一个精通OOP和ORM的开发者,设计的数据库往往更为合理,更能适应需求的变化,如果追其原因,笔者个人猜测是因为数据库的规范化,与OO的部分思想雷同(如内聚)。而DBA,设计的数据库的优势是能将DBMS的能力发挥到极致,能够使用SQL和DBMS实现很多程序实现的逻辑,与开发者相比,DBA优化过的数据库更为高效和稳定。如标题所示,本文旨在分享一名开发者的数据库设计经验,并不涉及复杂的SQL语句或DBMS使用,因此也不会局限到某种DBMS产品上。真切地希望这篇文章对开发者能有所帮助,也希望读者能帮助笔者查漏补缺。 一?Codd的RDBMS12法则——RDBMS的起源 Edgar Frank Codd(埃德加·弗兰克·科德)被誉为“关系数据库之父”,并因为在数据库管理系统的理论和实践方面的杰出贡献于1981年获图灵奖。在1985年,Codd 博士发布了12条规则,这些规则简明的定义出一个关系型数据库的理念,它们被作为所有关系数据库系统的设计指导性方针。 1.信息法则?关系数据库中的所有信息都用唯一的一种方式表示——表中的值。 2.保证访问法则?依靠表名、主键值和列名的组合,保证能访问每个数据项。 3.空值的系统化处理?支持空值(NULL),以系统化的方式处理空值,空值不依赖于数据类型。 4.基于关系模型的动态联机目录?数据库的描述应该是自描述的,在逻辑级别上和普通数据采用同样 的表示方式,即数据库必须含有描述该数据库结构的系统表或者数据库描述信息应该包含在用 户可以访问的表中。 5.统一的数据子语言法则?一个关系数据库系统可以支持几种语言和多种终端使用方式,但必须至少 有一种语言,它的语句能够一某种定义良好的语法表示为字符串,并能全面地支持以下所有规 则:数据定义、视图定义、数据操作、约束、授权以及事务。(这种语言就是SQL) 6.视图更新法则?所有理论上可以更新的视图也可以由系统更新。 7.高级的插入、更新和删除操作?把一个基础关系或派生关系作为单个操作对象处理的能力不仅适应 于数据的检索,还适用于数据的插入、修改个删除,即在插入、修改和删除操作中数据行被视 作集合。 8.数据的物理独立性?不管数据库的数据在存储表示或访问方式上怎么变化,应用程序和终端活动都 保持着逻辑上的不变性。 9.数据的逻辑独立性?当对表做了理论上不会损害信息的改变时,应用程序和终端活动都会保持逻辑 上的不变性。 10.数据完整性的独立性?专用于某个关系型数据库的完整性约束必须可以用关系数据库子语言定 义,而且可以存储在数据目录中,而非程序中。

数据库设计的案例分析

图书销售 建立某中小型书店图书销售管理信息系统的数据库。 1. 基本需求分析 1)组织结构 对组织结构的分析有助于分析业务范围与业务流程。书店的组织结构如图三所示。 图三书店组织结构简图 其中,书库是保存图书的地方;购书/服务部负责采购计划、读者服务、图书预订等业务;售书部负责图书的销售。财务部负责资金管理;人事部负责员工管理与业务考核。 2)业务分析 对于信息处理系统来说,划分系统边界很重要,即哪些功能由计算机来完成,哪些工作在计算机外完成。这些要通过业务分析确定。同时,业务流程中涉及的相关数据也通过业务分析得到归类和明确。在业务分析的基础上,确定数据流图和数据字典。 本系统主要包含以下业务内容。 ①进书业务。事先采购员根据订书单采购图书。然后将图书入库,同时登记相应的图书入库数据。 本项业务涉及的数据单据和表格有:进书单(包括进书单编号、日期、金额、经手人等)和进书单细目(一个进书单可能有若干种图书。进书单的细目数据包括每种图书的信息、定价、进价或折扣,数量),以及书库账本(图书信息、库存数量、价格等)。 ②售书业务。售书员根据读者所购图书填写售书单(如图四所示)。同时,修改库存信息。

本项业务涉及和产生的数据表格有:售书单(包括售书单编号、售书日期、金额、员工)、售书细目(一个售书单可能有若干种图书。售书细目包括该次售书的书籍编号、售出数量、折扣、售出价格等),以及书库账本。 图四售书单样式 ③图书查询服务业务。根据读者要求,提供本书店特定的图书及库存信息。 本项业务涉及的主要数据是书库账本。 ④综合管理业务。包括进书信息、销售信息、库存信息的查询、汇总和报表输出。 本项业务涉及所有的进书数据、销售数据和库存数据等。 3)处理的数据 上面的分析将本系统的业务归纳为4项。在业务分析的基础上,应该画出系统的数据流图。整个系统的分层数据流图将揭示一个系统内全部的数据项、数据结构、数据存储以及对数据的加工处理功能。在此基础上就可以建立系统的数据字典。本书不讨论数据流图和完整的数据字典规范等内容,仅对最后建立数据库所需要的数据进行分析说明。 在上述4项业务中涉及到的业务数据包括:进书数据、库存数据、销售数据。在这些数据中又涉及到图书数据、员工数据等,而图书数据与出版社有关,员工与部门有关。 因此,将所有数据进行归类分析,书店销售管理信息系统要处理的数据应该包括:

关系数据库理论

第4部分关系数据库理论 复习习题与讲解资料 【主讲教师:钱哨】 一.考试大纲考点要求 1 了解关系模式设计中可能出现的问题及其产生原因以及解决的途径。 2 掌握函数依赖、完全函数依赖、部分函数依赖、传递函数依赖的定义,能计算属性的封闭集,并由此得到关系的候选键。 3 掌握第一范式( 1NF )、第二范式( 2NF )和第三范式( 3NF )的定义,能判别关系模式的范式等级。 4 掌握关系模式的分解(规范到 3NF )的步骤、分解的原则和分解的方法。 二.单项选择题 1. 为了设计出性能较优的关系模式,必须进行规范化,规范化主要的理论依据是()。 A. 关系规范化理论 B. 关系代数理论 C.数理逻辑 D. 关系运算理论 2. 规范化理论是关系数据库进行逻辑设计的理论依据,根据这个理论,关系数据库中的关系必须满足:每一个属性都是()。 A. 长度不变的 B. 不可分解的 C.互相关联的 D. 互不相关的 3. 已知关系模式R(A,B,C,D,E)及其上的函数相关性集合F={A→D,B→C ,E→ A },该关系模式的候选关键字是()。 A.AB B. BE C.CD D. DE

4. 设学生关系S(SNO,SNAME,SSEX,SAGE,SDPART)的主键为SNO,学生选课关系SC(SNO,CNO,SCORE)的主键为SNO和CNO,则关系R(SNO,CNO,SSEX,SAGE,SDPART,SCORE)的主键为SNO和CNO,其满足()。 A. 1NF B.2NF C. 3NF D. BCNF 5. 设有关系模式W(C,P,S,G,T,R),其中各属性的含义是:C表示课程,P表示教师,S表示学生,G表示成绩,T表示时间,R表示教室,根据语义有如下数据依赖集:D={ C →P,(S,C)→G,(T,R)→C,(T,P)→R,(T,S)→R },关系模式W的一个关键字是()。 A. (S,C) B. (T,R) C. (T,P) D. (T,S) 6. 关系模式中,满足2NF的模式()。 A. 可能是1NF B. 必定是1NF C. 必定是3NF D. 必定是BCNF 7. 关系模式R中的属性全是主属性,则R的最高范式必定是()。 A. 1NF B. 2NF C. 3NF D. BCNF 8. 消除了部分函数依赖的1NF的关系模式,必定是()。 A. 1NF B. 2NF C. 3NF D. BCNF 9. 如果A->B ,那么属性A和属性B的联系是()。 A. 一对多 B. 多对一 C.多对多 D. 以上都不是 10. 关系模式的候选关键字可以有1个或多个,而主关键字有()。 A. 多个 B. 0个 C. 1个 D. 1个或多个 11. 候选关键字的属性可以有()。 A. 多个 B. 0个 C. 1个 D. 1个或多个 12. 关系模式的任何属性()。 A. 不可再分 B. 可以再分 C. 命名在关系模式上可以不唯一 D. 以上都不是 13. 设有关系模式W(C,P,S,G,T,R),其中各属性的含义是:C表示课程,P表示教师,S表示学生,G表示成绩,T表示时间,R表示教室,根据语义有如下数据依赖集:D={ C →P,(S,C)→G,(T,R)→C,(T,P)→R,(T,S)→R },若将关系模式W分解为三个关系模式W1(C,P),W2(S,C,G),W2(S,T,R,C),则W1的规范化程序最

第4章+关系数据库设计理论答案

第4章关系数据库设计理论 选择题答案: (1) A (2) B (3) B (4) A (5) D (6) B (7) C (8) B (9) B (10) C (11) D (12) A (13) D (14) D (15) B (16) B (17) D (20) C (21) C (23) A (26) B (27) B (28) B (29) B (30) B (31) D (33) B B D 一、选择题: 1. 为了设计出性能较优的关系模式,必须进行规范化,规范化主要的理论依据是()。 A. 关系规范化理论 B. 关系代数理论C.数理逻辑 D. 关系运算理论 2. 规范化理论是关系数据库进行逻辑设计的理论依据,根据这个理论,关系数据库中的关系必须满足:每一个属性都是()。 A. 长度不变的 B. 不可分解的 C.互相关联的 D. 互不相关的 3. 已知关系模式R(A,B,C,D,E)及其上的函数相关性集合F={A→D,B→C ,E→A },该关系模式的候选关键字是()。 A.AB B. BE C.CD D. DE 4. 设学生关系S(SNO,SNAME,SSEX,SAGE,SDPART)的主键为SNO,学生选课关系SC(SNO,CNO,SCORE)的主键为SNO和CNO, 则关系R(SNO,CNO,SSEX,SAGE,SDPART,SCORE)的主键为SNO和CNO,其满足()。 A. 1NF B.2NF C. 3NF D. BCNF 5. 设有关系模式W(C,P,S,G,T,R),其中各属性的含义是:C表示课程,P表示教师,S表示学生,G表示成绩,T表示时间,R表示教室,根据语义有如下数据依赖集:D={ C→P,(S,C)→G,(T,R)→C,(T,P)→R,(T,S)→R },关系模式W的一个关键字是()。 A. (S,C) B. (T,R) C. (T,P) D. (T,S) 6. 关系模式中,满足2NF的模式()。 A. 可能是1NF B. 必定是1NF C. 必定是3NF D. 必定是BCNF 7. 关系模式R中的属性全是主属性,则R的最高范式必定是()。 A. 1NF B. 2NF C. 3NF D. BCNF 8. 消除了部分函数依赖的1NF的关系模式,必定是()。 A. 1NF B. 2NF C. 3NF D. BCNF 9. 如果A->B ,那么属性A和属性B的联系是()。 A. 一对多 B. 多对一C.多对多 D. 以上都不是 10. 关系模式的候选关键字可以有1个或多个,而主关键字有()。 A. 多个 B. 0个 C. 1个 D. 1个或多个 11. 候选关键字的属性可以有()。 A. 多个 B. 0个 C. 1个 D. 1个或多个 12. 关系模式的任何属性()。 A. 不可再分 B. 可以再分 C. 命名在关系模式上可以不唯一 D. 以上都不是 13. 设有关系模式W(C,P,S,G,T,R),其中各属性的含义是:C表示课程,P表示教师,S表示学生,G表示成绩,T表示时间,R表示教室,根据语义有如下数据依赖集:D={ C→P,(S,C)→G,(T,R)→C,(T,P)→R,(T,S)→R },若将关系模式W分解为三个关系

数据库原理及应用学位考试试题及答案

《数据库原理》学位考试试题 一、单项选择题(本大题共10小题,每小题2分,共20分) 在每小题列出的四个备选项中只有一个是符合题目要求的,错选、多选或未选均无分。 1.在数据库三级模式间引入二级映象的主要作用是( A ) A.提高数据与程序的独立性B.提高数据与程序的安全性 C.保持数据与程序的一致性D.提高数据与程序的可移植性 2.如何构造出一个合适的数据逻辑结构是(C )主要解决的问题。 A.关系系统查询优化B.数据字典 C.关系数据库规范化理论D.关系数据库查询 3.如果事务T已在数据R上加了X锁,则其他事务在数据R上( D ) A.只可加X锁 B.只可加S锁 C. 可加S锁或X锁 D. 不能加任何锁 4.关系规范化中的删除异常是指 ( D ) A.不该删除的数据被删除B.不该插入的数据被插入 C.应该删除的数据未被删除D.应该插入的数据未被插入 5.有一名为“列车运营”实体,含有:车次、日期、实际发车时间、实际抵达时间、情况摘要等属性,该实体主码是( C ) A.车次B.日期 C.车次+日期D.车次+情况摘要 6. 对数据库物理存储方式的描述称为( B ) A.外模式B.内模式 C.概念模式D.逻辑模式 7. 关系R与关系S只有1个公共属性,T1是R与S作θ连接的结果,T2是R与S作自然连接的结果, 则(D )。 A. T1的属性个数等于T2的属性个数 B. T1的属性个数小于T2的属性个数 C. T1的属性个数大于或等于T2的属性个数 D. T1的属性个数大于T2的属性个数 8. 一个关系模式R(x1, x2, x3, x4),假定该关系存在着如下函数依赖: x1→x2,x1→x3,x3→x4,则该关系属于(A )。 A. 2NF B. 3NF C. 4NF D. BCNF 9. 把对关系SPJ的属性QTY的修改权授予用户李勇的T-SQL语句是( C ) A. GRANT QTY ON SPJ TO '李勇' B. GRANT UPDATE(QTY) ON SPJ TO '李勇' C. GRANT UPDATE (QTY) ON SPJ TO 李勇 D. GRANT UPDATE ON SPJ (QTY) TO 李勇

简单数据库设计实例

数据库设计实例 数据库设计是数据库应用系统设计的一个组成部分,其核心是针对于特定的应用环境,设计合理的数据模型,创建数据库及其应用系统,使之能够有效地存储和处理数据,以满足用户的应用需求。从实用角度出发,数据库设计可分为如下几个步骤: 第一步:创建概念数据模型 ◆确定实体和关系 ◆确定属性 ◆规化数据 第二步:生成物理数据模型 第三步:验证设计 为便于学习者理解和掌握,下面结合具体的实例来讲解和展示数据库设计的详细过程。假定我们要开发一个小型的ERP系统,以管理公司部资源,其应用业务场景描述如下: v512工作室由IT业界专业人士组成,在提供高端IT培训业务的同时,还自主制作并免费发布大量公益性学习资源,工作室以公司形式运营,目前共拥有18名员工,这些员工分属于4个部门,且员工之间存在上下级管理关系。计划将来根据业务的发展设立更多的部门,聘用更多的员工。为保证质量,工作室对其成员的各项专业技能进行了级别评定。 8.5.1 确定实体和关系 1. 确定高级别的活动 要确定本ERP系统数据库设计中的实体和实体间关系,首先应明确要基于该数据库执行的高级别活动,这里所谓的高级别活动是指从用户的视角出发,确定本数据库设计中系统所涉及到的业务活动。比如,存储和维护员工的个人信息等。 在前述的应用业务场景中,v512工作室需要考虑的高级别活动包括: -聘用新员工 -解雇现有员工 -维护员工的个人信息 -增设新部门 -裁撤现有部门 -维护部门信息 -维护工作室业务相关的技能信息 -维护各员工的业务技能掌握情况 2. 确定实体 接下来要确定的是,针对上述的高级别活动需要记录和维护有关哪些事物的信息,这些事物将被转换为实体。其中,员工相关信息可抽象为“Employee”实体、部门相关信息可抽象为“Department”实体、技能相关信息抽象为“Skill”实体,为规和方便起见,这些实体均采用英文命名,并尽量在名称中体现其含义。 3. 确定关系 进一步对上述高级活动进行分析,以确定实体间存在何种关系。具体包括: -Employee-Department实体之间存在隶属关系 员工必须且只能隶属于某一个特定的部门,一个部门可以包含0~多名员工,此为一对多关系。 这种从两个方向上对同一个关系的细化描述被称为关系的角色,每个关系都对应两种角色。

《数据库原理》1-2章作业(答案)

《数据库原理》知识点 第一章 1、什么是4D(Data, DB、DBMS、DBS),它们之间的关系? 答: 所谓4D是分别指:数据(Data)、数据库(DB或DataBase)、数据库管理系统(DBMS)、数据库系统(DBS)。其中: 数据(Data): 数据库(DB或DataBase): 数据库管理系统(DBMS): 数据库系统(DBS): 当开发一个数据库系统(DBS)时,通常需要借助数据库管理系统(DBMS)来完成建立数据库(DB)、对数据库中数据(Data)进行操作等功能。 2、数据模型的组成要素有哪些? 答:包括: 数据结构:描述数据库的组成对象以及对象之间的联系。 数据操作:指对数据库中各种对象的实例允许执行的操作集合。 数据的完整性约束条件:是指给定的数据模型中数据及其联系所具有的制约和依存规则。 3、ER模型的组成要素有哪些? 答: 实体型、属性和联系所组成。 实体型: 属性: 联系: 4、学校中有若干系,每个系有若干班级和教研室,每个教研室有若干教师,其中有的教授和副教授每人各带若干研究生,每个班有若干学生,每个学生选修若干课程,每门课程可由若干学生选修。请用E-R图画出此学校的概念模型。 答:

5、某工厂生产若干产品,每种产品由不同的零件组成,有的零件可用在不同的产品上。这些零件由不同的原材料制成,不同零件所用的材料可以相同。这些零件按照所属的不同产品分别放在仓库中,原材料按照类别放在若干仓库中。请用E-R图画出此工厂产品、零件、材料、仓库的概念模型。

6、试述数据库系统三级模式结构,这种结构的优点是什么? 答: 数据库系统的三级模式结构由外模式、模式、内模式组成。 外模式: 模式: 内模式: 数据库系统的三级模式是针对数据的3个抽象级别,其优点是:它把数据的具体组织留给DBMS管理,使用户能抽象地处理数据,而不必关心数据在计算机中的具体表示和存储方式。 为了能够在内部实现这3个抽象层次之间的联系和转换,数据库系统在三级模式之间提供了二层映像:外模式/模式映像、模式/内模式映像,通过二层映像保证了数据库系统中数据能够具有较高的逻辑独立性和物理独立性。 7、叙述DBS的组成,其中的主要软件是什么?主要人员是谁? 答: DBS一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员和用户组成。 主要软件包括:数据库管理系统。 主要人员:数据库管理员。 第二章 1、叙述关系模型的三类完整性,并举例说明。 答:

数据库设计实例—教学管理系统

数据库课程设计报告 教学管理系统 数据库设计 课程设计题目教学管理系统学院软件学院 班级软件技术四班年级2013级 姓名彭超李新徐彤(2014 年11月)

用5行左右的文字对系统进行简要介绍 对教学管理信息统一规范整理,实现各种信息的自动管理。为便于信息的查询,找出各种信息的关联性,根据各种需求设计出合理的报表。 减轻教学日常信息管理的负担,方便学生、教师查询信息和学校对所有信息的管理。以简单便捷的操作获取详尽的信息。 一、数据需求分析 某学校设计学生教学管理系统。学生实体包括学号、姓名、性别、生日、民族、籍贯、简历、登记照,每名学生选择一个主修专业,专业包括专业编号、名称和类别,一个专业属于一个学院,一个学院可以有若干个专业。学院信息要存储学院号、学院名、院长。教学管理还要管理课程表和学生成绩。课程表包括课程号、课程名、学分,每门课程由一个学院开设。学生选修的每门课程获得一个成绩。另外,为了管理教师教学安排,教师包括编号、姓名、年龄、职称,一个教师只能属于一个学院,一名教师可以上若干门课程,一门课程可以有多名老师来上,每个教师所上的每门课都有一个课堂号和课时数。 本系统数据字典如下: 数据项表

数据流 数据流表 二、概念结构设计 1.首先确定系统中的实体 从以上数据需求可以看出,系统共包括5个实体:学生、专业、学院、教师、课程。

2.再确定系统中实体间的关系 根据数据需求描述推出:专业与学生是1对多关系;学生与课程是多对多关系;课程与老师是多对多关系;课程与学院是多对1关系;学院与专业是1对多关系;学院与教师是1对多关系。 3.转化成E-R图 图1 实体-属性图 图2 教学管理ER图 三、逻辑结构设计

数据库原理及应用(课后练习)---第4章 关系数据库设计理论

第4章关系数据库设计理论第4章关系数据库设计理论 习题 一、选择题 1、C 2、B 3、C 4、C 5、A 6、B 7、A 8、B 9、D 10、B 二、填空题 1、数据依赖主要包括_函数_依赖、_多值_依赖和连接依赖。 2、一个不好的关系模式会存在_插入异常_、_删除异常_和__修改复杂_等弊端。 3、设X→Y为R上的一个函数依赖,若_对任意X的真子集X’,均无X’→Y 存在__,则称Y完全函数依赖于X。 4、设关系模式R上有函数依赖X→Y和Y→Z成立,若_Y不包含于X_且_Y→X不成立_,则称Z传递函数依赖于X。 5、设关系模式R的属性集为U,K为U的子集,若_K→U为完全函数依赖_,则称K 为R的候选键。 6、包含R中全部属性的候选键称_主属性_。不在任何候选键中的属性称__非主属性_。 7、Armstrong公理系统是_有效__的和_完备__的。 8、第三范式是基于_函数_依赖的范式,第四范式是基于_多值_依赖的范式。 9、关系数据库中的关系模式至少应属于_第一_范式。 10、规范化过程,是通过投影分解,把_一个范式级别较低的_的关系模式“分解”为_若干个范式级别较高__的关系模式。 111

数据库原理及应用 112 三、简答题 1、解释下列术语的含义:函数依赖、平凡函数依赖、非平凡函数依赖、部分函数依赖、完全函数依赖、传递函数依赖、范式、无损连接性、依赖保持性。 解: 函数依赖:设关系模式R (U ,F ),U 是属性全集,F 是U 上的函数依赖集,X 和Y 是U 的子集,如果对于R (U )的任意一个可能的关系r ,对于X 的每一个具体值,Y 都有唯一的具体的值与之对应,则称X 函数决定Y ,或Y 函数依赖于X ,记X →Y 。我们称X 为决定因素,Y 为依赖因素。当Y 不函数依赖于X 时,记作:X Y 。当X →Y 且Y →X 时,则记作:X ?Y 。 平凡函数依赖:当属性集Y 是属性集X 的子集时,则必然存在着函数依赖X →Y ,这种类型的函数依赖称为平凡的函数依赖。 非平凡函数依赖:如果Y 不是X 子集,则称X →Y 为非平凡的函数依赖。 完全函数依赖与部分函数依赖:设有关系模式R (U ),U 是属性全集,X 和Y 是U 的子 集,X →Y ,并且对于X 的任何一个真子集X ',都有X 'Y ,则称Y 对X 完全函数依赖(Full Functional Dependency ),记作X ?→?f Y 。如果对X 的某个真子集X ',有X '→Y ,则称Y 对X 部分函数依赖(Partial Functional Dependency ),记作X ?→? p Y 。 传递函数依赖:设有关系模式R (U ),U 是属性全集,X ,Y ,Z 是U 的子集,若X →Y (Y X ),但Y X ,又Y →Z ,则称Z 对X 传递函数依赖(Transitive Functional Dependency ),记作:X ?→? t Z 。 范式:在关系数据库的规范化过程中,为不同程度的规范化要求设立的不同的标准或准则称为范式(Normal Form )。满足最低要求的叫第一范式,简称1NF 。在第一范式中满足进一步要求的为第二范式(2NF),其余以此类推。R 为第几范式就可以写成R ∈xNF (x 表示某范式名)。 当把某范式看成是满足该范式的所有关系模式的集合时,各个范式之间的集合关系可以表示为:5NF ?4NF ?BCNF ?3NF ?2NF ?1NF 。 一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化。 无损连接性:设R (X ,Y ,Z ),X 、Y 、Z 为不相交的属性集合,如果有X →Y 、X →Z ,则有R (X ,Y ,Z )=R[X ,Y]∞R[X ,Z],其中R[X ,Y]表示关系R 在属性(X ,Y )上的投影,即R 等于两个分别含决定因素X 的投影关系(分别是R[X ,Y]与R[X ,Z])在X 上的自然连接,这样便保证了关系R 分解后不会丢失原有的信息,这称作关系分解的无损连接性。 依赖保持性:设有关系模式R (U ,F ),Z ?U ,则Z 所涉及到的F 中所有函数依赖为F

数据库原理复习资料与答案

数据库原理习题 一、核心知识点 1、数据库系统和文件系统的比较。 文件系统:数据可长期保存、由文件系统管理数据,但是数据共享性差,冗余度大,数据独立性差; 数据库系统:数据库实现整体数据的结构化、数据的共享性高,冗余度低,意扩充、数据独立性高、数据由DBMS统一管理和控制 2、简述数据库系统的三级模式结构。 外模式/模式、模式、内模式 3、简述数据库系统三级模式结构中的两级映像,并说明其优点。 两级映像:外模式/模式映像 模式/内模式 优点:这两级映像保证了数据库系统中的数据具有较高的逻辑独立性和物理独立性 4、简述数据模型的三要素。 数据结构、数据操作、数据的完整性约束 5、简述数据库独立性的特点。 数据独立性是由DBMS二级映像功能来保证的,数据与程序的独立性大大减少了应用程序的维护和修改 6、简述数据库系统的组成部分 数据库、硬件、软件、人员 7、简述DBA的主要职责。 数据库管理员(DBA)负责全面管理和控制数据库系统,其主要职责有;设计与定义数据库系统;帮助最终用户使用数据库系统;监督与控制数据库系统的使用和运行;转储与恢复数据库;改进和重组数据库系统,调优数据库系统的性能;重构数据库 8、简述关系模型的特点。 关系中每一个字段也称字段,不可再分,是最基本的单位;每一列数据项是同属性的。列数根据需要而设,且各列的顺序是任意的;每一行记录由一个事物的诸多属性组成,记录的顺序可以是任意的;一个关系是一张二维表,不允许有相同的字段名,也不允许有相同的记录行

9、简述关系模型的组成部分。 关系数据结构、关系操作集合、关系完整性约束 10、简述关系的性质。 1对1 1对0..* 1对1..* 关系中不允许出现相同的元组 关系中元组的顺序(即行序)可任意 关系中属性的顺序可任意 同一属性名下的各个属性值必须来自同一个域,必须是同一类型的数据 关系中各个属性必须有不同的名字,不同的属性可来自同一个域,即它们的分量可以取自同一个域。 关系中每一个分量必须是不可分的数据项,或者说所有的属性值都是原子的,即是一个确定的值,而不是值的集合。 11、简述关系的完整性。 关系完整性是为保证数据库中数据的正确性和相容性,对关系模型提出的某种约束条件或规则。完整性通常包括域完整性,实体完整性、参照完整性 须满足的完整性约束条件。 12、简述自然连接和等值连接的区别。 连接运算符是“=”的连接运算称为等值连接。它是从关系R与S的广义笛卡尔积中选取A,B属性值相等的那些元组 自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉 13、简述视图和关系的区别。 计算机数据库中的视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。也是机械制图术语,在机械制图中,将物体按正投影法向投影面投射时所得到的投影称为“视图”。

相关主题