diff --git a/server/app/database/models.py b/server/app/database/models.py
index 5452ce3d7e5a1373af783c57dd2453ede892392c..f7a3b30b5238900e356a458ebd369a593e20745b 100644
--- a/server/app/database/models.py
+++ b/server/app/database/models.py
@@ -28,6 +28,7 @@ class City(db.Model):
     name = db.Column(db.String(STRING_SIZE), unique=True)
 
     users = db.relationship("User", backref="city")
+    competitions = db.relationship("Competition", backref="city")
 
     def __init__(self, name):
         self.name = name
@@ -76,9 +77,11 @@ class User(db.Model):
 class Media(db.Model):
     id = db.Column(db.Integer, primary_key=True)
     filename = db.Column(db.String(STRING_SIZE), unique=True)
-    type = db.Column(db.String(STRING_SIZE), nullable=False)
+    type = db.Column(db.Integer, nullable=False)
     upload_by_id = db.Column(db.Integer, db.ForeignKey("user.id"), nullable=False)
 
+    styles = db.relationship("Style", backref="bg_image")
+
     def __init__(self, filename, type, upload_by_id):
         self.filename = filename
         self.type = type
@@ -91,7 +94,7 @@ class Style(db.Model):
     css = db.Column(db.Text, nullable=True)
     bg_image_id = db.Column(db.Integer, db.ForeignKey("media.id"), nullable=True)
 
-    bg_image = db.relationship("Media", foreign_keys=[bg_image_id], uselist=False)
+    competition = db.relationship("Competition", backref="style")
 
     def __init__(self, name, css=None, bg_image_id=None):
         self.name = name
@@ -105,8 +108,8 @@ class Competition(db.Model):
     style_id = db.Column(db.Integer, db.ForeignKey("style.id"), nullable=False)
     city_id = db.Column(db.Integer, db.ForeignKey("city.id"), nullable=False)
 
-    style = db.relationship("Style", foreign_keys=[style_id], uselist=False)
-    city = db.relationship("City", foreign_keys=[city_id], uselist=False)
+    slides = db.relationship("Slide", backref="competition")
+    teams = db.relationship("Team", backref="competition")
 
     def __init__(self, name, style_id, city_id):
         self.name = name
@@ -118,7 +121,8 @@ class Team(db.Model):
     id = db.Column(db.Integer, primary_key=True)
     name = db.Column(db.String(STRING_SIZE), unique=True)
     competition_id = db.Column(db.Integer, db.ForeignKey("competition.id"), nullable=False)
-    competition = db.relationship("Competition", foreign_keys=[competition_id], uselist=False)
+
+    answered_questions = db.relationship("AnsweredQuestion", backref="team")
 
     def __init__(self, name, competition_id):
         self.name = name
@@ -132,7 +136,7 @@ class Slide(db.Model):
     tweak_settings = db.Column(db.Text, nullable=True)
     competition_id = db.Column(db.Integer, db.ForeignKey("competition.id"), nullable=False)
 
-    competition = db.relationship("Competition", foreign_keys=[competition_id], uselist=False)
+    questions = db.relationship("Question", backref="slide")
 
     def __init__(self, name, order, competition_id, tweak_settings=None):
         self.name = name
@@ -148,7 +152,7 @@ class Question(db.Model):
     timer = db.Column(db.Integer, nullable=False)
     slide_id = db.Column(db.Integer, db.ForeignKey("slide.id"), nullable=False)
 
-    slide = db.relationship("Slide", foreign_keys=[slide_id], uselist=False)
+    answered_questions = db.relationship("AnsweredQuestion", backref="question")
 
     def __init__(self, name, title, timer, slide_id):
         self.name = name
@@ -172,7 +176,9 @@ class TrueFalseQuestion(db.Model):
 class TextQuestion(db.Model):
     id = db.Column(db.Integer, primary_key=True)
     question_id = db.Column(db.Integer, db.ForeignKey("question.id"), nullable=False)
+
     question = db.relationship("Question", foreign_keys=[question_id], uselist=False)
+    alternatives = db.relationship("TextQuestionAlternative", backref="text_question")
 
     def __init__(self, question_id):
         self.question_id = question_id
@@ -182,7 +188,6 @@ class TextQuestionAlternative(db.Model):
     id = db.Column(db.Integer, primary_key=True)
     text = db.Column(db.String(STRING_SIZE), nullable=False)
     text_question_id = db.Column(db.Integer, db.ForeignKey("text_question.id"), nullable=False)
-    text_question = db.relationship("TextQuestion", foreign_keys=[text_question_id], uselist=False)
 
     def __init__(self, text, text_question_id):
         self.text = text
@@ -196,6 +201,7 @@ class MCQuestion(db.Model):
     question_id = db.Column(db.Integer, db.ForeignKey("question.id"), nullable=False)
 
     question = db.relationship("Question", foreign_keys=[question_id], uselist=False)
+    alternatives = db.relationship("MCQuestionAlternative", backref="mc_question")
 
     def __init__(self, title, timer, slide_id):
         self.title = title
@@ -209,8 +215,6 @@ class MCQuestionAlternative(db.Model):
     true_false = db.Column(db.Boolean, nullable=False, default=False)
     mc_id = db.Column(db.Integer, db.ForeignKey("mc_question.id"), nullable=False)
 
-    mc = db.relationship("MCQuestion", foreign_keys=[mc_id], uselist=False)
-
     def __init__(self, text, true_false, mc_id):
         self.text = text
         self.true_false = true_false
@@ -224,9 +228,6 @@ class AnsweredQuestion(db.Model):
     question_id = db.Column(db.Integer, db.ForeignKey("question.id"), nullable=False)
     team_id = db.Column(db.Integer, db.ForeignKey("team.id"), nullable=False)
 
-    question = db.relationship("Question", foreign_keys=[question_id], uselist=False)
-    team = db.relationship("Team", foreign_keys=[team_id], uselist=False)
-
     def __init__(self, data, score, question_id, team_id):
         self.data = data
         self.score = score