SQL Server中的连接表

时间:2013-04-01 20:37:07

标签: sql database sql-server-2008-r2 junction-table

我在新数据库中创建联结表时遇到困难。我使用这些查询来创建表:

CREATE TABLE dbo.EmployeeUnavailability 
(
 ID INT IDENTITY(1,1) PRIMARY KEY,
 EmployeeName varchar(50),
 Monday varchar(10),
 Tuesday varchar(10),
 Wednesday varchar(10),
 Thursday varchar(10),
 Friday varchar(10),
 Saturday varchar(10),
 Sunday varchar(10),
 SupervisorName varchar(50),
)
GO 

CREATE TABLE dbo.EmployeeAttendance
(
 ID INT IDENTITY(1,1) PRIMARY KEY,
 EmployeeName varchar(50),
 Monday varchar(20),
 Tuesday varchar(20),
 Wednesday varchar(20),
 Thursday varchar(20),
 Friday varchar(20),
 Saturday varchar(20),
 Sunday varchar(20),
 SupervisorName varchar(50),
)
GO 

CREATE TABLE dbo.EmployeePerformance 
(
 ID INT IDENTITY(1,1) PRIMARY KEY,
 EmployeeName varchar(50),
 Attitude varchar(250),
 AttitudeDD tinyint,
 WorkQuality varchar(250),
 WorkQualityDD tinyint,
 Communication varchar(250),
 CommunicationDD tinyint,
 Leadership varchar(250),
 LeadershipDD tinyint,
 ImprovementAchievement varchar(250),
 ImprovementAchievementDD tinyint,
 SupervisorName varchar(50),
)
GO 

从那里开始,我很难创建一个引用所有三个表的联结表。三个表中的员工姓名和主管名称相同。

1 个答案:

答案 0 :(得分:1)

拥有一个引用所有3个表的表并不是一个好主意IMO。它将允许该联结表中的行可以引用其他表中没有任何共同点的行。即联结表中的一行可以引用第1行中的John,第2行中的Mary和第3表中的Garry。

创建一个仅包含Employee实体属性的Employee表。添加具有其ID的EmployeeUnavailability,指向Employee中的一行,并使用datetime类型的列标识日期。

员工出勤与员工绩效无关。一名员工很少表现出来,但却是表演忍者。