Coredata сущность отношения с самим собой с правилами - PullRequest
2 голосов
/ 01 февраля 2012

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

Среди этих ситуаций у меня есть ситуация,Есть много способов сделать это, я искал наиболее эффективный способ.

Над чем я работаю:

ControllerEntity {
title: String;
Отношения : Родитель (ко многим)
}

ParentEntity {
title: String;
Отношения : Дочерние (ко многим)
Отношение : Контроллер (to-one)

}

ChildEntity {
Значение: NSNumber;
Отношение : Parent (to-one; inverse)
}

Теперь рассмотрим эти случайные формулы ..

A (parentEntity) =  Alpha (child) + Beta (child) + Gamma (child)
B (parentEntity) =  Pi (child)    + Gamma (child) + Beta (child)

Наличие A и B в качестве родительских объектов и добавление этих объектов не составило никаких проблемих соответствующие дочерние наборы,
Стоит отметить, что бета-дочерний объект существует в обоих родительских объектах.

вот изменение:

Gamma (child) = [Alpha (child) + Beta (child)] / 2

BoДочерние объекты Альфа и Бета одинаковы в обеих сущностях, поэтому они могут быть ТОЛЬКО ОДНЫМИ!

Казалось, довольно просто просто объявить Гамму как РОДИТЕЛЯ и добавить эти два в качестве их потомка и вычислить.Но это (хотя это был легкий выход) не было хорошо для проверки будущего ... слишком много объектов - это всегда плохая идея ..

Следовательно, я хотел найти отношения, которые имел бы ChildEntity... с самим собой (если это возможно).Например, сущность Child Gamma получит свое значение автоматически, исходя из Alpha child и Beta child.

Существуют определенные условия, которым должны удовлетворять все эти отношения:

  1. Один объект контроллера может иметь ТОЛЬКО ОДИН « TYPE » из Child Object.Для него может быть много Parent объектов.Например, если контроллер создал Parent A , он мог бы добавить Alpha и Beta Child, когда тот же контроллер создает Parent B он может добавить New Pi child, но не Beta, поскольку он уже существует, он должен «выбрать» его… я мог бы добавить некоторый своего рода уникальный идентификатор для каждого ребенка.Как я могу установить правило для этого в NewInsert.
  2. Как ребенок может иметь отношения с самим собой?таким образом, что:
    • Родитель должен иметь ОДНОГО ОДНОГО Гамма дочерний элемент, который стажер рассчитывает свое значение на основе значений из дочерней альфа и бета-ребенка, которые являются,Опять же, Уникальный для контроллера.
  3. вот модель, которую я создал, но я не знаю, как бы я добавил Child (альфа) и CHild (Beta) в качестве дочерних элементов Child Gamma!
  4. При запросе ParentA.child, которые должны раскрывать только 3 дочерних объекта - Alpha, Beta, Gamma.
  5. ParentB.Childs должны раскрывать --- >> Pi, Gamma, Beta, (3объекты).
  6. Если я выбрал раскрытие всех дочерних элементов родителя, у которого нет дочерних элементов,
    • Родитель А должен иметь ТОЛЬКО 2 - альфа и бета
      • Родитель В должен иметь 3 -> Пи, Альфа, Бета.
  7. Наконец, когда я решу экспортировать или преобразовать эти данные в xml, это не должно быть столь запутанным ..

enter image description here

Мне, как новичку в базовых данных, трудно уйти с вопроса вроде как, но я пытаюсь.

Любая помощь приветствуется

...