2013-06-07 2 views
1

У меня есть сценарий наличия реляционных таблиц, таких как «раздел имеет много элементов», поэтому я подумал о том, чтобы перейти к модели отношения has_many, как к разделу, содержащему много элементов.Является ли хранение данных как json в mysql хорошей идеей?

У меня есть предложения от нашего клиента, говорящие, чтобы сохранить данные как JSON внутри столбца вместо нескольких таблиц.

Я немного смущен, с каким подходом я должен идти.

Предложения приветствуются.

Это модель я предлагаю

например: раздел has_many элементы

Таблица: разделы

id type     
1 page  

Таблица: Элементы

id type content   section_id 
1 text <p>lipsum lipsum</p>  1 
2 image /images/test.png   1 

клиента предложение,

id type content    
1 page {:text => "<p>lipsum</p>", image => "/images/test.png"} 

ответ

0

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

0

Хранение данных как JSON в одном поле базы данных, как правило, плохая идея. Это означает, что вы не сможете манипулировать/запрашивать данные с помощью SQL - какой тип побеждает точку хранения данных в базе данных.

Я бы рекомендовал отношения один-ко-многим между вашим section столом и столами для texts и images. Это может быть достигнуто посредством belongs_to и has_many ассоциаций в Rails.

В любом случае создание новых таблиц будет полезно, если у вас есть несколько текстов и изображений для одного раздела. Если у вас есть один текст и одно изображение для каждого из ваших разделов (как пример предлагает), вы, вероятно, будете в порядке с одной таблицей sections с id, type, text и image атрибутами.

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