使用相关表 > 规划关系数据库
 

规划关系数据库

使用关系图像创建关系数据库时,先在纸上或屏幕上设计您的数据库。在数据库术语中,您制定的规划称为实体关系图。

有关设计 FileMaker Pro Advanced 解决方案的一般步骤,请参阅创建定制化 App

要规划关系数据库:

1. 确定您的关系数据库需要的信息类别。这些类别将成为 FileMaker Pro Advanced 中的

例如,销售数据库可能包括以下表:客户,包括客户信息;发票,包括订单信息类产品,包括产品信息。

客户表发票表和产品表

2. 确定表如何相互关联。可以通过撰写描述类别如何交互的简单句子来完成此项操作,如"客户订购产品"和"跟踪客户订单的发票"。

3. 将表连接到另一个表以显示它们之间的关系。例如,客户可以有发票,发票可以有产品。

如果某个表与另一个表没有关系,此表可能就没有必要。在本例中,员工表没列入这一关系数据库。

显示相互关系的三个表,员工表被忽略

4. 通过有代表性的符号连接各个表以指示表之间的关系类型。

一对一关系中,表 A 中的一个记录与表 B 中的一个记录相匹配。

一对多关系中,表 A 中的一个记录与表 B 中的多个记录相匹配。

多对多关系中,表 A 中的多个记录与表 B 中的多个记录相匹配。

请参阅关于关系

显示互相之间关系的三个表

本例显示:

一个客户可能有多个发票

一个产品可以出现在多个发票上

一个发票可以有多个产品

5. 注意,在发票和产品之间存在多对多关系。不能在两个表之间直接建立多对多关系。

关系数据库可以直接处理一对一和一对多关系。必须使用中间表解决多对多关系,中间表可以将多对多关系拆分成为两个一对多关系。为解决本例中的问题,添加一个中间表行项目以存储售出产品的信息。

用行项目表作为联接表来调节关系

在解决多对多的关系后,本例显示:

一个客户可能有多个发票

一个发票可以有多个行项目

一个产品可以出现在多个行项目上

6. 确定每个表将需要的字段

每个表只有一个主题,且表中的所有字段只描述该主题。例如,"客户"表中一条记录中的各字段一起存储一位客户的所有相关信息。

也正是因为如此,您应对每位客户指定一个唯一的标识号码。在您的数据库中,这是主键。除非已有要添加的新客户,否则您无需将客户标识号码输入到表中,所以客户号码的存在决定记录的存在与否。"客户"表可能还具有客户的姓名、地址和电话号码等字段。

"产品"表可能具有产品标识号码、每个产品的单价和库存数量等字段。"行项目"表可能具有产品和发票标识号码、名称、单价、数量以及各个售出产品的总价等字段。"发票"表可能具有发票标识号码、订单日期和销售员等字段。

每个表列出的字段

7. 确定每个表的主键字段(或用于多标准关系的字段),并在您的规划中指出每个字段。然后指示每个月中的一个或多个外键字段。

在本例中:

主键是客户::客户 ID、发票::发票 ID、产品::产品 ID 以及行项目::项目 ID

外键是发票::客户 ID 以及行项目::产品 ID

要在发票表中显示客户数据,必须在两个表之间设有公共字段以建立一种关系。客户 ID 就是该公共字段。在客户表中,它是主键;在发票表中,它是外键。

在行项目表中,产品 ID 是行项目和产品表之间的公共字段。在产品 ID 表中,这个字段是主键;在行项目表中,它是外键。

这些键字段是某种类型的匹配字段。请参阅关于关系

每个表中循环出现的键字段

8. 针对每个表,决定哪些字段要存储数据,以及要从其他(相关)表使用哪些字段。

根据表的主题,您可以看到在何处存储数据有意义以及在何处使用相关表的数据。除了键字段以外,所有字段仅应在数据库中出现一次。清除不符合表主题的字段摹本。

清理表中不必要的字段

9. 连接每个主键至其相关表中的相应外键。

各表的键字段含有与关系标准相匹配的数据,各表之间的关系也因此而建立。

表中的键字段之间的关系

此计划现在表明:

一个客户可以有多个不同的发票,但是一个发票只能对应一个客户

发票可以有多个行项目,但是单个行项目只出现在一个发票上

产品可以出现在多个不同的行项目上,但是单个行项目只有一个产品

相关主题 

关于关系

使用关系图

创建和更改关系