Как организовать структуру базы данных?

453
30 декабря 2016, 11:12

Есть БД users. В одной из таблиц есть поля login, password, id. Как связать несколько пользователей? Т.е. пользователь с логином Вася является другом Алексея ? А у пользователя Петр есть, например, 14 друзей (Леша, Вася, Катя ..).

Какие нужно делать таблицы? Как организовывать, т.е. как делать между ними связи?

DB - MySQL.

Как структурируются большие объемы данных в БД? Например, как в соц.сетях - пользователь Олег имеет хобби 1,2 и 3, участвует в группах номер 32, 43, 65, а также у него есть личные фотографии, видео, аудио.

Что изучить, чтобы понять, как это корректно делается? Если знаете мануалы по данному вопросу - подскажите, буду благодарен.

Answer 1

Изучите три типа связей:

  • один к одному
  • один ко многим
  • многие ко многим

Информации в сети очень много. Есть примеры и таблиц, и запросов. Вот один из вариантов https://habrahabr.ru/post/193380/

Для хранения графа друзей лучше использовать графовую БД (neo4j). Так как использовать реляционную БД (MySql) для этой цели не так эффективно.

READ ALSO
Primary key по двум столбцам MySQL

Primary key по двум столбцам MySQL

ЗдравствуйтеПредположим, есть таблица со столбцами user_id и user_group, остальные столбцы не важны

361
Помогите сделать запрос

Помогите сделать запрос

Фирма занимается приемом вторсырья и имеет несколько пунктов приемаКаждый пункт получает деньги для их выдачи сдатчикам в обмен на сырье

379
SQL Union, вторая часть запроса не исполняется

SQL Union, вторая часть запроса не исполняется

Итогом возвращается только набор из ALL, без today

355
Ограничение MySQL

Ограничение MySQL

Есть поле "процент надбавки" - "percentage of allowances"

392