@Maxwell012

Как организовать БД?

Не могу решить как расположить данные в бд. У меня скрипт собирает инстаграмы и твиттеры с сайта а потом парсит основную информацию с инсты и твиттера. В бд у меня находится 3 таблицы:
  1. Instagram
  2. Twitter
  3. Связующая таблица, каждая строка это соц сети одного человека, в первой колонке username instagram во второй username twitter

В чем проблема, некоторые люди имеют по 2 твиттер или по 2 инстаграма. Как правильно в таком случае расположить данные, чтобы потом было удобно собирать связующие данные. Единственный вариант который мне пришел в голову это если у человека допустим один инстаграм и 2 твиттера тогда делать 2 строки в одной инстаграм и первый твиттер а в второй просто твиттер без инстаграма или дублирующий инстаграм и второй аккаунт твиттер, но в итоге это один и тот же человек и я не смогу корректно использовать информацию с связующей таблицы.
У меня не так уж много опыта в бд, поэтому прошу помочь.
Дополнительный скриншоты для более лучшего понимания выше написанного:
Таблица instagram:
64405c4f57400276855049.png
Таблица twitter:
64405c5ca2e07524333720.png
Связующая таблица:
64405c7176a5b166453366.png
  • Вопрос задан
  • 96 просмотров
Решения вопроса 1
phaggi
@phaggi
лужу, паяю, ЭВМы починяю
В самом простом варианте сделать связующую таблицу «многие ко многим», это классика, погуглите. В этом варианте «человеки» вовсе не обязательны.

Но возможно, если требуется сущность «человек», сделать таблицу «человеков» и, соответственно, у любой сущности «твиттер» и «инстаграм» должно быть поле со ссылкой на id «человека».

В первом варианте вы фильтруете связующую таблицу по id «твиттер» и сразу получаете связанные с этим «твиттером» id «инстаграмов». Чтобы найти связанные с «твиттером» другие «твиттеры» придется каждый из полученных id «инстаграмов» в связующей таблице отфильтровывать и получать id других «твиттеров».

Во втором варианте вы по любому «твиттеру» или «инстаграму» получаете id «человека», а потом фильтруете всех «твиттеров» по полю id "человека" = найденному id "человека" и отдельно всех «инстаграмов» по их полю id "человека" = найденному id "человека". Выходит несколько дольше, но возможно сущность «человек» будет полезна еще в каких-то вопросах.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы