我正在构建一个sql数据库,每个记录都有一个惟一的id作为我的主键。我希望ids是人类可读的,不同的部分代表子分类。例如,前两位-三位数代表产品类别,下二位-三位数字表示位置,最后一位数字表示项目。如果使用数字代码,则每个数字至少需要9位数字。例如,101-001将意味着第一类,仓库通道一,第一项。如果我使用α-数字,我可以用六位数表示相同的数据,A1-A1-A1。
存储每个数字(alpha-数字与数字)所需的空间有什么不同?由于这些id号将在我的数据库中显示数百万次,大小考虑将有助于决定该走哪条路。还有别的原因我更喜欢一个而不是另一个吗?
发布于 2013-12-30 03:57:34
使用编码密钥通常是个坏主意。例如,如果--在将来的某个时候--一个仓库有超过999件物品会发生什么。代码中没有它的空间。
相反,对id使用自动递增(标识)整数.这将占用4个字节,除非您将在表中支持数十亿行。在这种情况下,使用一个大整数。
您可以为仓库号、过道号和项目号分别设置列。实际上,这些应该是引用表的外键。
发布于 2013-12-30 04:14:32
我建议你分开使用。
试着像这样
create table #b
(
id int identity (1001,1),
userid as 'C' + cast(id as varchar(10))
)
insert #b default values
insert #b default values
insert #b default values
insert #b default values
select * from #b发布于 2018-07-31 17:58:43
要回答这个问题为时已晚,但万一有人跳进这个问题:
我正在研究如何处理产品和他们的ID,我自己不喜欢ID被称为"3“或"1",似乎IMO太短了。
这么说,我已经同意了一个事实,即产品ID的值应该是自动增量整数值。
关于你的问题
我想你是在找SKU (股票保管股)。SKU用于形成一个结构化字母数字字符串,该字符串包含关于您的产品的信息,并且通常由零售商店单独设置(意思是不通用的,比如UPC通用产品代码或条码)。
您可以使用SKU来标识产品类别、零售商店等等(您定义了您的结构),与产品ID不同,SKU更像是一个属性,而不是实体标识号。
希望这能帮助我理解这些字段之间的使用差异。
https://stackoverflow.com/questions/20833096
复制相似问题