diff --git a/migrations/versions/e9e9e6a47618_.py b/migrations/versions/e9e9e6a47618_.py
new file mode 100644
index 0000000000000000000000000000000000000000..1fee0bf3ade5414d7d41286b15e1aa34d2d57d1b
--- /dev/null
+++ b/migrations/versions/e9e9e6a47618_.py
@@ -0,0 +1,58 @@
+"""empty message
+
+Revision ID: e9e9e6a47618
+Revises: efdf2488a176
+Create Date: 2018-08-19 22:42:00.221743
+
+"""
+from alembic import op
+import sqlalchemy as sa
+
+
+# revision identifiers, used by Alembic.
+revision = 'e9e9e6a47618'
+down_revision = 'efdf2488a176'
+branch_labels = None
+depends_on = None
+
+
+def upgrade():
+    # ### commands auto generated by Alembic - please adjust! ###
+    op.drop_constraint('projects_groups_project_id_fkey', 'projects_groups', type_='foreignkey')
+    op.drop_constraint('projects_groups_group_id_fkey', 'projects_groups', type_='foreignkey')
+    op.create_foreign_key(None, 'projects_groups', 'project', ['project_id'], ['id'], ondelete='cascade')
+    op.create_foreign_key(None, 'projects_groups', 'group', ['group_id'], ['id'], ondelete='cascade')
+    op.drop_constraint('reviewItem_user_id_fkey', 'reviewItem', type_='foreignkey')
+    op.create_foreign_key(None, 'reviewItem', 'user', ['user_id'], ['id'], ondelete='cascade')
+    op.drop_constraint('submission_user_id_fkey', 'submission', type_='foreignkey')
+    op.create_foreign_key(None, 'submission', 'user', ['user_id'], ['id'], ondelete='cascade')
+    op.drop_constraint('users_groups_user_id_fkey', 'users_groups', type_='foreignkey')
+    op.drop_constraint('users_groups_group_id_fkey', 'users_groups', type_='foreignkey')
+    op.create_foreign_key(None, 'users_groups', 'user', ['user_id'], ['id'], ondelete='cascade')
+    op.create_foreign_key(None, 'users_groups', 'group', ['group_id'], ['id'], ondelete='cascade')
+    op.drop_constraint('users_roles_user_id_fkey', 'users_roles', type_='foreignkey')
+    op.drop_constraint('users_roles_role_id_fkey', 'users_roles', type_='foreignkey')
+    op.create_foreign_key(None, 'users_roles', 'user', ['user_id'], ['id'], ondelete='cascade')
+    op.create_foreign_key(None, 'users_roles', 'role', ['role_id'], ['id'], ondelete='cascade')
+    # ### end Alembic commands ###
+
+
+def downgrade():
+    # ### commands auto generated by Alembic - please adjust! ###
+    op.drop_constraint(None, 'users_roles', type_='foreignkey')
+    op.drop_constraint(None, 'users_roles', type_='foreignkey')
+    op.create_foreign_key('users_roles_role_id_fkey', 'users_roles', 'role', ['role_id'], ['id'])
+    op.create_foreign_key('users_roles_user_id_fkey', 'users_roles', 'user', ['user_id'], ['id'])
+    op.drop_constraint(None, 'users_groups', type_='foreignkey')
+    op.drop_constraint(None, 'users_groups', type_='foreignkey')
+    op.create_foreign_key('users_groups_group_id_fkey', 'users_groups', 'group', ['group_id'], ['id'])
+    op.create_foreign_key('users_groups_user_id_fkey', 'users_groups', 'user', ['user_id'], ['id'])
+    op.drop_constraint(None, 'submission', type_='foreignkey')
+    op.create_foreign_key('submission_user_id_fkey', 'submission', 'user', ['user_id'], ['id'])
+    op.drop_constraint(None, 'reviewItem', type_='foreignkey')
+    op.create_foreign_key('reviewItem_user_id_fkey', 'reviewItem', 'user', ['user_id'], ['id'])
+    op.drop_constraint(None, 'projects_groups', type_='foreignkey')
+    op.drop_constraint(None, 'projects_groups', type_='foreignkey')
+    op.create_foreign_key('projects_groups_group_id_fkey', 'projects_groups', 'group', ['group_id'], ['id'])
+    op.create_foreign_key('projects_groups_project_id_fkey', 'projects_groups', 'project', ['project_id'], ['id'])
+    # ### end Alembic commands ###
diff --git a/portal/database/models.py b/portal/database/models.py
index f494fa8efc14e94138a3961dfa23159d2d112fcf..2c8a5f02a3e4c3f6aaba57d182e0bfb7fc59e7e8 100644
--- a/portal/database/models.py
+++ b/portal/database/models.py
@@ -803,7 +803,7 @@ class Submission(db.Model, EntityBase):
     note = db.Column(db.Text)
 
     user_id = db.Column(db.String(36), db.ForeignKey(
-        'user.id'), nullable=False)
+        'user.id', ondelete='cascade'), nullable=False)
     user = db.relationship("User", back_populates="submissions", uselist=False)
     project_id = db.Column(db.String(36), db.ForeignKey(
         'project.id', ondelete='cascade'), nullable=False)
@@ -890,7 +890,7 @@ class ReviewItem(db.Model, EntityBase):
         'review.id', ondelete='cascade'), nullable=False)
     review = db.relationship("Review", uselist=False,
                              back_populates="review_items")
-    user_id = db.Column(db.String(36), db.ForeignKey('user.id'))
+    user_id = db.Column(db.String(36), db.ForeignKey('user.id', ondelete='cascade'))
     user = db.relationship("User", uselist=False,
                            back_populates="review_items")  # the review item's author
     content = db.Column(db.Text)
@@ -976,18 +976,18 @@ def receive_set(**kw):
 # Associations - must come after definitions of the affected classes
 users_groups = db.Table("users_groups", db.Model.metadata,
                         db.Column("user_id", db.String(36),
-                                  db.ForeignKey('user.id')),
-                        db.Column("group_id", db.String(36), db.ForeignKey('group.id')))
+                                  db.ForeignKey('user.id', ondelete='cascade')),
+                        db.Column("group_id", db.String(36), db.ForeignKey('group.id', ondelete='cascade')))
 
 users_roles = db.Table("users_roles", db.Model.metadata,
                        db.Column("user_id", db.String(36),
-                                 db.ForeignKey('user.id')),
-                       db.Column("role_id", db.String(36), db.ForeignKey('role.id')))
+                                 db.ForeignKey('user.id', ondelete='cascade')),
+                       db.Column("role_id", db.String(36), db.ForeignKey('role.id', ondelete='cascade')))
 
 projects_groups = db.Table("projects_groups", db.Model.metadata,
                            db.Column("project_id", db.String(36),
-                                     db.ForeignKey('project.id')),
-                           db.Column("group_id", db.String(36), db.ForeignKey('group.id')))
+                                     db.ForeignKey('project.id', ondelete='cascade')),
+                           db.Column("group_id", db.String(36), db.ForeignKey('group.id', ondelete='cascade')))
 
 User.roles = db.relationship("Role", secondary="users_roles")
 User.groups = db.relationship("Group", secondary="users_groups")