JAVA/MySQLスタックに接続するAngular JS JSONクライアントがあります。 MySQLはRDBMSなので、私のすべてのデータは正規化されています(最初の3つの形式)。JAVA/RDBMSスタックでJSONクライアントを使用するときの正規化とデノーマライゼーション
私の質問は、次の例で説明することができます。
私はExampleオブジェクトと、サーバーによって返されたUserオブジェクトを持っています。
Example - [{
userId:1,
...
...
..
},
{
userId:2,
...},
{
userId:3,
...}];
User - [
{
userId - 1,
firstName - "John",
lastName - "Doe",
..
},
{
userId - 2,
firstName - "Jane",
lastName - "Doe",
..
}, {...}...
]
私は「例のexample_entry」角度を用いて、実施例のコレクションを見て、例のコレクション要素を表示すると、私は唯一の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 Domain ObjectsはfirstNameとLastNameをExample ObjectとUser Objectに複製しているので、どちらのルートが良いかアドバイスしますか?
De-Normalize and have ready to use JSON
Keep Data Normalized to avoid duplication and write converter methods on the Client as needed
バックエンドJavaクラスをそのままにして、サーバー側JSONを非正規化JSONに変換するヘルパーメソッドを作成する必要がありますか?ありがとう。 – user6123723
データのリスティングの場合は、DBに必要なフィールドを含むビューを作成し、アプリケーションコードを通じて照会します。変換は必要ありません。エンティティの更新\データの更新シナリオでは、bakendで非正規化を行うのではなく、正しいデータエンティティを送信します – Chandermani
しかし、非正規化で非効率なdbストレージを作成しませんか? fNameまたはlNameが変更された場合は、複数の場所で更新する必要があります。また、現在使用されているストレージスペースも増えています。これらの問題はありませんか? – user6123723