2

私のアプリケーションには N 個のUserがいます。各ユーザーは N 個のカテゴリを持つことができます。各カテゴリは N 個のBooksを持つことができます。

次のエンティティBookMetadata、Users、Categoriesを作成しました

BookMetadata エンティティは、さまざまなユーザーからの書籍データの一意のコレクションです。

これらのエンティティ間の関係を作成するにはどうすればよいですか。

間の関係 - ユーザーとカテゴリ ( 1 対多)またはユーザーと本 (1 対多、1 人のユーザーが 1 つまたは複数の本を持つことができます)。

- カテゴリと本の間の関係 ( 1 対多)。

ここに画像の説明を入力

これらのリレーションシップの実装についての私の理解は正しいですか? CoreData でリレーションシップを作成するのは比較的新しいものです。いいえ、またはより良い解決策がある場合は、どうすればよいか教えてください。

編集:

このシナリオを考えてみましょう。

User 1 -> Category 1 -> Book1,Book2.
       -> Category 2 -> Book3, Book4.

User 2 -> Category 1 -> Book1,Book2,Book3.
       -> Category 3 -> Book4

上記のシナリオでは。同じ本 (本 3) は、別のユーザーに対して別のカテゴリを持っています。このシナリオをどのように処理しますか?

編集2:

サンプルの sqlite DB ファイル @dropbox https://www.dropbox.com/s/nlmdojkk64bkf1b/test.sqliteを添付しています。

4

1 に答える 1

1

慣例として、エンティティは単数形で命名する必要があります。関係は、それらの関係に関連して複数形または単数形で命名する必要があります。

与えられた情報から、ユーザーがプレイリストなどのように書籍をグループ化するためにカテゴリを作成したと想定されます。カテゴリはユーザーに固有であり、ユーザー間で共有されません。書籍は、任意の数のカテゴリに含めることができます。

だからこうなる

ユーザー < -- >> カテゴリ

カテゴリ <-- >> 本

本 < -- >> カテゴリー

関係には 2 つの側面が必要です。Inverse を使用すると、それを定義できます。ユーザーが任意の数のカテゴリを持つことができ、カテゴリが持つことができるユーザーは 1 人だけである場合。カテゴリの逆はユーザーです。

ここに画像の説明を入力

于 2013-06-17T13:03:52.313 に答える