第五章数据库及其操作•5.1数据库的创建与维护•5.2数据库表的设置•5.3表间的永久关系与参照完整性5.1数据库的创建与维护VFP数据库实际上是一种容器,用于存储数据库表的属性与组织,以及所包含的表之间的联系和依赖与表的视图等信息。创建一个VFP数据库实际上是创建了一个扩展名为.DBC的文件,同时还会自动建立一个扩展名为.DCT的数据库备份文件以及一个扩展名为.DCX的数据库索引文件5.1.1创建数据库1.菜单方式文件—新建—文件类型:数据库—新建文件按钮—指定数据库文件名及存储路径——数据库设计器窗口•2.命令方式格式:CREATEDATABASE[〈数据库文件名〉|?]功能:创建一个数据库文件说明:(1)若需指定存储路径则使用“?”,会打开“创建”对话框,输入数据库名和选择存储位置(2)利用命令建立数据库文件并不会自动打开数据库设计器,还需要执行MODIFYDATABASE或执行“显示”菜单中“数据库设计器”才能打开。5.1.3打开、关闭、删除数据库1.打开数据库(1)菜单方式文件—打开—文件类型:数据库—选择数据库文件名—确定(2)命令方式格式1:OPENDATABASE[〈数据库文件名〉|?][EXCLUSIVE]|[SHARED]说明:[1]数据库打开后并不意味着所包含的数据表也随之打开,还需要用USE命令打开或直接在数据库设计器中执行浏览或修改操作[2]用命令打开数据库文件并不会自动打开数据库设计器,还需要执行MODIFYDATABASE才能打开数据库设计器例:OPENDATABASE学生管理MODIFYDATABASE&&打开数据库设计窗口格式2:MODIFYDATABASE〈数据库文件名〉功能:打开数据库文件,同时打开数据库设计器窗口编辑当前数据库例:MODIFYDATABASE学生管理2.关闭数据库格式1:CLOSEDATABASE功能:关闭当前的数据库文件及其数据表格式2:CLOSEALL功能:关闭所有打开的数据库文件及其表,自由表以及各类型文件3.删除数据库格式:DELETEDATABASE〈数据库文件名〉[DELETETABLES]功能:删除指定数据库文件说明:若加DELETETABLES短语,则数据库中所有数据表都被删除,否则,只删除数据库文件,原数据库中的表变成自由表。5.1.4数据库中表的基本操作1.数据库表与自由表(1)字段名长度:最长128个字符(2)字段属性:字段标题,格式,输入掩码等(3)字段与记录有效性规则(4)索引与永久关系一个数据库表只能属于一个数据库,若让它加入另个数据库,必须先移出成为自由表,再以自由表的形加入到另一个数据库中2.创建新的数据库表打开数据库—数据库设计器—右键—新建表—表设计器命令:CREATE表名&&打开表设计器建立该表3.向数据库中添加表将原有的自由表添加到数据库中成为数据库表数据库设计器—右键—添加表—选择要添加的自由表—确定命令:ADDTABEL表名4.移去或删除数据表数据库设计器—对该表右键—删除—选择是移出还是删除该表5.数据表的编辑与修改修改数据表结构数据库设计器—对该表右键—修改—表设计器修改表记录数据库设计器—对该表右键—浏览—浏览窗口/编辑窗口5.2数据库表的设置1.字段显示格式:通过控制码控制字段显示的格式。!—不管输入大写小写,一律转换成大写字母显示$—该字段输出时$显示在数据前输入掩码:通过指定输入掩码规定字段值输入时的格式A99999决定输入必须以字母开头5个数字在后面9,999.00决定整数部分的千分位和小数点位置标题:指定该字段在浏览窗口中显示的名字2.字段有效性规则:用于对输入字段数据进行有效性检查。性别字段规则:性别=“男”OR性别=“女”信息:如果不符合规则在弹出对话框中显示的文字“性别只能输入男或女”默认值:在输入记录之前给某个字段设置默认值,除非专门输入新值,默认值会自动出现在新记录该字段中。籍贯的默认值:“北京”3.记录级有效性规则规则:每输入完一条记录,根据给定的规则判断记录是否合法,不合法弹出提示对话框记录规则:出生日期{^1997-01-01}信息:不符合规则在弹出对话框中显示的文字“无效记录”4.设置触发器触发器是指在某些事情发生时触发执行的一个表达式,如果该表达式为真则执行相应事件。插入触发器:每当向表中插入或追加记录时判断插入触发器规则是否为真,真则执行插入操作。CDOW(DATE())==“Monday”更新触发器:对表中记录进行修改时执行更新触发器规则,真则执行更新操作。删除触发器:对表中记录进行删除时执行删除触发器规则,真则执行删除操作。Messagebox(“真的要删除?”,4+16+256,”提示信息”)=65.3表间的永久关系与参照完整性VFP表之间的关系有永久和临时关系两种:永久关系:一旦建立,便会作为数据库对象一直保留在数据库中。临时关系:根据操作需要临时建立,一旦建立起临时关系的表关闭或退出VFP关系自动取消数据表之间永久关系的种类:1.一对一:A表中记录在B表中有唯一一条记录对应,而B表中记录在A表中有唯一一条记录对应。例如:航空乘客信息表和乘客座位表建立关系方法:给A表和B表公共的关键字(字段)建立一个主索引或候选索引2.一对多:A表中记录在B表中有多条记录对应,而B表中记录在A表中有唯一一条记录对应。例如:学生信息表和成绩表建立关系方法:对于两张表公共的关键字,A表(父表)建立主索引或候选索引,B表(子表)建立普通索引3.多对多:A表中记录在B表中有多条记录对应,而B表中记录在A表中有多条记录对应,关系必须通过中间表C连接方可实现例如:学生信息表和课程表建立关系方法:A对C建立一对多的关系,B对C建立一对多的关系。例如:给学生表,成绩表和课程表建立永久关系。•新建数据库•在数据库设计器中新建学生表,成绩表和课程表•给学生表(父)和成绩表建立一对多的关系对学生表的学号字段建立主索引XH对成绩表的学号字段建立普通索引XH对学生表的主索引XH拖出一条线到成绩表的普通索引XH•以同样的方式给课程表(父)和成绩表建立一对多的关系对课程表的课程编号字段建立候选索引KCBH对成绩表的课程编号字段建立普通索引KCBH对课程表的候选索引KCBH拖出一条线到成绩表的普通索引KCBH5.3.2设置参照完整性对于已经建立起永久关系的两个数据表,若对其中一个数据表进行更新、删除和插入操作,会破坏数据表之间的完整性和一致性例如:具有一对多关系的学生表和成绩表(1)若只修改了父表学生表中的一条记录的学号,而造成子表成绩表中原先与其对应的记录失去对应关系(2)删除学生表的一条记录,而未删除子表成绩表中对应的记录,则子表中的记录在父表中没有对应记录(3)若子表成绩中增加一条记录,但学号字段的值是父表记录中没有,也会造成两个表的数据的不一致VFP系统提供了参照完整性生成器,指定一个数据表中执行更新、删除和插入等操作时,如何处理与其相关联的数据表中相应的数据记录。数据库设计器—鼠标右键单击永久关系连线—编辑参照完整性前提:数据库菜单——清理数据库(1)更新规则选项:设置当前父表的关键字被修改时如何更改相关子表的记录级联:用新的关键字值更新子表中所有相关记录限制:若子表中有相关记录则父表禁止更新忽略:表示允许父表更新,忽略子表中相关记录。(2)删除规则选项:设置当前父表的记录被删除时如何删除相关记录级联:系统自动删除子表中相关记录限制:若子表中有相关记录则禁止删除父表记录忽略:表示允许父表删除记录,忽略子表中相关记录(3)插入规则选项:设置在子表中插入记录或更新记录时系统如何处理限制:若父表中不存在相匹配的记录,则禁止在子表中插入记录忽略:允许在子表中插入记录。