Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

MySql - как хранить ссылки на значения в других таблицах?

Aleksandr Boronaev Ученик (35), закрыт 4 года назад
Есть главная таблица (словарь: слово и перевод), у которой id - ключ.

Вторая таблица пользователи.
Если пользователь выучил слово под id 1, оно больше отображаться не должно.

Для реализации я хочу создать вторую таблицу, которая будет хранить эти значения:
user_name | words_id
alex | 1 55 92 45 -> id слов, которые больше отображать не нужно
jane | 42 123 44

То есть, добавлять значения в одну строку, используя пробел как разделитель.

Это правильный способ?
Лучший ответ
Андрей Высший разум (425166) 4 года назад
Нет, это совершенно НЕ правильный способ.

Стандартный механизм называется "связь многие-ко-многим" и объясняется в любом учебнике SQL.

Создаётся ОДНА дополнительная таблица, содержащая id_word (id слова) и id_user (id пользователя), которая содержит все комбинации пользователей и выученных ими слов - по одной записи на каждое слово каждого пользователя.
Aleksandr BoronaevУченик (35) 4 года назад
Ещё вопрос.
Допустим, пользователь сегодня выучил несколько слов, потом завтра.

Как ему потом посмотреть, какие слова, когда и в каком количестве он выучил?
Андрей Высший разум (425166) Так в этой самой таблице сделай ещё один столбец - дату добавления.
Остальные ответы
Федор Новиков Искусственный Интеллект (351558) 4 года назад
правильный способ:
одна таблица user_name|user_id с уникальными индексами по обоим полям, чтобы не было дублей
вторая таблица user_id|seq|words_id с уникальным индексом по всем трем полям
тогда в SQL будет легко их обрабатывать
Aleksandr BoronaevУченик (35) 4 года назад
А как это должно работать?
Как мы в один столбик можем сохранить сразу два значения id?
Aleksandr Boronaev Ученик (35) Извините за глупый вопрос. Только учусь
Похожие вопросы