альтернатива использованию многих-многих отношений с простыми данными в реляционной базе данных - PullRequest
0 голосов
/ 26 августа 2011

Я работаю над проектом ruby ​​on rails, который требует записи некоторых простых пользовательских данных, которые вписываются в отношения «многие ко многим» (представьте, что это набор интересов пользователя).У меня есть опыт во многих отношениях, используя has_many: through и HABTM, но когда все достаточно просто, чтобы его можно было представить в виде одного слова, кажется излишним создавать новую модель и выполнять необходимые объединениячтобы получить к нему доступ.Я не вижу особой необходимости в записи других свойств, кроме названия самого интереса, поэтому аргумент в пользу использования модели не является убедительным.Я знаю, что для этого может быть полезен noSQL, но мне интересно, каким будет правильный способ сделать это с помощью реляционной базы данных (я использую postgres), как с точки зрения производительности, так и с точки зрения хорошего дизайна.Подход, который я собираюсь использовать, состоит в том, чтобы записать ее как строку с разделителями в пользовательской модели с использованием текстового типа данных, а затем проанализировать это в массив.или это может быть строка, представляющая массив хеш-ключей, который затем запрашивает у хеш-таблицы или базы данных хранилище ключей / значений данные.Я уверен, что есть много разных подходов к этому, но я был бы признателен, если бы знал, какова будет лучшая практика, поскольку я ожидаю, что мне придется много применять в будущем.Также, если бы вы могли порекомендовать какие-либо инструменты / гемы / фреймворки, которые помогут в этом, это было бы очень полезно.

Спасибо.

1 Ответ

1 голос
/ 26 августа 2011

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

...