- •Выборка всех листьев в дереве, при моделировании иерархической структуры методом вспомогательной таблицы.
- •Проблемы, возникающие при работе со списками. Способы их преодоления.
- •Понятие кольца. Типы организации колец. Особенности «коралловой» организации кольца.
- •Линейные структуры данных. Стэк и дэк.
- •5) Явное соединение отношений в sql. Левое соединение.
- •6) Явное и неявное соединение таблиц в языке sql. Правое и левое соединение.
- •8) 1,2,3 Нф. «Восходящая и нисходящая» нормализация.
- •9) Моделирование иерархий средствами реляционной субд. Способ полного обхода дерева. Повышение производительности за счет использования индексов.
- •10) Транзакции и проблемы, связанные с ними.
- •11) Рекурсивный способ моделирования иерархий средствами реляционной субд. Проблема поиска листьев.
- •12) Нормализация, основное назначение. Что оптимизирует нормализация?
- •2) Как связаны различные типы зависимостей, процесс нормализации и отношения типа «сущность - связь»?
- •3) Напишите предложение select для отыскания всех общих предков для двух наперёд заданных узлов иерархии в случае моделирования иерархии методом вспомогательной таблицы.
- •2) Приведите пример структуры данных, все отношения которой находятся во всех возможных нормальных формах.
- •3) Напишите предложение select для отыскания всех узлов иерархии не имеющих потомков для случая моделирования иерархии рекурсивным методом.
- •2) Напишите предложение select для отыскания всех общих предков для двух наперёд заданных узлов иерархии в случае моделирования иерархии методом правого и левого коэффициентов.
- •3) Коллективный доступ к данным. Проблемы коллективного доступа. Понятие блокирования или захвата.
- •2) Напишите предложение select для отыскания всех узлов иерархии не имеющих потомков для случая моделирования иерархии методом правого и левого коэффициентов.
- •3) Проблема «утраченного обновления». Способы разрешения.
- •2) Для каких целей могут использоваться данные в формате xml?
- •3) Охарактеризуйте известные вам уровни изоляции транзакций.
- •2) Как соотносятся между собой понятия «сущность – связь» и зависимость (функциональная зависимость, многозначная зависимость и т.П.)?
- •3) При помощи какого предложения select можно осуществить выборку всех потомков наперед заданного узла иерархии при моделировании иерархии способом правого и левого коэффициентов?
- •2) Журнализация изменений бд. Индивидуальные откаты транзакций. Восстановление после «мягкого» сбоя («тёплый пуск»). Восстановление после «жесткого» сбоя («холодный пуск»).
- •3) Перечислите и раскройте понятия зависимостей используемых при определении нормальных форм.
6) Явное и неявное соединение таблиц в языке sql. Правое и левое соединение.
SQL JOIN - используются для запроса данных из двух или нескольких таблиц связанных между собой ключами. Ключом является столбец (или комбинация столбцов) с уникальным значением для каждой строки. Каждое значение первичного ключа должно быть уникальным в пределах таблицы. Цель состоит в том, чтобы связать данные всех таблиц вместе не повторяя все данные в каждой таблице.
Явное:JOIN: Возвращает строки, когда есть хотя бы одно совпадение в обеих таблицах.
LEFT JOIN: Возвращает строки из левой таблицы, даже если их нет правой таблице.
INNER JOIN - возвращает строки, когда есть хотя бы одно совпадение в обеих таблицах.
SELECT field1, field2, field3 FROM first_table
INNER JOIN second_table
ON first_table.keyfield = second_table.foreign_keyfield
Пример: SELECT Employees.Name, Orders.Product FROM Employees
INNER JOIN Orders ON
Employees.Employee_ID=Orders.Employee_ID ;
Левое соединение: SELECT field1, field2, field3 FROM first_table
LEFT JOIN second_table
ON first_table.keyfield = second_table.foreign_keyfield
Пример: SELECT Employees.Name, Orders.Product FROM Employees
LEFT JOIN Orders
ON Employees.Employee_ID=Orders.Employee_ID ;
RIGHT JOIN - возвращает строки из правой таблицы(table_name2), даже если их нет левой таблице (table_name1).
Правое соединение: SELECT field1, field2, field3 FROM first_table
RIGHT JOIN second_table
ON first_table.keyfield = second_table.foreign_keyfield
Пример: SELECT Employees.Name, Orders.Product FROM Employees
RIGHT JOIN Orders
ON Employees.Employee_ID=Orders.Employee_ID ;
Неявное - это когда просто в SELECT'еSELECT t1.c, t2.n FROM t1,t2;
7)
8) 1,2,3 Нф. «Восходящая и нисходящая» нормализация.
1НФ: Отношение R находится в первой нормальной форме (1НФ), если значения каждого его атрибута являются атомарными, т.е. такими значениями, которые не являются множеством значений или повторяющейся группой.
В определении реляционной модели Кодда все отношения всегда находятся в 1НФ.
2НФ: Отношение R находится во второй нормальной форме (2НФ), если никакие неключевые атрибуты не являются функционально зависимыми лишь от части ключа.
Таким образом, 2НФ может оказаться нарушена только в том случае, когда ключ составной.
3НФ: Отношение R находится в третьей нормальной форме (3NF) в том и только в том случае, если находится в 2NF и каждый неключевой атрибут нетранзитивно зависит от первичного ключа.
Восходящая нормализация предусматривает идентификацию требуемых атрибутов с последующим созданием из них нормализованных таблиц, основанных на функциональных зависимостях между этими атрибутами.
Нисходящая предполагает изначальное составление наиболее общей таблицы, а затем ее
разбиение с учетом условий нормализации.
9) Моделирование иерархий средствами реляционной субд. Способ полного обхода дерева. Повышение производительности за счет использования индексов.
Метод, предложенный Джо Селко, называемый ещѐ методом вложен-ных множеств, основан на полном обходе дерева (рис. 43). При полном обходе дерева каждому узлу назначается пара значений – левый и правый коэффици-енты. Левые коэффициенты присваиваются во время движения от предка к по-томку. Правые коэффициенты назначаются при движении от потомка к предку. Корень всегда имеет левый коэффициент, равный 1. Разность между значениями левого и правого коэффициентов для листьев всегда равна 1. Пра-вый коэффициент для корня равен удвоенному числу узлов в иерархии (2n), так как при обходе мы должны посетить каждый узел дважды, один раз с левой стороны и один раз с правой стороны.
Организуемая таким образом структура данных может быть описана от-ношением, создаваемым следующим оператором SQL (рис. 44):
create table T (L int not null primary key,
Node varchar,
R int not null);
все листья можно найти следующим простым запросом (рис. 54):
SELECT * FROM T WHERE R-L=1;
Выполнение запроса можно ускорить за счѐт использования уникального ин-декса по столбцу левых коэффициентов. Создадим индекс:
CREATE UNIQUE INDEX L1 ON T(L ASC);
Для того чтобы воспользоваться преимуществом индекса, запрос следует напи-сать в виде
SELECT * FROM T WHERE L=(R-1);
MS SQL Server может применить индекс только в том случае, когда атрибуты, на которых этот индекс определѐн, не использу-ются в выражениях, поэтому если записать условие в виде (R-L) = 1, то индекс использоваться не будет.