Запросы на поиск. Соединение таблиц. Внешнее соединение таблиц.
Запросы на поиск. Соединение таблиц. Внешнее соединение таблиц.
Представьте, что вам нужно в таблице "КАДРЫ" хранить данные о личном составе предприятия. О каждом человеке желательно помнить его фамилию, зарплату, пол, и т.д., а также название подразделения, в котором он работает. Но название подразделения длинно, самих подразделений немного, зато строк в таблице "КАДРЫ" много. Для экономии места применяется стандартный реляционный метод: в таблице "КАДРЫ" хранится не само название, а только его короткий код, и создается еще одна таблица, с помощью которой мы будем определять название подразделения по его коду. Табличку эту мы, естественно, назовем "ПОДРАЗДЕЛЕНИЯ", и будет в ней всего два столбца: столбец "КОД" и второй "название подразделения". И вот мы подошли к самому главному, что есть в реляционной базе, к "СОЕДИНЕНИЮ ТАБЛИЦ" по значению столбца (оно же соединение по ключу, по коду). Когда нам потребуются данные о человеке по фамилии Иванов, мы захотим увидеть название подразделения в котором он работает, а не малопонятный код. Значит поиск данных об Иванове нужно вести в двух таблицах. Сперва мы найдем в таблице "КАДРЫ" строчку, в которой в столбце ФАМИЛИЯ стоит значение "Иванов", мы возьмем в этой строчке значение кода подразделения, и будем искать в таблице "ПОДРАЗДЕЛЕНИЯ" строку, со значением в столбце КОД равным коду из строки с Ивановым. А найдя мы соединим данные из строки с Ивановым из первой таблицы и из строки с кодом из второй, получив одну, общую строку.
Индексация
Индекс таблицы - это вспомогательный файл, который создается для того, чтобы ускорить выполнение реляционных операций с участием этой таблицы. Индекс строится для определенного столбца (или совокупности столбцов) таблицы. Он состоит из пар вида {Значение столбца, физический адрес соответствующей строки на диске} и отсортирован по значению столбца в порядке возрастания или убывания. Для одной и той же таблицы может существовать несколько индексов.
Не следует путать индекс, построенный для совокупности нескольких столбцов таблицы, и несколько различных индексов, построенных для отдельных столбцов.
Если индекс создан, то при выполнении операций с таблицей система будет пользоваться им автоматически.
Перечислим коротко ряд рекомендаций по индексации таблиц.
- Индексируют те столбцы, по которым наиболее часто производятся операции поиска, сортировки, соединения, группирования.
- При соединении таблиц полезнее иметь индекс для той из них, которая содержит большее число строк.
- Индексирование замедляет операции вставки, удаления или изменения строк, поскольку эти операции должны быть выполнены не только над таблицей, но и над ее индексами. Поэтому иногда перед массовым занесением строк в таблицу ее индексы уничтожают, а затем вновь создают.
Индексы бывают уникальные и неуникальные. Если вы создаете уникальный индекс по некоторому столбцу, то система гарантирует, что в данном столбце не будет повторяющихся значений.
Выделяется кластеризованные индексы. При построении таких индексов данные таблицы физически упорядочиваются на диске в соответствии с упорядоченностью строк индекса. Поскольку операционная система поддерживает буферизацию дискового обмена, физически упорядоченные данные оказываются в буферном кэше вместе, можно сказать, "автоматически". Следовательно, скорость обработки запросов возрастает. Для каждой таблицы может существовать только один кластеризованный индекс, что следует из его определения.
Системный Журнал (logfile), он же журнал транзакций.
Запись всех изменений, происходящих в базе данных.
Контрольные точки.
Откатка.
Транзакции.
Оператор начала транзакции.
Оператор нормального завершения транзакции.
Оператор ненормального завершения транзакции - откатка к предыдущей контрольной точке.
Базы данных в режиме ANSI.
Прогон базы данных по системному журналу из backup копии.