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

问题描述:

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

不幸的是,当我点击我的pkID_Officer数据类型我提供超出我的预期,因此,怀疑已设置。

任何人都可以点我到这些日期类型的解释和示例的地方给出哪些字段更适合哪些数据类型。

实例:

  • 为int用于ID(的PrimaryKey)仍是明显的选择或不唯一标识符需要它的冠?

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

  • 电子邮件

  • 项目,这将是超链接

  • NCHAR和VCHAR?

任何帮助总是赞赏。

谢谢

Mike。

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

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

对于ID字段使用,如果它需要跨越不同的系统或表中的唯一,或者您希望能够生成数据库之外的ID的GUID。否则,int/identity值工作得很好。

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

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

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

+0

谢谢。伟大的联系。对于这些数据类型,除了眼睛还有更多,但我会从现在开始 - 只需要 - 简单的基本数据类型。 – RocketGoal 2009-07-08 14:05:36

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

唯一标识符也是GUID: http://de.wikipedia.org/wiki/Globally_Unique_Identifier

的GUID
- 是全球唯一的 - 在DOTNET的如她自己的对象(System.Guid) - 长16位数

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

电话号码/电子邮件/ Hyperling是正常的字符串。

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

  • int是一个ID(primarykey)还是显而易见的选择还是唯一标识符是皇冠?

我个人比GUID更喜欢INT IDENTITY - 尤其是对于聚簇索引。 GUID在本质上是随机的,因此导致大量的索引碎片,因此在用作SQL Server上的聚簇索引时性能较差。 INT没有这个麻烦,再加上它只有4字节,而不是16字节,所以如果你有很多行和很多非聚簇索引(聚簇关键字会被添加到每一个非聚簇索引中的每个条目中,聚集索引),使用GUID将不必要的臃肿您的空间需求(在磁盘上,并在你的机器的RAM),其中数字之间用

  • 的电话号码“” (01.02.03.04.05)
  • 电子邮件
  • 项目,这将是超链接

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

VARCHAR很好,只要你不需要任何“外来”语言支持,例如对于英语和西欧语言来说没什么问题,但对东欧和亚洲语言(西里尔语,中文等)不起作用。

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

希望这会有所帮助!

Marc

+0

是的,你说的是一个随机GUID作为一个集群密钥的问题。但是,关于使用guid作为主键的问题,应该注意的是,它可以作为主键而不被聚集。 – sisve 2009-07-08 14:19:02