Опубликован: 13.07.2010 | Уровень: специалист | Доступ: платный
Самостоятельная работа 7:

Создание объектов базы данных SQL Server средствами оболочки VS.NET 2003

Создание индексов

Индексы используются для повыщения производительности при поиске значений в полях и сортировке данных. В оболочки есть средства для выбора одного или нескольких полей для создания индекса. Если поле объявлено как первичный ключ, то в нем должны находиться уникальные непустые значения данных. Если в таблице нет такого поля, то вместо него можно ввести поле, значение в котором наращивается автоматически. Такое поле называется полем идентификатора.

Поле идентификатора также можно назначить в качестве первичного ключа, поскольку оно однозначно определяет каждую запись в таблице. На поле первичного ключа также создается индекс.

Индексы существенно увеличивают скорость обработки данных, но злоупотреблять ими не следует, поскольку они занимают дополнительные ресурсы. Целесообразно применять индексы для таблиц с очень большим количеством записей.

  • В панели Server Explorer раскройте дерево зарегистрированных баз данных и вызовите контекстное меню для узла с созданной нами таблицей tblCustomers. Выполните команду Design Table


  • В открывшемся окне дизайнера структуры таблицы щелкните правой кнопкой мыши на первой строке (первом поле) и выполните команду контекстного меню Insert Column, чтобы вставить в таблицу новый столбец перед текущим (первым)


  • Укажите значения свойств нового поля такие
Значения свойств нового поля
Свойство Значение
Column Name CustomerID
Data Type int
Length 4
Allow Nulls Не отмечено
  • В нижней части окна установите дополнительное свойство для этого поля Identity=07_48, что означает, что вы хотите это поле использовать в качестве поля идентификатора. После этого откроется еще два свойства:
    • Identity Seed - указывает значение, с которого должен начинаться отсчет значений столбца.
    • Identity Increment - задает шаг изменения значения поля идентификатора при добавлении новой записи в таблицу
  • Оставьте значения этих двух дополнительных свойств по умолчанию равными единице.


  • Щелкните правой кнопкой мыши на поле CustomerID и выберите из контекстного меню команду Set Primary Key (назначить в качестве первичного ключа). После этого столбец CustomerID будет играть роль первичного ключа в таблице tblCustomers.


Как правило, первичный ключ должен быть предусмотрен в каждой таблице и его могут представлять сразу несколько полей. Обратите внимание, что каждое поле в окне дизайнера таблицы можно выделить, щелкнув по кнопке перед первым свойством этого поля. На текущем поле установлен маркер в виде треугольника. Можно, удерживая клавишу Shift, выделить сразу несколько полей по их кнопкам и через контекстное меню назначить эти поля как первичный ключ. Можно, также, цепляя мышкой кнопку, менять порядок следования полей в таблице. Но все эти действия лучше выполнить заранее при создании структуры таблицы, пока она еще не заполнена данными - чем мы с вами сейчас и занимаемся.

Итак, после назначения первичного ключа окно дизайнера таблиц должно выглядеть так


Проиндексируем поле LastName, чтобы удобно было искать клиента по его второму имени (у проклятых это фамилия). Для этого

  • Щелкните правой кнопкой мыши в любом месте основных свойств окна дизайнера таблиц и через контекстное меню выполните команду Indexes/Keys


Появится окно свойств Property Pages с вкладками, которое будет открыто на вкладке Indexes/Keys.

  • Щелкните на кнопку New, чтобы создать новый индекс, затем в выпадающем списке Column Name закрепите за созданным индексом с автоматически сгенерированным именем IX_tblCustomers поле LastName.


  • В поле редактирования Index name измените вручную автоматически сгенерированное имя IX_tblCustomers на новое IX_LastName

Можно закрепить за одним индексом сразу несколько полей, добавляя в список Index name для выбранного индекса их имена. Такой индекс называется составным.

Окончательно окно Property Pages должно выглядеть так


Александр Очеретяный
Александр Очеретяный
Украина, Киев
Анастасия Балыбердина
Анастасия Балыбердина
Украина, Киев, НТУУ КПИ