我正在使用SQL Express 2008版。我已经在一张纸上计划了我的数据库表/关系,并准备开始了。
不幸的是,当我点击我的pkID_Officer的数据类型时,我提供的内容超出了我的预期,因此怀疑已经开始。
有人能指出我解释这些日期类型的地方,并举例说明哪些字段可以更好地处理哪些数据类型。
示例:
是一个ID(主键)的int仍然是显而易见的选择,还是uniqueidentifier取得它的冠冕?
数字以'。'分隔的电话号码。 (01.02.03.04.05)
电子邮件
将成为超链接的项目
nChar和vChar?
任何帮助总是受到赞赏。
由于
麦克
答案 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)
我个人更喜欢INT IDENTITY而非GUID - 特别是对于您的聚集索引。 GUID本质上是随机的,因此当用作SQL Server上的聚簇索引时会导致大量索引碎片,从而导致性能不佳。 INT没有这个麻烦,加上它只有4个字节而不是16个字节,所以如果你有很多行,并且有很多非聚集索引(聚集的密钥被添加到每个非每个条目中)聚簇索引),使用GUID将不必要地膨胀你的空间需求(在磁盘上和你机器的RAM中)
我会为所有这些使用字符串字段。
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对应点。我几乎总是在我的应用程序中使用它们 - 除非我有令人信服的理由不使用它们。