Приложение основных данных на основе документов — добавление и удаление дополнительных атрибутов

У меня есть приложение основных данных на основе документов с сущностью «Языки». Этот объект имеет два постоянных атрибута «ключ» и «комментарии». Можно ли программно добавлять и удалять дополнительные атрибуты во время выполнения («язык_1», «язык_2» и т. д.)?

Моя цель - избежать создания таблицы, скажем, с 50 атрибутами, когда пользователю нужно всего несколько (я не знаю заранее, сколько атрибутов потребуется).

Или, может быть, я должен выбрать другое решение? :)

РЕДАКТИРОВАТЬ

Объяснение случая: когда пользователь создает новый документ, таблица «Языки» имеет только 2 атрибута «ключ» и «комментарии». Во время работы с документом пользователь может в любой момент добавить или удалить язык(и) - я имею в виду атрибуты (столбцы), а не строки в таблице.

Моя цель - иметь динамическую сущность, как показано ниже.

объяснение базы данных

структура данных


person Maciek    schedule 12.02.2017    source источник
comment
Кому или чему принадлежат эти языковые объекты? Дайте нам заполненный пример, содержащий больше, чем просто объект Language, включая значения данных. P.S.: в Core Data нет ни таблиц, ни столбцов, ни строк.   -  person Hal Mueller    schedule 13.02.2017


Ответы (1)


Да, это возможно. Но это, вероятно, не то, что вы хотите. Вам придется заново создавать измененную управляемую объектную модель для каждого документа во время выполнения при каждом открытии документа.

Увидев ваш эскиз, предлагаю немного другую модель. Кстати, лучше всего использовать существительные в единственном числе для сущностей («Раздел», а не «Разделы»), существительные во множественном числе для Отношений ко многим («разделы», а не «relSection») и опускать имя объекта в его атрибутах ( «комментарий», а не «комментарий раздела»).

Используйте одну Сущность для своих постоянных атрибутов. Назовите его «Слово». В Word есть атрибуты «комментарии» и «ключ», а также ко-многим отношения «переводы» и «разделы». На другом конце отношения «переводы» находится объект перевода, который имеет атрибуты «текст», а также, возможно, название языка (либо в виде строки, либо в виде другого отношения).

Что-то вроде этого:

модель данных

В первом примере у вас будет один экземпляр Word, 3 экземпляра Translation (.text = Home, Zuhause и Casa) и 3 экземпляра Language (.name = английский, немецкий, испанский). Когда вы добавите вторую строку, вы получите еще 1 экземпляр Word, еще 3 экземпляра перевода, но еще 0 языков. Вместо этого добавьте новые экземпляры перевода в отношение «переводы» существующего языка.

person Hal Mueller    schedule 12.02.2017
comment
Спасибо, Хэл. Ваше решение было моим вторым сценарием :) BTH, спасибо за предложение стиля. - person Maciek; 14.02.2017