我正在postgresql中创建一个标准化良好的数据库,对于几个表,我需要从客户端生成PK的能力。我还在与另一个数据库交互,因此UUID在这方面也会有所帮助。为了保持一致性,我打算在每个表中使用UUID,但是我有了第二种想法,因为对于我的大多数表来说,这似乎太过了。我想也许我会用整数PKs来表示这些表,UUID PKs代表“特殊”表,但我觉得有点奇怪。这做法不好吗?
发布于 2019-12-14 18:00:26
我想不出为什么这会是一种糟糕的做法。不寻常的是。但是,如果您有理由在某些情况下选择整数,而在其他情况下则选择UUID,那么这可能是有意义的。
我喜欢整数作为主键。它们占用的空间更少--如果许多其他表都在使用它们,这可能是一个考虑因素。我发现,在查看值时,它们更容易正确地键入并进行视觉比较。
但是,它们还编码了一些信息,通常是插入到表中的顺序。那是把双刃剑。如果您想要跟踪插入顺序,这可能是一件好事。或者,如果你不想让人们估计你桌子的大小,那可能是件坏事。
当我有UUID时,我也可能有整数主键,将UUID保留在一个单独的唯一列中。这允许在外键引用中提高效率。
https://stackoverflow.com/questions/59340648
复制