0

たとえば、2 つのロールがある再帰的なリレーションを知っています。Worker
は Manager に対して機能し
Worker と Manager は両方とも Employee の 2 つのロールです。次のように示します。 ここに画像の説明を入力

しかし、従業員が次のような役割を持っていたとしたら どう
でしょ う か 。



例:
マネージャー はディレクターのために働き、セクレタリーはディレクターのために働き、 ワーカーはディレクターのために働く

それからまた、
秘書と労働者はマネージャーのために働くなど...

ER DIAGRAMでそれを表示する方法は?

4

2 に答える 2

1

従業員がポジション (役割) を持っている場合、ここに機能冗長性の属性/プロパティがあります。この冗長性が従業員の現在の位置 (役割) です。分解(分解)すると、従業員と 1 対 N の関係を持つ別のエンティティになります。

従業員間に自己関係 (再帰的関係) を作成すると、どの従業員が別の従業員の下で働いているかがわかりますが、どの役割が何を管理しているかはわかりません。


一方、どのポジション (ロール) が相互に機能するかを定義して永続化する必要がある場合は、ロール エンティティを作成し、その再帰的な関係を作成して、どちらが他のロールを支配するかを表現する必要があります。それが完了したら、従業員を役割 (後で、Role テーブルの行/レジスタ) に関連付けて、どの従業員がどの役割を持つかの関係を定義します。

そして、下位階層のすべての役割は、上位階層の役割のために機能します。

ユーザーの役職 (役割) と、ユーザーの間に作成された階層 (役割) に基づいて、どの従業員がどの従業員のために働いているかを知ることができます。これは、たとえば、単純な SQL 結合を使用して実行されます。

これはあなたの場合だと思います。人/従業員間の階層ではなく、位置/役割間の階層が必要です。あることが別のことにつながります。このアプローチでは、ここで課されたカーディナリティに応じて、1 つ以上の役割が管理されているか、または他の役割によって管理されているかを示すことさえできます。これにより、将来のメンテナンスが容易になります。

疑問や質問があれば、コメントしてください。お答えします。

于 2016-05-31T19:52:24.947 に答える
0

どのERD表記を使用していますか? 私はそれを認識しません。サブタイプの表示をサポートしていますか? その場合、ディレクター、マネージャー、秘書などを従業員のサブタイプとして設定し、サブタイプ間の関係を示します。

[Manager] --- <works for> ---> [Director]

于 2016-03-05T13:58:28.000 に答える