Visual FoxPro 程序设计
关系名。关系表示为Book_id(图书id,书名,作者,单价,版次,出版社,出版日期,备注)。
(2) 关系运算
在关系数据库中查询用户所需数据时,需要对关系进行一定的关系运算。基本关系运算主要有两类:一类是传统的集合运算(并、差、交、笛卡儿积),另一类是专门的关系运算(选择、投影和联接三种)。
选择(Selection)运算是从关系中查找符合指定条件元组的操作。 投影(Projection)运算是从关系中选取若干个属性的操作。
联接(Join)运算是将两个关系模式的若干属性拼接成一个新的关系模式的操作,对应的新关系中,包含满足联接条件的所有元组。
①选择(Selection)
选择运算是从关系中查找符合指定条件元组的操作。
以逻辑表达式指定选择条件,选择运算将选取使逻辑表达式值为真的所有元组。选择运算的结果构成关系的一个子集,是关系中的部分元组,其关系模式不变。
选择运算是从二维表格中选取若干行的操作,在表中则是选取若干个记录的操作。 例如,按照出版社=\清华大学出版社\的条件进行选择运算,可得到如图3-7所示的结果。
图3-7 选择运算
②投影运算(Projection)
投影运算是从关系中选取若干个属性的操作。投影运算从关系中选取若干属性形成一个新的关系,其关系模式中属性个数比原关系少,或者排列顺序不同,同时也可能减少某些元组。因为排除了一些属性后,特别是排除了原关系中关键字属性后,所选属性可能有相同值,出现相同的元组,而关系中必须排除相同元组,从而有可能减少某些元组。
投影是从二维表格中选取若干列的操作,在表中则是选取若干个字段。 例如,选取图3-5中书名、单价、出版社三列的投影操作,可得到如图3-8所示的结果。
6 Page 模块三 数据库设计
图3-8投影运算
③联接(Join)
联接运算是将两个关系模式的若干属性拼接成一个新的关系模式的操作,对应的新关系中,包含满足联接条件的所有元组。联接过程是通过联接条件来控制的,联接条件中将出现两个关系中的公共属性名,或者具有相同语义、可比的属性。
联接是将两个二维表格中的若干列,按同名等值的条件拼接成一个新二维表格的操作。在表中则是将两个表的若干字段,按指定条件(通常是同名等值)拼接生成一个新的表。
例如,将表3-1和表3-3中若干列,以“借书证号”列为依据,联接生成一个新的表格,结果如图3-9所示。
图3-9 联接运算
任务一 数据表
任务描述表是对数据进行有效的加工、管理,使数据更能显示出它的价值,由于表可以独立于程序,因而表使得数据得以共享,同时使数据得到充分的利用。Visual Foxpro中的表可分为自由表、数据库表两种。本任务讲的表是针对自由表而言的,数据库表将在任务二中介绍。本任务主要介绍表的建立、表的基本操作。
Page 7
Visual FoxPro 程序设计
子任务一 创建表
1、案例展示
由第一章的对图书管理系统的分析,我们需要创建3个表,t_book,t_reader,t_borrow。根据以上的分析,三个表的结构如下:
在“sf_books”数据库中创建“t_book.dbf”的图书表文件,其表结构如表3-1所示。
表3-1 “t_book”表 字段名 图书ID 书名 作者 单价 版次 出版社 出版日期 备注 类型 C C C N C C D M 宽度 5 20 16 6 2 16 8 4 小数位2 数 在“sf_Books”数据库中创建一个名为“t_reader”的读者表,其表结构如表3-2所示。
表3-2 “t_reader”表
字段名 借书证号 姓名 性别 出生日期 班级 备注 类型 C C C D C M 宽度 4 10 2 8 8 4
在“sf_Books”数据库中创建一个名为“t_borrow”的借阅表,其表结构如表3-3所示。
表3-3 “t_borrow”表
字段名 借书证号 图书ID 借书日期 还书日期 标记 类型 C C D D C 宽度 4 5 8 8 2 (1)使用“表设计器”创建表
使用“表设计器”可以方便、直接地创建表,我们既可以通过“项目管理器”的“数据”选项卡使用“表设计器”创建;也可以从“文件”菜单中使用“表设计器”创建。前一种方法在前面创建“项目管理器”时已介绍,这里仅介绍从“文件”菜单中创建表。
①创建表结构 操作步骤:
第1步:从“文件”菜单中选择“新建”。出现如图3-10所示的对话框:
8 Page 模块三 数据库设计
图3-10 新建对话框
在单选框中选取“表”。
第2步:选取“新建文件”按钮,在“输入表名”中输入我们要建的表名“t_book”,选取“保存”按钮。后出现如图3-11所示的表设计器:
Page 9
Visual FoxPro 程序设计
图3-11 表设计器
这里有三个选项卡:“字段”、“索引”和“表”,默认的是“字段”选项卡。 第3步:从第一行开始依次输入(或选择):
字段名:在“字段名”选项卡中键入字段名“图书id”,因为图书有不同的分类,比如计算机类以字母“T”开头,小说以“H”开头等,后面是数字的编号如“T0001”。
在“类型”区域中,选择列表中的某一字段类型:字符型。注意:字段的数据类型应与将要存储在其中的信息类型相匹配。
在“宽度”列中,设臵以字符为单位的列宽,使字段的宽度足够容纳将要显示的信息内容。注意:一个汉字需占两个字符。在这里根据需要宽度设为5。
字段“单价”的类型是“数值型”,需设臵“小数位数”框中的小数点位数。根据需要我们设定为2。
字段“出版日期”设臵为日期型,用来存放日期,Visual FoxPro 6.0支持2000年型的日期数值。格式为:月/日/年,如:04/28/97,其中的年份如果输入97,则系统默认为1997,将光标条移到表中该字段时就会显示“04/28/1997”,如果输入小于48的数(如45)则系统默认为2045,因此,最好输入完整的年份。
字段“备注”设臵为备注型,又称内存型,它的长度随输入数据的长度而定,它的存储和表中其他数据是分开的,存放在扩展名为“.FPT”的文件中。
如果希望为字段添加索引,就在“索引”列中选择一种排序方式。
10 Page