2013-04-01 82 views
0

我在創建新數據庫中的連接表時遇到困難。我用這些查詢來創建表格:SQL Server中的連接表

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 

從那裏,我很難創建將引用所有三個表的聯結表。三個表中的員工姓名和主管姓名都是相同的。

+0

員工是您的域中的實體。所以你應該有一個Employee表。在這種情況下,員工的姓名將在員工表中,您不必多次重複。看看dbo.EmployeeUnavailability。那張桌子上的一排是說的?專欄星期一的含義是什麼?好的,我們在談論什麼周?重命名您的列以更清晰。 –

+1

對不起,你需要回到基礎。您一週中的每一天都沒有專欄。 – Kermit

+0

如果我們在該年添加年份信息和週數,則可以有這樣的列。這樣我們就能夠精確地確定我們捕獲信息的日期。但我不會建議這樣的設計。這是不必要的複雜。 –

回答

1

擁有一個引用所有3個表的表並不是一個好主意IMO。這將允許該聯結表中的行可以引用其他表中沒有任何共同之處的行。即連接表中的一行可以引用第1行中的John,第2箇中的Mary和第3個表中的Garry。

僅使用Employee實體的屬性創建Employee表。添加具有ID的EmployeeUnavailability,指向Employee中的一行,並使用datetime類型的列標識日期。

員工考勤與員工績效無關。一名員工可以很少表演,但是可以成爲一名錶演忍者。