Я разрабатываю приложение Ruby On Rails для сбора данных от пользователей о продуктах через веб-формы.Таблица базы данных содержит все ProductTypes, другая таблица содержит ProductAttributes, а ProductTypes_ProductAttributes - это таблица отношений, отображающая атрибуты, которые назначены определенным типам продуктов.Данные, собранные для каждого конкретного продукта, затем сохраняются в таблице «Продукты» (со столбцом / полем для каждого атрибута - который может быть пустым, если этот атрибут не имеет отношения к товару).
Я хочу добавитьфункция, позволяющая пользователям-администраторам добавлять новые атрибуты ProductAttributes в систему, а затем назначать их определенным типам ProductTypes.Нет проблем, кроме случаев, когда речь идет о сохранении определенных собранных продуктов.Это потребует динамического добавления нового поля атрибута в таблицу Products во время выполнения.Вот где я немного озадачен, как лучший способ сделать это ...
1) Хранить продукты в XML-документе ... Это сэкономит, имея кучу пустых полей в БД дляатрибуты, которые не принадлежат ProductType для этого продукта, и означает, что новые типы атрибутов могут быть сохранены без проблем.Я немного устал от хранения данных в файлах XML, хотя я всегда рассматривал их как средство передачи и перемещения данных, а не их хранения.
2) Продолжать использовать СУБД, но включаюПоле BLOB для хранения атрибутов, которые могут быть динамическими для продукта в XML, в то время как традиционные поля остаются для кода продукта, описания и т. Д. И т. Д.
3) Наконец, существует ли решение СУБД для вышеупомянутого?Я видел некоторые дискуссии о MongoDB, но, признаюсь, я действительно не знаком с тем, что он имеет опыт работы с более традиционными базами данных.
Интересно, есть ли у кого-нибудь опыт и советы по этому поводу, которые он хотел быпередай?Мне бы хотелось что-то, что интегрируется с Ruby on Rails и позволяет динамически добавлять поля постоянства, не требуя каких-либо изменений кода при добавлении поля в таблицу БД?
Cheers,
Steve