导入
简介
让我们来了解完整性约束和数据验证。
为什么我们需要完整性约束
为了检测不合法和不一致的数据,并防止此类数据被添加到应用程序的数据库中,我们必须定义适当的完整性约束。这些约束可以被应用程序的数据验证机制用来捕捉数据错误的情况。完整性约束是用户输入并存储在应用程序数据库中的数据必须满足的逻辑条件。
例如,如果一个应用程序用于管理人员信息,包括出生日期和死亡日期,那么对于任何具有死亡日期的人员记录,都必须确保该死亡日期不早于其出生日期。
由于完整性维护在数据库管理中至关重要,关系型数据库语言SQL的数据定义语言部分支持以多种形式定义完整性约束。然而,在PHP、Java、C#或JavaScript等常见编程语言中,几乎没有任何对完整性约束和数据验证的支持。因此,在Web应用开发中采取系统化的方法进行约束验证非常重要。一种实现方式是选择一个能够充分支持这一功能的应用开发框架。
遗憾的是,许多Web应用开发框架并未提供足够的支持来定义完整性约束和执行数据验证。
完整性约束的目标
完整性约束应在应用程序中集中定义在一个位置。它们可用于配置用户界面,并在应用程序的不同部分(如用户界面和数据库)中进行数据验证。我们的目标是利用这些约束实现以下几点:
- 尽可能通过限制输入选项,防止用户在用户界面(UI)中输入无效数据。
- 通过在用户界面中执行约束验证,尽早发现并拒绝无效的用户输入。这适用于那些无法通过限制输入选项来防止无效输入的UI控件。
- 通过在模型层以及数据库中执行约束验证,防止无效数据污染应用程序的主要内存状态和持久化数据库状态。
HTML5为基于HTML表单的用户界面提供了用户输入验证的支持。其目标是在用户向表单字段输入无效数据时立即向用户提供反馈。这种响应式验证的用户界面机制是现代Web应用的重要特征。在传统Web应用中,后端组件负责验证数据,并将验证结果以一组错误消息的形式返回给前端。只有此时,用户才能收到验证反馈,且通常是以批量消息的形式呈现。然而,这种反馈速度较慢,常常延迟数秒才到达。