2014-09-14 3 views
0

Я знаю, что это, возможно, было задано довольно много раз, однако я не могу найти подходящего решения для моей проблемы. Я реализую базу данных, где у меня есть пользователи и статьи. Теперь статья может понравиться или понравиться любому пользователю. И вот проблема: мне нужно вернуть json, который содержит список всех статей, расширенных двумя полями, любимыми и любимыми, потому что запросы будут подключены к пользователям. Так любил и любил, может быть, правда или ложь. Я подумал о создании двух разных таблиц Понравился & Любимый, где бы я сохранил article_id - user_id, и если эта запись существует, это означает, что пользователь любил/любил определенную статью. Однако я не совсем уверен, правильно ли это, или я не знаю, как мне построить такой запрос. Если это важно, я использую postgresql вместе с ormlite. Спасибо за любые идеи.Дизайн базы данных для подобных/любовных отношений

+0

Возможно ли, чтобы эта же статья понравилась и любима одним и тем же пользователем? –

+0

Да, возможно – user3274539

+1

Хорошо, тогда вам понадобится соединительная таблица с двумя флагами: одна для «как» для «любви» (и ПРОВЕРКА, чтобы хотя бы один из них был не-NULL). По сути то же самое уже было предложено @Cratylus. –

ответ

2

Если я понимаю ваш вопрос, вы в основном описываете отношения M-N. Пользователь любит/любит N статей, а статья нравится/нравится пользователям M. Такие отношения реализуются через третью таблицу, в которой хранятся ассоциации пользователей и статей.
Вы можете создать таблицу UserPreferences, которая связывает user_id и article_id и содержит дополнительные столбцы, чтобы указать, понравился ли он/любил статью.
Я не могу рассказать вам больше о схеме, так как я не знаю, есть ли у вас другие степени о предпочтениях (ненавидящие, равнодушные, запутанные и т. Д.)

+0

Итак, вы в основном говорите, что я мог бы это сделать, третья таблица, где у меня есть article_id - user_id - понравился - любимый, а затем, когда я прошу, я должен присоединиться к этим отношениям. Это имеет смысл :) спасибо за эту идею – user3274539

Смежные вопросы