Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
09.06.2019, 23:03
|
|||
|---|---|---|---|
|
|||
Связь таблицы с собой |
|||
|
#18+
Добрый день. Есть таблица со столбцом "UserID", куда пишется уникальный идентификатор пользователя. Каждый UserID может дружить с несколькими другими UserID. Как наиболее правильно реализовать запись данных об этой дружбе, если учесть, что все UserID находятся в одной таблице в одном столбце? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.06.2019, 02:13
|
|||
|---|---|---|---|
Связь таблицы с собой |
|||
|
#18+
tempreg00Как наиболее правильно реализовать запись данных об этой дружбе, если учесть, что все UserID находятся в одной таблице в одном столбце?Сделать таблицу с 2мя полями (Кто, СКем) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.06.2019, 09:21
|
|||
|---|---|---|---|
Связь таблицы с собой |
|||
|
#18+
alexeyvgtempreg00Как наиболее правильно реализовать запись данных об этой дружбе, если учесть, что все UserID находятся в одной таблице в одном столбце?Сделать таблицу с 2мя полями (Кто, СКем) Сначала надоть решить: коммутативно ли отношение дружения? Т.е. если А дружит с Б следует ли из этого, что Б дружит с А? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.06.2019, 09:34
|
|||
|---|---|---|---|
Связь таблицы с собой |
|||
|
#18+
aleks222alexeyvgпропущено... Сделать таблицу с 2мя полями (Кто, СКем) Сначала надоть решить: коммутативно ли отношение дружения? Т.е. если А дружит с Б следует ли из этого, что Б дружит с А?Безответной дружбы не бывает! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.06.2019, 10:03
|
|||
|---|---|---|---|
|
|||
Связь таблицы с собой |
|||
|
#18+
alexeyvg, благодарю. Логически тоже пришёл к этому. Ещё пытался установить связи и первого и второго столбца (Кто, СКем) с UserID первой таблицы, но SQL запрещает добавить вторую связь к одному столбцу. Значит, вообще без связей использовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.06.2019, 10:12
|
|||
|---|---|---|---|
|
|||
Связь таблицы с собой |
|||
|
#18+
aleks222, да, они дружат полноценно и в обе стороны) хотя, с точки зрения организации БД, вопрос действительно немного сложнее, чем кажется. Думаю, используя способ сохранения alexeyvg, для получения списка друзей предполагается получать все значения столбца "СКем", при определённом столбце "Кто". В таком случае понимаю, что будет дублирование данных при сохранении списка дружбы того, кто уже попал ранее в список в столбец "СКем". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.06.2019, 10:35
|
|||
|---|---|---|---|
Связь таблицы с собой |
|||
|
#18+
tempreg00Ещё пытался установить связи и первого и второго столбца (Кто, СКем) с UserID первой таблицы, но SQL запрещает добавить вторую связь к одному столбцу. Значит, вообще без связей использовать?Во первых, ничего он не запрещает, но это просто не нужно. Во вторых, вам нужно установить 2 связи: "Кто с UserID" и "СКем с UserID" aleks222alexeyvgпропущено... Сделать таблицу с 2мя полями (Кто, СКем) Сначала надоть решить: коммутативно ли отношение дружения? Т.е. если А дружит с Б следует ли из этого, что Б дружит с А?Да в общем схема от этого не меняется. Разве что, если отношение коммутативно, то нужно запретить лишние пары типа (1,2) и (2,1) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.06.2019, 10:36
|
|||
|---|---|---|---|
Связь таблицы с собой |
|||
|
#18+
tempreg00В таком случае понимаю, что будет дублирование данных при сохранении списка дружбы того, кто уже попал ранее в список в столбец "СКем".Да, поэтому, что бы не было дублирования, нужно запретить дублирование. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.06.2019, 11:34
|
|||
|---|---|---|---|
|
|||
Связь таблицы с собой |
|||
|
#18+
alexeyvgДа, поэтому, что бы не было дублирования, нужно запретить дублирование. :-) Вероятно тут мне нужна уже практическая помощь. Для второй таблицы создан парный ключ (Кто, СКем), дублирование 1,2 он запрещает, но дублирование 2,1 нет. Не нахожу настройку, отвечающую за такой запрет, где это настраивается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.06.2019, 12:24
|
|||
|---|---|---|---|
Связь таблицы с собой |
|||
|
#18+
tempreg00, через ограничения никак. Это можно сделать при помощи триггеров, срабатывающих при попытке вставки или апдейта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.06.2019, 12:27
|
|||
|---|---|---|---|
Связь таблицы с собой |
|||
|
#18+
Надо разрешить строку 1-2 и запретить строки 2-1? Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.06.2019, 12:30
|
|||
|---|---|---|---|
Связь таблицы с собой |
|||
|
#18+
Я в упор не понимаю желания остаться в рамках одной таблицы. При том, что соотношение имеет тип M:N. Сделайте две таблицы. Первая - собственно юзеры, вторая - дружбы. А чтобы не хранить дубли, на таблицу дружбы наложите констрейнт "ID кто" < "ID с кем" и создайте "переворачивающий" триггер на случай, если кто-то попытается ввести наоборот. И вьюшку, которая создаёт полный список дружб тупым UNION. Или наоборот, храните дубли - и тогда создайте триггер, который по любому действию выполняет такое же действие с "обратной" парой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.06.2019, 12:54
|
|||
|---|---|---|---|
Связь таблицы с собой |
|||
|
#18+
tempreg00Как наиболее правильно реализовать запись данных об этой дружбе, если учесть, что все UserID находятся в одной таблице в одном столбце?В качестве альтернативы можно рассмотреть - https://docs.microsoft.com/ru-ru/sql/relational-databases/graphs/sql-graph-architecture?view=sql-server-2017 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.06.2019, 13:03
|
|||
|---|---|---|---|
Связь таблицы с собой |
|||
|
#18+
А втроём и более дружить могут? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.06.2019, 16:39
|
|||
|---|---|---|---|
|
|||
Связь таблицы с собой |
|||
|
#18+
Akina, Нет необходимости оставаться в одной таблице. Уже создана вторая. Актуальный вопрос был как ликвидировать хранение лишних пар. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.06.2019, 16:40
|
|||
|---|---|---|---|
|
|||
Связь таблицы с собой |
|||
|
#18+
982183, В рамках данной задачи нет)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=46&tablet=1&tid=1687696]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
129ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 460ms |

| 0 / 0 |
