主键:在同一数据库中对某些表使用UUID,对其他表使用INT是不好的做法吗?

时间:2019-12-15 01:55:40

标签: sql database postgresql

我正在postgresql中创建一个规范化的数据库,对于几个表,我需要能够从客户端生成PK。我也在与另一个数据库进行交互,因此UUID在这方面也将有所帮助。为了保持一致性,我打算在每个表中使用UUID,但是我有第二个想法,因为对于大多数表来说,这似乎过分了。我以为也许我会为那些表使用整数PK,为“特殊”表使用UUID PK,但是对我来说有点奇怪。这是不好的做法吗?

1 个答案:

答案 0 :(得分:2)

我想不出为什么这将是一种不好的做法。不寻常的是。但是,如果您有理由在某些情况下更喜欢整数,而在另一些情况下更喜欢UUID,那么这可能是有道理的。

我更喜欢整数作为主键。它们占用的空间较小-如果许多其他表正在使用它们,则可以考虑。我发现它们在查看值时更容易正确键入和进行视觉比较。

但是,它们也对一些信息进行编码,通常是插入表中的顺序。那是一把双刃剑。如果要跟踪插入顺序,这可能是一件好事。或者,如果您不希望人们估计桌子​​的大小,那可能是一件坏事。

当我有UUID时,我可能还会有整数主键,将UUID保留在单独的唯一列中。这样可以提高外键引用的效率。