Чейз (алгоритм)
Погоня — это простое тестирование алгоритма с фиксированной точкой и обеспечение учета зависимостей данных в системах баз данных . Он играет важную роль как в теории баз данных , так и на практике.Он используется, прямо или косвенно, ежедневно людьми, проектирующими базы данных, а также в коммерческих системах для оценки согласованности и правильности структуры данных. [ нужна ссылка ] Новые применения поиска в управлении метаданными и обмене данными все еще обнаруживаются.
Погоня берет свое начало в двух основополагающих статьях 1979 года, одна из которых написана Альфредом В. Ахо , Катриэль Бири и Джеффри Д. Уллманом. [1] а другой — Дэвидом Майером , Альберто О. Мендельзоном и Иеошуа Сагивом . [2]
В простейшем применении погоня используется для проверки того, может ли проекция схемы отношения , ограниченной некоторыми функциональными зависимостями , быть восстановлена на заданную декомпозицию путем повторного соединения проекций . Пусть t будет кортежем в где R – отношение , а F – множество функциональных зависимостей (ФЗ). Если кортежи в R представлены как t 1 , ..., t k , соединение проекций каждого ti должно согласовываться с t на где я = 1, 2, ..., к . Если я включен не , значение неизвестно.
Погоню можно выполнить, нарисовав таблицу (это тот же формализм, который используется в запросе таблицы ). Предположим, что R имеет атрибуты A, B,... и компоненты t — это a, b,... . Для ti S используйте ту же букву, что и t, в компонентах, входящих в S i, но добавляйте букву i, если компонент не входит в i . Тогда t i будет согласовываться с t, если оно находится в Si , и в противном случае будет иметь уникальное значение.
Процесс преследования является слитным . Существуют реализации алгоритма преследования, [3] некоторые из них также имеют открытый исходный код. [4]
Пример
[ редактировать ]Пусть R ( A , B , C , D ) — схема отношений, о которой известно, что она подчиняется множеству функциональных зависимостей F = { A → B , B → C , CD→A }. Предположим, что R разложено на три схемы отношений S 1 = { A , D }, S 2 = { A , C } и S 3 = { B , C , D }. Определить, является ли это разложение без потерь, можно, выполнив поиск, как показано ниже.
Исходная таблица для этого разложения:
А | Б | С | Д |
---|---|---|---|
а | б 1 | с 1 | д |
а | б 2 | с | д 2 |
aа3 | б | с | д |
Первая строка представляет S 1 . Компоненты атрибутов A и D не имеют индексов, а компоненты атрибутов B и C имеют индекс i = 1. Вторая и третья строки заполняются таким же образом S 2 и S 3 соответственно.
Цель этого теста — использовать заданный F , чтобы доказать, что = ( a , b , c , d ) действительно находится в R. t Для этого таблицу можно просмотреть, применив FD в F для приравнивания символов в таблице. Итоговая таблица со строкой, такой же, как t, подразумевает, что любой кортеж t в соединении проекций на самом деле является кортежем R .
Чтобы выполнить тест преследования, сначала разложите все FD в F так, чтобы каждый FD имел один атрибут в правой части «стрелки». (В этом примере F остается неизменным, поскольку все его FD уже имеют один атрибут в правой части: F = { A → B , B → C , CD → A }.)
При приравнивании двух символов, если один из них не имеет индекса, сделайте другой таким же, чтобы в окончательной таблице могла быть строка, точно такая же, как t = ( a , b , c , d ). Если оба имеют свой собственный индекс, измените один на другой. Однако во избежание путаницы все вхождения следует изменить.
Сначала примените A → B к таблице.Первая строка — это ( a , b 1 , c 1 , d ), где a не имеет индекса, а b 1 имеет индекс 1. Сравнивая первую строку со второй, измените b 2 на b 1 . третьей строке есть 3 Поскольку в , b в третьей строке остается прежним. Итоговая таблица:
А | Б | С | Д |
---|---|---|---|
а | б 1 | с 1 | д |
а | б 1 | с | д 2 |
aа3 | б | с | д |
рассмотрим B → C. Затем И первая, и вторая строки имеют b 1 и обратите внимание, что вторая строка имеет безиндексный c . Поэтому первая строка меняется на ( , b1 , ) c , d a . Тогда результирующая таблица будет такой:
А | Б | С | Д |
---|---|---|---|
а | б 1 | с | д |
а | б 1 | с | д 2 |
aа3 | б | с | д |
рассмотрим CD → A. Теперь В первой строке есть c без индекса и d без индекса , что такое же, как и в третьей строке. Это означает, что значение A для первой и третьей строк также должно быть одинаковым. Следовательно, измените в 3 строке на . третьей Итоговая таблица:
А | Б | С | Д |
---|---|---|---|
а | б 1 | с | д |
а | б 1 | с | д 2 |
а | б | с | д |
На этом этапе обратите внимание, что третья строка — это ( a , b , c , d ), которая совпадает с t . это окончательная таблица для теста преследования с заданными R и F. Таким образом , Следовательно, всякий раз, когда R проецируется на S 1 , S 2 и S 3 и снова соединяется, результат находится в R . В частности, результирующий кортеж такой же, как кортеж R , который проецируется на { B , C , D }.
Ссылки
[ редактировать ]- ^ Альфред В. Ахо , Катриэль Бири и Джеффри Д. Уллман : «Теория объединений в реляционных базах данных», ACM Trans. Данныеб. Сист. 4(3):297-314, 1979.
- ^ Дэвид Майер , Альберто О. Мендельзон и Иеошуа Сагив : «Тестирование последствий зависимостей данных». АКМ Транс. Данныеб. Сист. 4(4):455-469, 1979.
- ^ Майкл Бенедикт , Джордж Константинидис , Джансальваторе Мекка , Борис Мотик , Паоло Папотти , Донателло Санторо , Эфтимия Цамура : Сравнительный анализ погони . В Proc. ПОДС, 2017.
- ^ «Lunatic Mapping and Clean Chase Engine» . 6 апреля 2021 г.
- Серж Абитебул , Ричард Б. Халл , Виктор Виану : Основы баз данных. Аддисон-Уэсли, 1995.
- А. В. Ахо , К. Бери и Дж. Д. Ульман : Теория объединений в реляционных базах данных . Транзакции ACM в системах баз данных 4 (3): 297–314, 1979.
- Дж. Д. Ульман : Принципы баз данных и систем баз знаний, том I. Computer Science Press, Нью-Йорк, 1988.
- Дж. Д. Ульман , Дж. Видом : Первый курс систем баз данных (3-е изд.). стр. 96–99. Пирсон Прентис Холл, 2008.
- Майкл Бенедикт , Джордж Константинидис , Джансальваторе Мекка , Борис Мотик , Паоло Папотти , Донателло Санторо , Эфтимия Цамура : Сравнительный анализ погони . В Proc. ПОДС, 2017.
Дальнейшее чтение
[ редактировать ]- Серджио Греко; Франческа Спеццано; Кристиан Молинаро (2012). Неполные данные и зависимости данных в реляционных базах данных . Издательство Морган и Клейпул. ISBN 978-1-60845-926-1 .