我正在编写允许多个用户可以修改帖子的服务器。
因此,我创建了包含用户ID,发布ID和权限数据的权限表。
而且我只是想用一个值来查询这个问题(我只是认为使用一个值查询比用两个值查询查询更有效(,所以我搜索并找到了这个。
但是,我还发现Cantor配对功能不是唯一的,
因此,我们不能将cantor配对函数用作主要键。
,但这仅涉及Cantor Way,而不是优雅的配对功能(Matthew Szudzik(
优雅配对功能如何?
使用优雅的配对键作为数据库中的主要密钥安全吗?
还是我应该放弃两个值?
除非您的存储器执行单个ID字段约束,否则我相信这是著名的
示例过早优化是所有邪恶的根源。(d.knuth(。
请注意,Cantor配对功能不是 real 数字唯一的唯一功能不要以为您的ID是非全能数字。我认为,对于您引用的优雅配对函数,这是完全相同的,因为从结构上讲,它基于同一想法。如果您需要特定的反示例,则是一个:
ElegantPair(1, 2) = 2^2 + 1 = 5 = 2.1^2 + 0.59 = ElegantPair(0.59, 2.1)
另一方面,真正的问题是,无论您使用哪种聪明的技巧,您都无法将两个32位(或任何使用的尺寸(int值适合相同大小的单个int值。配对函数背后的窍门是基于以下事实:整个 n 是无限的, n x n 具有与<strong相同的"> n 对于固定尺寸的真实(计算机(世界整数显然是不正确的。因此,无论您在固定尺寸的INT上使用哪种映射,它都不是唯一的。