0

私は現在、会社が CRM を再設計するのを手伝っています。
彼らは、CRM を拡張して、別のソフトウェアで使用されている別のデータベースからデータを読み取ることを計画しています。

すべてのデータベースは mssql テクノロジを使用しています。
実際、当社には 3 つのブランドがあり、各ブランドのデータは異なる mssql データベースに格納されています。

Brand1:
Customer
Invoice
Payment

Brand2:
Customer
Invoice
Payment

Brand3:
Customer
Invoice
Payment

私の新しいデータベース スキーマ設計では。顧客は複数の請求書を持ち、各請求書は複数の支払いを受け取ります。

次のように最も更新された支払いを抽出できるため、新しく設計したデータベースにすべてのデータを保存するのが理想的です。

SELECT [Everything I want]
FROM Customer
INNER JOIN Invoice WHERE Invoice.customer_id=Customer.id
INNER JOIN Payment WHERE Payment.invoice_id=Invoice.id

しかし今、私は3つのデータベースに接続し、それらからデータを取得し、結果を結合して次のようなデータ構造を生成する必要があります:

{
  customers:[
    {
      customer_name: cato,
      invoices:[
        {
          invoice_id: 1,
          payments: [bla,bla,bla]
        }
      ]
    }
  ]
}

今、私の会社はトリガーを使用することを考えましたが、維持するのは難しいです。仕事をすることができるより良いオプションはありますか?

4

1 に答える 1

0

はい、SQLにはこれに対する優れたソリューションがあります。実際に必要なのはSQLレプリケーションです。これにより、リモートDBからローカルにテーブルを「コピー」することができます。最初にテーブルをローカルにコピーしてから、レプリケーションを設定し、リモートdbはすべての挿入、更新などのコマンドを転送します。実際、ローカルの複製されたテーブルは常にリモートテーブルと同期され ます。それを見て、チュートリアルに従って複製を行います

于 2013-05-14T07:56:42.197 に答える