我正在研究一种广泛使用UUIDs for PRIMARY KEYs 的数据库设计。然而,这让我面临一个非常重要的选择。我如何命名这些列?我会称它们uuid为 ,但UUID作为标识符,我必须在各处引用字段名称:
CREATE TABLE thingie (
"uuid" UUID PRIMARY KEY DEFAULT public.gen_random.uuid(),
foo VARCHAR,
bar VARCHAR,
);
Run Code Online (Sandbox Code Playgroud)
一个直接的替代方案似乎是调用这些列id:
CREATE TABLE thingie (
id UUID PRIMARY KEY DEFAULT public.gen_random.uuid(),
foo VARCHAR,
bar VARCHAR,
);
Run Code Online (Sandbox Code Playgroud)
这样,我就没有列名,并且从语义上讲,我可以说 UUID 确实是一种 ID;在维恩图中,UUID 圆将完全放置在 ID 圆中。
然而,我(并且我相信许多其他人)已经习惯于id与自动递增INTEGER列关联,以至于我担心通过调用这些 ID 来打破某种不成文的规则id。
如果您能通过一些可靠的自行车脱落来消除我的困惑,我将非常感激。事实上,我的问题是:你会如何称呼你的-typed 代理键,为什么?UUID