我一直在研究使用GUID作为数据库中的主键.到目前为止,职业选手似乎超过了缺点.但是,我看到GUID可能不是我想要的一点.
在我的应用程序中,用户应该能够基于用户友好的ID识别对象.因此,例如,如果他们想要在不输入全名的情况下获得特定产品,他们可以使用产品的ID.对于类似的东西,GUID并不容易记住.
我一直在考虑的解决方案是同时使用GUID和自动递增整数. GUID将是行的主键,而自动递增的整数将是应用程序的过滤函数使用的索引.但是,所有sql SELECT,UPDATE,DELETE语句都将使用GUID.
我想使用GUID的主要原因是在合并两个数据库时防止冲突.如果Database#1和Database#2都有Product#2,则导入器脚本必须更改ID以及引用它的所有外键.使用GUID,我只需要更改表本身的用户友好ID,而外键将使用每个导入记录唯一的GUID,因此无需修改即可使用.