2

Android アプリケーションと JSON Web サービスを開発しています。Android アプリケーションは、これらの Web サービスを使用します。

また、両側にデータベースがあり、サーバー側とクライアント側には同じデータベース スキーマがあります。

私がやろうとしていることを説明します:

  • ユーザーは 1 つ以上のEReportを作成します。
  • すべての EReportには 1 つのQAPがあります。QAPテーブルは、サーバー側データベースのコピーになります。
  • すべてのQAPには 1 つ以上のDefectがあります。欠陥は、サーバー側データベースのコピーになります。
  • ユーザーは、必要に応じて欠陥を定義できます。そのために、 EReportDefectテーブルを追加しました。
  • 欠陥には 1 枚以上の写真が含まれる場合があります。EReportDefImgを作成 して、EReport と EReportDefect と 1 つ以上の画像との関係を保存します。

私の質問は: EReportDefImgの FK としてeReportIdが必要ですか?

この列を追加したのは、EReport のすべての欠陥の画像を見つけるために使用できるからです。

ここに画像の説明を入力

4

3 に答える 3

1

EReportDefImg の FK として eReportId が必要ですか?

いいえ。

は、行が とは異なる行を参照EReportDefImg.eReportIdできるようにします。EReportDefImgEReportDefectEReportDefect.eReportIdEReportDefImg.eReportId

この列を追加したのは、EReport のすべての欠陥の画像を見つけるために使用できるからです。

EReportDefImg.eReportIdJOINを実行EReportDefImgEReportDefectEReportDefect.eReportId.

JOIN を回避したい場合は、識別関係を使用して の PK に を含めることができますeReportIdEReportDefectこれにより、その PK も移行されEReportDefImg.eReportIdます (その後、JOIN なしでフィルタリングに直接使用できます)。についても同様ですdefectId

ここに画像の説明を入力

注: と の同じ組み合わせに対して複数の を許可するように追加しましeReportDefectNoた。不要な場合は削除してください。EReportDefectEReportDefecteReportDefectNo


ところで、現在のモデルでは、 1 つのEReportDefectを 2 つの異なる に接続することができますQAP(1 つは を介しEReport​​て、もう 1 つは を介し​​てDefect)。それは意図的なものですか?

于 2012-09-14T10:36:39.040 に答える
1

人間の論理では、レポートに欠陥がある場合、レポートが存在する必要があります。そのため、FK を使用します。これは後であなたを助けるかもしれないと思います。

于 2012-09-14T09:45:25.613 に答える
0

いいえ、そうではありません。この種の設計は通常、パフォーマンス上の理由から実行されます-不要な結合を省略します. そのような問題がない場合は、これを行わないでください。

ところで、主キーに外部キーを入れすぎているようです。これはデータの一貫性を維持するために行われますが、パフォーマンスが低下するため、通常はお勧めできません。

ところで。EReportDefectのdefectId外部キーは何ですか?

于 2012-09-14T14:21:59.707 に答える