Devo usar uma coluna varchar (max) embutida ou armazená-la em uma tabela separada?

Eu quero criar uma tabela no MS SQL Server 2005 para registrar detalhes de determinadas operações do sistema. Como você pode ver no design da tabela abaixo, todas as colunas, excetoDetails is não é anulável.

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
)

Porque oDetails A coluna nem sempre contém dados. É mais eficiente armazenar essa coluna em uma tabela separada e fornecer um link para ela?

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
)

Para um tipo de dados menor eu realmente não consideraria isso, mas para umvarchar(max) isso ajuda a manter o tamanho da tabela menor? Ou estou apenas tentando descobrir o banco de dados e não conseguir nada?

questionAnswers(6)

yourAnswerToTheQuestion