0

我正在设计一个数据库,我的表如下

  • 一个公司可以有很多部门,一个部门属于一个公司
  • 一个公司可以有很多员工,一个员工属于一个公司
  • 一个部门可以有很多员工,一个员工属于一个部门
公司(
      ID,
      姓名,
)

部门(
      ID,
      标题,
      公司 ID(FK_Department_Company)
      唯一(标题,公司 ID)
)

员工(
      ID,
      姓名,
      姓名,
      公司 ID,(FK_Employee_Company)
      部门 ID (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

从你上面的两个陈述

  • 一个公司可以有很多部门,一个部门属于一个公司
  • 一个部门可以有很多员工,一个员工属于一个部门

这意味着

  • 一个公司可以有很多员工,一个员工属于一个公司

因此,Employee-Company 关系隐含在中间的 Department 表中。不需要单独的外键/列

tl;dr:由此断言确定:“......一名员工属于一家公司”。

于 2013-05-09T09:29:49.230 回答