компилятор, который переводит простые запросы SQL в реляционную алгебру? - PullRequest
0 голосов
/ 04 мая 2019

Я должен написать код для преобразования простых запросов SQL в реляционную алгебру.

Цель проекта кодирования - создать мини-версию Apache Hive, которая называется miniHive.Первым этапом является написание компилятора запросов, который переводит простые запросы SQL в реляционную алгебру.Мы рассматриваем операторы SQL, которые являются конъюнктивными запросами, в форме SELECT DISTINCT A1, ...., AN TOM T1 t1, ...., Tmtm WHERE C, где A1, ...., An являются именами атрибутов, T1 ,...., Tm - имена отношений, t1, ...., tn - необязательные переименования, а C - это конъюнкция условий равенства в форме ti: A = tj.B или ti.A = c, где c - это aконстанта, а A и B являются именами атрибутов.Первым шагом в miniHive является перевод операторов SQL в реляционную алгебру.Мы используем два существующих модуля Python: Мы используем sqlparse для разбора операторов SQL.Подробнее об этом модуле на https://github.com/andialbrecht/sqlparse. Мы используем radb для обработки операторов реляционной алгебры.Подробнее об этом модуле на https://github.com/junyang/radb. Для этого модуля требуется Python 3!Напишите модуль sql2ra, который принимает разобранный оператор SQL и выполняет канонический перевод в реляционную алгебру, используя операторы выбора, проекции, объединения и ...

Я не знаю, с чего начать, яискал два дня, помогите разобраться в этом коде и как он должен выглядеть.

1 Ответ

0 голосов
/ 04 мая 2019

Это слишком долго для комментария.

Механизмы SQL не реализуют реляционную алгебру. Они реализуют ориентированные ациклические графы обработки с узлами, которые выполняют определенные операции.

Операции могут быть или не быть похожими на «реляционную алгебру». Например, некоторые механизмы SQL отправляют некоторую оценку выражения на узел, который читает данные. И некоторые из вычислений выражения после всех остальных операций. Таким образом, даже для чего-то такого простого, как select, реляционная алгебра не описывает, что на самом деле происходит при выполнении запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...