В моей работе есть несколько типов таблиц с множеством множеств. У меня есть приложения, которые связывают слова с другими словами (ngrams) и базами данных, которые могут связывать пользователей с другими пользователями (друзьями/последователями).Поиск отношений данных или графиков во многих таблицах SQL
Я хотел бы знать, как я могу строить отношения с этими данными, чтобы находить полезные подключения как для моих приложений, так и для моих пользователей.
Возьмите следующую упрощенную таблицу базы данных с внешним ключом, связывающим узел с другим узлом.
id | node1 | node2
--------------------
1 | 1 | 2
2 | 1 | 3
3 | 1 | 4
4 | 2 | 1
5 | 2 | 3
6 | 2 | 5
7 | 3 | 1
Например, в таблице выше, может быть очевидно, что «1» является самым популярным, так как это время связано с наиболее (на 2 & 3). Также может быть очевидно, что, возможно, «2» следует связать с «4», поскольку «2» разделяет так много отношений с «1» (и «1» связано с «4»).
Так, например, я мог бы найти:
- пути, которые соединяют узлы к другим узлам.
- полезные соединения, основанные на сходстве (рекомендации)
- группы узлов, которые разделяют родственных соединений
Другие распространенные формы отношений являются такие вещи, как user <=> friends
или blog_post <=> tags
.
Я ищу SQL-запросы, которые могут запускаться непосредственно передним концом, или задания сокращения карты, которые могут выполняться каждую ночь, чтобы вытащить отношения из этих данных.
Ваш график отношений уже построен - ваши узлы образуют вид списков смежности с повторениями (т. Е. Список ребер). Вы можете найти путь от одного узла к другому с помощью таких алгоритмов, как BFS. Группы узлов легко найти с нормальной работой SQL и GROUP BY. А для поиска похожих/рекомендаций вам нужен конкретный алгоритм (например, [совместная фильтрация] (http://en.wikipedia.org/wiki/Collaborative_filtering)). В любом случае, у вас уже есть отношения, поэтому, пожалуйста, уточните свой вопрос, чтобы проиллюстрировать вашу фактическую цель. – ffriend
Что такое идентификатор? суррогатный ключ? означает, что кортеж подразумевает: «node2 нравится node1»? – wildplasser
Как wildplasser сказал, что вам нужно выяснить свой алгоритм, а затем написать Sql. Я бы изменил вопрос на «что является предпочтительным алгоритмом рекомендации» – Danni