Answers in Question的外键可能会造成多重级联?

Foreign key in of Answers in Question may cause multiple cascade?

create database CodingHelpUz
go

use CodingHelpUz
go

create table Categories (
CategoryID int primary key identity(1,1),
CategoryName nvarchar(max))
go

create table Users(
UserID int primary key identity(1,1),
Email nvarchar(max),
PasswordHash nvarchar(max),
Name nvarchar (max),
Mobile nvarchar (max),
IsAdmin bit default(0))
go

create table Questions(
QuestionID int primary key identity(1,1),
QuestionName nvarchar(max),
QuestionDateAndTime datetime,
UserID int references Users(UserID) on delete cascade,
CategoryID int references Categories(CategoryID) on delete cascade,
VotesCount int,
AnswersCount int,
ViewsCount int)
go

create table Answers(
AnswerID int primary key identity(1,1),
AnswerText nvarchar(max),
AnswerDateAndTime datetime,
UserID int references Users(UserID) on delete cascade,
QuestionID int references Questions(QuestionID) on delete cascade,
VotesCount int)
go

create table Votes(
VoteID int primary key identity (1,1),
UserID int references Users(UserID) on delete cascade,
AnswerID int references Answers(AnswerID) on delete cascade,
VoteValue int)
go

use CodingHelpUz
go

insert into Users values ('akobirmuso@gmail.com','240be518fabd2724ddb6f04eeb1da5967448d7e831c08c8fa822809f74c720a9','Admin','998907172353',1)
go

insert into Users values ('test@gmail.com','ecd71870d1963316a97e3ac3408c9835ad8cf0f3c1bc703527c30265534f75ae','Test','000000000000',0)
go

insert into Categories values('HTML')
go

insert into Categories values('CSS')
go

insert into Categories values('Bootstrap')
go

insert into Categories values('NodeJs')
go

insert into Categories values('JS')
go

insert into Categories values('JQuery')
go

insert into Categories values('PHP')
go

insert into Categories values('C++')
go

insert into Categories values('C#')
go

insert into Categories values('Java')
go

insert into Categories values('Kotlin')
go

insert into Categories values('Python')
go

insert into Categories values('Sql')
go

Foreign key in of Answers in Question may cause multiple cascade?

是的。 User>Question>Answer和User>Answer是两条级联路径。只需选择性地将 FKs 更改为 ON DELETE NO ACTION,例如

create table Answers(
AnswerID int primary key identity(1,1),
AnswerText nvarchar(max),
AnswerDateAndTime datetime,
UserID int references Users(UserID) on delete no action,
QuestionID int references Questions(QuestionID) on delete cascade,
VotesCount int)
go

如果 Aswers 的 UserID 始终与问题的 UserID 相同,则要么删除 Answers.UserID,要么在 (UserID,QuestionID) 上创建 FK,这可能应该是用户的 PK。