違いがわかりません。
3 に答える
データベースの観点からは、これらはまったく同じです。それらはすべて同じフィールド(id、user_guid、entity_guidなど)を持っているので、それらが何のためにあるのかすぐに明確にならない理由は理にかなっています。
私はそれをこのように考えるのが好きです:
- メタデータ==客観的(プロパティ)
- 注釈==主観的(意見)
メタデータは、エンティティにプロパティを動的に追加する方法です。メタデータは、実際のエンティティを説明する必要があります。車の色に関するDavidの例は良かったです。他の例としては、本のISBN番号やイベントの場所があります。
作成後にエンティティに追加された新しい情報は、おそらく注釈である必要があります。これが、評価やいいねなどがメタデータではなく注釈である理由です。「評価」はエンティティのプロパティではなく、エンティティの品質に関する誰かの意見にすぎません。
APIはこの区別を裏付けています。メタデータは、エンティティのプロパティであるかのように割り当てられます。例えば:
$event->location = '';
注釈に相当する省略形はありません。
ElggMetadataは、実際のElggエンティティに関する情報を格納するために使用されます。したがって、Carエンティティを作成し、それがどの色であるかを言いたい場合は、ElggMetadataの完璧なユースケースになります。
ElggAnnotionは、エンティティに追加情報(コメント、レビューなど)を追加するために使用されます。したがって、上記の自動車エンティティの例では、ユーザーがコメントまたはレビューできるようにすることができます。これはElggAnnotationの完璧なケースです。
ElggMetadata は、キーと値のペア間の LINK が格納され、任意のエンティティに関連付けられている場所です。しかし、実際のキーと値は ElggMetastrings に格納されます (EAV モデルに従います)。
例えば:
$user->gender=male;
比較的、ElggAnnotation は、コメント、エンティティの評価など、非常に厳格なプロパティ セットを保存します。