2012-05-12 3 views
2

私はこのようなシナリオを持っています:データベースをマージするための複合プライマリキーまたはGUID

私は多くのマシンがあり、それぞれにデータベースがあります。また、すべてのマシンからデータを取得し、ローカルデータベースに追加できるクライアントマシンがあります(以前のダウンロードのデータを持つ可能性があります)。したがって、 `多くの 'データベースのテーブルには、一意の識別子が必要です。

many - 各マシン上のデータベース

mergedからmanyデータベースからデータを引き出し、クライアント・マシン上のデータベース。

私の2つのアイデア:マージされたデータベース内manyデータベースともGUID

  1. GUID主キー。 ここでもマシン間の行を区別するためにマシンのカラムIDが必要です。

  2. manyデータベース内の整数主キーとマージされた1における複合キー(manyデータベースからマシン+整数主キーのGUID IDが)ここで

    私は、manyデータベースのそれぞれが自身のためにGUIDを必要としないことを前提としていmergedの場合のみですので、GUIDはmergedに必要です。これは複合キーです。

このシナリオではどのような選択が適していますか?たぶん私は何かが恋しいです。

+2

これらが既存のデータベースであり、それらを統合する必要があるかどうか、または切断されたシステムを設計する場合は明確ではありません。要件を充実してください。 – Oded

+1

あなたの編集で私のことが明確になっていません。 – Oded

+0

今、データベースを設計しています。 – userbb

答えて

0

GUIDは、このようなシステムには理想的です。主キーの衝突が発生しないようにします。あなたはそれを設計しているので、GUIDをmanyデータベースの一時識別子として使用し、mergedの整数キーで置き換えることができます。

もう1つの方法は、manyデータベースの間でIDを分割することです。他のIDとは異なるID範囲を使用することができます。これはうまくいくことは自明ではありません(つまり、再同期なしにこれらのデータベースが存在する可能性がありますが、オーバーフローする可能性があります)、データベースがなくなると追加の範囲を提供できる必要があります。あなたの特別なニーズに合わないかもしれません。

関連する問題