diff --git a/src/metadata_loader.js b/src/metadata_loader.js
index 3229e2b0cf0783e5a13d5ab85073d9ef2c5989f4..9866279ad472bc003948aa6ebd790e42368c09a7 100644
--- a/src/metadata_loader.js
+++ b/src/metadata_loader.js
@@ -168,12 +168,12 @@ class MetadataLoader {
         const showTitle = await Title.findByPk(ids.uuid);
         const [mapping] = await TitleEpisode.findOrBuild({
             where: {
-                parent_id: showTitle.id,
+                show_id: showTitle.id,
                 season_number: episodeIdentifier.season,
                 episode_number: episodeIdentifier.episode,
             },
             defaults: {
-                episode_id: uuidv4,
+                episode_id: uuidv4(),
             }
         })
         const [episodeTitle] = await Title.upsert({
@@ -185,10 +185,10 @@ class MetadataLoader {
             runtime: imdbResult.runtime,
         }, {returning: true});
         mapping.air_date = tmdbResult.air_date;
-        await mapping.setParent(showTitle, {save: false});
-        await mapping.save();
-        await episodeTitle.setParent(mapping, { save: false});
         await episodeTitle.save();
+        await mapping.setEpisode(episodeTitle, {save: false});
+        await mapping.setShow(showTitle, {save: false});
+        await mapping.save();
         await TitleName.destroy({
             where: {
                 title_id: episodeTitle.id,
@@ -475,7 +475,7 @@ class MetadataLoader {
 
         const isShow = titleType === "tvSeries";
         const fanartSource = isShow ?
-            `tv/${ids.tmdb}` :
+            `tv/${ids.tvdb}` :
             `movies/${ids.tmdb}`;
 
         const [
diff --git a/src/storage.js b/src/storage.js
index 16f75707cbdb8d94c572725bb01534fc766eb00f..fe9b3bb0ed54e0f6f9d0dfe3ab3c2643bb3c7330 100644
--- a/src/storage.js
+++ b/src/storage.js
@@ -170,7 +170,7 @@ class Backend {
             indexes: [
                 {
                     fields: [
-                        'parent_id',
+                        'show_id',
                         {
                             attribute: 'season_number',
                             collate: 'C',
@@ -186,7 +186,7 @@ class Backend {
                 {
                     using: 'BTREE',
                     fields: [
-                        'parent_id',
+                        'show_id',
                         {
                             attribute: 'air_date',
                             order: 'ASC',
@@ -196,19 +196,33 @@ class Backend {
             ]
         });
         TitleEpisode.belongsTo(Title, {
-            as: "Parent",
+            as: "Show",
             foreignKey: {
-                name: "parent_id",
+                name: "show_id",
                 allowNull: false,
             }
-        })
+        });
+        TitleEpisode.belongsTo(Title, {
+            as: "Episode",
+            foreignKey: {
+                name: "episode_id",
+                allowNull: false,
+            }
+        });
         Title.hasMany(TitleEpisode, {
-            as: "Parent",
+            as: "Show",
             foreignKey: {
-                name: "parent_id",
+                name: "show_id",
                 allowNull: true,
             }
-        })
+        });
+        Title.hasOne(TitleEpisode, {
+            as: "Episode",
+            foreignKey: {
+                name: "episode_id",
+                allowNull: true,
+            }
+        });
         TitleGenre.init({
             id: {
                 type: sequelize.DataTypes.UUID,