簡單的問題。我有幾個不同的模型存儲在SQL數據庫中。一個圖像表記錄字節數據,大型多字段用戶數據表等。所有這些模型都需要主鍵。大多數初學者教程顯示id用於int的用法。這是標準和專業嗎?我覺得很奇怪,開始使用int,因爲長度可變,並從1開始:SASP.NET MVC模型id類型---最佳實踐
對不起,業餘的問題,但我無法找到通過谷歌這個問題的任何適當的材料。
簡單的問題。我有幾個不同的模型存儲在SQL數據庫中。一個圖像表記錄字節數據,大型多字段用戶數據表等。所有這些模型都需要主鍵。大多數初學者教程顯示id用於int的用法。這是標準和專業嗎?我覺得很奇怪,開始使用int,因爲長度可變,並從1開始:SASP.NET MVC模型id類型---最佳實踐
對不起,業餘的問題,但我無法找到通過谷歌這個問題的任何適當的材料。
關於使用INT
或任何其他integral data type作爲主鍵或標識列沒有任何隱含的不專業。這取決於您的業務需求。在保持編程as simple as possible的利益,該INT
數據類型是許多企業需要一個不錯的選擇:
SELECT
s和UPDATE
s很快。BIGINT
可以處理比您可以放入數據庫更多的記錄。認真。一個原因你可能不希望使用不可分割的主鍵:
Guid
(或SQL服務器UNIQUEIDENTIFIER
方面)的全球唯一性。換句話說,如果您將數據遷移到其他位置,則主鍵仍應是唯一的。是的,int
是行業標準。
甚至超越數據庫,我很少看到C#代碼uint
或任何用於表示整數的其他變種。偶爾在陣列中使用byte
。當int
可能不足以涵蓋所有可能性時使用long
。
總是使用int
的一個優點是您可以傳遞id
變量而無需擔心在不同的整數類型之間進行轉換。
這是100%好,並廣泛使用。一些主鍵使用long
,因爲它們的最大值較大。雖然在大多數情況下不是必需的。
Guid
類型有時也用作ID。它具有一些好處,如固定長度,全球唯一性和不可預測性。還有一些問題,如搜索性能較差,難以記憶。
是什麼讓你說INT是「可變長度從1開始」? 鏈接到某種相關的問題:http://stackoverflow.com/questions/255569/sql-data-type-for-primary-key-sql-server – darkey 2012-07-25 07:37:07
SQL Server的'INT IDENTITY'列默認爲'1'種子和' 1'增量。但是你可以[改變定義](http://msdn.microsoft.com/en-us/library/aa933196(v = sql.80)。aspx)通過聲明你的列'Id INT IDENTITY(seed,inc)' – Kivin 2012-07-25 08:00:15
kivin,謝謝我記得種子SQL之前,但不知道如何從模型中做到這一點。 darkey我的意思是可變長度是數字的位數。我喜歡看到像0001,0234等Id,或者像guid猜測一樣。 – 2012-07-25 14:42:22