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

Aar*_*ide 3 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
Run Code Online (Sandbox Code Playgroud)

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

Rem*_*anu 5

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