![]() |
1
9
解决此问题的方法可能是: 采用地址/电话号码/邮政编码等三种视图。
此方法所需的其他组件包括用于验证的通用过程(类/触发器)、用于打印的格式化例程、规则库以及用于更新验证规则的管理员机制。一个“catchall”规则表示这是一个有效的地址-它已被手动验证-即使它不符合规则库的任何规则。 组成部分: 1地址由多行组成,每行都有一个相关的序列号和多个标记(通常是一个)。也可以与地址行、规则集和验证它们的规则版本相关联,但这是一种改进,取决于更新/插入/计算速率。
3用特定领域语言编写的规则。这可以是正则表达式;一种特定于您的语言;您的常规开发语言(尽管这可能是最不有用的方法,因为编程语言可能会发现很难全面准确地表示我所说的那种规则)。代表性规则的一个例子可能是(处理您对美国邮政编码的描述)- 前五个字符必须是数字。 前五个字符表示“区号”。
规则将被分为组和集(如美国地址)规则必须能够引用其他规则以及地址数据。
我希望其他的组成部分从整体上看是显而易见的。 此方法旨在处理您的问题中发现的这些问题:
并对相关问题进行了处理。
当我写我的回复时,我不知道BigTable。很快地看了一下,这似乎是一个非常相似的概念。至于在ACID开发中实现它,我认为这对于contact数据集和rule数据库是可能的。根据经验,我知道在这样的环境下,它很容易扩展到5*10^7套联系方式(尽管有背景,但不需要对联系方式进行时间限制验证)。
我不太清楚的是如何将验证和随后的标记合并到ACID/SQL事务中。似乎要使验证步骤成为ACID,可能需要根据规则集(首先测试最常见的情况,并在验证成功时停止)命令应用测试。另外,为了使事务成为ACID,可能有必要只对最常见的情况进行验证,而将其他情况标记为“needvalidation”,然后将其作为后台任务来完成。 验证的实际任务包括逐个检查整个规则库,直到找到一组验证所有输入行的规则。数据本身显然有潜在的指导原则——如果您记录了country,那么这既可以让您直接用country标记行,也可以为您必须测试的规则集提供一个过滤器。我很抱歉,但这是我到目前为止所能做的。 顺便说一句,这个草图模式只是朝着完全规范化的方向走了一段路。如图所示,每个地址都有自己的地址行序列,除了作为输入的单独行之外,没有数据的标准化(加上或减去您选择执行的任何预处理)。通过在地址和地址行M:N之间建立链接,并确保地址行表的行字段是它的主键,可以进一步采用这种方法。 当谈到这个概念的更详细的资源时,我有两个问题。 第一个(也是琐碎的)是,这个概念是我的原创作品,基于我作为方法顾问和IT战略顾问二十多年的经验,我对开发环境技术和开发方法有着特殊的兴趣。我的整个工作生涯都是在联系方式一直是一个主要问题的环境中度过的(出于财务和监管/立法方面的原因)。事实上,在我读完你的问题之前,我对你问题的最初回答在我的脑海里已经很完整了,尽管那时我花了大约四分之三个小时才把它打出来。
我的资料来源是:
编辑: 我完成了上面的编辑,关上电脑,做了一些家务,上床睡觉,躺下,闭上眼睛,我有办法解决以前编辑中无法完成的部分。
所有三种类型的事务(地址、地址行更新、规则集、规则更新和标记、标记使用更新)都满足ACID条件。我坚信(但尚未证明)这三种类型的事务的任何交错、组合或交叉集也将满足ACID条件。 |
![]() |
2
0
already answered 至少是电话号码。你可以对邮政编码做类似的处理。 |
![]() |
3
0
如果您仍然需要在数据库中搜索特定的邮政编码,您可以为此编写正则表达式甚至函数。考虑到城市的名字,你可以把它们从地址线2中抹去,很有可能你最终得到了邮政编码。 我认为为每个国家编写验证文件肯定是一项巨大的工作,那就是200个国家。。。你怎么能确定你没有错过一些当地的会议?您可以编写一个函数eq,例如计算eq(“ABCDE-34”,“ABCDE.34”)==true。 虽然我不太明白写客户端的意义 和 服务器端验证。即使客户端是一个web浏览器,也可以通过AJAX使用服务器的验证。 最后,它取决于您使用的DBMS(是否支持Java存储过程?),客户端语言。。。以及数据是如何输入的(输入是否非常不准确?在网络浏览器中?)以及你想用它做什么。(您是否计划将数据库中的电话号码输入Skype,或者这些号码是否由在手机中键入号码的人读取?)你需要做一些特定的连接操作吗?当然,这取决于你能花多少工时来解决这个问题。。。 |
![]() |
George Alexander · 类似电报的用户名的Regex 2 年前 |
![]() |
Aliaksei · 保存前进行WebFlux检查 3 年前 |
![]() |
Nimet · 如何在regex密码模式中转义* 3 年前 |
![]() |
Jee · PowerShell输入验证-输入不应为所有数字 7 年前 |
![]() |
James · Django使用RangeWidget验证表单 7 年前 |