diff --git a/api/Database.py b/api/Database.py
index b5182d38773d4b65b5df141f8f5054e0a8e35fed..079b6ae566fe181e8898c71695cbb346a0c2d724 100644
--- a/api/Database.py
+++ b/api/Database.py
@@ -29,6 +29,8 @@ class Database:
 
         self.__connect()
 
+        self.__create_tables()
+
     def __connect(self):
         self.__connection = psycopg2.connect(user=self.__user,
                                              password=self.__password,
@@ -55,7 +57,69 @@ class Database:
         if fetch_type == FetchType.ALL:
             return self.__cursor.fetchall()
 
-    # ROADMAPS
+    def __create_tables(self):
+        self.__create_table_roadmaps()
+        self.__create_table_milestones()
+        self.__create_table_tasks()
+        self.__create_table_subtasks()
+
+    def __create_table_roadmaps(self):
+        query = 'CREATE SEQUENCE IF NOT EXISTS "roadmaps_ID_seq"'
+        self.__query(query, fetch_type=FetchType.NONE)
+
+        queryTable = f'CREATE TABLE IF NOT EXISTS "public"."roadmaps" ' \
+                     f'("{RoadmapParameters.ID.value}" int4 NOT NULL DEFAULT ' \
+                     f'nextval(\'"roadmaps_ID_seq"\'::regclass),' \
+                     f'"{RoadmapParameters.PROJECT_NAME.value}" text NOT NULL, ' \
+                     f'PRIMARY KEY ("{RoadmapParameters.ID.value}"));'
+        self.__query(queryTable, fetch_type=FetchType.NONE)
+
+    def __create_table_milestones(self):
+        query = 'CREATE SEQUENCE IF NOT EXISTS "milestones_ID_seq"'
+        self.__query(query, fetch_type=FetchType.NONE)
+
+        queryTable = f'CREATE TABLE IF NOT EXISTS "public"."milestones" ' \
+                     f'("{MilestoneParameters.ID.value}" int4 NOT NULL DEFAULT ' \
+                     f'nextval(\'"milestones_ID_seq"\'::regclass),' \
+                     f'"{MilestoneParameters.ROADMAP_ID.value}" int4 NOT NULL, ' \
+                     f'"{MilestoneParameters.VERSION_CODE.value}" int4 NOT NULL, ' \
+                     f'"{MilestoneParameters.VERSION_NAME.value}" text NOT NULL, ' \
+                     f'"{MilestoneParameters.TITLE.value}" text NOT NULL, ' \
+                     f'"{MilestoneParameters.DUE_DATE.value}" date NOT NULL, ' \
+                     f'"{MilestoneParameters.COMPLETION_DATE.value}" date NOT NULL, ' \
+                     f'"{MilestoneParameters.STATUS.value}" int4 NOT NULL, ' \
+                     f'PRIMARY KEY ("{MilestoneParameters.ID.value}"));'
+        self.__query(queryTable, fetch_type=FetchType.NONE)
+
+    def __create_table_tasks(self):
+        query = 'CREATE SEQUENCE IF NOT EXISTS "tasks_ID_seq"'
+        self.__query(query, fetch_type=FetchType.NONE)
+
+        queryTable = f'CREATE TABLE IF NOT EXISTS "public"."tasks" ' \
+                     f'("{TaskParameters.ID.value}" int4 NOT NULL DEFAULT ' \
+                     f'nextval(\'"tasks_ID_seq"\'::regclass),' \
+                     f'"{TaskParameters.MILESTONE_ID.value}" int4 NOT NULL, ' \
+                     f'"{TaskParameters.TITLE.value}" text NOT NULL, ' \
+                     f'"{TaskParameters.DESCRIPTION.value}" text NOT NULL, ' \
+                     f'"{TaskParameters.STATUS.value}" int4 NOT NULL, ' \
+                     f'PRIMARY KEY ("{TaskParameters.ID.value}"));'
+        self.__query(queryTable, fetch_type=FetchType.NONE)
+
+    def __create_table_subtasks(self):
+        query = 'CREATE SEQUENCE IF NOT EXISTS "subtasks_ID_seq"'
+        self.__query(query, fetch_type=FetchType.NONE)
+
+        queryTable = f'CREATE TABLE IF NOT EXISTS "public"."subtasks" ' \
+                     f'("{SubTaskParameters.ID.value}" int4 NOT NULL DEFAULT ' \
+                     f'nextval(\'"subtasks_ID_seq"\'::regclass),' \
+                     f'"{SubTaskParameters.TASK_ID.value}" int4 NOT NULL, ' \
+                     f'"{SubTaskParameters.TITLE.value}" text NOT NULL, ' \
+                     f'"{SubTaskParameters.DESCRIPTION.value}" text NOT NULL, ' \
+                     f'"{SubTaskParameters.STATUS.value}" int4 NOT NULL, ' \
+                     f'PRIMARY KEY ("{SubTaskParameters.ID.value}"));'
+        self.__query(queryTable, fetch_type=FetchType.NONE)
+
+# ROADMAPS
     def get_roadmaps(self):
         query = f'SELECT * FROM roadmaps ORDER BY "{RoadmapParameters.ID.value}";'
         return self.__query(query)