Должен ли я использовать встроенный столбец 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)
Помогает ли это уменьшить размер таблицы? Или я просто пытаюсь использовать базу данных и ничего не достичь?