0

CoreDataオブジェクトをリレーショナルデータベースとまったく同じようにモデル化するのがベストプラクティスですか?CoreDataはリレーショナルデータベースではないことを私は知っています。

したがって、次のオブジェクトがあります(リレーションシップにidフィールドを含めるべきではないことはわかっています)。

Business 
Building (Business has many locations; relationship)
Location (building has a location relationship)
Coord (Locations has a lat/long coord)
Worker (work has relationship to business and to location)

これは大部分の故障ですか?労働者だけがいて、それが職場の住所属性とビジネス属性を持っている方が良いでしょうか?建物には、場所との関係ではなく、住所、都市、州、郵便番号のフィールドだけを含める必要がありますか?

4

1 に答える 1

1

ここでの指針となる原則の 1 つは、フォルトはメモリを使用しないことを意味するということです。これは通常、非常に望ましいことです (実際、そもそも Core Data を使用している主な理由の 1 つです)。位置関係を持つ建物は、建物をロードするためだけに位置情報をロードする必要がないことを意味します。代わりに、エラーが発生し、実際に必要な場合にのみ位置情報をフェッチします。

しかし、逆の考察も当てはまります。モデルを過度に正規化する誘惑に抵抗する必要があります。これは SQL データベースではありません。リレーションシップとは、別のロード ステージがないとデータをフェッチできないことを意味します。それにはオーバーヘッドと時間がかかります。したがって、オブジェクトにアクセスするたびにアクセスしたい単一のファクトがある場合は、それらがオブジェクトに含まている必要があります。

あなたの場合、あなたは過度に正規化されていると思います。たとえば、座標で非常に興味深いことをしようとしない限り、座標を場所の一部にすべきではない理由がわかりません。また、別のオブジェクトとして場所を指定する場合を除き、建物に単に住所がない理由がわかりません。

于 2012-12-18T19:44:31.820 に答える