【问题标题】:Fake Name Data to MySQL Query假名数据到 MySQL 查询
【发布时间】:2013-04-23 16:54:37
【问题描述】:

我有一个包含一些机密个人信息的数据库。出于数据分析的目的,我想将这些数据发送给一些人。但是,需要保持数据的匿名性。

有没有办法让我生成假表来执行 JOIN,即代替 JOIN 到具有真实名称的 user 表,我动态生成表 fakeuser 并加入到该表。

我知道它可以手动完成,但查询不会在整个数据库中的所有用户上运行,最好动态完成,即当查询调用fakeuser ID 23 和 ID不存在,它只是从某处选择一个随机名称并填充表和查询。

如果 MySQL 不够灵活,我愿意通过其他类型的脚本来执行此操作。

【问题讨论】:

  • 看看这个问题是否有帮助stackoverflow.com/questions/260307/…
  • 谢谢。该问题的答案似乎不鼓励使用部分真实数据。另一方面,我需要提供部分真实数据进行分析。匿名化更多是为了隐私保护。该问题中提到的问题(梦中之梦?)确实提到了一些产品,但它们似乎是商业的。
  • 我猜脚本是要走的路,但任何关于谁去做的指针都会很好。
  • Nota bene,正如皇家学会在Science as an open enterprise 上的最终报告中所述:“计算机科学领域的大量工作现已证明,无法保证数据库中个人记录的安全性通过积极寻求身份的匿名程序。“如果您的数据是敏感的,我建议在移交给其他方之前尽可能汇总它:即为他们运行报告,不要提供他们的原始数据.
  • 我意识到这一点。这里的安全性不是针对恶意意图,而是针对无意的泄漏,即我们信任研究人员,但他们是人类,并且碰巧有一个名字偷偷进入最终报告。

标签: mysql scripting obfuscation anonymize


【解决方案1】:

这似乎是一项非常简单的任务,但它涉及几个步骤,我不确定你在哪里卡住了。

您需要一个可以通过随机生成字母组合(给出不可读的名称)获得的名称列表,或者您可以找到一个公开的名称来源(可能是http://www.listofbabynames.org/)。

然后您只需要一个循环,通过从列表中随机选择名称来在您的 fakeuser 表中插入记录。您只需要确保不要为 fakeuser 中的不同记录分配相同的名称。这可以通过在您选择一个名称时从列表中删除名称来完成。如果列表不够大,可以生成组合。

我也会仔细考虑@eggyal 提供的建议/文章,看看它是否适用于您的情况。如果您需要更好的解决方案,我认为在匿名化数据方面还有很多工作要做。

【讨论】:

    猜你喜欢
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多