Index: src/FinkiChattery/FinkiChattery.Api/Controllers/v1/AnswerResponsesController.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Api/Controllers/v1/AnswerResponsesController.cs	(revision 9df3069cb12bbfe76a9c6acbb659c84b4fdc33b0)
+++ src/FinkiChattery/FinkiChattery.Api/Controllers/v1/AnswerResponsesController.cs	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -39,4 +39,12 @@
             return Ok(answerResponse.ToAnswerResponseQuestionStateResponse());
         }
+
+        [HttpDelete("{answerResponseUid:Guid}")]
+        [Authorize(AuthenticationSchemes = IdentityServerAuthenticationDefaults.AuthenticationScheme, Policy = AuthenticationPolicy.Student)]
+        public async Task<IActionResult> DeleteAnswerResponse([FromRoute] Guid questionUid, [FromRoute] Guid answerUid, [FromRoute] Guid answerResponseUid)
+        {
+            var uid = await MediatorService.SendAsync(new DeleteAnswerResponseCommand(questionUid, answerUid, answerResponseUid));
+            return Ok(uid);
+        }
     }
 }
Index: src/FinkiChattery/FinkiChattery.Api/Controllers/v1/AnswersController.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Api/Controllers/v1/AnswersController.cs	(revision 9df3069cb12bbfe76a9c6acbb659c84b4fdc33b0)
+++ src/FinkiChattery/FinkiChattery.Api/Controllers/v1/AnswersController.cs	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -40,4 +40,12 @@
         }
 
+        [HttpDelete("{answerUid:Guid}")]
+        [Authorize(AuthenticationSchemes = IdentityServerAuthenticationDefaults.AuthenticationScheme, Policy = AuthenticationPolicy.Student)]
+        public async Task<IActionResult> DeleteAnswer([FromRoute] Guid questionUid, [FromRoute] Guid answerUid)
+        {
+            var uid = await MediatorService.SendAsync(new DeleteAnswerCommand(questionUid, answerUid));
+            return Ok(uid);
+        }
+
         [HttpPut("{answerUid:Guid}/correct")]
         [Authorize(AuthenticationSchemes = IdentityServerAuthenticationDefaults.AuthenticationScheme, Policy = AuthenticationPolicy.Student)]
Index: src/FinkiChattery/FinkiChattery.Commands/Questioning/DeleteAnswer/DeleteAnswerCommand.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Commands/Questioning/DeleteAnswer/DeleteAnswerCommand.cs	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
+++ src/FinkiChattery/FinkiChattery.Commands/Questioning/DeleteAnswer/DeleteAnswerCommand.cs	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -0,0 +1,47 @@
+﻿using FinkiChattery.Common.Mediator.Contracs;
+using FinkiChattery.Common.Mediator.Interfaces;
+using FinkiChattery.Common.User;
+using FinkiChattery.Persistence.UnitOfWork;
+using System;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace FinkiChattery.Commands.Questioning
+{
+    public class DeleteAnswerCommand : ICommand<Guid>
+    {
+        public DeleteAnswerCommand(Guid questionUid, Guid answerUid)
+        {
+            QuestionUid = questionUid;
+            AnswerUid = answerUid;
+        }
+
+        public Guid QuestionUid { get; }
+        public Guid AnswerUid { get; }
+    }
+
+    public class DeleteAnswerHandler : ICommandHandler<DeleteAnswerCommand, Guid>
+    {
+        public DeleteAnswerHandler(IUnitOfWork unitOfWork, ICurrentUser currentUser, IEventService eventService)
+        {
+            UnitOfWork = unitOfWork;
+            CurrentUser = currentUser;
+            EventService = eventService;
+        }
+
+        public IUnitOfWork UnitOfWork { get; }
+        public ICurrentUser CurrentUser { get; }
+        public IEventService EventService { get; }
+
+        public async Task<Guid> Handle(DeleteAnswerCommand request, CancellationToken cancellationToken)
+        {
+            var answer = await UnitOfWork.Answers.GetByUidAsync(request.AnswerUid);
+
+            UnitOfWork.Answers.Delete(answer);
+
+            await UnitOfWork.SaveAsync();
+
+            return answer.Uid;
+        }
+    }
+}
Index: src/FinkiChattery/FinkiChattery.Commands/Questioning/DeleteAnswer/DeleteAnswerValidator.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Commands/Questioning/DeleteAnswer/DeleteAnswerValidator.cs	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
+++ src/FinkiChattery/FinkiChattery.Commands/Questioning/DeleteAnswer/DeleteAnswerValidator.cs	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -0,0 +1,20 @@
+﻿using FinkiChattery.Commands.Questioning.Validators;
+using FinkiChattery.Commands.Questioning.Validators.Contracts;
+using FinkiChattery.Common.User;
+using FinkiChattery.Persistence.UnitOfWork;
+using FluentValidation;
+
+namespace FinkiChattery.Commands.Questioning
+{
+    public class DeleteAnswerValidator : AbstractValidator<DeleteAnswerCommand>
+    {
+        public DeleteAnswerValidator(IUnitOfWork unitOfWork, ICurrentUser currentUser)
+        {
+            CascadeMode = CascadeMode.Stop;
+
+            RuleFor(x => new AnswerInQuestionWithUidExistsDto(x.QuestionUid, x.AnswerUid)).SetValidator(new AnswerInQuestionWithUidExists(unitOfWork));
+            RuleFor(x => x.AnswerUid).SetValidator(new StudentIsOwnerOfAnswer(unitOfWork, currentUser));
+            RuleFor(x => x.AnswerUid).SetValidator(new AnswerIsNotAlreadyMarkedAsCorrect(unitOfWork));
+        }
+    }
+}
Index: src/FinkiChattery/FinkiChattery.Commands/Questioning/DeleteAnswerResponse/DeleteAnswerResponseCommand.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Commands/Questioning/DeleteAnswerResponse/DeleteAnswerResponseCommand.cs	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
+++ src/FinkiChattery/FinkiChattery.Commands/Questioning/DeleteAnswerResponse/DeleteAnswerResponseCommand.cs	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -0,0 +1,46 @@
+﻿using FinkiChattery.Common.Mediator.Contracs;
+using FinkiChattery.Common.User;
+using FinkiChattery.Persistence.UnitOfWork;
+using System;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace FinkiChattery.Commands.Questioning
+{
+    public class DeleteAnswerResponseCommand : ICommand<Guid>
+    {
+        public DeleteAnswerResponseCommand(Guid questionUid, Guid answerUid, Guid answerResponseUid)
+        {
+            QuestionUid = questionUid;
+            AnswerUid = answerUid;
+            AnswerResponseUid = answerResponseUid;
+        }
+
+        public Guid QuestionUid { get; }
+        public Guid AnswerUid { get; }
+        public Guid AnswerResponseUid { get; }
+    }
+
+    public class DeleteAnswerResponseHandler : ICommandHandler<DeleteAnswerResponseCommand, Guid>
+    {
+        public DeleteAnswerResponseHandler(IUnitOfWork unitOfWork, ICurrentUser currentUser)
+        {
+            UnitOfWork = unitOfWork;
+            CurrentUser = currentUser;
+        }
+
+        public IUnitOfWork UnitOfWork { get; }
+        public ICurrentUser CurrentUser { get; }
+
+        public async Task<Guid> Handle(DeleteAnswerResponseCommand request, CancellationToken cancellationToken)
+        {
+            var answerResponse = await UnitOfWork.AnswerResponses.GetByUidAsync(request.AnswerResponseUid);
+
+            UnitOfWork.AnswerResponses.Delete(answerResponse);
+
+            await UnitOfWork.SaveAsync();
+
+            return answerResponse.Uid;
+        }
+    }
+}
Index: src/FinkiChattery/FinkiChattery.Commands/Questioning/DeleteAnswerResponse/DeleteAnswerResponseValidator.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Commands/Questioning/DeleteAnswerResponse/DeleteAnswerResponseValidator.cs	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
+++ src/FinkiChattery/FinkiChattery.Commands/Questioning/DeleteAnswerResponse/DeleteAnswerResponseValidator.cs	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -0,0 +1,19 @@
+﻿using FinkiChattery.Commands.Questioning.Validators;
+using FinkiChattery.Commands.Questioning.Validators.Contracts;
+using FinkiChattery.Common.User;
+using FinkiChattery.Persistence.UnitOfWork;
+using FluentValidation;
+
+namespace FinkiChattery.Commands.Questioning
+{
+    public class DeleteAnswerResponseValidator : AbstractValidator<DeleteAnswerResponseCommand>
+    {
+        public DeleteAnswerResponseValidator(IUnitOfWork unitOfWork, ICurrentUser currentUser)
+        {
+            CascadeMode = CascadeMode.Stop;
+
+            RuleFor(x => new AnswerInQuestionWithUidExistsDto(x.QuestionUid, x.AnswerUid)).SetValidator(new AnswerInQuestionWithUidExists(unitOfWork));
+            RuleFor(x => x.AnswerResponseUid).SetValidator(new StudentIsOwnerOfAnswerResponse(unitOfWork, currentUser));
+        }
+    }
+}
Index: src/FinkiChattery/FinkiChattery.Database/dbo/Tables/AnswerResponse/AnswerResponse.sql
===================================================================
--- src/FinkiChattery/FinkiChattery.Database/dbo/Tables/AnswerResponse/AnswerResponse.sql	(revision 9df3069cb12bbfe76a9c6acbb659c84b4fdc33b0)
+++ src/FinkiChattery/FinkiChattery.Database/dbo/Tables/AnswerResponse/AnswerResponse.sql	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -7,5 +7,5 @@
     [CreatedOn] SMALLDATETIME    NOT NULL,
     CONSTRAINT [PK_AnswerResponse] PRIMARY KEY CLUSTERED ([Id] ASC),
-    CONSTRAINT [FK_AnswerResponse_Answer_AnswerFk] FOREIGN KEY ([AnswerFk]) REFERENCES [dbo].[Answer] ([Id]),
+    CONSTRAINT [FK_AnswerResponse_Answer_AnswerFk] FOREIGN KEY ([AnswerFk]) REFERENCES [dbo].[Answer] ([Id]) ON DELETE CASCADE,
     CONSTRAINT [FK_AnswerResponse_Student_AnswerFk] FOREIGN KEY ([StudentFk]) REFERENCES [dbo].[Student] ([Id])
 );
Index: src/FinkiChattery/FinkiChattery.Database/dbo/Tables/Vote/Vote.sql
===================================================================
--- src/FinkiChattery/FinkiChattery.Database/dbo/Tables/Vote/Vote.sql	(revision 9df3069cb12bbfe76a9c6acbb659c84b4fdc33b0)
+++ src/FinkiChattery/FinkiChattery.Database/dbo/Tables/Vote/Vote.sql	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -6,5 +6,5 @@
     [VoteType] TINYINT           NOT NULL, 
     CONSTRAINT [PK_Vote] PRIMARY KEY CLUSTERED ([Id] ASC),
-    CONSTRAINT [FK_Vote_Answer_AnswerFk] FOREIGN KEY ([AnswerFk]) REFERENCES [dbo].[Answer] ([Id]),
+    CONSTRAINT [FK_Vote_Answer_AnswerFk] FOREIGN KEY ([AnswerFk]) REFERENCES [dbo].[Answer] ([Id]) ON DELETE CASCADE,
     CONSTRAINT [FK_Vote_Student_StudentFk] FOREIGN KEY ([StudentFk]) REFERENCES [dbo].[Student] ([Id])
 );
Index: src/FinkiChattery/FinkiChattery.Persistence/Configurations/AnswerResponseConfig.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Persistence/Configurations/AnswerResponseConfig.cs	(revision 9df3069cb12bbfe76a9c6acbb659c84b4fdc33b0)
+++ src/FinkiChattery/FinkiChattery.Persistence/Configurations/AnswerResponseConfig.cs	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -27,5 +27,5 @@
             builder.Property(x => x.CreatedOn).HasColumnName(@"CreatedOn").HasColumnType("smalldatetime").IsRequired();
 
-            builder.HasOne(x => x.Answer).WithMany(x => x.AnswerResponses).HasForeignKey(x => x.AnswerFk).OnDelete(DeleteBehavior.Restrict);
+            builder.HasOne(x => x.Answer).WithMany(x => x.AnswerResponses).HasForeignKey(x => x.AnswerFk).OnDelete(DeleteBehavior.Cascade);
             builder.HasOne(x => x.Student).WithMany().HasForeignKey(x => x.StudentFk).OnDelete(DeleteBehavior.Restrict);
         }
Index: src/FinkiChattery/FinkiChattery.Persistence/Configurations/VoteConfig.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Persistence/Configurations/VoteConfig.cs	(revision 9df3069cb12bbfe76a9c6acbb659c84b4fdc33b0)
+++ src/FinkiChattery/FinkiChattery.Persistence/Configurations/VoteConfig.cs	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -22,5 +22,5 @@
 
             builder.HasOne(x => x.Student).WithMany().HasForeignKey(x => x.StudentFk).OnDelete(DeleteBehavior.Restrict);
-            builder.HasOne(x => x.Answer).WithMany(x => x.Votes).HasForeignKey(x => x.AnswerFk).OnDelete(DeleteBehavior.Restrict);
+            builder.HasOne(x => x.Answer).WithMany(x => x.Votes).HasForeignKey(x => x.AnswerFk).OnDelete(DeleteBehavior.Cascade);
         }
     }
Index: src/FinkiChattery/FinkiChattery.Persistence/Repositories/Base/IRepository.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Persistence/Repositories/Base/IRepository.cs	(revision 9df3069cb12bbfe76a9c6acbb659c84b4fdc33b0)
+++ src/FinkiChattery/FinkiChattery.Persistence/Repositories/Base/IRepository.cs	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -13,4 +13,6 @@
         Task<T> GetByIdAsync(int id);
 
+        void Delete(T entity);
+
         void Add(T entity);
     }
Index: src/FinkiChattery/FinkiChattery.Persistence/Repositories/Base/Repository.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Persistence/Repositories/Base/Repository.cs	(revision 9df3069cb12bbfe76a9c6acbb659c84b4fdc33b0)
+++ src/FinkiChattery/FinkiChattery.Persistence/Repositories/Base/Repository.cs	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -38,4 +38,9 @@
             return await All().FirstOrDefaultAsync(f => f.Uid == uid);
         }
+
+        public void Delete(T entity)
+        {
+            DbSet.Remove(entity);
+        }
     }
 }
