diff --git a/db/migrations/20190202114345_create_announcements_authors.js b/db/migrations/20190202114345_create_announcements_authors.js
new file mode 100644
index 0000000000000000000000000000000000000000..cbc58e4da35d929d3b2d4850c831b378396bf547
--- /dev/null
+++ b/db/migrations/20190202114345_create_announcements_authors.js
@@ -0,0 +1,18 @@
+
+exports.up = function (knex, Promise) {
+    return knex.schema.createTable('announcements_authors', function (table) {
+        table.increments('id'); //autoincrementing (non-nullable) primary key
+
+        table.integer('mid').notNullable()
+            .references('mid').inTable('messages_announcements')
+            .onDelete('CASCADE'); //if announcement is deleted, also delete authors
+
+        table.integer('gid').notNullable()
+            .references('gid').inTable('groups')
+            .onDelete('CASCADE'); //if group is deleted, also delete authors
+    });
+};
+
+exports.down = function (knex, Promise) {
+    return knex.schema.dropTable('announcements_authors');
+};
diff --git a/db/migrations/20190202114346_create_announcements_recipients.js b/db/migrations/20190202114346_create_announcements_recipients.js
new file mode 100644
index 0000000000000000000000000000000000000000..db72ec692151a9c969a41071aaddaaa2e3d8dc0e
--- /dev/null
+++ b/db/migrations/20190202114346_create_announcements_recipients.js
@@ -0,0 +1,18 @@
+
+exports.up = function (knex, Promise) {
+    return knex.schema.createTable('announcements_recipients', function (table) {
+        table.increments('id'); //autoincrementing (non-nullable) primary key
+
+        table.integer('mid').notNullable()
+            .references('mid').inTable('messages_announcements')
+            .onDelete('CASCADE'); //if announcement is deleted, also delete recipients
+
+        table.integer('gid').notNullable()
+            .references('gid').inTable('groups')
+            .onDelete('CASCADE'); //if group is deleted, also delete recipient
+    });
+};
+
+exports.down = function (knex, Promise) {
+    return knex.schema.dropTable('announcements_recipients');
+};
diff --git a/db/migrations/20190202114347_create_events_authors.js b/db/migrations/20190202114347_create_events_authors.js
new file mode 100644
index 0000000000000000000000000000000000000000..904d67ebce9082d712d1c8a4d5e79b2095f65100
--- /dev/null
+++ b/db/migrations/20190202114347_create_events_authors.js
@@ -0,0 +1,18 @@
+
+exports.up = function (knex, Promise) {
+    return knex.schema.createTable('events_authors', function (table) {
+        table.increments('id'); //autoincrementing (non-nullable) primary key
+
+        table.integer('mid').notNullable()
+            .references('mid').inTable('messages_events')
+            .onDelete('CASCADE'); //if event is deleted, also delete authors
+
+        table.integer('gid').notNullable()
+            .references('gid').inTable('groups')
+            .onDelete('CASCADE'); //if group is deleted, also delete authors
+    });
+};
+
+exports.down = function (knex, Promise) {
+    return knex.schema.dropTable('events_authors');
+};
diff --git a/db/migrations/20190202114348_create_events_recipients.js b/db/migrations/20190202114348_create_events_recipients.js
new file mode 100644
index 0000000000000000000000000000000000000000..762a3f0338b071541e5cc2e53f4940986e84c5d8
--- /dev/null
+++ b/db/migrations/20190202114348_create_events_recipients.js
@@ -0,0 +1,18 @@
+
+exports.up = function (knex, Promise) {
+    return knex.schema.createTable('events_recipients', function (table) {
+        table.increments('id'); //autoincrementing (non-nullable) primary key
+
+        table.integer('mid').notNullable()
+            .references('mid').inTable('messages_events')
+            .onDelete('CASCADE'); //if event is deleted, also delete recipients
+
+        table.integer('gid').notNullable()
+            .references('gid').inTable('groups')
+            .onDelete('CASCADE'); //if group is deleted, also delete recipient
+    });
+};
+
+exports.down = function (knex, Promise) {
+    return knex.schema.dropTable('events_recipients');
+};