2

私は3つのテーブルを手に入れました。user taguser_tag。のプライマリuseriduser+ client、のプライマリtagidtag+clientです。ここで、クライアントを 2 回入れずuser_tagに、これら 2 つの主キーのテーブルに外部キーを作成したいと考えています。

どうやってやるの?入力のヘルプ/チェックでどのように表示されますか (入力の起点は 1 つしかなく、client2 つの起点があります)?

ここに例があります:

client|idtag     client|iduser
-------------    -------------
  1   |  1         1   |  3   
  1   |  2         1   |  4  
  2   |  1         2   |  3    

新しいテーブルの可能な値:

client|idtag|iduser
--------------------
  1   |  1  |  3
  1   |  1  |  4    
  1   |  2  |  3 
  1   |  2  |  4  
  2   |  1  |  3    

今、チェックテーブルで、キーがそのテーブルにあることを確認したいと思います。クライアントをチェックしないと、望ましくない可能性がさらに高くなります (一貫性がありません)。

client|idtag|iduser
--------------------
  2   |  1  |  4    
  2   |  2  |  3 
  2   |  2  |  4  
4

2 に答える 2

1

CLIENT(またはMANDT) 暗黙的で存在しなかったもののようなものを考えて、IDTAG, IDUSERMySQL や Postgres のようなデータベースに対して行っているかのように、外部キーを定義するだけです。

あなたの要件が何であるかはわかりませんが、クライアントに依存しないように SAP で透明なテーブルを定義する可能性は常にありますが、これはアプリケーション データにはほとんどなく、クロスクライアント構成に使用されます。

于 2015-09-18T09:58:38.420 に答える
1

別の観点から説明すると、SAPにログインすると、ログインはクライアント固有になります。

のような選択を書くとき

SELECT * FROM USER.
...
ENDSELECT.

実際のクライアントのエントリのみを取得します。システムは、実際のクライアントで明示的に選択を制限します。

クライアントに依存しない選択が必要な場合はCLIENT SPECIFIC、select ステートメントで追加を使用する必要があります。

つまり、通常の状況では、異なるクライアントからのデータが混在することはありません。user_tagしたがって、クライアント キーが 1 つしかない場合も問題ありません。

于 2015-09-18T18:31:30.053 に答える