第四维度学习基础知识
为什么数据字段是 4D 应用程序的基础
在 4D 中,结构 (Structure) 是整个应用程序的蓝图。在构建单个表单或编写一行 4D 代码之前,您需要定义保存数据的表以及这些表中的字段。下游的所有内容——表单、值列表、查询、关系、报告——都构建在这个结构之上。只要字段定义正确,应用程序的其余部分就会水到渠成。如果定义错误,您将花费数年时间去弥补那些无法轻易撤销的决定。
最后一点是理解 4D 数据字段模型最重要的一点:数据字段一旦创建,就无法删除。 这不是 Bug 或疏忽,而是 4D 的一种深思熟虑的设计理念(最初由 Laurent Ribardière 开发,并由 4D Inc.,前身为 ACI,推广了数十年),该理念优先考虑结构稳定性和数据完整性,而非随意的模式 (schema) 变更。字段在表的内部结构中占据一个永久槽位,且 4D 在数据库的整个生命周期内都会保留该槽位。
这对您的工作方式有实际影响,并构成了本文中的实用建议。
要点
- 4D 数据字段一旦创建,无法删除 —— 只能重命名、改变用途或隐藏。
- 单击数据字段区域(表名称下方的方块)可打开“字段属性 (Field Properties)”;单击表名称则会打开“表属性 (Table Properties)”。
- 文本 (Text) 字段最多可容纳 32,000 个字符;Alpha 字段有长度限制(默认 20,最大 80),且是唯一可用作关系键 (relationship keys) 的类型。
- 您创建的超出可见行的字段仍然存在 —— 您只需拉伸表格或使用向上/向下箭头即可查看它们。
- 诸如年龄 (Age) 之类的计算字段不在“结构”中定义;计算逻辑是在您构建或编辑表单时附加的。
- 让“结构”窗口保持打开状态(而不是关闭它),可以避免在准备好之前被强制推入“用户 (User)”模式。
创建您的第一个数据字段
我们现在来到有趣的部分:创建数据字段。虽然有趣,但它具有上述那个烦人的特性 —— 字段一旦创建,就无法删除。那么如果您犯了错误该怎么办?您有三个实用的选择:
- 重命名它。 如果您不小心创建了 “Frist Name”,请将其重命名为 “First Name” 然后继续。
- 稍后重新调整用途。 今天不需要的字段明天可能会有用。正是出于这个原因,许多经验丰富的 4D 开发人员会保留少量备用字段。
- 隐藏它。 如果字段中没有数据,它不会显著影响程序的大小或运行。空字段在运行时几乎不产生任何开销。
要创建第一个数据字段,请双击数据字段区域中的 Customers 表,如图 8 中的箭头所示。单击的位置至关重要。如果您单击表名称区域,将再次弹出“表属性”窗口。单击表名称下方的方块(数据字段区域)则会弹出字段属性窗口。
这种点击目标的区别几乎会让每个新手感到困惑。表名是用于表级设置的控件;其下方的方块网格是字段列表。请学会瞄准方块。
Related: — The long-running for teams that need custom apps on desktop, web, and mobile from a single file..
选择正确的数据类型
在“字段属性”窗口打开的状态下(图 9),在字段名称 (Field Name) 中输入 “First Name”,并在数据类型 (data Type) 中选择文本 (Text)。文本字段最多可容纳 32,000 个字符 —— 足以容纳姓名、注释、描述和大多数自由格式的内容。
完成后,单击 Apply,表格将显示第一个数据字段(图 10)。
现在,在“示例数据库结构 (Structure for Sample Database)”窗口中选择下一个数据字段区域并重复操作:
Our pick: — A spreadsheet-simple interface sitting on top of a real relational database, with automations, views, and shareable interfaces..
- 创建一个名为 “Last Name” 的文本字段。
- 创建一个名为 “Address” 的字段,但将 Address 设为 Alpha 类型字段。
Text 和 Alpha 之间的区别比乍看起来更重要。
Alpha 字段可以容纳指定为字段长度的最大字符数。默认值为 20,最大值为 80 个字符。如果您将最大长度设置为 20,程序将根本不允许您输入更多内容 —— 该字段在输入时会强制执行其自身的限制。这使得 Alpha 非常适合简短的、固定用途的值:代码、缩写、状态标志,以及最关键的 —— 关系键。
Alpha 字段是唯一可用于关系键的字段。如果您计划将两个表链接在一起(例如,Customers 到 Orders),则至少一侧的链接字段必须是 Alpha。这是一个结构性约束,而非偏好,这也是在分配类型前需要仔细考虑的原因之一。
快速决策参考表:
| 使用场景 | 推荐类型 | 原因 |
|---|---|---|
| 姓名、注释、描述 | Text | 最多 32,000 个字符,无固定限制 |
| 短代码、状态标志、用作键的 ID | Alpha | 强制长度,可用作关系键 |
| 日期、金额、数量 | 数字/日期类型 | 支持计算和排序 |
| 根据其他字段计算的值(如年龄) | 在表单上定义,而非在结构中 | 保持结构简洁 |
在结构窗口中查看所有字段
请注意图 11 左侧,Customers 表中仅显示了三个数据字段。您即将创建第四个名为 “City” 的字段,但要查看它,您必须将表格拖得更长或使用表格顶部的向上和向下箭头来显示其他字段。
这里有两个实用注意事项:
- 如果您继续创建字段,它们确实会被添加到表中 —— 但不可见。数据就在那里,只是显示区域不够高。
- 如果您停止操作后再次返回创建数据字段,您必须将表格拉伸到出现空数据字段行的位置,然后单击该行以继续。您无法向一个看不见的列表追加内容。
- 箭头仅在字段数量多于显示数量时才会出现,因此它们的存在本身就是一个有用的信号,表明您有隐藏行。
在拉伸表格时,有时会比较困难 —— 您必须精准地抓住边缘。稍加练习就会变得很容易(图 12)。
关于年龄等计算字段的注释
数据字段 “Age” 稍后将根据 Date 和 Date of Birth 数据字段计算得出。目前,它只是一个数据输入字段。将其设为计算字段必须在创建或编辑表单时完成。
这是一个微妙但重要的架构点。在 4D 中,结构定义存在什么数据;表单定义数据如何呈现和计算。像 Age 这样的字段是一个派生值 —— 它每天都在变化,因此将其存储为静态数据是错误的。通过在表单级别附加计算,您可以确保每当记录显示时,Age 始终是最新的。
如果您有 Microsoft Access 或 FileMaker 等工具的背景,这种分离可能会感觉不习惯。在 4D 中,将派生值排除在结构之外的原则可以带来更干净的数据和更少的陈旧字段。关于数据库模式如何分离存储数据和派生数据的更广泛背景,请参阅维基百科关于数据库规范化的文章,其中解释了为什么通常不鼓励存储冗余的计算值。
完成并避免默认表单陷阱
完成数据字段创建后,单击 Done 按钮关闭“字段属性”窗口。
现在请注意:在没有创建任何表单的情况下,如果您关闭 Structure for Sample Database 窗口,系统将询问您是否要创建默认表单 (default forms)(图 14)。如果您选择 “No”,窗口将关闭,您将被带入用户 (User) 模式。由于我们尚未准备好进入用户模式,因此暂时将 Structure for Sample Database 窗口保持打开状态。
这是一个常见的早期绊脚石。新开发人员关闭结构窗口,拒绝默认表单,然后突然发现自己处于一个没有任何可运行内容的运行时环境中。解决方法很简单 —— 重新打开结构 —— 但这个教训值得内化:在 4D 中,结构(设计时)和用户(运行时)模式是不同的环境,您需要有意识地在两者之间切换。
如果您好奇 4D 如何融入更广泛的快速应用程序开发平台版图,维基百科关于低代码开发平台的概述是了解 4D 所帮助开创的这一类别的有用参考。
尽早构建字段的最佳实践
由于字段是永久性的,前期的少量规划可以节省后期的大量痛苦。请养成以下习惯:
- 一致地命名字段。 确定一个约定(例如 “First Name”, “Last Name”, “Date of Birth”)并统一应用。一致性使表单和代码的构建变得更加容易。
- 为键保留 Alpha 字段。 如果某个字段将来会参与关系,请从一开始就将其设为 Alpha。之后无法转换。
- 将派生值排除在结构之外。 年龄、总计和类似的计算值应放在表单或方法中,而不是作为存储字段。
- 留几个备用字段。 由于无法删除,拥有未使用的可用槽位可以为您提供适应空间,而不会弄乱可见的模式。
- 随手记录。 为每个字段的用途写一段简短注释,将为您未来的自己以及任何队友节省大量的猜测时间。
关于支撑这些决策的关系数据库设计原则的权威指导,PostgreSQL 文档 提供了关于数据类型和模式设计的优秀的、供应商中立的参考,尽管 4D 的具体实现有所不同。
常见问题
4D 中的数据字段创建后可以删除吗?
不可以。一旦在 4D 结构中创建了数据字段,就无法将其删除。您的选择是重命名它,稍后将其重新调整为其他用途,或者干脆隐藏它。没有数据的空字段不会显著影响程序的大小或运行,因此保留未使用的字段通常是无害的。
文本字段和 Alpha 字段有什么区别?
文本字段最多可容纳 32,000 个字符,且没有固定长度限制。Alpha 字段有长度限制 —— 默认为 20 个字符,最大值为 80 —— 并且程序在数据输入时强制执行该限制。至关重要的是,Alpha 字段是唯一可以用作关系键的字段类型。
为什么我看不到刚刚创建的新数据字段?
如果您继续创建超出表可见行的字段,它们会被添加但不会显示。要查看它们,请将表格拖得更长,或使用表格顶部的向上和向下箭头。箭头仅在字段数量多于表格显示能力时才会出现。
如何让像年龄这样的字段自动计算?
计算字段(如 Age)不在结构中定义。相反,计算逻辑是在您创建或编辑表单时附加的。Age 字段首先被创建为一个普通的数据输入字段,随后在表单级别添加基于 Date 和 Date of Birth 的计算。
如果我在创建表单之前关闭“结构”窗口,会发生什么?
如果您在未创建任何表单的情况下关闭 Structure for Sample Database 窗口,4D 会询问您是否要创建默认表单。如果您回答 “No”,窗口将关闭,您将被带入用户模式。由于您尚未准备好运行应用程序,因此最好在构建好表单之前保持结构窗口打开。
为什么点击表格有时会打开错误的窗口?
单击的位置决定显示哪个窗口。单击表名称区域将打开“表属性”窗口,而单击表名称下方的数据字段区域中的方块将打开“字段属性”窗口。当您想要添加或编辑字段时,请点击方块网格。
Build a Custom App Free for 15 Days
A low-code app builder that plugs into the wider Zoho suite and prices per user rather than per app.