Изменения
→Семантические оптимизации
=== Семантические оптимизации ===
Можем применять знания об ограничениях
Есть схема, в ней есть
Ограничения ключей
Ограничения внешних ключей
Формально можем построить не эквивалентный запрос, который всегда будет давать ровно тот же результат. То есть он будет эквивалентен с учетом тех ограничений, которые у нас есть для базы данных.
==== Семантическая оптимизация ====
**Неэквивалентные запросы
**Тот же результат
В частности если, если нас просят спроецировать на имя студентов естественное соединение студентов и групп и мы знаем, что в Students GroupId является внешним ключом, то мы можем сделать вывод, что это просто проецирование на имя таблички студентов.
*Пример
**$π_{FirstName}(Students ⋈ Groups) ⇒ π_{FirstName}(Students)$, если $Students.GId ⊂ Groups.GId$
Обратим внимание, что без ограничения на ключи данное преобразование корректным не является
==== Пример оптимизации ====