我正在研究一个广泛使用UUID
s的数据库设计PRIMARY KEY
。然而,这让我面临一个非常重要的选择。如何命名这些列?我会称它们为uuid
,除了UUID
作为标识符,我必须在任何地方引用字段名称:
CREATE TABLE thingie (
"uuid" UUID PRIMARY KEY DEFAULT public.gen_random.uuid(),
foo VARCHAR,
bar VARCHAR,
);
一个直接的替代方法似乎是改为调用这些列id
:
CREATE TABLE thingie (
id UUID PRIMARY KEY DEFAULT public.gen_random.uuid(),
foo VARCHAR,
bar VARCHAR,
);
这样一来,我就没有列名,从语义上我可以争辩说 UUID 确实是一种 ID;在维恩图中,UUID 圆圈将完全放在 ID 圆圈中。
然而,我(我相信还有很多其他人)已经习惯于id
与自动递增INTEGER
列关联,以至于我害怕通过调用这些 ID 来打破某种潜规则id
。
如果你能用一些坚实的自行车脱落来消除我的困惑,我将非常感激。事实上,我的问题是:你会如何调用你的UUID
-typed 代理键,为什么?