Определение первичного ключа — КиберПедия 

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Определение первичного ключа

2020-06-02 131
Определение первичного ключа 0.00 из 5.00 0 оценок
Заказать работу

Первичный ключ таблицы – это поле, которое однозначно определяет каждую строку.

Поле ProposalNumber (номер предложения) является хорошим кандидатом на роль первичного ключа таблицы PowerDesign, потому что значения этого поля однозначно определены для каждой строки таблицы. Это единственное поле, относительно которого вы можете быть уверены, что оно нигде в таблице не дублируется. Для того чтобы назначить это поле первичным ключом таблицы, поместите курсор в строке ProposalNumber, находящейся в диалоговом окне определения данных, а затем щелкните на пиктограмме Первичный ключ, которая расположена в центре панели инструментов Проектирование таблиц. В результате в самом левом столбце диалогового окна определения таблицы появится пиктограмма ключа. Это означает, что поле ProposalNumber теперь является первичным ключом таблицы PowerDesign.

На рис. 4.9 показано, как выглядит окно определения таблицы после объявления первичного ключа.


Рис. 4.9. Поле ProposalNumber объявлено первичным ключом

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

Так как количество получаемых вами предложений об инвестициях и благотворительности может легко дойти до нескольких тысяч, то нужен способ, с помощью которого можно быстро выбрать интересующие вас записи. Вы сможете выполнить эту задачу самыми разными способами. Например, просмотреть все предложения, сделанные вашими братьями. Эти предложения можно эффективно выбрать, если использовать содержимое поля LastName (фамилия), как показано в следующем примере:

SELECT * FROM PowerDesignWHERE LastName = 'Marx';

Впрочем, такая стратегия не работает для предложений, сделанных всеми вашими шуринами, деверями, свояками (по-английски любой из них называется одинаково – "brother-in-law". – Примеч. пер.), но эти предложения можно получить, используя другое поле, HowKnown (кто таков), как показано в следующем примере:

SELECT * FROM PowerDesignWHERE HowKnown = 'brother-in-law';

Что ж, запросы эти работают, но они, возможно, не будут работать очень быстро, если таблица PowerDesign достаточно большая (десятки тысяч записей). SQL перебирает всю таблицу построчно, отыскивая значения, которые удовлетворяют предложению WHERE. Работу можно значительно ускорить, применяя в таблице PowerDesign индексы. (Индекс – это таблица с указателями. Каждая строка в индексе указывает на соответствующую строку в таблице с данными.)

Для каждого из способов, которые требуются для доступа к вашим данным, можно определять свой индекс. И если вы в таблице с данными добавляете, изменяете или удаляете строки, то снова сортировать эту таблицу не нужно – следует только обновить ее индексы.

А индекс можно обновить намного быстрее, чем сортировать целую таблицу. Создав индекс, строки которого выстроены в нужном порядке, вы с помощью этого индекса можете почти мгновенно переходить к нужным строкам таблицы данных.

Совет:
Так как поле ProposalNumber (номер предложения) одновременно и уникальное, и короткое, то с его помощью можно быстрее всего добраться к отдельной записи. Поэтому первичный ключ любой таблицы всегда должен быть индексирован. В Access это делается автоматически. Однако, чтобы использовать это поле, необходимо знать его значение в нужной вам записи. Вам могут потребоваться и дополнительные индексы, создаваемые на основе других полей, таких как LastName (фамилия), PostalCode (почтовый код) или HowKnown (кто таков). Если в таблице данных, проиндексированной по LastName, в результате поиска будет найдена первая строка, где значением этого поля является Marx, то будут найдены и все строки с таким же значением этого поля. В индексе ключи для всех этих строк идут друг за другом. Поэтому все строки, относящиеся к Chico, Groucho, Harpo, Zeppo и Karl, можно получить почти так же быстро, как и для одного только Chico
.

В результате создания индекса возникает дополнительная нагрузка на вашу систему, от чего ее работа будет немного замедляться. Это замедление необходимо сравнивать с увеличением скорости доступа к записям в результате использования индекса. Если индексировать поля, часто используемые для доступа к записям из большой таблицы, то замедление работы оправдано. Однако если создавать индексы для полей, которые никогда не будут использоваться для доступа к записям, то потери времени во много раз превысят его экономию. Также не имеет смысла создавать индексы для полей, которые не позволяют отличить одну запись от другой. Например, поле BusinessOrCharity (бизнес или благотворительность) просто разбивает все записи в таблице только на две категории, поэтому хороший индекс на основе этого поля создать нельзя.

Помни:
Эффективность индекса в разных реализациях бывает разной. Если перенести базу данных с одной платформы на другую, то индексы, лучше всех работавшие в первой системе, могут плохо работать во второй. Случается, что база данных хуже работает с индексами, чем при их полном отсутствии. Индексы приходится заново настраивать для каждой конкретной конфигурации СУБД и аппаратного обеспечения. Какая из разных схем индексирования в общем работает лучше остальных, приходится определять опытным путем, принимая во внимание в каждом случае скорость получения данных и их обновления
.

Чтобы создать индексы для таблицы PowerDesign, щелкните на пиктограмме Индексы, расположенной справа от пиктограммы Первичный ключ на панели инструментов Конструктор таблиц. Появится диалоговое окно Индексы, в котором уже есть поля Postal-Code и ProposalNumber. Диалоговое окно Индексы представлено на рис. 4.10.


Рис. 4.10. Диалоговое окно Индексы

Совет:
Access автоматически создает индекс для поля PostalCode, поскольку это поле часто используется для поиска данных
.

Вы можете заметить, что, в отличие от ProposalNumber, поле PostalCode может не являться первичным ключом, и его значения не обязательно уникальны. Можно создать индексы для полей LastName и HowKnown, так как они, вероятно, также будут использоваться для доступа к данным. На рис. 4.11 изображено, как выглядят эти новые индексы.


Рис. 4.11. Определение индексов для полей LastName и HowKnom

Создав все нужные вам индексы, можно сохранить новую табличную структуру, выбрав команду Файл – Сохранить или щелкнув на пиктограмме с изображением дискеты.

Совет:
Конечно, если вы применяете не Microsoft Access, то все, что говорилось в этом разделе, к вам не относится. Впрочем, при создании таблицы базы данных и ее индексов с помощью другого, отличного от Access, RAD-инструмента выполняется примерно та же последовательность действий.

Удаление таблицы

Перед тем как таблица PowerDesign приобрела нужную вам структуру, вы, возможно, успели создать несколько промежуточных вариантов этой таблицы, которые не являются окончательными. Присутствие в системе этих вариантов может впоследствии запутывать пользователей. Поэтому, пока вы еще помните, что к чему, лучше всего эти таблицы удалить. Для удаления таблицы выберите ее имя в окне базы данных и щелкните на пиктограмме (рис. 4.12).


Рис. 4.12. Чтобы удалить таблицу, выберите ее имя и щелкните на пиктограмме

Приложение Access выдаст сообщение с вопросом, действительно ли вы хотите удалить выбранную таблицу. После подтверждения таблица будет немедленно удалена.

Помни:
Если Access удаляет таблицу, то также удаляются все связанные с ней таблицы и все ее индексы
.


Поделиться с друзьями:

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.012 с.