使用相关表 > 规划关系数据库
 
规划关系数据库
使用关系图像创建关系数据库时,先在纸上或屏幕上设计您的数据库。在数据库术语中,您制定的规划称为实体关系图。
有关设计 FileMaker Pro 解决方案的一般步骤,请参阅创建解决方案
要规划关系数据库:
1. 确定您的关系数据库需要的信息类别。这些类别将成为 FileMaker Pro 中的
例如,销售数据库可能包括以下表:客户,包括客户信息;发票,包括订单信息类产品,包括产品信息。
客户表发票表和产品表
2. 确定表如何相互关联。可以通过撰写描述类别如何交互的简单句子来完成此项操作,如“客户订购产品”和“跟踪客户订单的发票”。
3. 将表连接到另一个表以显示它们之间的关系。例如,客户可以有发票,发票可以有产品。
如果某个表与另一个表没有关系,此表可能就没有必要。在本例中,员工表没列入这一关系数据库。
显示相互关系的三个表,员工表被忽略
4. 通过有代表性的符号连接各个表以指示表之间的关系类型。
一对一关系中,表 A 中的一个记录与表 B 中的一个记录相匹配。
一对多关系中,表 A 中的一个记录与表 B 中的多个记录相匹配。
多对多关系中,表 A 中的多个记录与表 B 中的多个记录相匹配。
请参阅关于关系
显示互相之间关系的三个表
本例显示:
一个客户可能有多个发票
一个产品可以出现在多个发票上
一个发票可以有多个产品
5. 注意,在发票和产品之间存在多对多关系。不能在两个表之间直接建立多对多关系。
关系数据库可以直接处理一对一和一对多关系。必须使用中间表解决多对多关系,中间表可以将多对多关系拆分成为两个一对多关系。为解决本例中的问题,添加一个中间表行项目以存储售出产品的信息。
用行项目表作为联接表来调节关系
在解决多对多的关系后,本例显示:
一个客户可能有多个发票
一个发票可以有多个行项目
一个产品可以出现在多个行项目上
6. 确定每个表将需要的字段
每个表只有一个主题,且表中的所有字段只描述该主题。例如,“客户”表中一条记录中的各字段一起存储一位客户的所有相关信息。
也正是因为如此,您应对每位客户指定一个唯一的标识号码。在您的数据库中,这是主键。除非已有要添加的新客户,否则您无需将客户标识号码输入到表中,所以客户号码的存在决定记录的存在与否。“客户”表可能还具有客户的姓名、地址和电话号码等字段。
“产品”表可能具有产品标识号码、每个产品的单价和库存数量等字段。“行项目”表可能具有产品和发票标识号码、名称、单价、数量以及各个售出产品的总价等字段。“发票”表可能具有发票标识号码、订单日期和销售员等字段。
每个表列出的字段
7. 确定每个表的主键字段(或用于多标准关系的字段),并在您的规划中指出每个字段。然后指示每个月中的一个或多个外键字段。
在本例中:
主键是客户::客户 ID、发票::发票 ID、产品::产品 ID 以及行项目::项目 ID
外键是发票::客户 ID 以及行项目::产品 ID
要在发票表中显示客户数据,必须在两个表之间设有公共字段以建立一种关系。客户 ID 就是该公共字段。在客户表中,它是主键;在发票表中,它是外键。
在行项目表中,产品 ID 是行项目和产品表之间的公共字段。在产品 ID 表中,这个字段是主键;在行项目表中,它是外键。
这些键字段是某种类型的匹配字段。请参阅关于关系
每个表中循环出现的键字段
8. 针对每个表,决定哪些字段要存储数据,以及要从其他(相关)表使用哪些字段。
根据表的主题,您可以看到在何处存储数据有意义以及在何处使用相关表的数据。除了键字段以外,所有字段仅应在数据库中出现一次。清除不符合表主题的字段摹本。
清理表中不必要的字段
9. 连接每个主键至其相关表中的相应外键。
各表的键字段含有与关系标准相匹配的数据,各表之间的关系也因此而建立。
表中的键字段之间的关系
此计划现在表明:
一个客户可以有多个不同的发票,但是一个发票只能对应一个客户
发票可以有多个行项目,但是单个行项目只出现在一个发票上
产品可以出现在多个不同的行项目上,但是单个行项目只有一个产品
相关主题 
关于关系
使用关系图
创建和更改关系