Index: database/migrations/2019_10_25_180617_create_phases_table.php
===================================================================
--- database/migrations/2019_10_25_180617_create_phases_table.php	(revision 0c07a90e366407811902a5052f42e01d20bafe25)
+++ database/migrations/2019_10_25_180617_create_phases_table.php	(revision 0c07a90e366407811902a5052f42e01d20bafe25)
@@ -0,0 +1,45 @@
+<?php
+
+use Illuminate\Support\Facades\Schema;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Migrations\Migration;
+
+class CreatePhasesTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('phases', function (Blueprint $table) {
+            $table->increments('id');
+            $table->string('name')->unique();
+            $table->unsignedInteger('reviewer_role_id');
+            $table->unsignedInteger('user_id');
+
+            $table->foreign("reviewer_role_id")
+                ->references("id")
+                ->on("roles")
+                ->onDelete("cascade");
+
+            $table->foreign("user_id")
+                ->references("id")
+                ->on("users")
+                ->onDelete("cascade");
+
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('phases');
+    }
+}
Index: database/migrations/2019_10_25_180620_create_post_securities_table.php
===================================================================
--- database/migrations/2019_10_25_180620_create_post_securities_table.php	(revision 0c07a90e366407811902a5052f42e01d20bafe25)
+++ database/migrations/2019_10_25_180620_create_post_securities_table.php	(revision 0c07a90e366407811902a5052f42e01d20bafe25)
@@ -0,0 +1,39 @@
+<?php
+
+use Illuminate\Support\Facades\Schema;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Migrations\Migration;
+
+class CreatePostSecuritiesTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('post_securities', function (Blueprint $table) {
+            $table->bigIncrements('id');
+            $table->unsignedInteger('role_id');
+            $table->string('phase_ids');
+
+            $table->foreign("role_id")
+                ->references("id")
+                ->on("roles")
+                ->onDelete("cascade");
+
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('post_securities');
+    }
+}
Index: database/migrations/2019_10_25_180621_create_post_reviews_table.php
===================================================================
--- database/migrations/2019_10_25_180621_create_post_reviews_table.php	(revision 0c07a90e366407811902a5052f42e01d20bafe25)
+++ database/migrations/2019_10_25_180621_create_post_reviews_table.php	(revision 0c07a90e366407811902a5052f42e01d20bafe25)
@@ -0,0 +1,46 @@
+<?php
+
+use Illuminate\Support\Facades\Schema;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Migrations\Migration;
+
+class CreatePostReviewsTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('post_reviews', function (Blueprint $table) {
+            $table->bigIncrements('id');
+            $table->integer('post_id')->unsigned();
+            $table->unsignedBigInteger('post_security_id');
+            $table->integer('current_phase');
+            $table->boolean('is_passed_all_phases')->default(false);
+
+            $table->foreign("post_id")
+                ->references("id")
+                ->on("posts")
+                ->onDelete("cascade");
+
+            $table->foreign("post_security_id")
+                ->references("id")
+                ->on("post_securities")
+                ->onDelete("cascade");
+
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('post_reviews');
+    }
+}
