gpt4 book ai didi

sql - 校验SQL数据库

转载 作者:行者123 更新时间:2023-12-03 18:39:13 25 4
gpt4 key购买 nike

我目前正在执行 SQL 任务,但某项任务提到我们需要对我们创建的数据库中的表实现验证和验证。

但是,我们没有了解有关此主题的任何信息,在谷歌搜索数小时后,我只找到了您可以在 create table 语句中给出的检查约束。

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

最佳答案

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

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

如果您考虑以下 系统层 :

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

  • 您可以在这些层中的任何一层进行数据验证,但有以下区别

    数据库层中的
  • 验证是首选,因为您可以将不同的应用程序连接到同一个数据库,虽然这是一件好事,但这些应用程序中的验证不一定相同,因此在数据库层上实现的验证更好数据完整性条款
  • 同时在数据库层验证应该是最快的,因为数据库层离数据最近(数据不需要经过其他层进行处理,在这种情况下验证)
  • 异常(exception)是如果验证规则是静态的并且不依赖于来自数据库的其他数据(例如测试输入是否为偶数正整数),那么客户端可以在数据库之前验证数据,避免不必要的应用层任务和或数据库层。 (同时您还希望在数据库层实现验证,以防万一出现错误或其他应用程序将连接到数据库)。相同的原则适用于应用程序层 - 如果应用程序层可以在不访问数据库服务器的情况下执行验证,它应该这样做,但在数据库层也应该这样做(保证)。

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

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com