0

私はデータベースを設計しており、私のテーブルは次のとおりです

  • 会社は多くの部門を持つことができ、部門は 1 つの会社に属します。
  • 会社は多くの従業員を持つことができ、従業員は 1 つの会社に属します。
  • 部門には多くの従業員を含めることができ、従業員は 1 つの部門に属します。
会社(
      ID、
      名前、
)

デパートメント(
      ID、
      題名、
      CompanyID (FK_Department_Company)
      UNIQUE(役職,企業ID)
)

従業員(
      ID、
      Fname、
      LName、
      CompanyID、(FK_Employee_Company)
      DepartmentID (FK_Employee_Department)
)

したがって、間違ったデータを Employee テーブルに挿入する可能性があることがわかりました

ここにサンプル値があります

company  (
       25,Spar Pvt LTD, Sweden, 12345678.
       26,Mr.Wheel Pvt Ltd, Germany, 123456789)

Department(
       101, Manager,25
       102, Front Desk,25
       103, Host,26)

Employee( 81,25,103,....) 

ここで DepartmentID 103 は CompanyID 26 に属していますが、それでも挿入できます. この問題を解決する方法はありますか (sqlserver), または設計を変更する必要があります. 提案やアイデアを教えてください.

よろしく、

4

1 に答える 1

5

Employee テーブルに CompanyID は必要ありません

上記の2つのステートメントから

  • 会社は多くの部門を持つことができ、部門は 1 つの会社に属します。
  • 部門には多くの従業員を含めることができ、従業員は 1 つの部門に属します。

これは

  • 会社は多くの従業員を持つことができ、従業員は 1 つの会社に属します。

したがって、Employee-Company の関係は、中間の Department テーブルによって暗示されます。別の外部キー/列は必要ありません

tl;dr: このアサーションによって識別されます: 「...従業員は 1 つの会社に属しています」。

于 2013-05-09T09:29:49.230 に答える