まず、関係に関するCoreDataのドキュメントをご覧ください。あなたの例を使用して、次のようなものを考えてみましょう。
- 「重量(ポンド)」などの名前のCarAttributeTypeエンティティ
- 2765などの値を持つCarAttributeエンティティ。
- あなたが言及した必要な値(「色」、「製造」など)を持つ自動車エンティティ。
次に、CarAttributeとCarAttributeTypeの間に多対1の関係(多くのCarAttributesは同じタイプを持つことができます)、CarとCarAttributeの間に1対多の関係(各車は多くの属性を持つことができます)を持ちます。このソリューションは、ハードコードされたNULLフィールドよりもセットアップが少し複雑です。ただし、グループの繰り返しを回避し、より保守しやすいことを願っています。
編集:はい、私はそれを逃しました。StringCarAttribute、StringCarAttributeType、FloatCarAttribute、FloatCarAttributeTypeなどが必要だと思います。次に、StringCarAttributeとStringCarAttributeTypeなどの間に多対1を設定します。車はStringCarAttributeとFloatCarAttributeの両方で1対多になります。複数のタイプのエンティティが存在する理由は、StringCarAttributeとFloatCarAttributeがなく、どちらも単一のウェイト属性タイプを使用していることを宣言しているためです。
すべてのタイプで1つのCarAttributeを持つことは、1NF#4に反します。