КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Ключи и индексы
Таблицы баз данных Реляционные базы данных Основные понятия баз данных 4. Реляционные базы данных 4.1. Таблицы баз данных 4.2. Ключи и индексы 4.3. Методы и способы доступа к данным 4.4. Связь между таблицами 4.5. Механизм транзакций 4.6. Бизнес-правила 4.7. Словарь данных
Приложение. Таблицы формата dBase и Paradox Реляционная БД состоит из взаимосвязанных таблиц. Каждая таблица содержит информацию об объектах одного типа, а совокупность всех таблиц образует единую БД Таблицы, образующие БД, находятся в каталоге (папке) на жестком диске. Таблицы хранятся в файлах и похожи на отдельные документы или электронные таблицы (например, табличного процессора Microsoft Excel), их можно перемешать и копировать обычным способом, скажем, с помощью Проводника Windows. Однако, в отличие от документов, таблицы БД поддерживают многопользовательский режим доступа, т. е. могут одновременно использоваться несколькими приложениями. Для одной таблицы создается несколько файлов, содержащих данные, индексы, ключи и т. п. Главным из них является файл с данными, имя этого файла становится именем таблицы, которое задается при ее создании. В некотором смысле понятие таблицы и ее главного файла являются синонимами, при выборе таблицы выбирается именно ее главный файл: для таблицы dBase — это файл с расширением DBF, а для таблицы Paradox — с расширением DB. Имена остальных файлов таблицы назначаются автоматически — все файлы имеют одинаковое имя, совпадающее с именем таблицы, и разные расширения, указывающие на содержимое соответствующего файла. Расширения файлов приведены в приложении к данной лекции "Таблицы формата dBase и Paradox" ниже. Каждая таблица БД состоит из строк и столбцов и предназначена для хранения данных об однотипных объектах информационной системы. Строка таблицы называется записью, столбец таблицы — полем (рис. 1). Каждое поле должно иметь уникальное в пределах таблицы имя. Поле
Рис. 1.Таблица базы данных
Поле содержит данные одного из допустимых типов, например, строкового, целочисленного или даты. При вводе значения в поле таблицы автоматически производится проверка соответствия типа значения и типа поля. В случае, когда эти типы не совпадают, а преобразование типа значения невозможно, генерируется исключительная ситуация. Особенности организации таблиц зависят от конкретной СУБД, используемой для создания и ведения БД. Например, в локальной таблице dBase и в таблице сервера InterBase нет поля автоинкрементного типа (с автоматически наращиваемым значением), а в таблице dBase нельзя определить ключ. Подобные особенности необходимо учитывать при выборе типа (формата) таблицы, т. к. они влияют не только на организацию БД, но и на построение приложения для работы с этой БД. Однако, несмотря на все различия таблиц, существуют общие правила создания и ведения БД, а также разработки приложений, которые и будут далее рассмотрены. Замечание В зависимости от типа таблиц и системы разработки приложений также может различаться и используемая терминология. Например, в InterBase поле таблицы называется столбцом.
Основу таблицы составляет описание ее полей, каждая таблица должна иметь хотя бы одно поле. Понятие структуры таблицы является более широким и включает в себя: § описание полей; § ключ; § индексы;
§ ограничения ссылочной целостности между таблицами; § пароли.
Иногда ограничения на значения полей, ограничения ссылочной целостности между таблицами, а также права доступа называют одним общим термином "ограничения". Отметим, что отдельные элементы структуры зависят от формата таблиц, например, для таблиц dBase нельзя задать ограничения ссылочной целостности (т. к. у них нет ключей). Все элементы структуры задаются на физическом уровне (уровне таблицы) и действуют для всех программ, выполняющих операции с БД, включая средства разработки и ведения БД (например, программу Database Desktop). Многие из этих элементов (например, ограничения на значения полей или поля просмотра) можно также реализовать в приложении программно, однако в этом случае они действуют только в пределах своего приложения. С таблицей в целом можно выполнять следующие операции: § создание (определение структуры); § изменение структуры (реструктуризация); § переименование; § удаление.
При создании таблицы задается структура и имя таблицы. При сохранении на диске создаются все необходимые файлы, относящиеся к таблице. Их имена совпадают с именем таблицы. При изменении структуры таблицы в ней могут измениться названия и характеристики полей, состав и наименования ключа и индексов, ограничения. Однако название таблицы и ее файлов остается прежним. При переименовании таблица получает новое имя, в результате чего новое и^л также получают все ее файлы. Для этого используются соответствующие программы (утилиты), предназначенные для работы с таблицами БД, например, Database Desktop или Data Pump. Замечание Таблицу нельзя переименовать, просто изменив названия всех ее файлов, например, с помощью Проводника Windows.
При удалении таблицы с диска удаляются все ее файлы. В отличие от переименования, удаление таблицы можно выполнить посредством любой программы (в том числе и с помощью Проводника Windows).
Ключ представляет собой комбинацию полей, данные в которых однозначно определяют каждую запись в таблице. Простой ключ состоит из одного поля, а составной (сложный) — из нескольких полей. Поля, по которым построен ключ, называют ключевыми. В таблице может быть определен только один ключ. Ключ обеспечивает: § однозначную идентификацию записей таблицы; § ускорение выполнения запросов к БД; § установление связи между отдельными таблицами БД; § использование ограничений ссылочной целостности.
Ключ также называют первичным ключом или первичным (главным) индексом. Информация о ключе может храниться в отдельном файле или совместно с данными таблицы. Например, в БД Paradox для этой цели используется отдельный файл (ключевой файл или файл главного индекса) с расширением РХ. В БД Access вся информация содержится в одном общем файле с расширением MDB. Значения ключа располагаются в определенном порядке. Для каждого значения ключа имеется уникальная ссылка, указывающая на расположение соответствующей записи в таблице (в главном ее файле). Поэтому при поиске записи выполняется непоследовательный просмотр всей таблицы, а прямой доступ к записи на основании упорядоченных значений ключа. Ценой, которуюразработчик и пользователь платят за использование такой технологии, является увеличение размера БД вследствие необходимости хранения значений ключа, например, в отдельном файле. Размер этого файла зависит не только от числа записей таблицы (что достаточно очевидно), но и от полей, составляющих ключ. В ключевом файле, кроме ссылок на соответствующие записи таблицы, сохраняются и значения самих ключевых полей. Поэтому при вхождении в состав ключа длинных строковых полей размер ключевого файла может оказаться соизмеримым с размером файла с данными таблицы. Таблицы различных форматов имеют свои особенности построения ключей. Вместе с тем существуют и общие правила, состоящие в следующем.
§ Ключ должен быть достаточным и неизбыточным, т. е. не содержать поля, которые можно удалить без нарушения уникальности ключа. § В состав ключа не могут входить поля некоторых типов, например, графическое поле или поле комментария.
Выбор ключевых полей не всегда является простой и очевидной задачей, особенно для таблиц с большим количеством полей. Нежелательно выбирать в качестве ключевых поля, содержащие фамилии людей в таблице сотрудников организации или названия товаров в таблице данных склада. В этом случае высока вероятность существования двух и более однофамильцев, а также товаров с одинаковыми названиями, которые различаются, к примеру, цветом (значение другого поля). Для указанных таблиц можно использовать, например, поле кода сотрудника и поле артикула товара. При этом предполагается, что указанные значения являются уникальными. Удобным вариантом создания ключа будет использование для него поля соответствующего типа, которое автоматически обеспечивает поддержку уникальности значений. Для таблиц Paradox таким является поле автоинкрементного типа, еще одним достоинством которого является небольшой размер (4 байта). В то же время в таблицах dBase и InterBase поле подобного типа отсутствует, и программист должен обеспечивать уникальность значений ключа самостоятельно, например, используя специальные генераторы.
Отметим, что при создании и ведении БД правильным подходом считается задание в каждой таблице ключа даже в том случае, если на первый взгляд он не нужен. В примерах таблиц, которые приводятся при изложении материала, как правило, ключ создается, и для него вводится специальное автоинкрементное поле с именем Code или Number. Индекс, как и ключ, строится по полям таблицы, однако он может допускать повторение значений составляющих его полей — в этом и состоит его основное отличие от ключа. Поля, по которым построен индекс, называют индексными. Простой индекс состоит из одного поля, а составной (сложный) — из нескольких полей. Индексы при их создании именуются. Как и в случае с ключом, в зависимости от СУБД индексы могут храниться в отдельных файлах или совместно с данными. Создание индекса называют индексированием таблицы. Использование индекса обеспечивает: § увеличение скорости доступа (поиска) к данным; § сортировку записей; § установление связи между отдельными таблицами БД; § использование ограничений ссылочной целостности.
В двух последних случаях индекс применяется совместно с ключом второй тао-лицы. Как и ключ, индекс представляет собой своеобразное оглавление таблицы, просмотр которого выполняется перед обращением к ее записям. Таким образом, использование индекса повышает скорость доступа к данным в таблице за счет того, что доступ выполняется не последовательным, а индексно-последовательным методом. Сортировка представляет собой упорядочивание записей по полю или группе полей в порядке возрастания или убывания их значений. Можно сказать, что индекс служит для сортировки таблиц по индексным полям. В частности, в Delphi записи набора Table можно сортировать только по индексным полям. Набор данных Query позволяет выполнить средствами SQL сортировку по любым полям, однако и в этом случае для индексированных полей упорядочивание записей выполняется быстрее. Для одной таблицы можно создать несколько индексов. В каждый момент времени один из них можно сделать текущим, т. е. активным. Даже при существовании нескольких индексов таблица может не иметь текущего индекса (текущий индекс важен, например, при выполнении поиска и сортировки записей набора данных Table). Ключевые поля обычно автоматически индексируются. В таблицах Paradox ключ также является главным (первичным) индексом, который не именуется. Для таблиц dBase ключ не создается, и его роль выполняет один из индексов. Замечание Создание ключа может привести к побочным эффектам. Так, если в таблице Paradox определить ключ, то записи автоматически упорядочиваются по его значениям, что в ряде случаев является нежелательным. Таким образом, использование ключей и индексов позволяет: § однозначно идентифицировать записи; § избегать дублирования значений в ключевых полях; § выполнять сортировку таблиц; § ускорять операции поиска в таблицах;
§ использовать ограничения ссылочной целостности.
Дата добавления: 2014-01-03; Просмотров: 3496; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |