これが私が問題を抱えている3つのテーブルです:
表:機会-さまざまな機会(職務)の説明を保持します
表:Opportunities_Applicants-機会を申請するさまざまな申請者を保持します。1人の応募者は1つの機会にしか応募できませんが、1つの機会には多くの応募者がいる可能性があります
テーブル:Opportunities_Category-カテゴリ名とタイプを保持します。1カテゴリは多くの機会に関連する可能性があります。
オポチュニティカテゴリが削除されたときにカスケード削除を実行しようとしています。これにより、対応するオポチュニティとそれらのオポチュニティの申請者が削除されます。
この構造は適切ですか、それともデータベースを別の方法で設定する必要がありますか?オポチュニティカテゴリが削除されたときにCASCADINGDeleteが機能するようにするには、テーブルの関係をどのように設定する必要がありますか?
CASCADING Deleteを使用する必要がありますか?
create table Opportunities_Category
(
CategoryID int identity(1,1) not null
constraint PK_CategoryID primary key clustered,
[Name] varchar(150) not null,
[Type] varchar(100) not null --Pay, Volunteer, Volunteer Yearly
)
create table Opportunities
(
OpportunityID int identity(1,1) not null
constraint PK_OpportunityID primary key clustered,
CategoryID int not null
constraint FK_CategoryID foreign key references Opportunities_Category(CategoryID) ON DELETE CASCADE,
Title varchar(300) not null,
PostingDate datetime not null,
ClosingDate datetime not null,
Duration varchar(150) not null, --Part Time, Full Time, Seasonal, Contract
Compensation varchar(150) not null, --Hourly, Volunteer, Salary
[Description] varchar(5000) not null,
Qualifications varchar(5000) not null,
Show int not null
)
create table Opportunities_Applicant
(
ApplicantID int identity(1,1) not null
constraint PK_ApplicantID primary key clustered,
OpportunityID int not null
constraint FK_OpportunityID foreign key references Opportunities(OpportunityID) ON DELETE CASCADE,
[First] varchar(150) not null,
[Last] varchar(150) not null,
Phone varchar(20) not null,
Cell varchar(20) not null,
EMail varchar(200) not null,
CoverLetterResume varchar(300) null,
[Timestamp] datetime not null
)