0

次のエンティティがあります。

  • グループ
  • セクタ
  • データ

ノート:

  • 各グループは 1 つ以上のセクターを持つことができます
  • 各グループは、1 つ以上のデータを持つことができます。グループ内の各セクターは、そのグループが持つデータのすべてまたは一部を持つことができます (デフォルトでは、各セクターはそのグループ内のすべてのデータを持ち、各セクターは必要のないデータのタグを外すことができます)
  • 各セクターは、そのグループ内のセクターなし、または 1 つ以上のセクターと関連付けることができます

関係をどのように設計すればよいですか?

4

2 に答える 2

1

主キーは必要ありません。コアデータはリレーショナルデータベースではありません

*.xcdatamodel のグラフィカル モードで、2 つのエンティティ間の関係を作成します。

Ctrl キーを押しながらエンティティをクリックし [ポインタが + になります]、生成された線を他のエンティティにドラッグし、1 対 1 または 1 対多にします。

于 2013-09-06T03:17:47.067 に答える
1

主キーは必要ありません。ここで非常に複雑な関係を扱っているとは思いません。「GroupSector」と「SectorData」が必要になる可能性がありますが、このような単純なものでもうまくいく可能性があります。

ここに画像の説明を入力

  • グループには多くのセクターがあります。このタイプの関係では、「1 つ以上」が暗示されます。
  • グループには多くのデータがあります。
  • データには 1 つのグループがあります。
  • セクターには多くの (または多くのグループに属することができる) グループがあります。「各セクターは、1 つのグループのみに属することも、別のグループの一部になることもできる」というあなたの言い回しは混乱を招きますが、グループとの「多対多」の関係を暗示しているようです。

グループ内の各セクターは、そのグループが持つデータのすべてまたは一部を持つことができます (デフォルトでは、各セクターはそのグループ内のすべてのデータを持ち、各セクターは必要のないデータのタグを外すことができます)

このモデルでは、セクターは、所属するグループから関連データを取得できます。グループが持っているデータは、セクターが簡単に取得できます。とはいえ、セクターはすべてのグループ データを必要としない場合があります。これが「untaggedData」属性の目的です。その属性は、セクターのタグを解除する必要があるデータへの参照を保持できます。そのセクターを持つグループはそのデータを持っていないかもしれませんが、持っている場合は「タグなし」になります。それがあなたがここで望んでいたものかどうかは完全にはわかりませんので、必要に応じて明確にしてください。

各セクターは、そのグループ内の 1 つまたは複数のセクターと関連付けることができます。

このモデルを使用すると、どのセクターが特定のグループに属しているかを簡単に判断できるはずです。次のように、Sector にそれ自体との別の "to many" 関係を与えることもできます。

ここに画像の説明を入力

アップデート

あなたのコメントごと:

しかし、「untaggedData」の属性タイプはどうあるべきですか

場合によります。name のようなコンマ区切りの Data 属性のコレクションを持つ単純な NSString である可能性があります (例: @"data name 1 , data name 2, ..." Data に変更されない name 属性があると仮定)。とはいえ、データで参照している属性が変更される可能性が高い場合、これは適切な方法ではなく、別のデータ モデルを試してください。

解決策は、「untaggedData」属性を取り除き、SectorData と呼ばれる別のエンティティを使用することです。このエンティティは、Sector と "対 1" の関係を持ち、Data と "対多" の関係を持ちます。また、Sector の新しいセクタデータ関係とデータのセクタデータ関係と逆の関係を持つ必要があります。これらすべてを凝縮する方法があるかもしれませんが、そのまま試してみて、どうだったか教えてください. 幸運を!

ここに画像の説明を入力

于 2013-09-06T04:31:14.943 に答える