0

Привет Я работаю над приложением календаря с использованием Ruby on Rails. Rails - это агностик базы данных, поэтому в разработке я использую SQLite, но в производстве я ищу использовать PostgreSQL. В настоящее время препятствие, с которым я столкнулся, связано с тем, как я разрабатываю схему базы данных.Проектирование схемы базы данных - данные, общие для всех пользователей или выполненные на заказ

Сначала у меня есть таблица пользователей, которая содержит информацию, такую ​​как информация для входа и адрес электронной почты. Каждый пользователь has_many планирует.

Тогда у меня есть таблица планов, которая принадлежит пользователям, и каждый план имеет событие, которое он ссылается, дату, время начала и время окончания.

Таким образом, таблицы планов будут ссылаться на таблицу событий.

Вот мой вопрос:

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

Вот мое решение:

было бы достаточно, чтобы добавить новый булев столбец в таблицу планов под названием «заказ». И если это правда, event_id (в таблице планов) будет ссылаться на таблицу пользовательских событий, а если она ложна, то она будет ссылаться на таблицу событий по умолчанию. Является ли это верным решением, и если да, то каким образом я могу реализовать его в своем приложении Rails?

Спасибо, что нашли время, чтобы прочитать мой вопрос. Мне жаль, что я идиот. Я тренируюсь каждый день, чтобы быть лучше.

ответ

1

Старайтесь не думать в терминах таблиц сначала, а с точки зрения классов и поведения их экземпляров. Самое главное, в конце концов, не то, сколько таблиц имеет ваш дизайн, но правильно ли они связаны с разными классами вашей модели.

В этом случае, похоже, вам нужны два разных класса, потому что некоторые события будут принадлежать пользователю, а другому - нет. Первый будет создан, изменен и удален этим пользователем, а последний будет управляться администратором. Экземпляры этих классов могут храниться в одной и той же таблице с использованием STI (Single Table Inheritance) со строковым столбцом с именем «type», чтобы включить Rails для хранения класса для каждого экземпляра. Класс UserEvent будет принадлежать_у: пользователю, а DefaultEvent не будет. Оба класса могут расширить Event, что, в свою очередь, расширяет ActiveRecord :: Base.

Пожалуйста, дайте мне знать, если вам нужно дополнительное разъяснение.

+0

Это прекрасно! Большое вам спасибо за ответ на мой вопрос. Я люблю тебя. – tempname81919

+0

Если вы решите принять этот ответ на свой вопрос, вы можете указать это, отметив проверку рядом с ответом. Этот вариант доступен только тем, кто задал вопрос. Маркировка принятых ответов как таковых поможет сообществу, и тот, кто дал ответ. –

+0

Получил! Благодарю. – tempname81919

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