第3章 数据库和表.docx

上传人:b****6 文档编号:8495559 上传时间:2023-01-31 格式:DOCX 页数:50 大小:1.08MB
下载 相关 举报
第3章 数据库和表.docx_第1页
第1页 / 共50页
第3章 数据库和表.docx_第2页
第2页 / 共50页
第3章 数据库和表.docx_第3页
第3页 / 共50页
第3章 数据库和表.docx_第4页
第4页 / 共50页
第3章 数据库和表.docx_第5页
第5页 / 共50页
点击查看更多>>
下载资源
资源描述

第3章 数据库和表.docx

《第3章 数据库和表.docx》由会员分享,可在线阅读,更多相关《第3章 数据库和表.docx(50页珍藏版)》请在冰豆网上搜索。

第3章 数据库和表.docx

第3章数据库和表

第3章数据库和表

在VF6中,数据库(database)和表(table)是两个不同的概念。

表是处理数据、建立关系数据库和应用程序的基础单元,用于存储收集来的各种信息;而数据库是表的集合,它控制这些表协同工作,共同完成某项任务。

数据库是指存储在外存上的有结构的数据集合。

在VF6的数据库中,不存储数据,只存储数据表的属性,以及组织、关联表和视图等,并可在其中创建存储过程。

此外,使用数据库还给能访问远程数据源,并可创建本地和远程表的视图。

3.1数据库设计概述

3.1.1数据库设计的一般步骤

数据库设计过程的关键在于明确VF6中数据的存储方式与关联方式。

在各种类型的数据库管理系统中,为了能够更有效、更准确地为用户提供信息,往往需要将关于不同对象的信息存放在不同的表中,VF6也是如此。

比如一个教学管理系统数据库,包含有如下两个表:

一个表用来存放学生基本情况,而另一个表用来存放课程情况。

现在要查看某一个课程及选修该课程的学生情况,就需要在两个表之间建立一个联系。

所以在设计数据库时,首先要把信息分解成不同相关内容的组合,分别存放在不同的表中,然后再告诉VF6这些表相互之间是如何进行关联的。

注意:

虽然可以使用一个表来同时存储学生信息和课程信息,但这样数据的冗余度太高,而且无论对设计者来说,还是对使用者来说,在数据库的创建和管理上都将非常麻烦。

设计数据库的一般步骤如下所示。

1 分析数据需求确定数据库要存储哪些信息。

2 确定需要的表文件一旦明确了数据库所要实现的功能,就可以将必需的信息分解为不同的相关主题,在数据库中为每个主题建立一个表。

3 确定需要的字段这实际上就是确定在表中存储信息的内容,即确立各表的结构。

4 确定各表之间的关系仔细研究各表字段之间的关系,确定各表之间的数据应该如何进行连接。

5 改进整个设计可以在各表中加入一些数据作为例子,然后对这些例子进行操作,看是否能得到希望的结果。

如果发现设计不完备,可以对设计作一些调整。

在最初的设计中,不必担心发生错误或遗漏。

在数据库设计的初始阶段出一些错,通过VF6极易修改。

一旦数据库中拥有大量数据,并且被用到报表、表单或是应用程序中之后,再要进行修改就非常困难了。

所以在确定数据库设计之前一定要做适量的测试、分析工作,排除其中的错误和不合理的设计。

也正因如此,在连编应用程序之前,应确保设计方案已经考虑得比较全面。

作为设计的示范,现以某校的教务处教学管理系统为例,介绍数据库设计的过程。

3.1.2确定数据库的用途

确定数据库用途最主要目的是弄清用户需求,并做较明确的描述处理。

设计数据库时要注意两点:

一是要强调用户的参与。

在分析数据库需求时,最好和数据库的使用人员多交换意见,并根据用户提出的要求,推敲数据库需要回答哪些问题。

二是要充分考虑到数据库可能的扩充和改变,提高数据库的灵活性。

只有创建一个设计灵活的数据库,才能保证所建立的应用程序具有较高的性能。

如教务处的“教学管理”数据库,应存放教与学两方面的信息,即有关学生的情况、教师的情况、课程安排以及考试成绩等方面的信息。

要求从中可以查出每个学生各门课程的成绩,某门课程由哪位教师担任、哪些学生选修了这门课程,以及这门课程的考试成绩等数据信息。

如有可能,应尽量使用表格形式来描述这些数据信息。

在实际教学管理过程中,有关的表格和要求摘录如下。

1.学生登记卡

学生登记卡是学生入学时登记的一种卡片,其中包含学生基本信息情况,其样表参见表3.1。

表3.1学生登记卡

学号

姓名

性别

出生日期

专业

入学成绩

贷款否

照片

0103001

王丽丽

1983.3.23

外贸

626.5

.T.

身份证

籍贯

家庭地址

电话

专长

奖励

处分

病史

1101081983

0323011A

安徽

北京海淀区学院路13号

62313380

唱歌

高中时连续三年三好生

简历

1990年入北京师大附小读书,1995年考入北京师大附中读书,2001年考入北京语言文化大学

2.学生成绩表

学生成绩表是用来统计学生成绩的一种表格,其基本表格格式参见表3.2

表3.2学生成绩表

课程名称:

电脑文秘应用教师姓名:

白丽文

学号

姓名

平时成绩

期中成绩

期末成绩

0103001

王丽丽

95

88

90

……

3.1.3确定需要的表文件

确定数据库中需要的表是数据库设计过程中技巧性最强的一步。

因此仅仅根据用户想从数据库中得到的结果(包括要打印的报表、要使用的表单等),只能确定需要数据库回答的问题。

至于表的结构、表与表之间的关系,用户是不可能提出的,所以只能根据用户的需要通过分析归纳来确定需要哪些表,并将需要的信息分门别类的归纳到相应的表中。

也就是说,在设计数据库时,应将不同主题的信息存储在不同的表中。

在设计数据库的时候,首先分离那些需要作为单个主题而独立保存的信息,然后设计这些主题之间有何关系。

通过将不同的信息分散在不同的表中,可以使数据的组织工作和维护工作更简单,同时也容易保证应用程序具有较高的性能。

例如,根据上面提出的“教学管理”数据库的要求,考虑这个数据库需要哪些表:

首先,为了得到学生和教师的信息,应该为学生和教师各建一个表,把这两个表分别叫作“学生”表和“教师”表,其中存放有关学生和教师的基本情况。

3.1.4确定需要的字段

表是由多个记录组成的,而每个记录又由多个字段组成。

在确定了所需表之后,接下来应根据每个表中需要存储的信息确定该表需要的字段,这些字段既包括描述主题信息的字段,又包括建立关系的主关键字字段。

为了保证数据的冗余性小且不遗漏信息,在确定表所需字段时应遵循以下6条规则。

1.字段唯一性

数据表中不能有与表内容无关的数据,必须确保一个数据表中的每个字段直接描述该表的主题。

例如,在“成绩”表中无须学生年龄的信息,该表中就不应包含有“年龄”及其相关字段。

2.字段无关性

即同一数据表中字段间不能有相互推导或计算的关系。

例如,只要记录学生的“出生日期”就可以计算出年龄,同样,总成绩通常是根据平时成绩、期中成绩和期末成绩计算出来的,因此,无须保留“年龄”和“总成绩”字段。

这样做可以节省数据库中存储数据的空间,同时也可防止对表中数据作修改时出现错误,从而实现在不影响其他字段的情况下,能够对任意字段进行修改。

3.使用主关键字段

实体完整性要求,数据库中的每个表都必须有一个主关键字唯一确定存储在表中的每条记录。

通常要用主关键字的值来查找记录,其长度直接影响数据库的操作速度,所以它不能太长,以方便记忆和输入。

4.外部关键字

在创建新表时,应保留与其他表相链接的少量信息,如“学号”、“课号”等字段。

这些用于“链接”的字段就是外部关键字。

5.收集所需的全部信息

即确保所需的数据信息都包括在设计的表中,或者可由这些表中的数据计算出来。

6.以最小的逻辑单位存储信息

如果把多个信息放入一个字段中,以后要获取单独的信息就会很困难,所以尽量把信息分解成较小的逻辑单位存储。

根据以上原则,可为“教学管理数据库”的各个表设置字段如表3.3~表3.7所示。

表3.3“学生”表中的字段

字段名

学号

姓名

性别

出生日期

专业

入学成绩

贷款否

照片

简历

身份证

籍贯

家庭地址

电话

特长

奖励

处分

病史

类型

C

C

C

D

C

N

L

G

M

C

C

C

C

C

C

C

C

宽度

7

8

2

8

10

5.1

1

4

4

18

10

50

15

60

60

60

60

注意:

这个“学生”表的表结构在教学管理数据库中又根据常用和非常用字段分成了“学生”表和“学生其他情况”表。

所以,在教学管理数据库中创建表时要把这里列出来的字段分别放在“学生”表和“学生其他情况”表里。

具体分法见表3.8的表3.9。

表3.4“课程表”

字段名

课号

课名

周课时

学分

专业类别

类型

C

C

N

N

C

宽度

6

30

2,0

2,0

1

 

记录

09001

电脑文秘应用

4

4

A

09002

信息管理

4

4

A

09003

计算机基础

2

2

B

09004

C++程序设计

4

4

B

09005

数据库原理

4

4

B

02005

英语B

(一)

4

4

B

02006

英语B

(二)

4

4

B

02001

英语A

(一)

4

4

A

02002

英语A

(二)

4

4

A

表3.5“教师”表

字段名

教师编号

姓名

性别

生日

职称

类型

C

C

C

D

C

宽度

5

8

2

8

6

 

记录

01025

谷京生

19620619

副教授

02012

高坤

19650312

副教授

03076

孙小雨

20500109

教授

08005

赵欢乐

19731215

讲师

09003

白丽文

19701204

副教授

09001

贾浩春

19530315

教授

表3.6“成绩”表

字段名

学号

课号

平时

期中

期末

字段名

学号

课号

平时

期中

期末

类型

C

C

N

N

N

类型

C

C

N

N

N

宽度

7

8

5.1

5.1

5.1

宽度

7

8

5.1

5.1

5.1

 

记录

0103011

09001

95.0

88.0

90.0

 

记录

0101019

02001

83.0

85.0

84.0

0108015

09003

75.0

87.0

82.0

9909010

09001

90.0

82.0

86.0

0108015

02005

80.0

89.0

91.0

9909010

09002

84.0

96.0

92.0

0103001

02001

91.0

83.0

85.0

0109039

09003

76.0

78.0

60.0

0103002

09001

78.0

86.0

81.0

0109039

02005

85.0

88.0

81.0

0008035

09003

80.0

90.0

90.0

9901009

02001

90.0

87.0

82.0

0008035

02005

95.0

93.0

90.0

9901009

02002

85.0

80.0

88.0

0008035

02006

90.0

91.0

87.0

9902010

09001

65.0

75.0

63.0

0103002

02001

90.0

97.0

96.0

9902010

09002

60.0

50.0

51.0

0101019

09001

88.0

69.0

76.0

9909018

09003

67.0

72.0

70.0

9909010

09003

88.0

65.0

72.0

9909018

09004

76.0

76.0

76.0

9909010

09004

70.0

90.0

84.0

9909018

02005

78.0

60.0

65.0

9909010

09005

80.0

70.0

70.0

9909018

02006

78.0

60.0

65.0

9909010

02005

78.0

84.0

82.0

9902010

02001

93.0

89.0

90.0

9909010

02006

82.0

75.0

78.0

9902010

02002

90.0

96.0

97.0

表3.7“专业”表

字段名

专业名称

专业类别

负责人

研究方向

类型

C

C

C

C

宽度

10

1

8

30

 

记录

中文

A

司马巩文

中西文化比较

外贸

A

高树生

中国纺织品贸易对全球的影响

英语

A

王国玉

中西语言文学比较

数学

B

梁菲菲

计算语言

计算机

B

李明

电子商务

其中,“学生”表中的“学号”字段、“教师”表的“教师编号”字段、“课程”表的“课号”字段和“专业”表中的“专业名称”字段,是对应表的主关键字段;而“成绩”表的“学号”和“课号”字段,则为该表的外部关键字段,用来联系“学生”表和“课程”表。

3.1.5确定各表之间的关系

到目前为止,已经把信息分成了各个表,在每个表中可存储各自的数据。

可是,这些表是独立的,还需要在这些表之间定义关系。

VF6将利用这些关系来查找数据库中有联系的信息并将它们重新组合,得到有意义的信息。

1.一对一关系

两表间的一对一关系不经常使用,因为在许多情况下,可将两个表中的信息合并成一个表。

也可能出于某种原因不想合并,比如,有些信息是不常用的,或者某些信息是机密的,不应给每个人看到。

例如“学生登记卡”中保留的一些特殊信息(如病例资料或受到的奖励及处分等),这些信息不需要经常查看,或者只能由学校的某些授权单位查看。

所有可创建一个以“学号”为主关键字的单独表来存储这些信息,学生基本情况表与这张表是一对一的关系。

2.一对多关系

一对多关系是关系型数据库中最普遍的关系。

例如“专业”表和“学生”表之间就是一对多的关系,因为一个学生只能有一个专业(这里不考虑第二学历的情况),而每个专业则有多个学生。

3.多对多关系

在具有多对多关系的两表之间,如果将一个表的主关键字添加到另一个表中,那么就会出现同一信息保存多次的情况,这样不利于信息的管理和维护。

因此,在设计数据库时,应将多对多关系分解成两个一对多关系,其方法就是在具有多对多关系的两个表之间创建第3个表。

在VF6中,把用于分解多对多关系的表称为“纽带表”,因为它们在两个表之间起着纽带的作用。

纽带表可能只包含了它所连接的两个表的主关键字也可以包含其他信息。

在纽带表中,两个字段连在一起就能使每个记录具有唯一值。

例如,“学生”表和“课程”表之间就是多对多的关系:

每门课程可以有多个学生选修,同样一个学生也可以选修多门课程。

而“成绩”表就是“学生”表和“课程”表之间的纽带表,通过“成绩”表把“学生”表和“课程”表联系起来。

比如,通过“学生”表和“成绩”表,可以查出某个学生各门功课的成绩;而通过“课程”表和“成绩”表,可以查出某门课程都有哪些学生选修,以及这门课程的考试成绩等信息。

如果考虑到一个教师可能不止开一门课,而同一门课也可能有几位教师同时讲授的情况,那么“教师”表和“课程”表也是多对多的关系。

为此,也应该设置一个纽带表,以把“教师”表和“课程”表分解成两个一对多关系。

基于以上考虑,在“教学管理数据库”中再增加两个表,“学生其他情况”表和“任课”表。

将原来“学生”表中的一些不常用或需要保密的字段移入“学生其他情况”表中;而“任课”表作为“教师”和“课程”表之间的纽带表,应将“教师”表的主关键字“教师编号”和“课程”表的主关键字“课号”放入其中。

调整后的“学生”表、“学生其他情况”和“任课”表中的字段,分别如表3.8~表3.10所示。

 

表3.8“学生”表中的字段

字段名

学号

姓名

性别

出生日期

专业

入学成绩

贷款否

照片

简历

类型

C

C

C

D

C

N

L

G

M

宽度

7

8

2

8

10

5.1

1

4

4

 

记录

0103001

王丽丽

1983-3-23

外贸

626.5

.T.

0103002

王小刚

1983-7-20

外贸

641.5

.F.

0101019

张红军

1982-4-2

中文

450

.F.

9901009

乌兰

1981-5-6

中文

480

.F.

0108015

高丽雅

1983-8-23

数学

587.5

.T.

0008035

达古拉

1982-7-25

数学

600.5

.F.

9909010

李天宁

1981-2-21

计算机

622.5

.T.

0109039

邬军

1983-6-3

计算机

654

.T.

9909018

赵欣欣

1982-4-12

计算机

652

.F.

9902010

马小莎

1981-5-21

英语

522.5

.F.

表3.9“学生其他情况”表

字段名

学号

身份证

籍贯

家庭住址

电话

特长

奖励

处分

病史

类型

C

C

C

C

C

C

C

C

C

宽度

7

18

10

50

15

60

60

60

60

 

记录

0103001

1101081983

0323011A

安徽

北京海淀区江岸小区34幢3单元302

62313380

唱歌

高中时连续三年三好生

0103002

4206231983

07200101

湖北

湖北襄樊市白马小区3幢2单元304

4741873

跳高

足球

高中时被评为特等生

0101019

5301201982

04020233

云南

云南昆明市江北小区4幢3503219单元502

4133224

围棋

0108015

5301201981

05060231

云南

云南昆明市江北小区4幢3单元502

503219

跳舞

篮球

0008035

1101081983

08230112

湖南

北京海淀区育新小区64幢1302

62338090

排球

足球

2000年被评为三好学生

9909010

1101081982

0725012A

江苏

北京海淀区永生小区13幢2单元302

82903132

讲演

0109039

1101081981

05210132

四川

北京西城区方生小区34幢3单元402

65883030

集邮

2000年获校集邮展三等奖

肺炎

9909018

1101081983

06030122

四川

北京海淀区富润小区3幢402

63227878

象棋

1999年获北京数学竞赛一等奖

因作弊受处分

9902010

1101081982

04120224

黑龙江

北京海淀区阳光小区2幢3单元101

62113434

长跑

足球

2000年获北京市长跑第2名

0108015

1101081981

0521011X

黑龙江

北京海淀区金星岸小区5幢4单元302

67857979

摄影

1999年获优秀作品奖

表3.10“任课”表

字段名

教师编号

课号

字段名

教师编号

课号

类型

C

C

类型

C

C

宽度

5

6

宽度

5

6

 

记录

02012

02005

 

记录

09001

09003

02006

02005

09003

09004

09003

09002

09001

09005

09001

09001

02006

02006

09003

09001

02012

02001

09001

09002

02012

02002

这样,在“教学管理数据库”中共有7个表:

“学生”、“教师”、“课程”、“任课”、“成绩”、“专业”和“学生其他情况”。

其中“学生”表和“学生其他情况”表是通过“学号”联系起来的一对一的关系,而“专业”表与“学生”表、“学生”表与“成绩”表、“课程”表与“成绩”表、“课程”表与“任课”表、“教师”表与“任课”表之间都是通过对应字段联系起来的一对多关系。

在一对多关系中,位于“一”方的表称为“父表”,和父表有关系的对应表为子表,父表也称为主表或主控表,子表又称为相关表或受控表。

主表是一对一或一对多关系中被其他表所引用的表,相关表是引用其他表中字段的表。

在一对一或一对多关系中,父表用于建立关系的字段必须是主关键字,而子表中用于建立关系的字段是外部关键字。

3.1.6完善数据库

在设计数据库时,由于信息复杂和情况变化会造成考虑不周,如某些表没有包含属于自己主题的全部字段,或者包含了不属于自己主题的字段。

此外,在设计数据库时经常忘记定义表与表之间的关系,或者定义的关系不正确。

因此,在初步确定了数据库需要包含哪些表、每个表含哪些字段以及各个表之间的关系以后,还要重新研究一下设计方案,检查可能存在的缺陷,并进行相应的修改。

只有通过反复修改,才能设计出一个完善的数据库系统。

3.2创建数据库

数据库设计完成后,就可以创建数据库了。

VF6数据库文件的扩展名式DBC。

数据库可以单独使用,也可以合并到一个项目中,用项目管理器进行管理。

3.2.1建立数据库文件

所有相关联的数据库对象,例如表、视图、连接和存储过程,都存放在一个数据库容器中,在数据库设计完成后,需要在VF6中建立起相应的数据库文件,然后才能在数据库中添加数据库对象。

可以使用向导、设计器创建数据库,也可以使用CREATDATABASE命令来创建数据库。

下面结合“教学管理数据库”的建立,讨论如何创建数据库。

利用“数据库设计器”创建数据库

【例3.1】利用“数据库设计器”来创建“教学管理数据库”。

①在项目管理器中选择“数据”选项卡,然后选择“数据库”,单击“新建”按钮,打开“新建数据库”对话框,如图3.1所示

 

图3.1新建数据库对话框

②在“新建数据库”对话框中单击“新建数据库”按钮,打开“创建”对话框。

③在“创建”对话框中,确定数据库的类型、名称和保存位置。

其中数据库类型和保存位置是默认的(因为已经建立了工作目录)不需要改变,但应在“名称”文本框中输入用户自己给数据库取的名字。

在这里输入“教学管理数据库”。

④单击“保存”按钮,系统将打开“数据库设计器”对话框,操作界面参见图3.21。

打开“数据库设计器”对话框的同时会在屏幕上出现一个数据库设计器工具栏。

可以用数据库设计器工具栏快速访问与数据库相关的选项。

“数据库”菜单中包含了各种可以用的数据库命令。

此外,在“数据库设计器”中单击鼠标右键,可以显示出快捷菜单。

到此为止,“教学管理数据库”已经建立。

单击“数据库设计器”右上角的关闭按钮,画面就回到“项目管理器”窗口中,这时,可以看到刚刚建立的“教学管理数据库”已经显示在项目管理器窗口中,结果参见图2.13。

在创建数据库的同时,系统也建立了表、本地视图

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1