次のような2つのテーブルA
とを考えてみましょう(醜いASCIIテーブルについてお詫びします)。B
---------------------------------- ------------------------
| SNID | PNID | SerialNumber | | PNID | PartNumber |
|--------|--------|--------------| |--------|-------------|
| 0 | 0 | 17823 | | 0 | 9874-4362 |
|--------|--------|--------------| |--------|-------------|
| 1 | 0 | 17824 | | 1 | 1053-1409 |
|--------|--------|--------------| ------------------------
| 2 | 1 | 97245 |
----------------------------------
PNID 0
場所αのサーバーがに特定の権限を持ち、場所βのサーバーがに特定のアクセス権を持つことができるようにしたいPNID 1
のですが、同じタイプのデータ(所有者が異なるだけ)なので、私はしませんデータ自体を分離する必要があると考えてください。
いずれにせよ、βがにアクセスしたい場合は、のシリアル番号を割り当てて、PNID 0
許可される前にまずαと通信する必要があることを確認したいと思います。これは、それらの間のネットワークがダウンした場合、αは生成できるが生成できPNID 0
ずPNID 1
、βは生成できるが生成できPNID 1
ないことを意味しPNID 0
ます。ただし、2つのエンティティが相互に通信を再開すると、αが作成したシリアル番号はすべてPNID 0
βに複製され、βからのシリアル番号はPNID 1
αのデータベースにマージされます。
より一般的には、αがβの許可なしに新しいシリアル番号を追加できるかどうかに関するすべての決定を行う「仲介者」の場所Ωでこれを設定することを本当に望んでいます。
現在、SQL Server Express(2008 r2)とVisual Basic .NET Express(2010)を使用してサーバーを実装していますが、現在発生している問題を解決できる可能性のある他のオプションを利用できます。正直なところ、私が求めていることがもっともらしいとは言えませんが、もしそうなら、それは私が本当に実装することに非常に興味があることです。
ほとんどすぐに、私が最初に考えることができるのは、場所を表す別の列をテーブルに追加することですB
が、これを行うための「正しい」方法ではないと思います。特に他のサーバーとの通信に関する部分(そして正直なところ、データベースでそれができるかどうかさえわかりません。そのため、おそらく.NETで行う必要があると思います。