Мне нужно сохранить динамическое число целочисленных атрибутов (1-8). Я храню их в отдельных столбцах в таблице базы данных, например:
attribute_1, attribute_2, ..., attribute_8
Это приводит к довольно грязной модели, когда методы должны ссылаться на них, а также на громоздкую таблицу базы данных и схему.
Они назначаются значениям по умолчанию (но являются переопределяемыми в форме) и представляют собой уникальные идентификаторы для пользователя.
Например, заваривание состоит из восьми партий, прежде чем их смешивают в ферментере. Пивовар может захотеть вернуться и обратиться к любому из них по его уникальному идентификационному номеру. Я назначаю эти уникальные значения на основе последнего максимального значения при создании нового Brew. Тем не менее, пользователь может захотеть переопределить эти значения по умолчанию на некоторые другие номера.
В большинстве случаев (более мелкие пивоварни) они, вероятно, будут использовать только первые два, но некоторые более крупные пивоваренные заводы будут использовать все восемь.
Должен быть лучший способ сохранить их, чем иметь восемь разных атрибутов с тем же именем и числом в конце.
Я использую MySQL. Есть ли простой/сжатый способ хранения массива или хэша JSON, но все же можно редактировать эти значения в форме?
Я бы не хранил такие атрибуты. Это ограничит вас в будущем. Скажем, вы хотите знать, какие пивовары использовали атрибут_4? Вам нужно будет отсканировать всю таблицу варочных панелей, откройте поле атрибутов и деконструируйте ее, чтобы увидеть, есть ли там 4.
Гораздо лучше отделить Brew и Attributes в двух таблицах и связать их так:
Еще одно преимущество - легко добавлять атрибуты.
Хранение JSON в порядке, как указывал @max. Я просто предлагаю нормализованную базу данных.