在Visual FoxPro 6.0中,数据库是由若干个数据表组成的,这也正是它与之前版本的区别。通过在数据库中创建表,可以设置每个表字段的有效性规则,以及记录的有效性设置等,从而达到数据录入的完整性与准确性。
本章主要内容
& 设计数据库的思路
& 创建数据的方法
& 数据库的维护
& 数据库中表的字段及记录的有效性设置
& 数据库中表的关系及完整性参照
在一个数据库应用系统中,数据库设计非常关键,直接影响到数据的使用和存储以及今后的程序设计。
数据库设计的关键在于理解数据库管理系统保存数据的方式。为了准确高效地提供信息,Visual FoxPro将不同主题的信息保存到不同的表中,从而可以使数据的组织工作和维护工作更简单,同时也保证应用的高效性。
Visual FoxPro数据库设计的第一步,是明确创建数据库的目的和如何使用数据库,即数据库中要存放哪些信息。而要明确数据库的目的,就必须充分了解用户的需求。
要了解用户的需求,最常见的方法就是“访谈”和“搜集报表”。
“访谈”是使用得最广泛且最有效的方法,它是由系统分析师直接与实际使用人员或主管面对面讨论系统的作业情况与需求。在访谈之前必须先拟定好目的、对象及问题,这样才能做好访谈的工作。
“访谈”虽然是很有效的方法,但仍有可能因人为因素而有所疏忽,因此还需要使用搜集报表的方法。
报表是记载信息的主要媒体,若能将所有报表加以整理,必然有助于数据需求的分析。另外,在搜集报表时,对报表的重要性、多少时间打印一次、数量的多少等信息,也必须加以收集。
确定数据库中的表是数据库设计过程中技巧性最强的一步。在确定表时,要注意尽量避免在一张表中存储重复的信息,从而导致不良的结果。
存储重复的信息将造成如下的后果:
(1)表中数据量的成倍增加和用户数据录入量的增加。
(2)重复的录入容易导致错误。
(3)有用的信息易被删除。
在确定字段时,必须遵循如下设计原则。
(1)每个字段直接与主题相关。必须确保一张表中的每个字段直接描述该表的主题。
(2)不要包含可推导得到或需计算的数据字段。一般不必将计算结果存储在表中,例如,包含“出生年月”字段则不必再包含“年龄”字段,因为年龄可以通过出生年月计算得到。
(3)收集所需的全部信息。确保所需的信息都已包含在表中,或者可以由表中字段推导出来,所需信息的多少应根据实际应用的需要而定。
(4)要以最小的逻辑单位存储信息。如果一个字段中包含了多种信息,那么以后要获取单独的信息就很困难,应尽量把信息分解成最小的逻辑单位。
(5)每张表都必须明确主关键字。利用主关键字可以连接多张表中的数据,将相关的数据组合起来。
Visual FoxPro的表的关系有3种,即一对一关系、一对多关系和多对多关系。
(1)一对一关系(1∶1)。一张表的一个记录只能对应着另外一个表的一个记录。
(2)一对多关系(1∶m)。父表中的一个记录对应着子表中的多个记录,而子表中的多个记录只对应父表中的一个记录。例如,学生表与成绩表之间的关系,课程表与成绩表之间的关系等。
(3)多对多关系(m∶n)。甲表中的一个记录对应着乙表中的多个记录,而乙表中的一个记录也对应甲表中的多个记录。以学生表与课程表之间的关系为例,该关系需要建立第三张表,把多对多关系分解为两个一对多关系,这第三张表就称为“纽带表”(把两张表的主关键字都放在纽带表中)。实际上,成绩表就是学生表与课程表之间的纽带表。
分析每张表,确定一张表中的数据与其他表中的数据的关系。在需要时,可在表中加入字段或创建一张新表来明确关系。