我有點困惑,我見過的所有平板電腦(我沒見過很多)都有一個自動增量欄位作為它們的主鍵。
這是設定主鍵的最佳方法嗎?
例如,我有以下表格Assets需要庫存,但我不知道將欄位設定為主鍵的最佳方法
問:不知道是設定自增欄位(indentity)為主鍵還是設定code欄位為主鍵
方式一
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:名稱: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;
uj5u.com熱心網友回復:
你的問題不是缺乏經驗引起的簡單問題。這是一個判斷電話。
代表已存在資產的密鑰稱為“自然”密鑰,在您的情況下為 [code]。系統生成的密鑰稱為“代理”密鑰,在您的情況下為 [id]。
您應該使用代理鍵還是堅持使用自然鍵?好吧,每個都有其優點和缺點,這是一場巨大的辯論,你會找到大量的資料。我個人最好的鏈接是這個。評論中還有其他鏈接,可能會在其他答案中。更多地搜索互聯網。
如果我不得不根據自己的經驗以及我發現您的 [code] 有多少“關鍵價值”來為您選擇,我確實會使用 [code] 而不是替代品。但是,這是主觀的。閱讀、學習、練習,這些型別的判斷電話會變得更容易。
uj5u.com熱心網友回復:
主鍵在表中必須是唯一的,并且同一個表中不存在第二個主鍵之類的東西。您可以擁有另一個唯一的非聚集索引,但不能擁有第二個主鍵。在這種情況下,如果code保證每行中所有其他列的唯一性,它將作為主鍵作業,您將不需要該IDENTITY列。
我建議對主鍵以及如何選擇它們進行一些額外的研究。帶有 set 的列肯定不是IDENTITY主鍵。但是有限制,比如 SQL Server 中的 PK 不能大于 900 位元組。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/483659.html
