简单的问题。我有几个不同的模型存储在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