1

この情報をデータベースに保存したい:

Company
   |
   |-- Dept 1--,
   |            \->Employee 1
   |             |->Employee 2
   |
   |-- Dept 2--,
   |            \->Employee 3
   |
   |-> Employee 4
   \-> Employee 5

私はすでにこれまでに持っています:私は従業員テーブルが必要です、そして部門と会社のアイテムはまったく同じなので、それらは同じテーブルにあるべきです...

employee // id | information...
branch  //  id | information....

各従業員は支店にリンクする必要があります。そして、各ブランチは別のブランチに接続できます...

employeeBranch // employee.id | branch.id | enum(current, historical)
branchBranch   // branch.id   | branch.id

これにより、複数のレベルのブランチを持つことが可能になります...

しかし、私はこれがそれを行う方法であるかどうか疑問に思っいます。

4

3 に答える 3

3

従業員が1つのブランチにのみ属することができ、ブランチが1つのブランチの子にしかできない場合は、まったく新しいテーブルではなく、この情報を表す列を追加することを検討してください。

employee // id | branchId | information
branch   // id | parentBranchId | information

従業員/支店と支店/支店の関係が多対多の場合は、元の構造で問題ないと思います。

于 2012-05-17T22:22:45.643 に答える
3

いいえ、それらはまったく同じテーブルにあるべきではありません。

従業員、会社、部門の3つのテーブルが表示されます。

現在の雇用のみをモデル化していると仮定すると、従業員は1つの会社にのみ属することができます。(一度に1つのジョブ-月明かりはありません。)会社には1人以上の従業員がいる可能性があるため、従業員は会社の外部キーを持っています。

会社は多くの部門を持つことができますが、部門は1つの会社にのみ属することができます。したがって、DepartmentはCompanyへの外部キーを持ちます。

ブランチのモデリングは少しだけ注意が必要です。ある部門が別の部門のサブである場合、私は部門にそれ自体の外部キーを与えます。トップレベルの部門は、トップレベルであるため、他の部門へのnull外部キーを持ちます。

于 2012-05-17T22:22:59.547 に答える
0

それを行うための最良の方法は、あなたが言ったことに似ていることです。それぞれの側に彼の情報を含む独自のテーブルを持たせます。次に、リレーショナルテーブルを作成します。

table `branches`

Branch ID           Branch Name         Branch Location
---------------------------------------------------------------
    2                   sd                  west
    1                   no name             east

table `employee`

employee ID         employee name           employee birth
---------------------------------------------------------------
    1                   name                    2/2/1975

table `employee_branches`

employee ID     Branch ID
--------------------------
    1               2
    1               1
于 2012-05-17T22:24:46.947 に答える