6

JAVA/MySQL スタックとインターフェイスする Angular JS JSON クライアントがあります。MySQL は RDBMS であるため、すべてのデータは正規化されています (もちろん最初の 3 つの形式)。

私の質問は、次の例で説明できます。

サーバーから返された Example オブジェクトと User オブジェクトがあります。

Example - [{
userId:1,
...
...
..
},
{
userId:2,
...},
{
userId:3,
...}];

User - [
{
userId - 1,
firstName - "John",
lastName - "Doe",
..
},
{
userId - 2,
firstName - "Jane",
lastName - "Doe",
..
}, {...}...
]

Angular の「example_entry in example」を使用して Example コレクションを調べ、Example コレクション要素を表示すると、すぐに利用できる userId しかありません。しかし、firstName と lastName を表示したい場合は、別の "User" コレクションにあるため、表示できません。User コレクションから firstName と lastName を取得し、それを Example コレクション オブジェクトに関連付けるために、ヘルパー Angular コントローラー/サービス メソッドを作成する必要があります。

この問題を回避するには、Java Ojbects を非正規化して、このようにすぐに使用できる JSON を送信することができます..

Example - [{
userId:1,
firstName - "John",
lastName - "Doe",
...
...
..
},
{
userId - 2,
firstName - "Jane",
lastName - "Doe",
...},
{
userId:3,
...}];

しかし、これは良い/悪い/ひどいですか? これで、私の Java ドメイン オブジェクトには firstName、LastName がサンプル オブジェクトとユーザー オブジェクトで複製されているためです。どのルートが良いかアドバイスはありますか?

De-Normalize and have ready to use JSON
Keep Data Normalized to avoid duplication and write converter methods on the Client as needed
4

2 に答える 2

5

UI レイヤーに送信するときは、データを非正規化する必要があります。

データがデータベースにある場合、それは正規化されたデータにとって最適な場所です。その正規化を抽象化するビューを使用し、ビューに対してクエリを実行します。ビューを使用すると、テーブルを結合して、データベースから非正規化されたデータを取得できます。

クリアでシンプルな表示が必要な UI レイヤーでは、Angular が最も効果を発揮します。画面に非常に大量のデータを表示したり、ネット経由で大量のデータを送信したりしない限り、非正規化されたレコードをデータベースから直接送信するだけで、はるかにうまくいくでしょう。DB は、結合やその他のデータ クエリ機能を実行するのに優れています。そのために構築されています。Javascriptはそれを行うことができますが、それを最大限に活用することはできません。

于 2013-10-30T23:03:30.147 に答える