Методы и алгоритмы трансляции естественно-языковых запросов к базе данных в SQL-запросы. Найханова Л.В - 76 стр.

UptoLike

76
Для третьей ситуации элементы векторов
τ
i
и
τ
j
имеют следующие значения:
- х
i1
имеет значение «2»;
- х
j1
имеет значение «4»;
- х
i2
имеет значение у, где уидентификатор таблицы, содержащей идентификатор
столбца, расположенного в i-той вершине;
- х
j2
имеет значение у, где уидентификатор таблицы, содержащей идентификатор
столбца, расположенного в j-той вершине;
- х
j3
имеет значение z, где zидентификатор столбца, содержащий значение j-той
вершины;
- остальные элементы векторов
τ
i
и
τ
j
имеют значение null.
В этом случае значения элементов х
i2
, х
j2
векторов
τ
i
и
τ
j
совпадают.
Рассмотрим формирование множества
Γ
для каждой гипотезы.
Для первой гипотезы множество
Γ
будет включать множество параметрических
предикатов, описывающих физическую модель данных и продукции pr
19
Tr
, pr
20
Tr
нахождения связи между таблицами SQL–запроса.
Для второй гипотезы множество
Γ
будет включать также множество параметрических
предикатов, описывающих физическую модель данных и продукции pr
21
Tr
, pr
22
Tr
.
Для доказательства первой гипотезы необходимо просмотреть все пары смежных
вершин графа
G
~
, применяя соответственно каждой ситуации правила pr
19
Tr
, pr
20
Tr
нахождения связи между таблицами SQL–запроса.
Для доказательства второй гипотезы необходимо найти путь от i-той таблицы к j-той
таблице и преобразовать граф
G
~
в граф G , в котором будут добавлены все
промежуточные таблицы. Для новых таблиц необходимо сформировать вектор
τ
. В связи с
тем, что граф Е задан множеством предикатов, то путь от i-той таблицы к j-той таблице
будем искать как транзитивное замыкание
k
dd →
*
0
или
k
dddd
iii
→→→
Pr
2
Pr
1
Pr
0
... .
Первое применение продукции pr
i
Tr
(
22,21=i
) позволит получить новое состояние d
1
, в
котором будет определена таблица, с которой связана исходная таблица, следующее
применение продукции pr
i
Tr
позволит получить состояние d
2
, в котором будет определена
таблица, с которой связана предыдущая таблица и так далее, пока не найдем таблицу,
которая является вершиной у
2
. Здесь исходная ситуация d
0
и индекс продукции
i учитывают
три случая комбинации типов вершин, описанных выше. В действия продукции pr
i
Tr
входит
добавление вершины в граф
G и формирование вектора
τ
.
3.3.3. Формирование оператора SQL
Из множества SQL-операторов нас интересует класс операторов Select, касающихся
только выборки информации из таблиц базы данных. Эти операторы имеют следующий
синтаксис [92-94, 23]:
SELECT select_list
FROM table_source
[ WHERE search_condition ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC | DESC ] ]
     Для третьей ситуации элементы векторов τi и τj имеют следующие значения:
     - хi1 имеет значение «2»;
     - хj1 имеет значение «4»;
     - хi2 имеет значение у, где у – идентификатор таблицы, содержащей идентификатор
столбца, расположенного в i-той вершине;
     - хj2 имеет значение у, где у – идентификатор таблицы, содержащей идентификатор
столбца, расположенного в j-той вершине;
     - хj3 имеет значение z, где z – идентификатор столбца, содержащий значение j-той
вершины;
     - остальные элементы векторов τi и τj имеют значение null.
     В этом случае значения элементов хi2, хj2 векторов τi и τj совпадают.
     Рассмотрим формирование множества Γ для каждой гипотезы.
     Для первой гипотезы множество Γ будет включать множество параметрических
предикатов, описывающих физическую модель данных и продукции pr19Tr,             pr20Tr
нахождения связи между таблицами SQL–запроса.
     Для второй гипотезы множество Γ будет включать также множество параметрических
предикатов, описывающих физическую модель данных и продукции pr21Tr, pr22Tr.
     Для доказательства первой гипотезы необходимо просмотреть все пары смежных
                ~
вершин графа G , применяя соответственно каждой ситуации правила pr19Tr, pr20Tr
нахождения связи между таблицами SQL–запроса.
     Для доказательства второй гипотезы необходимо найти путь от i-той таблицы к j-той
                                   ~
таблице и преобразовать граф G         в граф G , в котором будут добавлены все
промежуточные таблицы. Для новых таблиц необходимо сформировать вектор τ. В связи с
тем, что граф Е задан множеством предикатов, то путь от i-той таблицы к j-той таблице
                                             *                Pri   Pri        Pri
будем искать как транзитивное замыкание d0 → dk     или d0 →
                                                               d1 →          dk .
                                                                     d 2 ... →

Первое применение продукции priTr ( i = 21,22 ) позволит получить новое состояние d1, в
котором будет определена таблица, с которой связана исходная таблица, следующее
применение продукции priTr позволит получить состояние d2, в котором будет определена
таблица, с которой связана предыдущая таблица и так далее, пока не найдем таблицу,
которая является вершиной у2. Здесь исходная ситуация d0 и индекс продукции i учитывают
три случая комбинации типов вершин, описанных выше. В действия продукции priTr входит
добавление вершины в граф G и формирование вектора τ.
3.3.3. Формирование оператора SQL
     Из множества SQL-операторов нас интересует класс операторов Select, касающихся
только выборки информации из таблиц базы данных. Эти операторы имеют следующий
синтаксис [92-94, 23]:
     SELECT select_list
     FROM table_source
     [ WHERE search_condition ]
     [ GROUP BY group_by_expression ]
     [ HAVING search_condition ]
     [ ORDER BY order_expression [ ASC | DESC ] ]

                                          76