第四维度学习基础知识
欢迎阅读 Jeff Hopkins 撰写的 4th Dimension Learning Basics 第二部分 — 2000 年 2 月 2 日(2000 年 2 月 18 日更新)。网页设计由 David Graham 完成。Jeff Hopkins 是 4D 合作伙伴、FileMaker Pro 专家开发人员、HPO SOFT 所有者以及非营利性数据库开发人员协会 (Association of Database Developers, Inc.) 的创始人。在不担任上述职务时,他会孜孜不倦地在各种数据库讨论列表中帮助他人。。
关键要点
- 在 4D 中,请按特定顺序构建:表 → 数据字段 → 表单 → 计算/方法。跳步会导致返工。
- 您可以构建一个完整且实用的单表平面文件应用程序,而无需编写任何一个方法 —— 除非使用一个可选的计算(即“对象方法”)。
- 4D 的设计模式菜单栏会根据当前打开的窗口而变化。如果“结构 (Structure)”菜单消失,请关闭所有打开的窗口(而非 4D 应用程序本身),它就会重新出现。
- 4D 和 FileMaker Pro (FMP) 共享低代码理念,但 4D 在前期公开了更多结构 —— 这就是为什么创建顺序更为重要的原因。
- 在学习过程中,请创建几个小型测试数据库而非一个大型数据库;4D 的行为有时令人惊讶,通过实验是内化其逻辑最快的方法。
- 一旦您掌握了此处的平面文件基础知识,相关文件、方法、计算、运行时、编译版本和网络托管都将触手可及。
i. 简介
如第一部分所述,在接下来的文档中,4D 指 4th Dimension,FMP 指 FileMaker Pro。本文档是在 Macintosh 上创建的。虽然在 Windows 上使用 4D 时,某些屏幕截图可能略有不同,但相同的操作步骤在两个平台上均适用。
许多人会说,要创建 4D 程序必须成为一名程序员。虽然具备编程能力肯定有好处,但就像使用 FMP 一样,您无需接触编程或脚本编写也能完成很多工作。本部分将引导读者完成一个简单的单表平面文件的开发。除了一种简单的计算(称为“对象方法”)之外,将不会涉及任何方法或计算。
我这样做的原因是,一旦您掌握了接下来的内容,就可以继续学习真正精彩的功能 —— 相关文件、方法、计算、运行时、编译版本和网络托管。
我发现,在初学阶段,最困难的部分是理清自己在 4D 中的位置,因为 4D 的表现并不总是符合您的预期。我建议按照本部分所述创建多个测试数据库,并尝试不同的选项。在某些情况下,您会感到惊喜,但在其他情况下,您起初可能会感到沮丧。
第二部分将展示如何:
Related: — A spreadsheet-simple interface sitting on top of a real , with automations, views, and shareable interfaces..
- 创建新数据库
- 设置 4D 数据库 属性
- 创建表
- 创建数据字段
- 创建表单
- 创建值列表(选择列表)
- 输入样本数据
数据库创建顺序
理解创建 4D 数据库的正确顺序对新开发人员很有帮助。首先必须创建表 (Table)。接着创建数据字段 (Data Fields)。最后创建输入和输出表单 (Input and Output Forms)。随后为数据字段创建计算/方法 (Calculations/Methods)。
注意:虽然还有许多其他细节需要处理,但上述内容是本部分涵盖的基础。
这种顺序并非随意设定 —— 它反映了 4D 结构编辑器的运行机制。表单是一个表的布局,因此在表单引用表之前,表必须已经存在。数据字段属于一个表,因此在字段之前,表必须存在。计算或方法通常引用字段,因此这些字段必须首先存在。如果您尝试不按顺序操作,4D 要么会阻止您,要么会迫使您原路返回。
If you are shopping: — A that plugs into the wider Zoho suite and prices per user rather than per app..
一个有用的心理模型:将结构(表和字段)视为骨架,将表单视为皮肤。您不能将皮肤覆盖在尚未建成的骨架上。方法和计算则是让骨架移动的肌肉 —— 它们排在最后,因为它们依赖于对骨架形态的认知。
为什么顺序在实践中很重要
- 表优先 —— 表是一类记录(如客户、发票、产品)的容器。其他所有内容都依赖于它。
- 字段其次 —— 字段定义您实际存储的内容:名称、日期、价格、状态。请在此仔细决定字段类型,因为稍后更改字段类型可能会使现有数据失效。
- 表单第三 —— 表单是人类查看和编辑数据的方式。您可以针对同一个表构建许多表单(如输入表单、列表视图、打印报告布局)。
- 方法和计算最后 —— 这些用于自动化行为。因为它们引用字段和表单,最后构建它们可以避免引用失效。
如果您有电子表格背景,可能会倾向于立即开始输入数据。请克制这种冲动。在 4D 中,以及在任何关系数据库中,结构是基础,数据是在基础之上注入的。
返回添加或编辑表
您可能希望返回并添加新的数据字段、新表或新表单。这并不像预期的那样简单。
假设您一直在编辑一个表单,然后决定要添加另一个表。通常,在设计模式下,您会从“结构 (Structure)”菜单中选择“新建表 (New Table)”。但等等,结构菜单不见了。发生了什么?
4D 更改了设计模式的菜单栏。您必须关闭所有 4D 窗口(不是退出 4D,仅关闭打开的窗口),结构菜单才会重新出现。现在您可以查看要编辑的表或创建新表。您现在还可以编辑和创建数据字段。
要编辑或创建新表单,设计模式的“工具 (Tools)”菜单始终存在,因此不会造成混淆。
这是新 4D 开发人员最常见的困惑点之一,值得理解其发生的原因,而不仅仅是记住解决方法。4D 使用上下文相关菜单栏:您看到的菜单反映了当前具有焦点的窗口类型。当表单窗口打开时,4D 假设您正在进行表单工作,因此显示与表单相关的菜单。结构菜单(管理表和字段)仅在没有打开表单(或其他专用)窗口时显示。
导航设计模式的实用技巧
- 如有疑问,请关闭所有窗口。 关闭所有打开的窗口将使您返回到“主”状态,此时完整的“结构”菜单可用。
- 不要退出 4D。 关闭窗口与退出应用程序不同。您的数据库保持打开状态,仅关闭编辑窗口。
- 关闭前保存。 如果您有未保存的表单编辑,请有意识地关闭窗口并确认保存提示,而不是强制退出。
- 使用“工具”菜单处理表单。 由于“工具”菜单在设计模式中始终存在,表单编辑是唯一不需要执行“关闭所有窗口”操作的区域。
- 起初可能会觉得这种逻辑很反直觉。 大多数设计工具使用静态菜单栏。4D 的动态菜单栏更具上下文感知能力,但需要一两次实践才能习惯。
一旦您内化了这条规则 —— 菜单栏随窗口而变 —— 困惑就基本消失了。您不再寻找丢失的菜单,而是会问:“现在打开的是哪种窗口?”
选择字段类型和值列表
尽管本部分刻意避免编程,但有两个设计决策值得认真思考,因为它们在后期很难撤销:字段类型和值列表。
字段类型
创建数据字段时,您需要选择它保存的数据类型。4D(以及那个时代的大多数数据库)中的常见类别包括:
- 文本 / 字符串 (Text / String) —— 姓名、地址、自由格式注释。灵活但不能按数字排序。
- 数字 (Number) —— 数量、价格、ID。可排序且可用于计算。
- 日期 (Date) —— 日历日期。4D 以支持日期运算和排序的方式存储这些数据。
- 时间 (Time) —— 时钟时间和持续时间。
- 布尔 (Boolean) —— 是/否或真/假标志。
- 图片 (Picture) —— 与记录一起存储的图像或图形。
实用规则:选择最适合的具体类型。 如果值是数字,请将其存储为数字而非文本 —— 否则排序和计算会出现意外行为。如果值是日期,请将其存储为日期,以便 4D 可以按时间顺序而非字母顺序对其进行排序。
值列表(选择列表)
值列表(也称为选择列表)是一组预定义的选项,用户从中选择而非手动键入。它是 4D 中价值最高的低代码功能之一,因为它:
- 防止拼写错误 —— 避免出现 “Active”、“active” 和 “Actve” 等不统一的情况。
- 加快数据输入 —— 从列表中选择而非键入。
- 强制一致性 —— 每条记录使用相同的词汇,使报告和排序更加可靠。
值列表可以是静态的(您手动输入的固定列表,如美国各州列表或一组状态代码)或动态的(从数据中提取,如现有客户名称列表)。对于第一个平面文件数据库,静态列表是最简单且最具指导意义的起点。
如何决定:字段类型 vs. 值列表
| 决策 | 当…时选择此项 | 注意… |
|---|---|---|
| 文本字段 | 值是自由形式且不可预测时 | 无法按数字排序;容易出现拼写错误 |
| 数字字段 | 值用于数学运算或数字排序时 | 如果需要排序,请勿将 ID 存储为文本 |
| 日期字段 | 值是日历日期时 | 不同平台之间的格式差异 |
| 布尔字段 | 值确实只有两种状态时 | 不要将其用于三种状态的状态标识 |
| 静态值列表 | 选项固定且已知时 | 如果选项更改,必须手动编辑 |
| 动态值列表 | 选项来自现有记录时 | 取决于现有数据是否已经干净 |
输入样本数据
一旦表、字段、表单和值列表就位,本部分的最后一步就是输入样本数据。这并非琐碎的工作 —— 这是一个验证步骤。输入少量真实的记录可以立即揭示设计问题:
- 本应是数字的字段却接受了文本。
- 值列表中缺少您实际需要的选项。
- 表单的布局导致数据输入非常不便。
- 日期字段以意外的格式显示。
在结构仍然新鲜且易于更改时尽早输入样本数据,比在输入数百条真实记录后才发现同样的问题要廉价得多。将样本数据视为您设计的测试套件 (test harness)。
致谢
特别感谢:James Fortier 提供部分资源并帮助校对文档。
Copyright © 1994-2000 HPO Soft. All rights reserved.
常见问题
为什么 4D 设计模式下的结构菜单会消失?
4D 使用上下文相关菜单栏,因此显示的菜单取决于当前具有焦点的窗口。当表单窗口(或其他专用窗口)打开时,4D 会隐藏结构菜单并显示与表单相关的菜单。关闭所有打开的窗口 —— 但不要退出 4D 应用程序本身 —— 结构菜单就会重新出现,以便您可以编辑表和字段。
我需要成为一名程序员才能构建 4D 数据库吗?
不需要。与 FileMaker Pro 一样,您无需编写任何方法或脚本即可在 4D 中完成大量工作。本部分构建了一个完整的单表平面文件应用程序,除了一个称为“对象方法”的可选计算外,完全没有使用任何方法。当您进阶到相关文件、自动化和网络托管时,编程能力才会变得有价值。
创建 4D 数据库的正确顺序是什么?
首先创建表,然后创建数据字段,然后创建输入和输出表单,最后创建数据字段的计算/方法。这个顺序很重要,因为表单引用表,字段属于表,而方法通常引用字段——因此无序构建会强制回溯或产生损坏的引用。
什么是 4D 中的值列表,为什么我应该使用它?
值列表(也称为选择列表)是一组预定义的选项,用户可以从中选择而不是键入自由文本。它可以防止拼写错误,加快数据输入速度,并确保记录之间的一致性,从而使排序和报告变得可靠。值列表可以是静态的(您定义的固定列表)或动态的(从现有数据中提取)。
我应该将数字和日期存储为文本字段吗?
否 - 选择适合数据的最具体的字段类型。数字应存储为数字字段,以便正确排序和计算,日期应存储为日期字段,以便 4D 按时间先后顺序而不是按字母顺序(文本顺序)对它们进行排序。将数字或日期值存储为文本是初学者常见的错误,会导致稍后的排序和计算行为混乱。
为什么要创建多个测试数据库而不是一个?
4D 并不总是按照新手期望的方式运行,因此在小型一次性测试数据库中进行试验可以让您尝试不同的选项,而无需冒实际工作的风险。您会发现有些行为一开始非常方便,而另一些行为则令人沮丧,了解差异的最快方法是在安全的沙箱中通过实践重复操作。
Try FileMaker Free for 45 Days
The long-running relational database platform for teams that need custom apps on desktop, web, and mobile from a single file.