Как обрабатывать разные типы одной таблицы?

#database #database-design

Вопрос:

Я пытаюсь создать базу данных, в которой пользователь может опубликовать сообщение. Существуют различные типы сообщений: обычное текстовое сообщение, сообщение о работе, сообщение о продукте или сообщение с вопросом.

Я пытаюсь понять, как правильно настроить свои таблицы. Я хочу, чтобы каждый пост мог быть только одного типа. Независимо от типа, я хочу подключить его к соответствующей внешней таблице, чтобы получить необходимую информацию.

Например, если я хочу создать сообщение о работе, я хочу, чтобы сообщение было подключено к таблице заданий. Аналогично, если у меня есть сообщение с вопросом, я хочу, чтобы сообщение было подключено к таблице вопросов.

Нужно ли мне создавать соединительную таблицу для каждого типа, который я хочу? Или есть способ сделать одну соединительную таблицу для каждого типа? Есть ли способ создать таблицу Post_Type?

Вот схема того, как, по моему мнению, это должно выглядеть в настоящее время

введите описание изображения здесь

Комментарии:

1. Вы можете иметь отдельные таблицы для каждого типа записей в структуре, подобной наследованию. Я бы рекомендовал это, если вы уверены, что больше не будет регулярно добавляться никаких типов, так как вам будет сложно кодировать типы в структуре. Кроме того, предполагается ли, что ваша бизнес-модель будет принимать абстрактные сообщения? То есть пост без определенного подтипа?

2. В вашем примере каждый подтип имеет точно такие же свойства. Может быть, вам все-таки не нужно наследование, и достаточно одной таблицы.

3. Привет @TheImpaler! Я бы хотел, чтобы там были регулярные сообщения. То есть сообщения, которые фокусируются только на содержании поста. Если с этим сообщением связаны какие-то внешние вещи, будь то задание по продукту или вопрос, я хотел бы получить их. Меня бы интересовала одна таблица, которая могла бы ссылаться на конкретный продукт, работу или объекты вопросов, но я не уверен, как это будет выглядеть