登陆注册
49356600000033

第33章 数据库应用(2)

学生关系就是一个二元关系。这个四行八列的表格的每一列称为一个字段(即属性),字段名相当于标题栏中的标题(属性名称);表的每一行是包含了八个属性(学号、姓名、性别、出生年月、入学时间、专业、电话、地址)的一个八元组,即一个人的记录。这个表格清晰地反映出学生的基本情况。

表中每一行表示一个记录值,每一列表示一个属性(即字段或数据项)。该表一共有m 个记录,每个记录包含n 个属性。

作为一个关系的二维表,必须满足以下条件:

(1)表中每一列必须是基本数据项(即不可再分解);

(2)表中每一列必须具有相同的数据类型(例如字符型或数值型);

(3)表中每一列的名字必须是惟一的;

(4)表中不应有内容完全相同的行;

(5)行的顺序与列的顺序不影响表格中所表示的信息的含义。

在关系数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过对这些关系表格的分类、合并、连接或选取等运算来实现数据的管理。

7.2.4数据库相关术语

数据库中最常用的术语有字段、记录、表和联系等,以及对数据库关系表中信息的基本操作:选择、投影和连接。

1.字段(Field)

在学生基本情况表中,包含了学生的学号、姓名、性别、出生年月、电话等内容。

在数据库表中,每一项称为一个字段,即表中的一列(属性)。字段由字段名和字段值组成。

2.记录(Record)

在学生基本情况表中,详细记录了一个学生具体内容的一组信息称为一个记录,即表中的一行(元组)。一个记录由若干个字段(列)组成。

3.表(Table)

存放了一组相似记录的集合(记录集)称为一个表(关系)。数据表由若干组结构相同的记录(行)组成。

6.数据库(DataBase)

一个数据库由若干个有关联的数据表组成。数据库作为信息管理的软件集成环境,为数据库中的表以及表与表之间的数据管理提供了一整套的操作规则与便捷工具。

4.关键字(KeyWord)

每一个表应该包含一个或一组字段,这些字段是表中所保存的每一条记录的惟一标识,此信息称作表的主关键字或称主键。主键一般用于建立表对象中数据的索引和建立表对象之间的关系。如“学生”表中的学号字段,“课程”表中的课程号字段,而“成绩”表中的学号和课程号字段作为一组来惟一标识表对象中的每一条记录。

5.联系(Relationship)

数据库中不仅要存放数据信息,而且必须保存能反映数据之间联系的信息。联系体现数据库中表与表之间的关联。通常表与表之间的联系有一对一(1:1)、一对多(1:m)和多对多(n :m)。

在“学籍管理”数据库中的“学生”与“成绩”表之间就是一对多联系(1:m),一个学生可以选多门课,可以有多门课程的成绩;但某一个特定课程的特定成绩只能属于某一个学生。

“课程”与“成绩”表之间也是一对多的联系(1:m),一门课可以被多个学生选,一门课程可以有多个学生的成绩;但某一个特定学生的特定成绩只能对应某一门课程。

“专业”与“学生”表之间依然是一种一对多的联系(1:m),一个专业可以被多个学生选,但一个学生只能属于一种专业。

而“学生”与“课程”表之间就是多对多的联系(m:n),一个学生可以选多门课,一门课程可有多个学生选。

“学籍管理”数据库中的4个表对象(“学生”、“课程”、“成绩”和“专业”)以及它们之间的关联方式;“学生”表和“成绩”表的联系通过“学号”字段来匹配,“课程”表与“成绩”表之间的联系由“课程号”决定;而“学生”表和“专业”表的联系则通过“编号”字段来作为查阅向导索引。

6.完整性

数据库的完整性是指数据库中各个表及表之间的数据的有效性、一致性和兼容性。

数据库的完整性包括实体完整性、参照完整性和用户自定义完整性三部分。

(1)实体完整性:指一个表中主关键字的取值必须是确定的、惟一的,不允许为空值。

例如,对“学生”表中的记录,主键“学号”字段的取值必须是惟一的、且不能为空值。这就要求在“学生”表中存储的记录必须满足这一条件,而且在输入新记录、修改已有记录时也要遵守这一条件。

(2)参照完整性:指表与表之间的数据一致性和兼容性。例如,在“学生”表(父表)与“成绩”表(子表)之间的参照完整性要求:在“成绩”表中,字段“学号”的取值必须是“学生”表中“学号”字段取值当中已经存在的一个值。类似地,在“课程”表(父表)与“成绩”表(子表)之间也必须遵守类似的参照完整性的规则。

(3)用户自定义完整性:是由实际应用环境当中的用户需求决定的。通常为某个字段的取值限制、多个字段之间取值的条件约束等。例如,在“成绩”表中,“成绩”字段的取值必须为0~100。

7.关系操作

选择、投影和连接是关系的三种基本操作。

(1)选择:按照一定条件在给定关系中选取若干记录(即选取若干行)。

(2)投影:在给定关系中选取确定的若干字段(即选取若干列)。

(3)连接:按照一定条件将多个关系的记录连接(即连接多张表)。

“成绩查询”记录集的选择操作(在“成绩查询”所有记录中选择某个学生的记录,筛选若干行)。

7.3创建数据库

数据库应用的主要事务有三类,即数据编辑存储、数据查询检索和数据报表输出。

要实现数据库的基本事务处理工作,首先要建立数据库,但建立数据库的第一步是根据实际应用问题的需要对所涉及的数据进行分析、组织、设计,进而构架数据库。

7.3.1设计数据库及表

构架数据库是一项关键而复杂的工作,这需要有经验的系统分析和系统设计人员对应用任务的整体考量与全盘分析。合理周密的设计是创建能够有效、准确、及时地完成所需功能的数据库的基础。虽然限于篇幅,这部分知识不能全面展开介绍,但是设计一个数据库的大致步骤基本是固定的,对于比较简单的数据库设计还是容易做到的。这需要决定:

把相关联的数据有效地组织和存储在数据库中的几个表对象中?

每个表对象应该包含哪些类型的数据(字段与记录)?

各个表对象之间如何建立联系(主键与关联)?

1.分析数据需求确定概念模型元素

基于对象的数据模型又称为概念模型,使用了实体、属性和联系等概念。

实体是数据库中描述的组织中独立的对象(人、事件、概念、事务和地点等);属性描述对象的某个需要进行记录的特征或性质;联系是实体之间的关联。基于对象的概念模型之实体联系模型是数据库设计的重要技术,也是最常用最基础的概念模型。

根据学籍信息管理系统的实际功能和数据体现,分析数据需求初步确定概念模型元素。首先,需要确定符合应用需要的主题(实体),这里包括了学生基本情况、课程相关信息和对应课程的学生成绩信息等。其次,需要确定与各个主题相关的并且是应用需要体现的特征属性(字段)以及便于实现运算和存储处理的数据类型(字段类型)。接着,需要确定可以惟一标识每一条记录的主键。最后,需要合理地调配数据的归属,确定各个主题之间的关联,保证数据的最小冗余度和最大共享性。

2.用E‐R图表示概念模型

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

构成E‐R图的基本要素是实体型、属性和联系,其表示方法为:

(1)实体型:用矩形表示,矩形框内写明实体名;(2)属性:用椭圆形表示,并用无向边将其与相应的实体连接起来,带下划线的属性为主键;(3)联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1,1:n 或m :n)。

3.构架关系数据库表

根据“学籍管理”的实体联系(E‐R)模型图,进一步构架“学籍管理”关系数据库表对象及其相关元素。

4.确定字段的数据类型

“学籍管理”数据库中包含的4个表对象“学生”、“课程”、“成绩”和“专业”的结构列表样本,其中罗列了每个表对象中相关字段的数据类型设置情况。

“学籍管理”数据库中4个表对象“学生”、“课程”、“成绩”和“专业”的结构列表表总结了在Microsoft Access 中常用的字段数据类型及它们的用法和存储空间的大小。

7.3.2创建数据库及表

创建数据库包括创建空数据库“学籍管理”(扩展名为.MDB)、在数据库中建立表(确定主键)以及建立表与表之间的关联等操作。

1.创建数据库

启动Microsoft Access,按照界面提示新建空数据库,取名“学籍管理”。

2.向数据库添加表并定义表结构

在数据库窗口中,选择“表”对象,并双击“使用设计器创建表”;在表的设计视图中,“学籍管理”数据库中的4个表对象“学生”、“课程”、“成绩”和“专业”的结构列表样本,输入数据表中各字段的名称、数据类型以及字段大小等。

特别值得注意的是,“学生”表中的“专业”字段的数据类型要选择“查询向导”,然后按照界面提示与“专业”表建立列表联系(“专业”表要先建立)。“成绩”表中的“学号”和“课程号”字段也可以在“查阅”页分别设置为与“学生”表和“课程”表相对应的列表显示,以便于输入和查询。

另外,还需要设置表的主键(在添加“成绩”表时,可以不设主关键字,尤其不要将“成绩”表中的字段“学号”设为主键,因为在该表的多个记录中“学号”字段值并不是惟一的)。

最后,按照提示在“表名称”中输入表的名称。至此,完成了建立包括4个表的数据库“学籍管理.mdb”。

3.设置字段属性

在创建数据表结构时常用的字段属性设置说明如下:

(1)字段大小:在字段中所能输入的最大字符数或数字的大小及类型。例如,当设定一个字符型的字段大小为8时,最多只能在该字段中输入8个字符或4个汉字。

(2)格式:字段的显示格式。可以在提供的格式列表中改变字段的显示格式。

(3)输入掩码:字段的数据输入模式。例如,可以让用户按“YYYY‐MM‐DD”格式输入日期。

(4)标题:显示给用户的字段说明标题。例如,将字段学号的标题设置为“学生编号”的话,在显示表格时,该字段的标题是“学生编号”。

(5)有效性规则:对该字段中所能输入的数据的约束条件。例如,对于“成绩”表的“分数”,有效性规则为“<=100And>=0”,表示该字段不接受超出0~100的数据。

(6)有效性文本:当输入不符合有效性规则的数据时,系统显示警告或提示字符串。

(7)必填字段:当前字段是否可以是NULL(空值)。NULL 是一种特殊的数据类型,可以简单地理解为“空”或“什么也没有”,如果某个变量或字段的值为NULL,则说明该变量或字段中不包含有效的数据。NULL 不等同于空字符串“”(空字符串是一个字符串,只不过长度为零),也不等同于数字0。

(8)索引:是否用当前字段为表建立索引(逻辑排序)。

(9)主键:数据表的各字段中,只有一个字段可以选为数据表的主键,用来惟一标识表中的一条记录。在“学生”表中,“学号”应为表的主键,因为每个学生的学号都不同,学号惟一地标识了一个学生。在“学号”字段上右击,在弹出的快捷菜单中单击“主键”。

7.3.3编辑数据库及表

1.向表中输入数据

在数据库窗口中,双击“学生”表后,会出现“学生”数据表的编辑窗口,可以向表中输入数据,“专业”字段不需要输入,只需要在下拉列表中选择对应的专业名就可以了(“专业”表应该先完成数据输入)。而“照片”字段的输入则需要点击鼠标右键,在快捷菜单中选择“插入对象”,再按照界面引导选择已经存在的.bmp 的图片文件。

输入结束,关闭相应窗口。用同样方法完成“课程”和“成绩”表的数据输入工作。

2.编辑数据库中的数据

建立好的数据库以及其包含的多个表对象,除了初始的部分数据录入工作外,对数据库中数据的日常编辑维护工作自然是必不可少的,诸如:追加、修改、删除和查询信息等操作。

简单的编辑工作可以直接在Access 环境中的可视化操作界面上进行(输入数据界面配合菜单操作)。当然,也可以通过后续将介绍的窗体界面或是结构化查询语言SQL用代码的方式实现。

7.3.4建立表之间的关联

前面建立完成的数据库以及其中添加的3个表对象“学生”、“课程”和“成绩”之间并没有关联关系,其中“学生”与“专业”表的关联,在建立“学生”表的结构时,设置“专业”字段的数据类型为“查询向导”时,系统自动建立了两个表的关联。

为了将多个表中的数据有效地联系起来,同时保证数据库中各个表中数据的参照完整性,必须建立表之间的关联,这样才能在后续的查询和报表中充分有效地访问和利用表中的数据,完成实际问题所需的操作。

同类推荐
  • 都是网络惹的祸

    都是网络惹的祸

    本书分网络游戏、网络聊天、网络隐私、网络网吧安全、网络文化、网络语言、网络犯罪、网络陷阱等栏目,从不同的视角探讨了在当今社会的网络现象。
  • 网络广告经纪人

    网络广告经纪人

    本书为网络广告经纪人培训认证的指定教材,该认证是商务部中国商务广告协会和信息产业部中国电子商会联合推出的,旨在为国家造就和培养出一大批网络广告梯队型人才。该教材包括网络广告经纪人的介绍和发展趋势,以及网络广告的原理、策划、设计、制作、发布与交换、效果评估、管理,以及网络广告营销的国内外最新的成功案例,还提供了一些常用的网络广告制作工具。本教材适合助理网络广告经纪人和网络广告经纪人层次使用。也可作为高校广告、电子商务等专业的教材。
  • 初级会计电算化

    初级会计电算化

    本书是作者根据历年会计从业资格考试的考试大纲以及多年对真题的分析,并结合多为专家、学者的实践经验而编写的。本书主要分为八套模拟试卷,以对考生考前的学习进行模拟实战,达到提高考生成绩的目的。
  • 从平凡到神奇

    从平凡到神奇

    本书结合多年的开店经验,全面地讲解了在淘宝网开设店铺的相关知识,为准备在淘宝网创业的卖家及刚刚创建店铺的店主,提供全面的开店和经营方面的指导。本书按照淘宝开店的流程安排内容,侧重每个步骤中的实际技巧。本书分3个部分:如何在淘宝开店、如何开好店、如何做强做大店铺。前3章介绍了在淘宝网开设店铺的基础知识,指导读者在开设店铺前做好准备工作,以及建立起自己的店铺,并且完成店铺的第一笔交易;第4章至第7章主要介绍了网店装修和推广的方法,以及网店的物流经验和技巧;第8章着重介绍了将网店做大做强的方法,帮助卖家在开店和经营中树立品牌意识,做大做强自己的店铺。
热门推荐
  • 后起新秀

    后起新秀

    凌风,单亲家庭的普普通通的高中生,因18岁成人礼被情敌陷害进入监狱,三年后出来的他,已经不再平常,他的身世是什么?他的未来又如何,一切精彩,尽在后起新秀!
  • 惊鸿照影魂归来

    惊鸿照影魂归来

    她,是天界三位尊神之一歌月的女儿,却只能和妹妹一起偷偷居住在深山之中,直到有一日意外遇袭,魂魄被封入兔子体内,被带往龙族五大湖水府之一的魄冰湖,与他相识。舍下万千离去后,不料当时笑语嫣然的宫殿已经物是人非,当年温柔单纯的少年也已经改变。复仇?结愿?无妨,我陪你便是1.本文结局he2.内容有甜也有玻璃渣,中间会虐一阵子但不会虐一辈子3.男女主都是后期成长起来的4.剧情内容纯属虚构
  • 风摇记忆

    风摇记忆

    青春是本不朽的书,在校园里的人,事,是那么的美,那么的令人难忘……
  • 灵阵天下

    灵阵天下

    古大陆,上古修士,主宰布局,神王喋血,一个平凡的少年怀揣着一个简单的信念一路艰难前行,他是身陷囹圄,成为他人棋子,还是逆天破局,冲出迷惘,成就大道……
  • 精灵曾路过我的梦里

    精灵曾路过我的梦里

    这是一场梦却又很真实醒来后才发现这不是个梦而是一本小说(^ν^)
  • 开局误以为穿到普通世界

    开局误以为穿到普通世界

    江林翰觉得自己很不幸。只是睡了个觉,醒来自己就灵魂穿越了,还占据了一个高中生的身体幸好,在他的“精准”判断下,这个异世界只是个普普通通的世界。不会有什么修仙大佬,一剑断山河,也没有什么鬼怪冲出地府,祸害人间。没有灵气,没有修仙。原本江林翰只想简简单单度过这新的一生。然而。他怎么也没想到,自己身边都是非人般的高能大佬?!……江林翰:“开局误以为自己穿到普通世界,现在我该怎么办?”
  • 总有喽啰想害我

    总有喽啰想害我

    两个小可爱的江湖之旅。谁说武功不行就不能肆意江湖?智商不够还不能谈恋爱了?敲!居然搞偷袭!你这怕不是反派哟!
  • 强势归来——废嫡左小姐

    强势归来——废嫡左小姐

    她,是云城中无人不知无人不晓的废柴二小姐……而,眨眼间,她便如同脱胎换骨一般,开始变得杀伐果断!且看她如何步步为营,开启一个独属于她的一个全新时代!
  • 魔法六人

    魔法六人

    写出了六个人突然得到魔法,然后在世界中出现了怪兽。最后六人为了拯救世界是否成功了呢?
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!