SQL 2008数据类型 - 使用哪些?

时间:2009-07-08 12:46:58

标签: sql-server database-design data-structures

我正在使用SQL Express 2008版。我已经在一张纸上计划了我的数据库表/关系,并准备开始了。

不幸的是,当我点击我的pkID_Officer的数据类型时,我提供的内容超出了我的预期,因此怀疑已经开始。

有人能指出我解释这些日期类型的地方,并举例说明哪些字段可以更好地处理哪些数据类型。

示例:

  • 是一个ID(主键)的int仍然是显而易见的选择,还是uniqueidentifier取得它的冠冕?

  • 数字以'。'分隔的电话号码。 (01.02.03.04.05)

  • 电子邮件

  • 将成为超链接的项目

  • nChar和vChar?

任何帮助总是受到赞赏。

由于

麦克

5 个答案:

答案 0 :(得分:2)

MSDN站点对SQL 2008数据类型有很好的概述。

http://msdn.microsoft.com/en-us/library/ms187752.aspx

对于ID字段,如果需要在单独的系统或表中保持唯一,或者您希望能够在数据库外部生成ID,请使用guid。否则int / identity值就可以了。

我将电话号码存储为字符数据,因为我不会对其进行计算。我认为电子邮件将以相同的方式存储。

对于超链接,您基本上可以将超链接本身存储为varchar,并在客户端上呈现链接或将标记本身存储在数据库中。真的取决于具体情况。

如果您认为现在或将来需要支持双字节语言,请使用nvarchar。

答案 1 :(得分:1)

对于主键,我总是更喜欢(作为起点)使用自动增量int。它使一切更加有用,并且您与真实数据没有任何“自然”关系。当然可以有例外......

答案 2 :(得分:1)

  • 是一个ID(主键)的int仍然是显而易见的选择,还是uniqueidentifier将它作为王冠?

我个人更喜欢INT IDENTITY而非GUID - 特别是对于您的聚集索引。 GUID本质上是随机的,因此当用作SQL Server上的聚簇索引时会导致大量索引碎片,从而导致性能不佳。 INT没有这个麻烦,加上它只有4个字节而不是16个字节,所以如果你有很多行,并且有很多非聚集索引(聚集的密钥被添加到每个非每个条目中)聚簇索引),使用GUID将不必要地膨胀你的空间需求(在磁盘上和你机器的RAM中)

  • 数字以'。'分隔的电话号码。 (01.02.03.04.05)
  • 电子邮件
  • 将成为超链接的项目

我会为所有这些使用字符串字段。

VARCHAR没问题,只要您不需要任何“外国”语言支持,例如它适用于英语和西欧语言,但在东欧和亚洲语言(西里尔语,中文等)上都没有。

NVARCHAR将以合理的价格处理所有这些额外的讨厌语言 - 每个字符以2个字节存储,例如一串100个字符将使用200字节的存储空间 - 总是。

希望这有点帮助!

马克

答案 3 :(得分:0)

uniqueidentifier是GUID: http://de.wikipedia.org/wiki/Globally_Unique_Identifier

的GUID
  - 是全球独一无二的   - 拥有DotNet,例如她自己的对象(System.Guid)   - 长16位

如果你想要这样的东西,那就用它吧。如果你对int-id很好,那就没关系。

电话号码/电子邮件/ Hyperling是普通字符串。

答案 4 :(得分:0)

NCHAR / NVARCHR是CHAR / VARCHAR数据类型的Unicode对应点。我几乎总是在我的应用程序中使用它们 - 除非我有令人信服的理由不使用它们。