# 15. Алгоритмы реализации соединений отношений в SQL
Для того, чтобы обеспечить целостность, мы будем заниматься денормализацией (создавать множество связанных таблиц).
Это приводит к снижению производительности.
WARNING
Соединение таблиц - это дорого!
TIP
Говорить об эффективности этих алгоритмов - сложно. Хоть 2-ой потенциально и работает за O(n), но все может изменится из-за сортировки (а может и не изменится, зависит от исходных данных). Современные СУБД сами принимают решения, какой алгоритм использовать для достижения эффективности
# 1. Вложенные циклы
for (int i = 0; i < R.Count; ++i)
{
for (int j = 0; j < S.Count; ++j)
{
if (R[i].atr != S[j].atr) continue;
Console.WriteLine(r + s);
}
}
for r in R
for s in S
if (r.atr == s.atr)
print(r + s)
# 2. Через слияние
R.sort(atr)
S.sort(atr)
while not EndOF(S) and not EndOF(R)
if (r.atr < s.atr)
next(R)
if (r.atr = s.atr)
print(r + s)
next(R)
if (r.atr > s.atr)
next(S)