Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Вопрос 6 Ключи и индексы




Реляционная модель БД.

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

Элемент отношения, соответствующий отдельной записи файла, называется кортежем.

Полям записи в отношении соответствуют атрибуты.

О: Отношение - некоторое множество кортежей, имеющих одинаковые атрибуты (некоторое множество строк таблицы).

В отличие от физического файла, записи которого упорядочены, кортежи отношения считаются неупорядоченными.

Как правило, БД представлена более чем одним отношением и физически хранится на периферийных носителях как несколько файлов.

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

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

 

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

Ключ обеспечивает:

1. Однозначную идентификацию записей таблицы.

2. Предотвращение повторений значений ключа.

3. Ускорение выполнения запросов к БД.

4. Установление связи между отдельными таблицами БД.

5. Использование ограничений ссылочной целостности.

Ключ также называют первичным ключом или первичным (главным) индексом. Информация о ключе может храниться в отдельном файле (Paradox) или совместно с данными таблицы (Access). Значения ключа располагаются в определенном порядке. Для каждого значения ключа имеется уникальная ссылка, указывающая на расположение соответствующей записи в таблице (в главном ее файле). Поэтому при поиске записи выполняется не последовательный просмотр всей таблицы, а прямой доступ к записи на основании упорядоченных значений ключа.

Общие правила построения ключей:

1). Ключ должен быть уникальным. У составного ключа значения отдельных полей (но не всех одновременно) могут повторяться.

2). Ключ должен быть достаточным и неизбыточным, т. е. не должен содержать поля, которые можно удалить без нарушения уникальности ключа.

3). В состав ключа не могут входить поля некоторых типов, например, графическое поле или поле комментария.

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

Использование индекса обеспечивает:

1. Увеличение скорости доступа (поиска) к данным.

2. Сортировку записей.

3. Установление связи между отдельными таблицами БД.

4. Использование ограничений ссылочной целостности.

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

Сортировка – упорядочивание записей по полю или группе полей в порядке возрастания или убывания их значений. Индекс служит для сортировки таблиц по индексным полям.

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

Внешний ключ - это некоторый атрибут или несколько атрибутов, представляющих собой первичный ключ другого отношения.

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

Для одной таблицы можно создать несколько индексов. В каждый момент времени один из них можно сделать текущим.

 

Вопрос 7 Наборы данных в Delphi. Состояния наборов данных

Под набором данных в Delphi понимается группа записей из одной или нескольких ТБД, доступная для использования через компоненты TTable и TQuery.

TTable содержит записи, источником которых может быть только одна таблица. Если в TTable производилась фильтрация по какому-нибудь условию, то в НД попадут только те записи, которые удовлетворяют этому условию, если нет, то все записи ТБД.

Для связи таблицы с компонентом псевдоним БД, содержащей таблицу, указывается в свойстве DataBaseName, имя таблицы - в свойстве TableName

TQuery содержит записи, источником которых могут являться несколько ТБД, а также агрегированные значения (сумма, минимум, максимум, среднее), просчитанные по полям одной или нескольких таблиц. НД формируется так: выполняется SQL-запрос, представленный оператором SELECT, который записывается в свойстве SQL компонента, и в качестве НД возвращаются записи из таблиц-источников, удовлетворяющие определенным условиям. ТБД-источники перечисляются в разделе FROM оператора SELECT. Условия выборки записей указываются в разделе WHERE. Записи результирующего НД состоят из полей, перечисленных после ключевого слова SELECT (или, если указан символ * - всех полей). Для связи таблиц с компонентом псевдоним БД, содержащей таблицы, указывается в свойстве DataBaseName. В случае, если псевдоним указан, все таблицы в разделе FROM считаются принадлежащими данной БД, в противном случае для каждой таблицы необходимо указать маршрут поиска, а если он не указан, ТБД должны располагаться в текущем каталоге ОС.

Состояния наборов данных.

НД могут находиться в одном из 7 состояний:

1. dsInactive - НД закрыт.

2. dsBrowse - НД открыт, записи просматриваются, но не изменяются.

3. dsEdit - НД находится в состоянии редактирования.

4. dsInsert - НД находится в состоянии вставки новой записи.

5. dsSetKey - НД находится в состоянии поиска записи. По окончании поиска НД переходит в состояние dsBrowse.

6. dsCalcFields - выполняется установление значений вычисляемых полей. Изменения в НД вноситься не могут. После выхода из этого режима НД переходит в предыдущее состояние.

7. dsFilter - обрабатывается фильтрация записей в НД. После выполнения фильтрации НД переходит в состояние dsBrowse.

Открыть НД можно методом Open во время выполнения, или установив свойство Active в Тrue.

Закрыть НД во время выполнения можно методом CIose или установив свойство Active в False.

Перевести НД в режим редактирования можно методом Edit, в режим вставки - методами Insert и Append.

Метод Post приводит к запоминанию изменений в НД, a Cancel - к отмене изменений. Оба метода переводят НД в состояние dsBrowse.

Получить текущее состояние НД можно, используя метод State. Он возвращает константы:. dsInactive, dsBrowse, dsEdit, dsInsert, dsSetKey, dsCalcFields, dsFilter.

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

Существует 2 способа работы с НД:

1. Использование операторов SQL. Он предполагает оперирование группами записей. SQL-операторы группового обновления: UPDATE, INSERT, DELETE и выборки групп записей - SELECT.

2. Оперирование единичными записями. Если необходимо изменить, добавить или удалить группу записей, необходимая операция выполняется для каждой из этих записей. Для этого такие записи в НД нужно отыскать, для чего применяются навигационные методы. Они всегда работают с единичной записью и связаны с понятием курсора НД.

О: Под курсором НД понимается указатель текущей записи в конкретном НД.

О: Текущая запись - запись, над которой в данный момент можно выполнять какие-либо действия (удаление, изменение, чтение значений полей).

Методы для изменения курсора НД:

1. proc First - устанавливает курсор на первую запись НД.

2. proc Last - устанавливает курсор на последнюю запись НД.

3. proc Next - перемещает курсор на следующую запись в НД.

4. proc Prior - перемещает курсор на предыдущую запись в НД.

5. fun MoveBy (n: Integer): Integer - перемещает курсор на п записей к концу НД (п > 0) или к началу НД (п < 0).

Определение начала и конца НД:

1. Свойство BOF: Boolean - возвращает True, если курсор установлен на первую запись в НД.

2. Свойство EOF: Boolean - возвращает True, если курсор установлен на последнюю запись НД.




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


Дата добавления: 2015-06-26; Просмотров: 397; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.022 сек.