Первое, что вы должны спросить себя: «Каковы свойства« оборудования »?»Может ли часть оборудования существовать без EquipID, Описание или Категории?Если нет, то эти столбцы не должны иметь нулевое значение.
Второй - «что однозначно определяет часть« Оборудования »?»Это EquipID?Тогда это должен быть ваш первичный ключ.Это сочетание EquipID и Категория?Затем у вас есть составной первичный ключ, состоящий из обоих столбцов.Иногда, однако, данные не поддаются первичному ключу, к которому легко можно присоединиться в полностью реляционной модели.Таким образом, вы могли бы рассмотреть столбец Identity ID, как вы показываете - это известно как суррогатный ключ.Знайте, что создание первичного ключа по умолчанию создает кластерный индекс для этих ключевых столбцов.Если вы используете подход с суррогатным ключом, IMHO, это хорошая идея, чтобы создать еще один уникальный индекс уникальности вашего объекта (т. Е. EquipID).
Что касается других индексов, вам следует задать себе вопрос"Какие столбцы я буду опрашивать чаще всего?"Возможно, у вас будет много вопросов, таких как «ВЫБЕРИТЕ ИСПОЛЬЗОВАТЬ ОТ ОБОРУДОВАНИЯ, ГДЕ Категория = 3».Это может означать, что Category является хорошим кандидатом в столбец для индекса.
Наконец, еще одно хорошее правило - индексировать любые столбцы внешнего ключа, что, по-видимому, и может быть Category.Это оптимизирует любые запросы на присоединение, которые вы можете выполнять.
Хороший подход к этому может быть примерно таким, как показано ниже (быстро объединено, не проверено):
CREATE TABLE [dbo].[Equipment](
[EquipID] [nchar](20) NOT NULL
,[EquipDescription] [nchar](100) NOT NULL
,[CategoryID] [bigint] NOT NULL
,CONSTRAINT [PK_Equipment] PRIMARY KEY CLUSTERED (
[EquipID] ASC
)
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Categories](
[CategoryID] [bigint] IDENTITY(1,1) NOT NULL
,[CategoryName] [nchar](100) NOT NULL
,CONSTRAINT [PK_Categories] PRIMARY KEY CLUSTERED (
[CategoryID] ASC
)
) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [IDX_Equipment_Category] ON [dbo].[Equipment] (
[CategoryID] ASC
) ON [PRIMARY]
CREATE UNIQUE NONCLUSTERED INDEX [IDX_Categories_CategoryName] ON [dbo].[Categories] (
[CategoryName] ASC
) ON [PRIMARY]
ALTER TABLE [dbo].[Equipment] WITH CHECK ADD CONSTRAINT [FK_Equipment_Categories]
FOREIGN KEY([CategoryID]) REFERENCES [dbo].[Categories] ([CategoryID])
GO