2013-04-13 3 views
0

이력서의 엔티티를 모델링하려고 시도 했으므로 다음과 같은 문제가 발생했습니다. 가장 최근에 보류 된 작업을 제외한 모든 작업의 ​​종료일은입니다.한 행을 제외하고는 null이 아닌 값을 나타내는 방법은 무엇입니까?

null이 될 수있는 행 하나를 제한하는 좋은 방법이 있습니까? 이벤트는 더 나은 하나의 null이 또한 최신 시작 날짜했다 null이 될 것입니다.

이 말을하는 또 다른 방법은 "not null"이 아닌 제약 조건을 지정할 수 있습니까?

참고 : 이것은 제가 실습 중일 때 배우는 연습용 코드입니다.

CREATE TABLE [dbo].[Employers](
    [Id] [uniqueidentifier] NOT NULL, 
    [City] [nvarchar](max) NULL, 
    [State] [nvarchar](max) NULL, 
    [StartMonth] [int] NULL, 
    [StartYear] [int] NOT NULL, 
    [EndMonth] [int] NULL, 
    [EndYear] [int] NULL, 
    [Name] [nvarchar](max) NULL, 
    [Label] [nvarchar](max) NULL, 
    [Resume_Id] [uniqueidentifier] NULL, 
    [UserProfile_UserId] [int] NULL, 
PRIMARY KEY CLUSTERED 
(
    [Id] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] 

GO 

ALTER TABLE [dbo].[Employers] WITH CHECK ADD CONSTRAINT [Resume_Employers] FOREIGN KEY([Resume_Id]) 
REFERENCES [dbo].[Resumes] ([Id]) 
GO 

ALTER TABLE [dbo].[Employers] CHECK CONSTRAINT [Resume_Employers] 
GO 

ALTER TABLE [dbo].[Employers] WITH CHECK ADD CONSTRAINT [UserProfile_Employers] FOREIGN KEY([UserProfile_UserId]) 
REFERENCES [dbo].[UserProfile] ([UserId]) 
GO 

ALTER TABLE [dbo].[Employers] CHECK CONSTRAINT [UserProfile_Employers] 
GO 
+0

현재 사용자가 두 명의 고용주를 위해 일하면 어떻게 될까요? – allyourcode

+0

그 좋은 지적, 덕분에 조언을 주셔서 감사합니다 –

답변

1

당신은 응용 프로그램 측에서 그것을 확인 후 31.12.9999 대신 NULL처럼 잘못된 일이 될 확실한 날짜를 설정할 수 있습니다 : 는 여기에 내가 함께 일하고 있어요 스크립트 테이블입니다. 그렇지 않으면 사람이 설명 된 위치를 종료했음을 보여주는 부울 필드를 설정할 수 있습니다.

단일 값을 유지하는 데 많은 의미가 있다고 생각하지 않습니다. NULL 값입니다. 필요하다면, 이것을 확인하고 각 삽입 또는 갱신 조작 전에 호출하는 프로 시저를 작성하십시오.

P. 그 당시 직업이없는 사람을 고려하지 않았기 때문에 모든 직책에 종료일이 생깁니다.
P.P.S. 왜 달과 연도를 서로 다른 두 개의 int 필드로 유지합니까? date을 사용하십시오.

+0

, 그것은 도움이되었습니다 –

+0

@AaronAnodide, 당신은 환영합니다. – svz

관련 문제