验证SQL数据库

Yoo*_*suf 3 sql validation verification

我目前正在进行SQL分配,但是某个任务已经提到我们需要在我们创建的数据库中对表进行验证和验证.

但是我们没有学到任何关于这个主题的知识,经过几个小时的谷歌搜索我只发现了你可以在create table语句中给出的检查约束.

请提及一些SQL表或数据库的验证和验证技术.

Unr*_*son 7

通常,您通过对数据运行某种测试来验证.

数据通过不同的层,并且有不同类型的测试.

如果考虑以下系统层:

  • 用户界面/客户端层
  • 应用层
  • 数据库层

您可以在任何这些层进行数据验证,但有以下差异

  • 数据库层中的验证是首选,因为您可以将不同的应用程序连接到同一个数据库,虽然这是一件好事,但这些应用程序中的验证不一定相同,因此在数据库层上实现的验证更好数据完整性
  • 同时数据库层中的验证应该是最快的,因为数据库层最接近数据(数据不需要通过其他要处理的层,在这种情况下验证)
  • 例外情况是,如果验证规则是静态的并且不依赖于来自数据库的其他数据(例如测试输入是否为正整数),那么客户端可以在数据库之前验证数据并避免不必要地分配应用程序层和或数据库层.(同时你也希望在数据库层实现验证,以防万一有bug或其他应用程序将连接到数据库).同样的原则适用于应用程序层 - 如果验证应用程序层可以在不命中数据库服务器的情况下执行,则应该执行此操作,但应在数据库层中执行(保证)相同的操作.

您可以考虑以下进行验证测试(验证类型):

  • 类型验证(示例:是插入整数的数据?).这可以通过在列上声明正确的类型来检查数据库层.)
  • 域验证(例如:数据是正整数吗?).这可以使用CHECK约束在数据库层检查
  • 关系验证(例如:对于您要添加的记录,另一个表中已有记录).这可以通过正确使用FOREIGN KEYS在数据库层进行检查
  • 业务规则验证(这些可能很复杂,例如' 如果您要记录的值大于100,那么请确保您可以记录用户的IP,否则取消交易;如果不是不打扰 '.)这些验证可以通过触发器和存储过程完成.在现实世界中,业务规则验证通常在应用层实现(出于各种原因 - 从PL/SQL的相对不可维护性和不可移植性,这通常是您必须编写触发器的语言)到实现的事实复杂的触发器会降低性能并最终使系统变得非常复杂).