↓推荐关注↓
背景几天前马斯克在推特上质疑美国政府的 Social Security 数据库设计,在程序员社区引起群嘲热议。
马斯克帖子里吐槽的点是这个存放 SSN 的数据库没有做去重 (de-duple),所以会存在多条记录有一样的 SSN,如果按照这个记录发补贴的话,一个人就会重复收到补贴,这不是妥妥的欺诈吗 (MASSIVE FRAUD)。
在数据库设计层面,保证 SSN 去重的做法是给 SSN 这一列加上主键 (Primary key) 或者唯一键 (Unique key) 约束。乍看之下,马斯克如此惊讶也合乎情理,毕竟就是加一个约束,怎么能犯如此低级的错误,这可都是纳税人的钱啊。
显然事情没有那么简单,如果我们再推敲一下,一个人存在多条 SSN 记录是完全合理的,比如说一个人换了名字(尤其在美国,结婚后更名是一个普遍的现象),就像这个高赞评论所描述的。
当然也有冷静的声音,马斯克在帖子里并没有提供足够的上下文,SSN 可以是唯一的,也可以是不唯一的。还是要具体看整个数据库的表结构设计。
DeepSeek
我们请 DeepSeek 出面帮美国人民参谋一下。
就像 DeepSeek 所言,并不是所有表里的 SSN 都要作为主键,还是要看具体的上下文。
感想显然,群众的情绪常常凌驾于客观事实之上。即便是相对理性的程序员,若胆敢对我们的数据库设计指手画脚,哪怕是马斯克这样的重量级人物,也难以避免被舆论的浪潮所冲击。此时,即便是理性的声音,也难免被淹没在情绪的洪流中。当然,马斯克或许已经达成了他的目标。通过借助 SSN 这一广为人知的概念,他成功引发了更多人对政府信息系统的关注。无论马斯克的观点正确与否,他能够从 SSN 这一细微的切入点入手,确实展现了他见微知著的敏锐洞察力。
在线阅读:https://talk.gitee.com/report/china-open-source-2024-annual-report.pdf