2014-08-29 3 views
-1

Я работаю над проектом, где у меня ниже варианта использования.Необходимое предложение по архитектуре БД

У пользователя может быть много тегов для них, у нас есть много предопределенных данных в БД, которые мы используем, чтобы показать аутоискрипцию, когда они начали вводить строки тегов, я использую Rails.

User has_and_belongs_to_many taglines 

Tagline has_and_belongs_to_many users 

У меня есть отдельный совместный стол и все было хорошо, но теперь мне нужно хранить пользовательские слоганы от пользователя к БД, которая будет относится только к конкретному пользователю.

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

+0

Я бы, вероятно, добавил столбец 'custom' к вам' taglines' table и использовал его для фильтрации тегов для предложений. – BroiSatse

+0

@BroiSatse Но таблица taglines в настоящее время много-ко-многим, но пользовательские пользовательские теги являются собственностью пользователя только для пользователей, поэтому нам нужно смешивать оба. – Senthil

+0

Если вы создаете вторую таблицу, вам нужно будет запомнить две таблицы/модели каждый раз, когда вы захотите изменить свою модель. Вы выиграли, не сможете вытащить все пользовательские теги за один раз. 'many-to-many' может удерживать ассоциацию« один-ко-многим ». Просто добавьте проверку, чтобы проверить, что данный тег может принадлежать только одному пользователю, если он является обычным. – BroiSatse

ответ

0

@BroiSatse Комментарий имеет смысл, я следовал за ним.

Если создать вторую таблицу, вы должны помнить, чтобы обновить две таблицы/модели каждый раз, когда вы хотите изменить свою модель. Вы выиграли: t сможете вытащить все пользовательские теги за один раз. многие-ко-многим - , способный удерживать связь один-ко-многим. Просто добавьте проверку, чтобы проверить , что данный тег может принадлежать только одному пользователю, если он является обычным.

0

Ваш существующий пользователь и tagline стол имеет отношения «многие ко многим», держите его таким образом. Принимая во внимание, что пользователь стол и новый customTagline имеет отношения «один ко многим», так почему бы вам не создать новую таблицу для ее представления? Поскольку вы упомянули customTagline принадлежит только определенному пользователю.

+0

Это очень прямой способ, если у меня есть только теги, ваше предложение хорошее, но у меня есть около 6 моделей, которые попадают под один и тот же сценарий, здесь мне нужно создать 6 новых моделей с одинаковой структурой, это целесообразно? – Senthil

+0

Если вы не уверены, значит, у вас недостаточно данных для принятия решения. Это означает, что любые параметры хороши с учетом текущих обстоятельств, поэтому просто создайте таблицы и код. Когда вы откатываете свой код, вы получите больше информации о требованиях, и именно в это время вы вернетесь к рефакторингу/нормализации/денормализации таблиц. Вот как я это сделаю. @Senthil – neo

+0

Согласен, спасибо за быстрый ответ. – Senthil

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