0

履歴書のエンティティをモデル化しようとしていますが、その際に次の問題に遭遇しました。最近開催されたポジションを除くすべてに終了日があります

null を許可する行を最大 1 行に制限する良い方法はありますか。イベントより良いのは、単一の許可された null にも最新の開始日があることです。

これを別の言い方をすれば、「ない限り 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
4

1 に答える 1

1

代わりに 31.12.9999 のように無効であることが確実な日付を設定NULLし、アプリ側で確認することができます。それ以外の場合は、ブール値フィールドを設定して、説明されたポジションを人が辞めたかどうかを表示できます。

単一の値を保持することにはあまり意味がないと思いNULLます。本当に必要な場合は、これを確認するプロシージャを作成し、各挿入または更新操作の前に呼び出します。

PS その時点で人が仕事をしていない場合を考慮していないため、すべてのポジションには終了日があります。
PPS なぜ月と年を 2 つの異なるintフィールドとして保持するのですか? を使用するだけdateです。

于 2013-04-13T09:47:39.787 に答える