以下で説明しようとしている問題の解決策に行き詰まっています。明確にする必要がある場合は、投稿を更新できるようにお知らせください。まず、データベースの構造について説明します。次の表があります (さらに多くの表がありますが、このトピックの一部ではありません)。
1) 部門 2) カンパニー 3) セクター 4) 製品
上記の表はすべて関連しています。
1) 師団には多くの中隊がありますが、中隊は 1 つの師団にしか所属できません。1-* 2) 各カンパニーは 1 つまたは複数のセクターを持つことができますが、セクターは 1 つのカンパニーに属することができます。1-* 3) 各セクターは 1 つ以上の製品を持つことができ、各製品は 1 つ以上のセクターに属することができます。-
私の問題は次のとおりです。上記を考えると、会社に関係なく、特定の部門の下にあるすべてのセクターを生成または取得する必要があります。しかし、秘訣は、ID ではなく名前に基づいてマージする必要があることです。そのため、部門 1 があり、その下に会社 A があり、その下にセクター A があるとします。もちろん、セクター A は、同じ名前で別の会社の別のエンティティとして再び存在する可能性があります。 、しかし、別の ID (会社 A 以外) も部門 1 に分類されます。そのため、その新しい「合併」では、セクター A は明確である必要があり、それ以上ではなく、単一のエンティティが存在する必要があります。これらの合併を格納するテーブルをテーブル X と呼びましょう。ここで、テーブル X (特定の部門またはそれぞれの会社の下にある一意のセクターを含む) を、ドキュメントやその他のファイルを含む別のテーブル (テーブル Y) にマップする必要があります。
上記をどのようにSQLテーブル/ビューまたは必要なものに変換できますか? それが不可能な場合、問題を解決するための正しいアプローチは何ですか? また、セクターを削除するとどうなりますか? またはその名前が更新されましたか?それとも製品の更新/削除ですか? この特定のケースで行う最善のことは何ですか。
注: 上記の表 1、2、3、4 は既に作成されており、機能しています。しかし、上記の問題として説明したこの追加機能を追加する必要があります。ここでは、ロジックと要件を変更することはできません。
MS SQL Server 2008 R2 を使用。
よろしくお願いします。説明が必要な場合はお知らせください。
EDIT : 現在の構造と、ドキュメントを追加するときにどのように生成されるか。
期待される出力:
ここでの合併は、製品名のみに基づいています。しかし、製品 A が更新された場合はどうなるでしょうか。削除されましたか?それは出力とマップされたドキュメントにどのように反映されますか?
再度、感謝します。
(ところで:最初のデータモデル(最初の画像)があれば問題ない出力を生成できますが、上記のすべてに基づいてドキュメントを製品にマップできるように、適切な関係を持つテーブルに配置する必要があります。)