Мегаобучалка Главная | О нас | Обратная связь


Первичные ключи и индексы



2016-01-05 1240 Обсуждений (0)
Первичные ключи и индексы 0.00 из 5.00 0 оценок




В каждой таблице БД может существовать первичный ключ — поле или набор по­лей, однозначно идентифицирующий запись. Значение первичного ключа в таб­лице БД должно быть уникальным, то есть в таблице не должно существовать двух или более записей с одинаковым значением первичного ключа.

Первичные ключи облегчают установление связи между таблицами. В таблице по­купателей таким ключом может быть одноименное поле. Установив связь по пер­вичному ключу, мы можем выяснить, что, например, 10.12.99 со склада было от­пущено 100 единиц книг «Borland С++ Builder 4» покупателю «Магазин № 1», который расположен по адресу: 107005, Москва, 2-я Бауманская ул., 12 (телефон для связи 273-00-14).

Поскольку первичный ключ должен быть уникальным, для него могут использо­ваться не все поля таблицы. В приведенном примере название покупателя вряд ли может быть уникальным («Магазин № 1» может существовать не только в Моск­ве, но и в любом другом городе), поэтому поле Покупатель не может использо­ваться в качестве первичного ключа.

Если в таблице нет полей, значения в которых уникальны, для создания первичного ключа в нее обычно вводят допол­нительное числовое поле, значениями которого СУБД может распоряжаться по своему усмотрению. Если, например, в таблицу покупателей добавить поле №, то она могла бы выглядеть так.

Покупатель Адрес Телефон
Магазин № 1 107005, Москва, 2-я Бауманская ул., 12 273-00-14
Дом книги 105066, Москва, Измайловский б-р, 18/11 165-18-99

Соответственно изменилась бы и связанная с ней таблица отпуска товаров.

 

Дата Название книги Покупатель Отпущено

10.12.99 Borland С++ Builder 4 1 100

10.12.99 Delphi 5. Учебный курс 1 100

12.12.99 В сетях Всемирной паутины 2 2000

Теперь в таблице отпуска товаров в поле Покупатель указывается значение пер­вичного ключа, построенного по полю № таблицы покупателей, что позволяет ус­тановить однозначную связь между таблицами.

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

Для быстрого доступа к своему содержимому, записи в таблице упорядочиваются по значению одного или нескольких полей. Список полей, задающий порядок записей, называется индексом (index), а сами поля – ключевыми (index fields). Для одной таблицы может существовать несколько способов упорядочивания записей, т.е. несколько индексов. Индексы имею большое значение при работе с таблицами, т.к. при их отсутствии при поиске информации пришлось бы перебирать подряд все записи таблицы.

Один из индексов является первичным (primary), он задает начальный порядок следования записей в таблице. Значение первичного индекса обязательно должно быть уникальным для каждой отдельной записи. Иначе говоря, в таблице не могут существовать две записи с одинаковыми значениями первичного индекса. Например, в таблице заказов первичный индекс правильно будет построить по полю «номер заказа», т.к. каждому заказу всегда назначается уникальный номер.

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

Механизм BDE

Характерной особенностью программ, созданных с помощью Delphi и предназна­ченных для работы с базами данных, является их зависимость от специальной биб­лиотеки программ, которая называется BDE (Borland Database Engine — машина баз данных корпорации Borland). BDE представляет собой набор библиотек DLL, предназначенных для низкоуровнего доступа к данным самых различных форма­тов. BDE автоматически устанавливается в процессе установки Delphi и регист­рируется в реестре 32-разрядной версии Windows. BDE «умеет» работать с табли­цами самых распространенных СУБД, причем как файл-серверных (dBase, Paradox, FoxPro, Clipper), так и клиент-серверных (InterBase, Microsoft SQL Server, Oracle и др.). В BDE имеется собственный интерпретатор языка SQL, что позволяет со­здавать запросы не только к серверам БД, но и таблицам файл-сервера.

Без установки и регистрации BDE на компьютере не может работать ни одна про­грамма БД, созданная в Delphi и использующая механизм BDE.

 

Проектирование БД

Проектирование БД заключается в определении состава полей ее таблиц и связей между таб­лицами. Оттого, насколько тщательно проведен анализ и насколько грамотно спро­ектирована БД, в существеннейшей мере зависит эффективность будущей СУБД и ее полезность для пользователя.

Имена таблиц и полей

В файл-серверных БД имя таблицы совпадает с именем файла, в котором размеща­ются все содержащиеся в ней данные. В именах полей полезно ставить префикс из одной-двух букв названия таблицы (в таблице NAKLS все имена начинать с буквы «N», в FIRMS — с «F» и т. п.). Старайтесь делать имена полей по возможности лаконичными — это сократит код программы и сроки ее создания.

 

Создание таблиц

В файл-серверных БД все таблицы размещаются в одном ка­талоге (папке). Создание таблиц файл-серверных БД осуществляется с помо­щью утилиты (вспомогательной программы) Database Desktop (DBD), входящей в комплект поставки Delphi.

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

Запустите DBD с помощью команды Пуск ► Программы ► Borland Delphi 7 ► Database Desktop (если вы работаете в среде Delphi, для запуска используйте команду Tools ► Database Desktop главного меню).

Первое, что необходимо сделать, — это настроить рабочий каталог утилиты. Выберите команду File ► Working Directory и установите в появившемся окне ссылку на каталог C:\BIBLDATA (рис. 1.3).

Для создания таблицы NAKLS выберите команду File ► New ► Table. DBD откроет окно Create Table, в котором можно выбрать тип таблицы. Тип таблицы определяет многие ее свойства. Тип Paradox 7 можно считать наилучшим для файл-сервер­ных таблиц: щелчком на кнопке ОК согласитесь с вариантом Paradox 7, предложен­ным по умолчанию. На экране появится окно (рис. 1.4), предназначенное для со­здания/редактирования структуры таблицы.

Рис. 1.3. Установка рабочего каталога

 

Рис. 1.4. Окно создания структуры таблицы

 

Каждому полю создаваемой таблицы соответствует одна запись в таблице Field roster этого окна: в колонку Field Name нужно поместить имя поля, в колонку Туре — сим­вол, определяющий тип хранимых в поле данных, в колонку Size — число, опреде­ляющее длину поля (требуется не для всех типов полей), и, наконец, в колонку Key — символ звездочки (*), если по значениям этого поля нужно построить пер­вичный ключ.

Введите название первого поля Naklld (первый символ названия поля для таб­лиц Paradox DBD всегда вводится прописным) и нажмите клавишу табуляции для перехода к следующей колонке, в которой вводится тип поля. Нажмите клавишу пробела, чтобы утилита DBD показала список возможных типов, и выберите в нем тип Autoincrement. Поля автоинкрементного типа служат для создания уникально­го числа, однозначно определяющего запись: для первой записи в это поле будет автоматически помещено число 1, для второй — 2 и т. д. При удалении какой-либо записи выделенное для нее число не используется вновь. Щелкните на колонке Key. Нажмите клавишу пробела, чтобы создать по полю первичный ключ.

Продолжите ввод полей таблицы NAKLS так, как показано на рис. 1.5. Для первых четырех полей установите флажок Required Field, означающий, что при вводе оче­редной записи в эти поля обязательно должны быть помещены значения — за этим будет следить BDE. Четыре других поля могут не определяться в момент ввода очередной записи. Имеет смысл определить для них значения по умолчанию в стро­ке Default value: для поля NCoeff таким значением будет 1, для остальных — 0.

По полю NDate нужно определить индекс (в терминологии таблиц Paradox он на­зывается вторичным). Для этого раскройте список Table properties в правом верх­нем углу окна, выберите пункт Secondary Indexes и щелкните на появившейся кнопке Define. В окне Define Secondary Index (рис. 1.6) в списке полей таблицы выделите (щелчком) поле NDate и затем щелкните на кнопке со стрелкой вправо, чтобы перенести поле в список Indexed fields. Замечу, что таким способом можно перене­сти не одно, а несколько полей. Индекс, построенный по нескольким полям, назы­вается составным.

Рис. 1.5. Структура полей таблицы NAKLS

Рис. 1.6. Определение индексного поля (полей)

С помощью флажков группы Index options можно определить следующие особен­ности индекса:

  • Unique — индекс будет содержать уникальные значения;
  • Maintained — индексные поля сортируются по возрастанию значений;
  • Case sensitive — индекс чувствителен к регистру букв в текстовых полях;
  • Descending — индексные поля сортируются по убыванию значений.

В нашем случае (а также при определении индексов в других таблицах демонстра­ционной БД) оставьте эти флажки без изменений и щелкните на кнопке ОК. DBD запросит имя индекса (в таблицах Paradox, как и в большинстве серверов БД, индексы именуются) — введите строку Nakls_date и щелкните на кнопке ОК. Во вновь появившемся окне определения структуры таблицы щелкните на кнопке Save as и затем укажите имя файла — Nakls.

Мы только что создали структуру таблицы NAKLS.

 



2016-01-05 1240 Обсуждений (0)
Первичные ключи и индексы 0.00 из 5.00 0 оценок









Обсуждение в статье: Первичные ключи и индексы

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

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



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (1240)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.007 сек.)