使用关系图像创建关系数据库时,先在纸上或屏幕上设计您的数据库。在数据库术语中,您制定的规划称为实体关系图。
有关设计 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. 连接每个主键至其相关表中的相应外键。
各表的键字段含有与关系标准相匹配的数据,各表之间的关系也因此而建立。
此计划现在表明:
•一个客户可以有多个不同的发票,但是一个发票只能对应一个客户
•发票可以有多个行项目,但是单个行项目只出现在一个发票上
•产品可以出现在多个不同的行项目上,但是单个行项目只有一个产品