Есть ли причина, по которой первичный ключ - nchar, а другие поля - nvarchar? - PullRequest
3 голосов
/ 14 сентября 2010

Я работаю над примером из 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 как тип данных Password?

1 Ответ

5 голосов
/ 14 сентября 2010

Нет причин. Первичный ключ должен быть NVARCHAR (256), так как мне трудно поверить, что UserId будет всегда быть точно 256 символов. Прямо сейчас эта схема потенциально тратит (много) места на диске. Обратите внимание, что в хранилище SQL Server 2008 со сжатием строк столбец фиксированной длины в любом случае будет храниться на диске как переменная длины (один конец пробела удаляется), но только , если сжатие строк включен.

...