• Авторизация


2)Понятие индекса. Предложения языка SQL CREATE INDEX и DROP INDEX. Параметр UNIQUE. 09-06-2010 11:59 к комментариям - к полной версии - понравилось!


 

CREATE INDEX – создать индекс DROP INDEX – удалить индекс

Индексы создаются в существующей таблице чтобы быстро и удобно найти строки. Можно срздать индекс для 1й и более колонок таблицы, и каждый индекс имеет свое имя. Пользователи не могут увидеть индексы, они создаются чтобы ускорять выполнение запросов. Изменение таблицы, содержащей индексы, занимает больше времени, чем изменение таблицы без них, так как индексы надо тоже менять. Так что необходимость в создании индексов появляется лишь тогда, когда колонки часто используются для поиска.

CREATE INDEX index_name ON table_name (column_name) – создает простейший индекс

Например: CREATE INDEX PersonIndex ON Person (LastName);

CREATE UNIQUE INDEX index_name ON table_name (column_name)- создает уникальный индекс для таблицы. 2 колонки не могут иметь 1н и тот же индекс.

3)Моделирование сложных структур средствами реляционной СУБД. Три базовых способа моделирования деревьев.

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

Задача моделирования. В реляционных СУБД организация хранения информации о независимых друг от друга экземплярах сущностей (так называемых «плоских» данных) не вызывает никаких затруднений. Однако в реляционной модели и языке SQL нет встроенных средств поддержки иерархических структур данных. Практически любая промышленная база данных должна обладать возможностями хранения данных с иерархической организацией. На практике, при построении информационных систем, приходится обеспечивать хранение в реляционной БД информации о «вложенных» друг в друга сущностях, т.е. иерархические данные (самой распространенной иерархической структурой является организационная структура предприятия, в которой отражаются отношения между различными подразделениями и их служащими, представляющиеся при помощи деревьев). Организация хранения такой информации в реляционных БД не очевидна.

Наиболее часто возникают следующие задачи, характерные только для иерархий:определить, находится ли узел А в поддереве, вершиной которого является узел Б; выбрать непосредственного родителя узла А; выбрать всех родителей узла А в порядке их уровня в дереве; выбрать все узлы, находящиеся в поддереве, вершиной которого является узел А; выбрать все узлы, непосредственным родителем которых является узел А; определить наиболее близкого общего родителя для узлов А и B.. Кроме того, существуют более сложные задачи, например задача объ­единения деревьев, обратная задача – выделение (удаление) поддерева из иерархии, получение количества всех потомков у данного элемента, вычисление того, на каком уровне находится некоторый узел, или требуется получить список всех потомков заданного узла, у которых, в свою очередь, нет потомков и т.п.

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

Способ правого и левого коэффициентов

Метод, предложенный Джо Селко, называемый ещё методом вложенных множеств, основан на полном обходе дерева (рис. 43). При полном обходе дерева каждому узлу назначается пара значений – левый и правый коэффициенты. Левые коэффициенты присваиваются во время движения от предка к потомку. Правые коэффициенты назначаются при движении от потомка к предку.

Рис. 1. Назначение коэффициентов при выполнении полного обхода дерева

Корень всегда имеет левый коэффициент, равный 1. Разность между значениями левого и правого коэффициентов для листьев всегда равна 1. Правый коэффициент для корня равен удвоенному числу узлов в иерархии (2n), так как при обходе мы должны посетить каждый узел дважды, один раз с левой стороны и один раз с правой стороны.

Отношение, соответствующее иерархии из нашего примера, выглядит след образом

Таким образом, главный недостаток метода вложенных множеств состоит в том, что при изменении в структуре дерева (удалении, добавлении узлов) приходится заново пересчитывать значения правого и левого коэффициентов для всей таблицы. Это довольно трудоёмкая процедура, особенно в случае больших иерархий. Поэтому такой способ годится только для небольших и/или редко изменяемых таблиц.

Способ вспомогательной таблицы

Способ, описанный Ральфом Кимбаллом, может рассматриваться как расширенный вариант рекурсивного способа. Здесь модель дерева строится на основе двух таблиц. Первая таблица (базовая) хранит список всех узлов, снабжённых уникальными идентификаторами, и всю содержательную информацию по каждому узлу.

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

Вспомогательная таблица по своей структуре похожа на таблицу со ссылкой на непосредственного предка, но, в отличие от неё, содержит все полные пути от корневого элемента до каждого узла иерархии в виде наборов пар «родитель-потомок». Здесь потомок может не быть непосредственным (прямым) потомком родителя, поэтому для каждой такой пары указывается расстояние («степень родства») от предка до потомка.

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

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

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

вверх^ к полной версии понравилось! в evernote


Вы сейчас не можете прокомментировать это сообщение.

Дневник 2)Понятие индекса. Предложения языка SQL CREATE INDEX и DROP INDEX. Параметр UNIQUE. | TheLenka - Дневник Рыжей Девчонки | Лента друзей TheLenka / Полная версия Добавить в друзья Страницы: раньше»