Это мой первый вопрос по stackoverflow. Поэтому, пожалуйста, прости, если он не соответствует стандартам:
ИСПОЛЬЗОВАННАЯ БАЗА ДАННЫХ: PostgreSQL v11.2
Я создаю реакцию. js приложение для показа статей для зарегистрированных пользователей. Этими пользователями могут быть: (i) тех, кто подписался на один из планов подписки, или, (ii) просто вошли в систему и просматривали, но еще не подписались. (ЭТА ЧАСТЬ УПРАВЛЯЕТСЯ - НИКАКОЙ ПРОБЛЕМЫ ЗДЕСЬ)
Статья может принадлежать к разным "категориям". (ЭТА ЧАСТЬ УПРАВЛЯЕТСЯ - НИКАКИХ ПРОБЛЕМ ЗДЕСЬ)
Теперь, для подписанных пользователей, должны отображаться определенные «категории» статей, , которые обычные пользователи не могут видеть.
Я хочу создать структуру базы данных, которая будет обрабатывать эту видимость в зависимости от того, подписан пользователь или нет.
USER
столбцы таблицы (что важно): идентификатор, имя, is_subscribeed (логическое значение)
CATEGORY
столбцы таблицы (что важно): id, cat_name
ARTICLE
столбцы таблицы (что важно): идентификатор, заголовок
ARTICLE_CATEGORY
столбцы таблицы: id, article_id, category_id
SUBSCRIPTION
столбцы таблицы: id, имя_плана, цена, описание
Как go опередить его? Я еще не построил структуру, чтобы реализовать это.
ЧТО ДОЛЖЕН БЫТЬ ЛУЧШЕГО ПОДХОДА?
(1) Должен ли я сделать это на уровне категории / статьи? Например: таблицы «ARTICLE_CATEGORY» и «ARTICLE» будут содержать логический столбец «subs_only».
ИЛИ
(2) Должен ли я вести отдельную таблицу, связывающую мои планы подписки с категориями / статьями?
Моя модель для ПОЛЬЗОВАТЕЛЯ выглядит следующим образом:
const User = sequelize.define("user", {
full_name: { type: DataTypes.STRING },
email: { type: DataTypes.STRING },
password: { type: DataTypes.STRING },
email_verify_token: { type: DataTypes.STRING },
is_email_verified: { type: DataTypes.BOOLEAN },
is_subscribed: { type: DataTypes.BOOLEAN },
... <many more columns>
});
Моя модель для SUBSCRIPTION_PLAN выглядит так:
const SubscriptionPlan = sequelize.define("subscription_plan", {
plan_name: { type: DataTypes.INTEGER },
price: { type: DataTypes.INTEGER }
... <many more columns>
});
Моя модель для ПОДПИСЧИКОВ выглядит так:
const Subscriber = sequelize.define("subscriber", {
user_id: { type: DataTypes.INTEGER },
subscription_id: { type: DataTypes.INTEGER }
... <many more columns>
});
Моя модель для ARICLE выглядит так:
const Article = sequelize.define("article", {
title: { type: DataTypes.STRING },
url: { type: DataTypes.STRING },
display_pic: { type: DataTypes.STRING },
... <many more columns>
});
Моя модель для ARICLE_CATEGORY выглядит так:
const ArticleCategory = sequelize.define("article_catgeory", {
article_id: { type: DataTypes.INTEGER },
category_id: { type: DataTypes.INTEGER }
... <many more columns>
});