0

これをもう少し詳しく説明しましょう。異なる場所にインストールする必要があるデータベースを設計する必要があります (相互に接続されている場合とされていない場合があります)。

私の考えは、場所 (サイト) に関する情報をキーとして入れる列を使用し、レコードの ID を含む別のフィールドを使用しないのはなぜでしょうか? たとえば、列Customersを持つテーブルが必要です。customer_idsite_id

ただし、テーブルに自動インクリメントを使用して複数の ID 列を作成できないことはわかっています。私が考えたのは、ID列を1つだけ持つが、別の列に関連する方法はありますか?

たとえば、次のような Customers テーブルがあれば素晴らしいでしょう。

site_id cust_id description
1        1       John Doe
1        2       Joseph White
1        3       Carlos Santana
2        1       Mike Jones
2        2       Carl Johnson

cust_id自動インクリメントが必要です。

前もって感謝します

4

3 に答える 3

1

より良い提案があります。両側の数字を一意にする必要がある場合は、そうしないのはなぜですか? 1設計では、テーブルのすべての行で値を繰り返す必要があります。これは私にはかなり無駄に思えます。代わりに、ID 範囲を指定してみてください。

サイト 1:

CREATE TABLE dbo.Customers
(
  CustomerID BIGINT IDENTITY (1000000000,1)
  , other columns...

サイト 2:

CREATE TABLE dbo.Customers
(
  CustomerID BIGINT IDENTITY (2000000000,1)
  , other columns...

これで、重複を作成しないことが事実上保証されるだけでなく (非常に驚くべき速度で顧客を作成しない限り)、顧客が作成された場所をすぐに知ることもできます。

于 2013-03-25T17:39:23.280 に答える
1

2 つの列で PK を作成できます


create table customers (CustomerRegion int not null,
                       CustomerID int identity(1000,1) not null,
                       primary key (CustomerRegion,CustomerID)
                      )
于 2013-03-25T17:44:40.513 に答える
0

複合主キーが必要なようです (こちらのMSDN ドキュメントを参照してください)。

大したことではありませんが、後々後回しにされる王道の痛みとなる可能性があります。(複数の主キーフィールドで結合するのは面倒)

于 2013-03-25T17:41:03.400 に答える