1

ある会社に所属する「本店」と「支社」という名前の 2 つのエンティティがあります。メイン オフィスには、1 つまたは複数のブランチ オフィスを配置できます。

ただし、会社が持つことができるメイン オフィスは 1 つだけです。このメイン オフィスは、他のすべてのメイン オフィスの中心的な場所です。この状況をどのようにモデル化する必要がありますか?

  1. 2 つのエンティティを使用MainBranchMainはブール属性を持ちますCentral。推移的な依存関係につながるので、これは悪いと思いますか?
  2. MainBranchおよびの3 つのエンティティCentralがあり、Centralオフィス テーブルには行が 1 つしかありませんか?
  3. または、最終的には と の 2 つのエンティティがMainありBranch、 はMainそれ自体と関係があります。

編集: 会社は複数の本社を持つことができます。

4

4 に答える 4

1

モデリングの目的で、会社、本社、支社の 3 つのエンティティがあるとします。会社は本社と 1 対多の関係になります。メイン オフィスはブランチ オフィスと 0 対多の関係になります。これは、データの論理構造を捉えているようです。

体の構造についても質問されていると思います。論理構造は物理構造に直接マッピングできますが、必須ではありません。問題は、データをどのように使用するかです。

論理モデルの合理的な実装の 1 つは、会社のテーブルと単一のオフィスのテーブルを持ち、次のようになります。

  • 本店か支社かを示すフラグ
  • ブランチ オフィスがメイン オフィスを指すための自己結合キー。「マッチ バック」はメイン オフィスでなければならないという制約があります。
  • すべてのオフィスに共通のフィールドの束
  • いずれかのタイプに共通する少数のフィールド

別の合理的な実装では、本社と支社を異なるテーブルに配置します。これにより、データの論理モデルに近づきます。ただし、多くのクエリでこれら 2 つのテーブルを結合することで、実際には単一のテーブル アプローチがより効率的になると思います (必ずしもそうとは限りません)。

残念ながら、リレーショナル データベースはクラス継承の考え方をうまく実装していません。

于 2012-06-02T21:13:45.947 に答える
1

エンティティCompanyEntityオフィスを作成します。から まで1 対 M の関係を作成CompanyしますOffice。Office には、 または のいずれかのタイプがありMainますBranch。それ自体から 1 対 M の関係を作成Officeします。この再帰的な関係は、支店と本社の関連付けです。最後に、Office から Company への 1 対 1 の関係を追加し、CentralOffice を識別するものとして関係を区別する役割名を付けます。

Office をスーパー タイプにして、Main および Branch サブタイプにすることもできます。これにより、メインからブランチへの 1 対 M の関係をモデル化し、ビジネス ルールをより明確に示すことができます。

ここにERモデルの断片を貼り付けられたらいいのに!重要な点は、Office がここで唯一の実体であり、本店と支店は Office のサブタイプであるということです。Central はエンティティではありませんが、オフィスと会社の間の関係の役割です。

于 2012-06-02T21:13:53.657 に答える
0

Main officeと の間に 1 対 1 の関係を作成しCompany、次にと の間に多対 1 の関係を作成Branch officeMain officeます。

Branch officeと の間に直接的な関係はありませんがCompany、 を通じて推移的に簡単に推測できますMain office

于 2012-06-02T21:00:53.630 に答える
0

ER モデルで継承を使用することができます。一般的な Office スーパークラスと Branch/Main サブクラスがあります。会社は、メイン オフィスと多対 1 の関係を持ち、メイン オフィスとは 1 対 1 の関係を持ち、セントラル オフィスを代表します。

于 2012-06-02T21:13:07.913 に答える