Вот подход, который вы можете использовать, если чувствуете, что в вашей таблице слишком много полей. Пример: - * +1001 *
CREATE TABLE Person
Person_ID int not null primary key,
Forename nvarchar(50) not null,
Surname nvarchar(50) not null,
Username varchar(20) null,
PasswordHash varchar(50) null
В этой таблице представлены люди, но, очевидно, не все люди должны быть пользователями, поэтому поля «Имя пользователя» и «Пароль» могут быть пустыми. Однако возможно, что на 1 или 2 порядка больше людей, чем пользователей.
В таком случае мы могли бы создать таблицу User для хранения полей Username и PasswordHash с отношением один к одному с таблицей Person.
Вы можете обобщить этот подход, ища наборы полей, которые могут иметь значение NULL, которые либо имеют нулевое значение, либо имеют значения вместе и, скорее всего, будут иметь нулевое значение. Это означает, что есть еще одна таблица, которую вы можете извлечь.
Редактировать
Благодаря Стефани (см. Комментарии) эту технику, по-видимому, называют «вертикальным разделением»