0

我在 SQL Server 数据库的逻辑设计中遇到问题。

我仍然无法区分哪个关系必须是一对多的,哪个关系必须是多对多的。有人告诉我,如果两个实体表都是独立的,它们可以具有多对多关系,否则它们将具有一对多关系。

但现在我正在做一个收集员工个人信息的项目,其中有一个表被称为JobStatus是用于人员当前工作的表。这个表和Person(table)是多对多的关系,当然它们之间有一个联结表。

我建立这种类型的关系是因为一个职位的名称被分配给几个人并且具有不同的表现。

例如 :

Person A ----->Operator
Person B------>Operator and so on...

而另一方面,在某些情况下,一个人有两个职位,我的意思是他要么是导演,要么是老师。

例如 :

Person C ------>Director & Teacher

那么请你指导我这个模棱两可的逻辑意思吗?

4

2 回答 2

2

根据您描述的项目,我将创建三个表:employeeTable、jobType 和 jobAssignment。给每个员工一个唯一的 id(主键),给每个工作一个唯一的 id(主键),让 jobAssignment 表成为连接 employeeTable 和 jobAssignment 表的粘合剂。jobAssignment 表将有一个关于employeeID 和jobID 的索引。

jobAssignment
---------------
employeeID (indexed)
jobID (indexed)


employeeTable
---------------
employeeID (primary key)
employeeName


jobType
---------------
jobID (primary key)
jobName
jobDescription

这样,无论为每个员工分配了多少职位描述,您都可以在 jobAssignment 表中跟踪员工及其各自的职位。

于 2012-11-11T06:59:12.927 回答
1

简而言之,当任一表不能将另一个表中的 PK 作为其外键时,您会识别出多对多

采取学生和课程表

  • 学生可以参加许多课程
  • 课程可以属于多个学生

将 FK of course (CourseID) 放在学生身上会将学生限制为一门课程

将学生的 FK (StudentID) 放在课程上会将课程限制为一名学生

为了解决这个问题,第三个表 StudentCourse 将具有 StudentID 和 CourseID,从而使任一表独立。

那是多对多。

对于一对多来说,当您可以轻松地将一个表的 ID 作为另一个表的 FK 时,就会发生这种情况。

在您的情况下,两名员工可以同时是操作员,一名员工可以是操作员和教师——这种设计是多对多的。你说的对

于 2012-11-11T06:56:31.097 回答