我们想给每个用户一个别名,以便我们可以在讨论中引用他们,同时保护他们的身份。这些别名应该是唯一的。
简单的方法是简单地使用 SERIAL 列,但 int 并不容易记住。我们想使用真实的人名,以便我们可以记住别名。
另一种简单的方法是在某个地方找到一个名字列表,给它们编号,然后使用 SERIAL 从列表中获取名字。当列表用完时,添加更多名称。
但是有一些聪明的方法可以将整数映射到名称吗?
我们目前有大约 2,000 名用户并且还在增长,但我怀疑我们是否会成为谷歌。
我们想给每个用户一个别名,以便我们可以在讨论中引用他们,同时保护他们的身份。这些别名应该是唯一的。
简单的方法是简单地使用 SERIAL 列,但 int 并不容易记住。我们想使用真实的人名,以便我们可以记住别名。
另一种简单的方法是在某个地方找到一个名字列表,给它们编号,然后使用 SERIAL 从列表中获取名字。当列表用完时,添加更多名称。
但是有一些聪明的方法可以将整数映射到名称吗?
我们目前有大约 2,000 名用户并且还在增长,但我怀疑我们是否会成为谷歌。
听起来可能很疯狂。但是游戏编程中使用了一种算法来创建无意义但语音上独特的名称,例如 Alveolar、Bilabial、Glottal、Palatal、Velar。
从人口普查局的姓名文件中随机选择一个姓名。
您是否尝试过任何哈希函数?我不确定它们是否在 Postgres 中可用。但是,是的,一种方法是让内部哈希函数负责。他们将输出唯一的 ID。
回到“那天” Compuserve(或者是 AOL?)过去常常通过有两个单词列表并从每个列表中取出一个单词并将其放在一起来提供临时的初始密码,所以你会得到像 EasyTomato 之类的东西。也许类似的东西对您的用户群有用。如果每个单词列表有 256 个字符,那就是 65535 个唯一组合(请注意,您只需增加一个 16 位整数即可轻松选择组合)。
编辑:好吧,毕竟不要直接增加整数,否则前 256 个人都会得到相同的第一个单词,但基本想法仍然是合理的。选择一个随机的、尚未使用的 16 位数字。高 8 位是您对第一个单词列表的索引,低 8 位是您对第二个单词列表的索引。