Основные данные: Как структурировать модель данных с родительским объектом - PullRequest
1 голос
/ 01 ноября 2011

Я давно слушаю, но впервые звоню сюда ... Надеюсь, вы можете помочь мне с вопросом о базовых данных!

Я создаю специальное бизнес-приложение для iPad, которое позволяет пользователю заполнитьконтракты, обычно используемые в их бизнесе.Существует четыре контракта, каждый из которых содержит от 20 до 40 полей данных, и все они довольно разные, но есть несколько (3-4) полей, общих для всех четырех, таких как Дата создания и Имя поставщика и т. Д.

Мне нужно отобразить все контракты вместе в UITableView (сгруппированный стиль, чтобы показать, что есть разные типы), и мне нужно иметь возможность выбрать ячейку и отобразить подробный вид, чтобы пользователь мог просматривать и изменять данные для определенногоконтракт.

Мои исследования на сегодняшний день говорят мне, что я должен использовать родительскую сущность (сущность A), которая перечисляет общие для всех атрибуты, а затем дочерние сущности (сущности B, C, D и E, представляющие каждую изчетыре контракта), которые имеют уникальные атрибуты и наследуют остальную часть от объекта А.

Является ли это наилучшим способом структурирования этой модели данных?Принимая во внимание, что когда я создаю новый экземпляр контракта, он должен быть автономным объектом со всеми его атрибутами и атрибутом родителя.Если это так, когда я генерирую ячейки для моего tableView, я выбираю сущность A и надеюсь, что все остальное придет, или я делаю отдельные запросы на выборку для каждого типа контракта и добавляю в таблицу таким образом?И наоборот, если я хочу создать новый экземпляр контракта (скажем, сущность B в моей модели данных), как бы я поступил об этом?

Надеюсь, я объяснил это достаточно хорошо.Спасибо за вашу помощь с этим!

1 Ответ

0 голосов
/ 01 ноября 2011

Вы должны создать абстрактную сущность с вашими общими полями и наследовать оттуда ваши различные типы контрактов.Из документации :

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

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

...