如何基于不可靠的用户输入数据生成可靠的合成密钥?

时间:2019-08-07 15:21:06

标签: mysql sql primary-key

朋友!我今天对您的问题是:我正在使用一个共享的Excel文件,公司中的一些员工对其进行编辑以跟踪使用我们的一种工具完成的工作。每天,我都会获取此文件的最新版本,从用户输入的数据中清除掉bajeezus,然后将其加载到我们的MySQL数据库中,以便与我们的BI工具一起使用。

当我将这些数据插入数据库时​​,我使用的是自动递增的整数主键来标识每条记录(应该这样做)。但是我的困境是:这个主键绝对不能阻止我多次从Excel文件中插入同一条记录。我可以多次插入同一行,而MySQL会很乐意接受克隆并继续增加整数。

很明显,我对避免两次插入同一行确实有很好的纪律,但是如果我掉进一个开放的人孔并死亡,我希望此过程足够安全,以至于有人来接你对我来说不可能碰到这个问题。

因此,我想尝试从用户输入中拿出一个自然键,这将帮助我唯一地标识数据集中的每条记录,这样我就永远不会两次插入同一行。问题是,我的数据集中的所有列都不总是存在的,即使是那些可以想像出自己可以作为自然键的列,而且,由于这是用户输入的数据,所以错误率很高在输入的数据中。

因此,我想知道的是:当您插入的数据不能给您太多工作时,创建良好,可靠,唯一性增强密钥的最佳实践是什么?循环冗余校验和?在Power Query中将UUID生成器砍在一起?

0 个答案:

没有答案