В реляционной алгебре каждая операция помогает преобразовывать и анализировать данные на логическом уровне. Если операция SELECT отвечает за выбор строк по заданным условиям, то операция PROJECT (по-русски — проекция) управляет выбором столбцов, формируя из таблицы новое отношение с нужными атрибутами.
Понимание этой операции помогает не только в теории баз данных, но и в практическом применении SQL-запросов, ведь именно на этих принципах основана работа любого запроса SELECT в SQL.
Что такое операция PROJECT
PROJECT (π) — это операция реляционной алгебры, которая формирует новое отношение (таблицу), выбирая из исходного только определённые столбцы.
Проще говоря, это вертикальный фильтр, который «обрезает» ненужные атрибуты и оставляет только те, что нужны для конкретной задачи.
Синтаксис операции PROJECT:
π<имя_столбца1, имя_столбца2, ...>(Имя_таблицы)
Пример:
π<Имя, Зарплата>(Сотрудники)
Результат — таблица, содержащая только два столбца: Имя и Зарплата.
Принцип работы: вертикальная фильтрация данных
Если операция SELECT (σ) работает горизонтально — выбирает строки, соответствующие условию, то PROJECT (π) фильтрует столбцы.
📊 Представим таблицу Сотрудники:
| ID | Имя | Должность | Зарплата | Отдел | 
|---|
Пример 1. Выбираем только нужные столбцы
π<Имя, Зарплата>(Сотрудники)
Результат:
| Имя | Зарплата | 
|---|---|
| Иван Иванов | 150000 | 
| Елена Смирнова | 150000 | 
| Петр Петров | 120000 | 
Таким образом, PROJECT оставил только указанные атрибуты, отбросив остальные.
Удаление дубликатов — важная особенность PROJECT
В реляционной алгебре отношение рассматривается как множество, а множества не содержат повторяющихся элементов.
Поэтому после применения PROJECT дубликаты строк автоматически удаляются.
Пример 2. Получаем уникальные отделы
π<Отдел>(Сотрудники)
Если в исходной таблице три сотрудника из IT-отдела, в результате вы получите лишь одно значение:
| Отдел | 
|---|
| IT | 
| HR | 
| Маркетинг | 
Это ключевое отличие от SQL, где дубликаты сохраняются, если явно не указано DISTINCT.
Комбинация SELECT и PROJECT
Эти операции часто применяются вместе: сначала фильтруются строки по условию, а потом выбираются нужные столбцы.
Пример 3. Имена и должности всех программистов
π<Имя, Должность>(σ<Должность='Программист'>(Сотрудники))
- Сначала σ(Select) выбирает строки, где Должность = Программист.
- Затем π(Project) оставляет только столбцы Имя и Должность.
Результат:
| Имя | Должность | 
|---|---|
| Иван Иванов | Программист | 
| Сергей Козлов | Программист | 
| Елена Смирнова | Программист | 
Пример с диапазоном значений
Пример 4. ID и имена сотрудников с зарплатой от 120 000 до 160 000
π<ID, Имя>(σ<Зарплата >= 120000 ∧ Зарплата <= 160000>(Сотрудники))
Алгоритм:
- Внутренняя операция SELECT отбирает сотрудников с зарплатой в нужном диапазоне.
- Внешняя PROJECT выбирает только столбцы ID и Имя.
Результат:
| ID | Имя | 
|---|---|
| 1 | Иван Иванов | 
| 3 | Петр Петров | 
| 4 | Елена Смирнова | 
Связь операции PROJECT с SQL
В языке SQL роль операции PROJECT выполняет часть запроса, где указываются названия столбцов после SELECT.
| Реляционная алгебра | SQL-аналог | 
|---|---|
| π<Имя, Зарплата>(Сотрудники) | SELECT Имя, Зарплата FROM Сотрудники; | 
| π<Отдел>(Сотрудники) | SELECT DISTINCT Отдел FROM Сотрудники; | 
🔹 Обратите внимание: чтобы SQL-запрос вёл себя как PROJECT, нужно добавить DISTINCT, чтобы удалить дубликаты.
Почему важно понимать Project
Операция PROJECT — это не просто теория. Она помогает:
- Оптимизировать запросы — обрабатывать только нужные данные, экономя ресурсы.
- Повышать безопасность — скрывать лишние или конфиденциальные столбцы.
- Структурировать запросы — строить цепочки фильтраций и выборок логично и прозрачно.
Вместе с SELECT, PROJECT образует основу всех операций реляционной алгебры и SQL-запросов, обеспечивая гибкость и точность работы с данными.
Заключение
Операция PROJECT (проекция) — один из краеугольных камней реляционной алгебры. Она определяет, какие именно столбцы попадут в результирующее отношение, автоматически удаляя дубликаты и обеспечивая компактное представление данных.
Понимая, как работают SELECT и PROJECT, вы глубже осознаёте внутреннюю логику SQL-запросов и принципы реляционных баз данных. Эти знания позволяют писать более чистые, эффективные и безопасные запросы, что особенно важно при проектировании современных систем хранения данных.
 
         
                          
 
               
               
               
               
               
               
               
              