规划关系数据库

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

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

要规划关系数据库:

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

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

  2.  

    客户表发票表和产品表

  3. 确定表如何相互关联。可以通过撰写描述类别如何交互的简单句子来完成此项操作,如“客户订购产品”和“跟踪客户订单的发票”。
  4. 将表连接到另一个表以显示它们之间的关系。例如,客户可以有发票,发票可以有产品。

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

  5.  

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

  6. 通过有代表性的符号连接各个表以指示表之间的关系类型。
    • 在一对一关系中,表 A 中的一个记录与表 B 中的一个记录相匹配。
    • 在一对多关系中,表 A 中的一个记录与表 B 中的多个记录相匹配。
    • 在多对多关系中,表 A 中的多个记录与表 B 中的多个记录相匹配。

    请参阅关于关系

  7.  

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

    本例显示:

    • 一个客户可能有多个发票
    • 一个产品可以出现在多个发票上
    • 一个发票可以有多个产品
  8. 注意,在发票和产品之间存在多对多关系。不能在两个表之间直接建立多对多关系。

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

  9.  

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

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

    • 一个客户可能有多个发票
    • 一个发票可以有多个行项目
    • 一个产品可以出现在多个行项目上
  10. 确定每个表将需要的字段。

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

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

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

  11.  

    每个表列出的字段

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

    在本例中:

    • 主键是客户::客户 ID、发票::发票 ID、产品::产品 ID 以及行项目::项目 ID
    • 外键是发票::客户 ID 以及行项目::产品 ID
  13. 要在发票表中显示客户数据,必须在两个表之间设有公共字段以建立一种关系。客户 ID 就是该公共字段。在客户表中,它是主键;在发票表中,它是外键。

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

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

     

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

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

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

  15.  

    清理表中不必要的字段

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

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

  17.  

    表中的键字段之间的关系

    此计划现在表明:

    • 一个客户可以有多个不同的发票,但是一个发票只能对应一个客户
    • 发票可以有多个行项目,但是单个行项目只出现在一个发票上
    • 产品可以出现在多个不同的行项目上,但是单个行项目只有一个产品