Должен ли я использовать встроенный столбец varchar (max) или хранить его в отдельной таблице?

Я хочу создать таблицу в MS SQL Server 2005 для записи сведений о некоторых системных операциях. Как видно из таблицы ниже, каждый столбец кромеDetails это не обнуляется.

CREATE TABLE [Log]
(
[LogID] [int] IDENTITY(1,1) NOT NULL,
[ActionID] [int] NOT NULL,
[SystemID] [int] NOT NULL,
[UserID] [int] NOT NULL,
[LoggedOn] [datetime] NOT NULL,
[Details] [varchar](max) NULL
)

ПосколькуDetails В столбце не всегда есть данные. Разве эффективнее хранить этот столбец в отдельной таблице и вместо этого предоставлять ссылку на него?

CREATE TABLE [Log]
(
[LogID] [int] IDENTITY(1,1) NOT NULL,
[ActionID] [int] NOT NULL,
[SystemID] [int] NOT NULL,
[UserID] [int] NOT NULL,
[LoggedOn] [datetime] NOT NULL,
[DetailID] [int] NULL
)       

CREATE TABLE [Detail]
(
[DetailID] [int] IDENTITY(1,1) NOT NULL,
[Details] [varchar](max) NOT NULL
)

Для меньшего типа данных я бы не стал это рассматривать, но дляvarchar(max) Помогает ли это уменьшить размер таблицы? Или я просто пытаюсь использовать базу данных и ничего не достичь?

Ответы на вопрос(6)

Ваш ответ на вопрос