2013-04-01 2 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 테이블을 가지고 있어야합니다. 이 경우 직원 이름이 Employee 테이블에 있으며 여러 번 반복해서 입력하지 않아도됩니다. dbo.EmployeeUnavailability를 살펴보십시오. 그 테이블의 어떤 행이 말하고있는거야? 월요일 열의 의미는 무엇입니까? 좋아, 몇 주 동안 우리가 얘기하고 있니? 더 명확하게 열의 이름을 변경하십시오. –

+1

죄송합니다, 당신은 기본으로 돌아 가야합니다. 각 요일에 대한 열이 없습니다. – Kermit

+0

해당 연도에 연도 정보와 주 번호를 추가하면 이러한 열을 가질 수 있습니다. 그렇게하면 우리가 정보를 캡처하는 날짜를 정확하게 식별 할 수 있습니다. 그러나 나는 그 디자인을 제안하지 않을 것이다. 그것은 불필요하게 복잡합니다. –

답변

1

3 개의 테이블을 모두 참조하는 테이블을 사용하면 IMO를 사용하지 않는 것이 좋습니다. 해당 junction 테이블의 한 행이 공통적으로 아무것도없는 다른 테이블의 행을 참조 할 수있게합니다. 나는. 접합부 테이블의 행은 1 위의 John, 2 위의 Mary 및 3 위의 Garry의 행을 참조 할 수 있습니다.

Employee 엔티티의 특성 만있는 Employee 테이블을 만듭니다. Employee의 행을 가리키고 ID가있는 EmployeeUnavailability를 추가하고 datetime 유형의 열을 사용하여 날짜를 식별합니다.

직원 출석은 직원 성과와 아무 관련이 없습니다. 직원 한 명은 거의 표시되지 않지만 실적 닌자 일 수 있습니다.

관련 문제