我有点困惑,我见过的所有平板电脑(我没见过这么多)都有一个自动增量字段作为它们的主键。
这是设置主键的最佳方法吗?
例如,下面的表名为Assets,用于库存,我不知道将字段设置为主键的最佳方法
问:我不知道是将自动增量字段(indentity)设置为主键,还是将code字段设置为主键
Way one
CREATE TABLE Asset_A
(
code INT NOT NULL,
name VARCHAR(150),
PRIMARY KEY(code)
);路二
CREATE TABLE Asset_B
(
id INT IDENTITY,
code INT NOT NULL, -- BUT THIS IS THE CODE OF ASSET. For SECOND PK?
name VARCHAR(150),
PRIMARY KEY(id)
);code字段是一个数字字段,其中为这个资产设置了唯一的ID : name: iPhone 10代码: 1000等等。
带有数据的表的示例:
GO
INSERT INTO Asset_A
(code,name)
VALUES
(1000, 'iphone 10'),
(1001, 'iphone 11'),
(1002, 'iphone 12'),
(1003, 'Samsung Galaxy S8'),
(1004, 'Samsung Galaxy S9'),
(1005, 'Samsung Galaxy S10');
GO
INSERT INTO Asset_B
(code,name)
VALUES
(1000, 'iphone 10'),
(1001, 'iphone 11'),
(1002, 'iphone 12'),
(1003, 'Samsung Galaxy S8'),
(1004, 'Samsung Galaxy S9'),
(1005, 'Samsung Galaxy S10');
GO
SELECT *
FROM Asset_A
GO
SELECT *
FROM Asset_B
GO
sp_columns Asset_A;
GO
sp_columns Asset_B;发布于 2022-05-27 21:28:49
你的问题并不是因为缺乏经验而造成的。这是一个判断的召唤。
在您的示例中,表示现有资产的密钥称为“自然”密钥,即代码。系统生成的密钥称为“代理”密钥,在您的情况下,是id。
你应该使用代孕钥匙还是坚持使用天然的钥匙?好吧,每个人都有自己的优点和缺点,这是一个巨大的争论,你会发现大量的信息来源。我个人最好的链接是这。评论中还有其他链接,可能还会出现在其他答案中。搜索更多的互联网,也。
如果我不得不离开我的方式,根据我自己的经验和我发现你的代码有多少“关键价值”来为你选择,我确实会使用代码而不是代理程序。但是,这是主观的。阅读,学习,练习,和这些类型的判断调用将变得更容易。
发布于 2022-05-27 19:26:22
主键在表中必须是唯一的,并且在同一表中没有第二个主键。您可以有另一个唯一的非聚集索引,但不能有第二个主键.在这种情况下,如果保证code在每一行的所有其他列中都是唯一的,那么它将作为主键工作,您将不需要IDENTITY列。
我建议对主键和如何选择它们做一些额外的研究。当然,具有IDENTITY集的列必须是主键,这是不可能的。但是,也有一些限制,例如Server中的PK不能大于900个字节。
https://stackoverflow.com/questions/72410045
复制相似问题