对象部分具有误导性。我的问题不是特定于一种类型的SQL。
ATM我正在使用sqlite,但我将切换到TSQL(它看起来是我的主机提供的),我正在重写一些表和逻辑来清理。
我注意到的一种模式是我有一个bigint,可能是2+键中的一个,有时如果我需要它一点或一个字节作为它是什么类型的id。想到的两件大事是 <击> 1)如果bigint被签名并且我碰巧在表中有超过2 ^ 32 PK,那bigint仍然能够访问密钥吗?我在想,因为价值是负面的,PK总是积极的?我会得到一个错误。错误,我忘了bigint是2 ^ 63,我没什么可担心的。
2)如果我有一个表示2个或更多表的PK的bigint,这是不好的做法?无论出于何种原因,我认为有更好的方法来做bigint the_id,字节the_id
答案 0 :(得分:3)
1)TSQL Bigint不限于2 ^ 32,它是-2 ^ 63到+ 2 ^ 63 -1 - 远远超过你可能使用的东西,比如9.2 Quintillion。
2)我更喜欢不使用ID来表示其他表中的两个不同的PK,但是如果不知道你正在解决的问题,很难说这是正确的决定还是你真正拥有的唯一的。
答案 1 :(得分:1)
根据经验,我总是设计我的列来保存一个数据和一种类型的数据(按类型,我不是指数据类型,尽管通常也是如此。)
如果不出意外,在同一列中放入两个不同的ID将阻止使用外键来确保您的数据准确有效。