有没有理由主键是nchar而其他字段是nvarchar?

时间:2010-09-13 22:31:15

标签: sql sql-server-2005 database-schema

我正在使用MSDN中的一个示例,它使用一个小型数据库来演示数据驱动的测试,这里是简单的架构:

CREATE TABLE dbo.LogonInfoTest
   (
   UserId nchar(256) NOT NULL PRIMARY KEY CLUSTERED,
   Password nvarchar(256) NULL,
   IsValid bit NOT NULL
   )  ON [PRIMARY]
GO

我的问题是:选择nchar作为UserId和nvarchar的数据类型作为密码数据类型的根本原因是什么?

1 个答案:

答案 0 :(得分:5)

没有理由。主键应该是NVARCHAR(256),因为我很难相信UserId 总是 256个字符。现在这个架构可能会浪费(大量)磁盘上的空间。请注意,对于SQL Server 2008 row-compression存储,固定长度列无论如何都将在磁盘上存储为可变长度列(删除尾随空格),但如果启用了行压缩,则仅