0

У меня есть несколько пользователей/клиентов (пусть говорят N пользователей) и M количество статей.нормализовать и эффективно SQL базы данных desinging

bydeafult эти предметы M будут показаны каждому пользователю. Пользователь может отметить статью как «не заинтересованную». если он это сделает, мы не будем показывать эту статью ему/ей. но эта статья может быть видна другим пользователям, которые не отметили это как «не интересующиеся». правильно?

Теперь у меня проблема. Я не хочу создавать повторяющиеся объекты статьи для разных пользователей. вместо этого должен быть некоторый путь/флаг (not_interested), связанный с каждым пользователем, чтобы мы могли отфильтровать его на основе этого. но я не уверен, как это сделать в базе данных SQL.

Любые предложения будут оценены.

Таблицы:

Article: 
     title, description, etc.. 

User: 
    username, email, phone, etc 

я должен создать среднюю таблицу, которая будет иметь foriegn ключ к статье и пользователя и флаг для not_interested? есть ли лучший способ?

ответ

1

Вам нужны многие ко многим таблицы, что-то вроде

user_article: 
    article_id, user_id, not_interested 
+0

да просто обновил свой вопрос – rocktheparty

+0

или имя таблицы что-то вроде 'user_not_interested_in_article' и пропустить' not_interested' колонки :-) –

+0

И использовать 'ЛЕВЫЙ JOIN ... IS NULL', чтобы найти не-not_interested строки. –

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