2012-07-25 71 views
1

简单的问题。我有几个不同的模型存储在SQL数据库中。一个图像表记录字节数据,大型多字段用户数据表等。所有这些模型都需要主键。大多数初学者教程显示id用于int的用法。这是标准和专业吗?我觉得很奇怪,开始使用int,因为长度可变,并从1开始:SASP.NET MVC模型id类型---最佳实践

对不起,业余的问题,但我无法找到通过谷歌这个问题的任何适当的材料。

+0

是什么让你说INT是“可变长度从1开始”? 链接到某种相关的问题:http://stackoverflow.com/questions/255569/sql-data-type-for-primary-key-sql-server – darkey 2012-07-25 07:37:07

+0

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

+0

kivin,谢谢我记得种子SQL之前,但不知道如何从模型中做到这一点。 darkey我的意思是可变长度是数字的位数。我喜欢看到像0001,0234等Id,或者像guid猜测一样。 – 2012-07-25 14:42:22

回答

1

关于使用INT或任何其他integral data type作为主键或标识列没有任何隐含的不专业。这取决于您的业务需求。在保持编程as simple as possible的利益,该INT数据类型是许多企业需要一个不错的选择:

  • 它能够代表约2.1十亿独特的记录。
  • 它在现代硬件中消耗最少的硬盘空间。
  • 对于SELECT s和UPDATE s很快。
  • 如果记录数量有可能超过限制,那么重构更大的积分就相当容易。 BIGINT可以处理比您可以放入数据库更多的记录。认真。

一个原因你可能不希望使用不可分割的主键:

  • 您可以使用一个Guid(或SQL服务器UNIQUEIDENTIFIER方面)的全球唯一性。换句话说,如果您将数据迁移到其他位置,则主键仍应是唯一的。
0

是的,int是行业标准。

甚至超越数据库,我很少看到C#代码uint或任何用于表示整数的其他变种。偶尔在阵列中使用byte。当int可能不足以涵盖所有可能性时使用long

总是使用int的一个优点是您可以传递id变量而无需担心在不同的整数类型之间进行转换。

0

这是100%好,并广泛使用。一些主键使用long,因为它们的最大值较大。虽然在大多数情况下不是必需的。

0

Guid类型有时也用作ID。它具有一些好处,如固定长度,全球唯一性和不可预测性。还有一些问题,如搜索性能较差,难以记忆。