snaiper04ek
@snaiper04ek
Не стреляйте в эникея, он админит как умеет

Какой паттерн использовать для БД many-to-many с одним столбцом-источником для двух столбцов many-to-many?

Есть таблица с именами, для неё нужно соединить каждое имя с каждым именем, для записи уникальных значений для конкретной пары имён.
Получается, нужна таблица-посредник many to many:
id, имя1, имя2, значение

В обычном many to many требуется указывать в каком столбце таблицы-посредника будет имя- в имя1, или в имя2

А у меня один столбец-источник для двух столбцов many to many, и имя может встретиться как в первом столбце, так и во втором, невозможно указать где именно оно будет.

Подскажите паттерн для решения такой ситуации.
  • Вопрос задан
  • 95 просмотров
Решения вопроса 1
AshBlade
@AshBlade
Просто хочу быть счастливым
Тут 2 варианта - через View, либо триггеры, т.к. очки меняются часто. Поэтому вариант с таблицей отдельной я отбрасываю. Триггеры привносят непонятки, поэтому тоже убираю.
View можно сделать так.

create view points_difference as
    (
        select first.names as name1, second.names as name2, first.points - second.points as points from user_points first 
            join user_points second 
                on first.id <> second.id
        
    );

В добавок можно сделать его materialized view, чтобы от лишних перерасчетов избавиться
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы