diff --git a/dynamic_entity_reference.services.yml b/dynamic_entity_reference.services.yml
index 153fff9..4444695 100644
--- a/dynamic_entity_reference.services.yml
+++ b/dynamic_entity_reference.services.yml
@@ -2,3 +2,19 @@ services:
   plugin.manager.dynamic_entity_reference_selection:
     class: Drupal\dynamic_entity_reference\SelectionPluginManager
     parent: plugin.manager.entity_reference_selection
+  dynamic_entity_reference.entity_type_subscriber:
+    class: Drupal\dynamic_entity_reference\EventSubscriber\FieldStorageSubscriber
+    arguments: ['@entity_type.manager', '@entity_field.manager', '@dynamic_entity_reference.storage.create_column']
+    tags:
+      - { name: event_subscriber }
+  dynamic_entity_reference.storage.create_column:
+    class: Drupal\dynamic_entity_reference\Storage\IntColumnHandler
+    tags:
+      - { name: backend_overridable }
+    arguments: ['@database']
+  mysql.dynamic_entity_reference.storage.create_column:
+    class: Drupal\dynamic_entity_reference\Storage\IntColumnHandlerMySQL
+    arguments: ['@database']
+  sqlite.dynamic_entity_reference.storage.create_column:
+    class: Drupal\dynamic_entity_reference\Storage\IntColumnHandlerSQLite
+    arguments: ['@database']
diff --git a/dynamic_entity_reference.views.inc b/dynamic_entity_reference.views.inc
index 7ba1b27..e88ec31 100644
--- a/dynamic_entity_reference.views.inc
+++ b/dynamic_entity_reference.views.inc
@@ -50,7 +50,7 @@ function dynamic_entity_reference_field_views_data(FieldStorageConfigInterface $
         'base' => $target_base_table,
         'entity type' => $target_entity_type_id,
         'base field' => $target_entity_type->getKey('id'),
-        'relationship field' => $field_name . '_target_id',
+        'relationship field' => $field_name . '_target_id_int',
         // Entity reference field only has one target type whereas dynamic
         // entity reference field can have multiple target types that is why we
         // need extra join condition on target types.
@@ -80,7 +80,7 @@ function dynamic_entity_reference_field_views_data(FieldStorageConfigInterface $
         'base field' => $entity_type->getKey('id'),
         'field_name' => $field_name,
         'field table' => $table_mapping->getDedicatedDataTableName($field_storage),
-        'field field' => $field_name . '_target_id',
+        'field field' => $field_name . '_target_id_int',
         // Entity reference field only has one target type whereas dynamic
         // entity reference field can have multiple target types that is why we
         // need extra join condition on target types.
@@ -146,7 +146,7 @@ function dynamic_entity_reference_views_data() {
     foreach ($fields as $field) {
       $field_name = $field->getName();
       $columns = $table_mapping->getColumnNames($field_name);
-      $column_id = $columns['target_id'];
+      $column_id = $columns['target_id'] . '_int';
       $column_type = $columns['target_type'];
 
       // Unlimited (-1) or > 1 store field data in a dedicated table.
diff --git a/src/EventSubscriber/FieldStorageSubscriber.php b/src/EventSubscriber/FieldStorageSubscriber.php
new file mode 100644
index 0000000..680dce2
--- /dev/null
+++ b/src/EventSubscriber/FieldStorageSubscriber.php
@@ -0,0 +1,116 @@
+<?php
+
+namespace Drupal\dynamic_entity_reference\EventSubscriber;
+
+use Drupal\Core\Entity\EntityFieldManagerInterface;
+use Drupal\Core\Entity\EntityTypeEvent;
+use Drupal\Core\Entity\EntityTypeEvents;
+use Drupal\Core\Entity\EntityTypeManagerInterface;
+use Drupal\Core\Entity\Sql\SqlEntityStorageInterface;
+use Drupal\Core\Entity\Sql\TableMappingInterface;
+use Drupal\Core\Field\FieldStorageDefinitionEvent;
+use Drupal\Core\Field\FieldStorageDefinitionEvents;
+use Drupal\Core\Field\FieldStorageDefinitionInterface;
+use Drupal\dynamic_entity_reference\Storage\IntColumnHandler;
+use Symfony\Component\EventDispatcher\EventSubscriberInterface;
+
+/**
+ * Hands off field storage events to the integer column handler.
+ */
+class FieldStorageSubscriber implements EventSubscriberInterface {
+
+  /**
+   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
+   */
+  protected $entityTypeManager;
+
+  /**
+   * @var \Drupal\dynamic_entity_reference\Storage\IntColumnHandler
+   */
+  protected $intColumnHandler;
+
+  /**
+   * @var \Drupal\Core\Entity\EntityFieldManagerInterface
+   */
+  protected $entityFieldManager;
+
+  /**
+   * FieldStorageSubscriber constructor.
+   *
+   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
+   *   The entity type manager.
+   * @param \Drupal\Core\Entity\EntityFieldManagerInterface $entity_field_manager
+   *   The entity field manager.
+   * @param \Drupal\dynamic_entity_reference\Storage\IntColumnHandler $int_column_handler
+   *   The integer column handler.
+   */
+  public function __construct(EntityTypeManagerInterface $entity_type_manager, EntityFieldManagerInterface $entity_field_manager, IntColumnHandler $int_column_handler) {
+    $this->entityTypeManager = $entity_type_manager;
+    $this->entityFieldManager = $entity_field_manager;
+    $this->intColumnHandler = $int_column_handler;
+  }
+
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function getSubscribedEvents() {
+    $event = ['onFieldStorage', 100];
+    $events[FieldStorageDefinitionEvents::CREATE][] = $event;
+    $events[FieldStorageDefinitionEvents::UPDATE][] = $event;
+    $event = ['onEntityType', 100];
+    $events[EntityTypeEvents::CREATE][] = $event;
+    $events[EntityTypeEvents::UPDATE][] = $event;
+    return $events;
+  }
+
+  /**
+   * Handle a field storage event.
+   *
+   * @param \Drupal\Core\Field\FieldStorageDefinitionEvent $event
+   */
+  function onFieldStorage(FieldStorageDefinitionEvent $event) {
+    $definition = $event->getFieldStorageDefinition();
+    $this->handleEntityType($definition->getTargetEntityTypeId(), $definition->getName(), $definition);
+  }
+
+  /**
+   * Handle an entity type event.
+   *
+   * @param \Drupal\Core\Entity\EntityTypeEvent $event
+   */
+  public function onEntityType(EntityTypeEvent $event) {
+    $this->handleEntityType($event->getEntityType()->id());
+  }
+
+  /**
+   * @param $entity_type_id
+   */
+  protected function handleEntityType($entity_type_id, $field_name = NULL, FieldStorageDefinitionInterface $field_storage_definition = NULL) {
+    // If we know which field is being created / updated check whether it is
+    // DER.
+    if ($field_storage_definition && $field_storage_definition->getType() != 'dynamic_entity_reference') {
+      return;
+    }
+    $storage = $this->entityTypeManager->getStorage($entity_type_id);
+    if ($storage instanceof SqlEntityStorageInterface) {
+      $storage_definitions = $this->entityFieldManager->getFieldStorageDefinitions($entity_type_id);
+      // If a field is given then only work with that.
+      $current_definitions = $field_name ? [$field_name => $field_storage_definition] : $storage_definitions;
+      // DefaultMapping is buggy and requires all the field definitions.
+      $mapping = $storage->getTableMapping($current_definitions + $storage_definitions);
+      $tables = [];
+      foreach ($current_definitions as $storage_definition) {
+        if ($storage_definition->getType() == 'dynamic_entity_reference') {
+          $table = $mapping->getFieldTableName($storage_definition->getName());
+          $column = $mapping->getFieldColumnName($storage_definition, 'target_id');
+          $tables[$table][] = $column;
+        }
+      }
+      foreach ($tables as $table => $columns) {
+        $this->intColumnHandler->create($table, $columns);
+      }
+    }
+  }
+
+}
diff --git a/src/Plugin/Field/FieldType/DynamicEntityReferenceItem.php b/src/Plugin/Field/FieldType/DynamicEntityReferenceItem.php
index 54a153f..bf44eeb 100644
--- a/src/Plugin/Field/FieldType/DynamicEntityReferenceItem.php
+++ b/src/Plugin/Field/FieldType/DynamicEntityReferenceItem.php
@@ -73,7 +73,7 @@ class DynamicEntityReferenceItem extends EntityReferenceItem {
    * {@inheritdoc}
    */
   public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) {
-    $properties['target_id'] = DataReferenceTargetDefinition::create('integer')
+    $properties['target_id'] = DataReferenceTargetDefinition::create('string')
       ->setLabel(t('Entity ID'))
       ->setSetting('unsigned', TRUE)
       ->setRequired(TRUE);
@@ -99,8 +99,8 @@ class DynamicEntityReferenceItem extends EntityReferenceItem {
     $columns = array(
       'target_id' => array(
         'description' => 'The ID of the target entity.',
-        'type' => 'int',
-        'unsigned' => TRUE,
+        'type' => 'varchar',
+        'length' => 128,
       ),
       'target_type' => array(
         'description' => 'The Entity Type ID of the target entity.',
diff --git a/src/Storage/IntColumnHandler.php b/src/Storage/IntColumnHandler.php
new file mode 100644
index 0000000..bf95d51
--- /dev/null
+++ b/src/Storage/IntColumnHandler.php
@@ -0,0 +1,117 @@
+<?php
+
+namespace Drupal\dynamic_entity_reference\Storage;
+
+use Drupal\Core\Database\Connection;
+
+/**
+ * Per database implementation of denormalizing into integer columns.
+ */
+class IntColumnHandler {
+
+  /**
+   * @var \Drupal\Core\Database\Connection
+   */
+  protected $connection;
+
+  public function __construct(Connection $connection) {
+    $this->connection = $connection;
+  }
+
+  /**
+   * Create the _int columns and the triggers for them.
+   *
+   * This is common for SQLite and MySQL.
+   *
+   * @param $table
+   *   The non-prefix table to operate on.
+   * @param array $columns
+   *   The DER target_id columns.
+   */
+  public function create($table, array $columns) {
+    $this->createStart($table);
+    $schema = $this->connection->schema();
+    // The integer column specification.
+    $spec = [
+      'type' => 'int',
+      'unsigned' => TRUE,
+      'not null' => FALSE,
+    ];
+    // Before MySQL 5.7.2, there cannot be multiple triggers for a given table
+    // that have the same trigger event and action time so set all involved
+    // columns in one go. See
+    // https://dev.mysql.com/doc/refman/5.7/en/trigger-syntax.html for more.
+    // In SQLite, it's cheaper to run one query instead on per column.
+    $body = [];
+    foreach ($columns as $column) {
+      $column_int = $column . '_int';
+      // Make sure the integer columns exist.
+      if (!$schema->fieldExists($table, $column_int)) {
+        $schema->addField($table, $column_int, $spec);
+      }
+      // This is the heart of this function: before an UPDATE/INSERT, set the
+      // value of the integer column to the integer value of the string column.
+      $body[] = $this->createBody($column_int, $column);
+    }
+    $body = implode(', ', $body);
+    $prefixed_name = $this->connection->prefixTables('{' . $table . '}');
+    foreach (['update', 'insert'] as $op) {
+      $trigger = $prefixed_name . '_der_' . $op;
+      $this->connection->query("DROP TRIGGER IF EXISTS $trigger");
+      if ($body) {
+        $this->createTrigger($trigger, $op, $prefixed_name, $body);
+      }
+    }
+    $this->createEnd();
+  }
+
+  protected function createStart($table) {
+
+  }
+
+  /**
+   * Create the body of the trigger.
+   *
+   * Create a part of the statement to set the value of the integer column to
+   * the integer value of the string column.
+   *
+   * @param $column_int
+   * @param $column
+   */
+  protected function createBody($column_int, $column) {
+    throw new \LogicException('Not implemented');
+  }
+
+
+  /**
+   * Actually create the trigger.
+   *
+   * @param $trigger
+   * @param $op
+   * @param $prefixed_name
+   * @param $body
+   * @internal param null $table_name
+   */
+  protected function createTrigger($trigger, $op, $prefixed_name, $body) {
+
+  }
+
+  /**
+   * We are done.
+   */
+  protected function createEnd() {
+
+  }
+
+
+  /**
+   * @TODO
+   *
+   * @param $table
+   * @param $column
+   */
+  public function delete($table, $column) {
+
+  }
+
+}
diff --git a/src/Storage/IntColumnHandlerMySQL.php b/src/Storage/IntColumnHandlerMySQL.php
new file mode 100644
index 0000000..0d8c739
--- /dev/null
+++ b/src/Storage/IntColumnHandlerMySQL.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace Drupal\dynamic_entity_reference\Storage;
+
+class IntColumnHandlerMySQL extends IntColumnHandler {
+
+  protected function createStart($table) {
+    // MySQL does not have transactional DDL so before executing many DDL
+    // statements it is safest to lock the table.
+    $this->connection->query('LOCK TABLES {' . $table . '} WRITE');
+  }
+
+  protected function createBody($column_int, $column) {
+    return "NEW.$column_int = CAST(NEW.$column AS UNSIGNED)";
+  }
+
+  protected function createEnd() {
+    $this->connection->query('UNLOCK TABLES');
+  }
+
+  protected function createTrigger($trigger, $op, $prefixed_name, $body) {
+    $this->connection->query("CREATE TRIGGER $trigger BEFORE $op ON $prefixed_name FOR EACH ROW SET $body");
+  }
+
+}
diff --git a/src/Storage/IntColumnHandlerSQLite.php b/src/Storage/IntColumnHandlerSQLite.php
new file mode 100644
index 0000000..dffe22c
--- /dev/null
+++ b/src/Storage/IntColumnHandlerSQLite.php
@@ -0,0 +1,40 @@
+<?php
+
+namespace Drupal\dynamic_entity_reference\Storage;
+
+
+class IntColumnHandlerSQLite extends IntColumnHandler {
+
+  /**
+   * @param $column_int
+   * @param $column
+   * @return string
+   */
+  protected function createBody($column_int, $column) {
+    return "$column_int = CAST($column AS INTEGER)";
+  }
+
+  /**
+   * @param $trigger
+   * @param $op
+   * @param $prefixed_name
+   * @param $body
+   * @internal param null $table_name
+   */
+  protected function createTrigger($trigger, $op, $prefixed_name, $body) {
+    $parts = explode('.', $prefixed_name);
+    $table_name = array_pop($parts);
+    $query = "
+        CREATE TRIGGER $trigger 
+        AFTER $op 
+        ON $prefixed_name 
+        FOR EACH ROW 
+        BEGIN 
+          UPDATE $table_name SET $body WHERE ROWID=NEW.ROWID";
+    if (strpos($query, ';') !== FALSE) {
+      throw new \InvalidArgumentException('; is not supported in SQL strings. Use only one statement at a time.');
+    }
+    $this->connection->query("$query; END", [], ['allow_delimiter_in_query' => TRUE]);
+  }
+
+}
diff --git a/tests/src/Kernel/Views/DynamicEntityReferenceBaseFieldRelationshipTest.php b/tests/src/Kernel/Views/DynamicEntityReferenceBaseFieldRelationshipTest.php
index a272a08..ac9b3b2 100644
--- a/tests/src/Kernel/Views/DynamicEntityReferenceBaseFieldRelationshipTest.php
+++ b/tests/src/Kernel/Views/DynamicEntityReferenceBaseFieldRelationshipTest.php
@@ -99,7 +99,7 @@ class DynamicEntityReferenceBaseFieldRelationshipTest extends ViewsKernelTestBas
     $this->assertEquals($views_data_entity_test['entity_test__dynamic_references']['relationship']['base'], 'entity_test');
     $this->assertEquals($views_data_entity_test['entity_test__dynamic_references']['relationship']['entity type'], 'entity_test');
     $this->assertEquals($views_data_entity_test['entity_test__dynamic_references']['relationship']['base field'], 'id');
-    $this->assertEquals($views_data_entity_test['entity_test__dynamic_references']['relationship']['relationship field'], 'dynamic_references__target_id');
+    $this->assertEquals($views_data_entity_test['entity_test__dynamic_references']['relationship']['relationship field'], 'dynamic_references__target_id_int');
     $this->assertEquals($views_data_entity_test['entity_test__dynamic_references']['relationship']['extra'][0]['left_field'], 'dynamic_references__target_type');
     $this->assertEquals($views_data_entity_test['entity_test__dynamic_references']['relationship']['extra'][0]['value'], 'entity_test');
     // Check views data for test entity - data table referenced from
@@ -108,14 +108,14 @@ class DynamicEntityReferenceBaseFieldRelationshipTest extends ViewsKernelTestBas
     $this->assertEquals($views_data_entity_test['entity_test_mul__dynamic_references']['relationship']['base'], 'entity_test_mul_property_data');
     $this->assertEquals($views_data_entity_test['entity_test_mul__dynamic_references']['relationship']['entity type'], 'entity_test_mul');
     $this->assertEquals($views_data_entity_test['entity_test_mul__dynamic_references']['relationship']['base field'], 'id');
-    $this->assertEquals($views_data_entity_test['entity_test_mul__dynamic_references']['relationship']['relationship field'], 'dynamic_references__target_id');
+    $this->assertEquals($views_data_entity_test['entity_test_mul__dynamic_references']['relationship']['relationship field'], 'dynamic_references__target_id_int');
     $this->assertEquals($views_data_entity_test['entity_test_mul__dynamic_references']['relationship']['extra'][0]['left_field'], 'dynamic_references__target_type');
     $this->assertEquals($views_data_entity_test['entity_test_mul__dynamic_references']['relationship']['extra'][0]['value'], 'entity_test_mul');
     // Check the backwards reference for test entity using dynamic_references.
     $this->assertEquals($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['id'], 'standard');
     $this->assertEquals($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['base'], 'entity_test');
     $this->assertEquals($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['entity type'], 'entity_test');
-    $this->assertEquals($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['base field'], 'dynamic_references__target_id');
+    $this->assertEquals($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['base field'], 'dynamic_references__target_id_int');
     $this->assertEquals($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['field'], 'id');
     $this->assertEquals($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['extra'][0]['field'], 'dynamic_references__target_type');
     $this->assertEquals($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['extra'][0]['value'], 'entity_test');
@@ -124,7 +124,7 @@ class DynamicEntityReferenceBaseFieldRelationshipTest extends ViewsKernelTestBas
     $this->assertEquals($views_data_entity_test['reverse__entity_test_mul__dynamic_references']['relationship']['id'], 'standard');
     $this->assertEquals($views_data_entity_test['reverse__entity_test_mul__dynamic_references']['relationship']['base'], 'entity_test_mul_property_data');
     $this->assertEquals($views_data_entity_test['reverse__entity_test_mul__dynamic_references']['relationship']['entity type'], 'entity_test_mul');
-    $this->assertEquals($views_data_entity_test['reverse__entity_test_mul__dynamic_references']['relationship']['base field'], 'dynamic_references__target_id');
+    $this->assertEquals($views_data_entity_test['reverse__entity_test_mul__dynamic_references']['relationship']['base field'], 'dynamic_references__target_id_int');
     $this->assertEquals($views_data_entity_test['reverse__entity_test_mul__dynamic_references']['relationship']['field'], 'id');
     $this->assertEquals($views_data_entity_test['reverse__entity_test_mul__dynamic_references']['relationship']['extra'][0]['field'], 'dynamic_references__target_type');
     $this->assertEquals($views_data_entity_test['reverse__entity_test_mul__dynamic_references']['relationship']['extra'][0]['value'], 'entity_test');
@@ -137,7 +137,7 @@ class DynamicEntityReferenceBaseFieldRelationshipTest extends ViewsKernelTestBas
     $this->assertEquals($views_data_entity_test_mul['entity_test__dynamic_references']['relationship']['base'], 'entity_test');
     $this->assertEquals($views_data_entity_test_mul['entity_test__dynamic_references']['relationship']['entity type'], 'entity_test');
     $this->assertEquals($views_data_entity_test_mul['entity_test__dynamic_references']['relationship']['base field'], 'id');
-    $this->assertEquals($views_data_entity_test_mul['entity_test__dynamic_references']['relationship']['relationship field'], 'dynamic_references__target_id');
+    $this->assertEquals($views_data_entity_test_mul['entity_test__dynamic_references']['relationship']['relationship field'], 'dynamic_references__target_id_int');
     $this->assertEquals($views_data_entity_test_mul['entity_test__dynamic_references']['relationship']['extra'][0]['left_field'], 'dynamic_references__target_type');
     $this->assertEquals($views_data_entity_test_mul['entity_test__dynamic_references']['relationship']['extra'][0]['value'], 'entity_test');
     // Check views data for test entity - data table referenced from
@@ -146,14 +146,14 @@ class DynamicEntityReferenceBaseFieldRelationshipTest extends ViewsKernelTestBas
     $this->assertEquals($views_data_entity_test_mul['entity_test_mul__dynamic_references']['relationship']['base'], 'entity_test_mul_property_data');
     $this->assertEquals($views_data_entity_test_mul['entity_test_mul__dynamic_references']['relationship']['entity type'], 'entity_test_mul');
     $this->assertEquals($views_data_entity_test_mul['entity_test_mul__dynamic_references']['relationship']['base field'], 'id');
-    $this->assertEquals($views_data_entity_test_mul['entity_test_mul__dynamic_references']['relationship']['relationship field'], 'dynamic_references__target_id');
+    $this->assertEquals($views_data_entity_test_mul['entity_test_mul__dynamic_references']['relationship']['relationship field'], 'dynamic_references__target_id_int');
     $this->assertEquals($views_data_entity_test_mul['entity_test_mul__dynamic_references']['relationship']['extra'][0]['left_field'], 'dynamic_references__target_type');
     $this->assertEquals($views_data_entity_test_mul['entity_test_mul__dynamic_references']['relationship']['extra'][0]['value'], 'entity_test_mul');
     // Check the backwards reference for test entity using dynamic_references.
     $this->assertEquals($views_data_entity_test_mul['reverse__entity_test__dynamic_references']['relationship']['id'], 'standard');
     $this->assertEquals($views_data_entity_test_mul['reverse__entity_test__dynamic_references']['relationship']['base'], 'entity_test');
     $this->assertEquals($views_data_entity_test_mul['reverse__entity_test__dynamic_references']['relationship']['entity type'], 'entity_test');
-    $this->assertEquals($views_data_entity_test_mul['reverse__entity_test__dynamic_references']['relationship']['base field'], 'dynamic_references__target_id');
+    $this->assertEquals($views_data_entity_test_mul['reverse__entity_test__dynamic_references']['relationship']['base field'], 'dynamic_references__target_id_int');
     $this->assertEquals($views_data_entity_test_mul['reverse__entity_test__dynamic_references']['relationship']['field'], 'id');
     $this->assertEquals($views_data_entity_test_mul['reverse__entity_test__dynamic_references']['relationship']['extra'][0]['field'], 'dynamic_references__target_type');
     $this->assertEquals($views_data_entity_test_mul['reverse__entity_test__dynamic_references']['relationship']['extra'][0]['value'], 'entity_test_mul');
@@ -162,7 +162,7 @@ class DynamicEntityReferenceBaseFieldRelationshipTest extends ViewsKernelTestBas
     $this->assertEquals($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['id'], 'standard');
     $this->assertEquals($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['base'], 'entity_test_mul_property_data');
     $this->assertEquals($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['entity type'], 'entity_test_mul');
-    $this->assertEquals($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['base field'], 'dynamic_references__target_id');
+    $this->assertEquals($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['base field'], 'dynamic_references__target_id_int');
     $this->assertEquals($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['field'], 'id');
     $this->assertEquals($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['extra'][0]['field'], 'dynamic_references__target_type');
     $this->assertEquals($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['extra'][0]['value'], 'entity_test_mul');
@@ -428,7 +428,7 @@ class DynamicEntityReferenceBaseFieldRelationshipTest extends ViewsKernelTestBas
     $this->assertEquals($views_data_entity_test['entity_test__dynamic_references']['relationship']['base'], 'entity_test');
     $this->assertEquals($views_data_entity_test['entity_test__dynamic_references']['relationship']['entity type'], 'entity_test');
     $this->assertEquals($views_data_entity_test['entity_test__dynamic_references']['relationship']['base field'], 'id');
-    $this->assertEquals($views_data_entity_test['entity_test__dynamic_references']['relationship']['relationship field'], 'dynamic_references_target_id');
+    $this->assertEquals($views_data_entity_test['entity_test__dynamic_references']['relationship']['relationship field'], 'dynamic_references_target_id_int');
     $this->assertEquals($views_data_entity_test['entity_test__dynamic_references']['relationship']['extra'][0]['left_field'], 'dynamic_references_target_type');
     $this->assertEquals($views_data_entity_test['entity_test__dynamic_references']['relationship']['extra'][0]['value'], 'entity_test');
     // Check views data for test entity - data table referenced from
@@ -437,7 +437,7 @@ class DynamicEntityReferenceBaseFieldRelationshipTest extends ViewsKernelTestBas
     $this->assertEquals($views_data_entity_test['entity_test_mul__dynamic_references']['relationship']['base'], 'entity_test_mul_property_data');
     $this->assertEquals($views_data_entity_test['entity_test_mul__dynamic_references']['relationship']['entity type'], 'entity_test_mul');
     $this->assertEquals($views_data_entity_test['entity_test_mul__dynamic_references']['relationship']['base field'], 'id');
-    $this->assertEquals($views_data_entity_test['entity_test_mul__dynamic_references']['relationship']['relationship field'], 'dynamic_references_target_id');
+    $this->assertEquals($views_data_entity_test['entity_test_mul__dynamic_references']['relationship']['relationship field'], 'dynamic_references_target_id_int');
     $this->assertEquals($views_data_entity_test['entity_test_mul__dynamic_references']['relationship']['extra'][0]['left_field'], 'dynamic_references_target_type');
     $this->assertEquals($views_data_entity_test['entity_test_mul__dynamic_references']['relationship']['extra'][0]['value'], 'entity_test_mul');
 
@@ -451,7 +451,7 @@ class DynamicEntityReferenceBaseFieldRelationshipTest extends ViewsKernelTestBas
     $this->assertEquals($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['base field'], 'id');
     $this->assertEquals($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['field_name'], 'dynamic_references');
     $this->assertEquals($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['field table'], 'entity_test__dynamic_references');
-    $this->assertEquals($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['field field'], 'dynamic_references_target_id');
+    $this->assertEquals($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['field field'], 'dynamic_references_target_id_int');
     $this->assertEquals($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['join_extra'][0]['field'], 'dynamic_references_target_type');
     $this->assertEquals($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['join_extra'][0]['value'], 'entity_test');
 
@@ -466,7 +466,7 @@ class DynamicEntityReferenceBaseFieldRelationshipTest extends ViewsKernelTestBas
     $this->assertEquals($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['base field'], 'id');
     $this->assertEquals($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['field_name'], 'dynamic_references');
     $this->assertEquals($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['field table'], 'entity_test__dynamic_references');
-    $this->assertEquals($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['field field'], 'dynamic_references_target_id');
+    $this->assertEquals($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['field field'], 'dynamic_references_target_id_int');
     $this->assertEquals($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['join_extra'][0]['field'], 'dynamic_references_target_type');
     $this->assertEquals($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['join_extra'][0]['value'], 'entity_test_mul');
 
@@ -478,7 +478,7 @@ class DynamicEntityReferenceBaseFieldRelationshipTest extends ViewsKernelTestBas
     $this->assertEquals($views_data_entity_test_mul['entity_test__dynamic_references']['relationship']['base'], 'entity_test');
     $this->assertEquals($views_data_entity_test_mul['entity_test__dynamic_references']['relationship']['entity type'], 'entity_test');
     $this->assertEquals($views_data_entity_test_mul['entity_test__dynamic_references']['relationship']['base field'], 'id');
-    $this->assertEquals($views_data_entity_test_mul['entity_test__dynamic_references']['relationship']['relationship field'], 'dynamic_references_target_id');
+    $this->assertEquals($views_data_entity_test_mul['entity_test__dynamic_references']['relationship']['relationship field'], 'dynamic_references_target_id_int');
     $this->assertEquals($views_data_entity_test_mul['entity_test__dynamic_references']['relationship']['extra'][0]['left_field'], 'dynamic_references_target_type');
     $this->assertEquals($views_data_entity_test_mul['entity_test__dynamic_references']['relationship']['extra'][0]['value'], 'entity_test');
     // Check views data for test entity - data table referenced from
@@ -487,7 +487,7 @@ class DynamicEntityReferenceBaseFieldRelationshipTest extends ViewsKernelTestBas
     $this->assertEquals($views_data_entity_test_mul['entity_test_mul__dynamic_references']['relationship']['base'], 'entity_test_mul_property_data');
     $this->assertEquals($views_data_entity_test_mul['entity_test_mul__dynamic_references']['relationship']['entity type'], 'entity_test_mul');
     $this->assertEquals($views_data_entity_test_mul['entity_test_mul__dynamic_references']['relationship']['base field'], 'id');
-    $this->assertEquals($views_data_entity_test_mul['entity_test_mul__dynamic_references']['relationship']['relationship field'], 'dynamic_references_target_id');
+    $this->assertEquals($views_data_entity_test_mul['entity_test_mul__dynamic_references']['relationship']['relationship field'], 'dynamic_references_target_id_int');
     $this->assertEquals($views_data_entity_test_mul['entity_test_mul__dynamic_references']['relationship']['extra'][0]['left_field'], 'dynamic_references_target_type');
     $this->assertEquals($views_data_entity_test_mul['entity_test_mul__dynamic_references']['relationship']['extra'][0]['value'], 'entity_test_mul');
 
@@ -501,7 +501,7 @@ class DynamicEntityReferenceBaseFieldRelationshipTest extends ViewsKernelTestBas
     $this->assertEquals($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['base field'], 'id');
     $this->assertEquals($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['field_name'], 'dynamic_references');
     $this->assertEquals($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['field table'], 'entity_test_mul__dynamic_references');
-    $this->assertEquals($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['field field'], 'dynamic_references_target_id');
+    $this->assertEquals($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['field field'], 'dynamic_references_target_id_int');
     $this->assertEquals($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['join_extra'][0]['field'], 'dynamic_references_target_type');
     $this->assertEquals($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['join_extra'][0]['value'], 'entity_test');
 
@@ -516,7 +516,7 @@ class DynamicEntityReferenceBaseFieldRelationshipTest extends ViewsKernelTestBas
     $this->assertEquals($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['base field'], 'id');
     $this->assertEquals($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['field_name'], 'dynamic_references');
     $this->assertEquals($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['field table'], 'entity_test_mul__dynamic_references');
-    $this->assertEquals($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['field field'], 'dynamic_references_target_id');
+    $this->assertEquals($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['field field'], 'dynamic_references_target_id_int');
     $this->assertEquals($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['join_extra'][0]['field'], 'dynamic_references_target_type');
     $this->assertEquals($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['join_extra'][0]['value'], 'entity_test_mul');
 
diff --git a/tests/src/Kernel/Views/DynamicEntityReferenceRelationshipTest.php b/tests/src/Kernel/Views/DynamicEntityReferenceRelationshipTest.php
index 881b1e8..9b30a92 100644
--- a/tests/src/Kernel/Views/DynamicEntityReferenceRelationshipTest.php
+++ b/tests/src/Kernel/Views/DynamicEntityReferenceRelationshipTest.php
@@ -146,7 +146,7 @@ class DynamicEntityReferenceRelationshipTest extends ViewsKernelTestBase {
     $this->assertEquals($views_data_field_test['entity_test__field_test']['relationship']['base'], 'entity_test');
     $this->assertEquals($views_data_field_test['entity_test__field_test']['relationship']['entity type'], 'entity_test');
     $this->assertEquals($views_data_field_test['entity_test__field_test']['relationship']['base field'], 'id');
-    $this->assertEquals($views_data_field_test['entity_test__field_test']['relationship']['relationship field'], 'field_test_target_id');
+    $this->assertEquals($views_data_field_test['entity_test__field_test']['relationship']['relationship field'], 'field_test_target_id_int');
     $this->assertEquals($views_data_field_test['entity_test__field_test']['relationship']['extra'][0]['left_field'], 'field_test_target_type');
     $this->assertEquals($views_data_field_test['entity_test__field_test']['relationship']['extra'][0]['value'], 'entity_test');
 
@@ -155,7 +155,7 @@ class DynamicEntityReferenceRelationshipTest extends ViewsKernelTestBase {
     $this->assertEquals($views_data_field_test['entity_test_mul__field_test']['relationship']['base'], 'entity_test_mul_property_data');
     $this->assertEquals($views_data_field_test['entity_test_mul__field_test']['relationship']['entity type'], 'entity_test_mul');
     $this->assertEquals($views_data_field_test['entity_test_mul__field_test']['relationship']['base field'], 'id');
-    $this->assertEquals($views_data_field_test['entity_test_mul__field_test']['relationship']['relationship field'], 'field_test_target_id');
+    $this->assertEquals($views_data_field_test['entity_test_mul__field_test']['relationship']['relationship field'], 'field_test_target_id_int');
     $this->assertEquals($views_data_field_test['entity_test_mul__field_test']['relationship']['extra'][0]['left_field'], 'field_test_target_type');
     $this->assertEquals($views_data_field_test['entity_test_mul__field_test']['relationship']['extra'][0]['value'], 'entity_test_mul');
 
@@ -165,7 +165,7 @@ class DynamicEntityReferenceRelationshipTest extends ViewsKernelTestBase {
     $this->assertEquals($views_data_entity_test['reverse__entity_test__field_test']['relationship']['base'], 'entity_test');
     $this->assertEquals($views_data_entity_test['reverse__entity_test__field_test']['relationship']['base field'], 'id');
     $this->assertEquals($views_data_entity_test['reverse__entity_test__field_test']['relationship']['field table'], 'entity_test__field_test');
-    $this->assertEquals($views_data_entity_test['reverse__entity_test__field_test']['relationship']['field field'], 'field_test_target_id');
+    $this->assertEquals($views_data_entity_test['reverse__entity_test__field_test']['relationship']['field field'], 'field_test_target_id_int');
     $this->assertEquals($views_data_entity_test['reverse__entity_test__field_test']['relationship']['join_extra'][0]['field'], 'field_test_target_type');
     $this->assertEquals($views_data_entity_test['reverse__entity_test__field_test']['relationship']['join_extra'][0]['value'], 'entity_test');
     $this->assertEquals($views_data_entity_test['reverse__entity_test__field_test']['relationship']['join_extra'][1]['field'], 'deleted');
@@ -179,7 +179,7 @@ class DynamicEntityReferenceRelationshipTest extends ViewsKernelTestBase {
     $this->assertEquals($views_data_entity_test['reverse__entity_test__field_test']['relationship']['base'], 'entity_test');
     $this->assertEquals($views_data_entity_test['reverse__entity_test__field_test']['relationship']['base field'], 'id');
     $this->assertEquals($views_data_entity_test['reverse__entity_test__field_test']['relationship']['field table'], 'entity_test__field_test');
-    $this->assertEquals($views_data_entity_test['reverse__entity_test__field_test']['relationship']['field field'], 'field_test_target_id');
+    $this->assertEquals($views_data_entity_test['reverse__entity_test__field_test']['relationship']['field field'], 'field_test_target_id_int');
     $this->assertEquals($views_data_entity_test['reverse__entity_test__field_test']['relationship']['join_extra'][0]['field'], 'field_test_target_type');
     $this->assertEquals($views_data_entity_test['reverse__entity_test__field_test']['relationship']['join_extra'][0]['value'], 'entity_test_mul');
     $this->assertEquals($views_data_entity_test['reverse__entity_test__field_test']['relationship']['join_extra'][1]['field'], 'deleted');
@@ -259,7 +259,7 @@ class DynamicEntityReferenceRelationshipTest extends ViewsKernelTestBase {
     $this->assertEquals($views_data_field_test['entity_test__field_test_mul']['relationship']['base'], 'entity_test');
     $this->assertEquals($views_data_field_test['entity_test__field_test_mul']['relationship']['entity type'], 'entity_test');
     $this->assertEquals($views_data_field_test['entity_test__field_test_mul']['relationship']['base field'], 'id');
-    $this->assertEquals($views_data_field_test['entity_test__field_test_mul']['relationship']['relationship field'], 'field_test_mul_target_id');
+    $this->assertEquals($views_data_field_test['entity_test__field_test_mul']['relationship']['relationship field'], 'field_test_mul_target_id_int');
     $this->assertEquals($views_data_field_test['entity_test__field_test_mul']['relationship']['extra'][0]['left_field'], 'field_test_mul_target_type');
     $this->assertEquals($views_data_field_test['entity_test__field_test_mul']['relationship']['extra'][0]['value'], 'entity_test');
 
@@ -269,7 +269,7 @@ class DynamicEntityReferenceRelationshipTest extends ViewsKernelTestBase {
     $this->assertEquals($views_data_field_test['entity_test_mul__field_test_mul']['relationship']['base'], 'entity_test_mul_property_data');
     $this->assertEquals($views_data_field_test['entity_test_mul__field_test_mul']['relationship']['entity type'], 'entity_test_mul');
     $this->assertEquals($views_data_field_test['entity_test_mul__field_test_mul']['relationship']['base field'], 'id');
-    $this->assertEquals($views_data_field_test['entity_test_mul__field_test_mul']['relationship']['relationship field'], 'field_test_mul_target_id');
+    $this->assertEquals($views_data_field_test['entity_test_mul__field_test_mul']['relationship']['relationship field'], 'field_test_mul_target_id_int');
     $this->assertEquals($views_data_field_test['entity_test_mul__field_test_mul']['relationship']['extra'][0]['left_field'], 'field_test_mul_target_type');
     $this->assertEquals($views_data_field_test['entity_test_mul__field_test_mul']['relationship']['extra'][0]['value'], 'entity_test_mul');
 
@@ -279,7 +279,7 @@ class DynamicEntityReferenceRelationshipTest extends ViewsKernelTestBase {
     $this->assertEquals($views_data_entity_test['reverse__entity_test_mul__field_test_mul']['relationship']['base'], 'entity_test_mul_property_data');
     $this->assertEquals($views_data_entity_test['reverse__entity_test_mul__field_test_mul']['relationship']['base field'], 'id');
     $this->assertEquals($views_data_entity_test['reverse__entity_test_mul__field_test_mul']['relationship']['field table'], 'entity_test_mul__field_test_mul');
-    $this->assertEquals($views_data_entity_test['reverse__entity_test_mul__field_test_mul']['relationship']['field field'], 'field_test_mul_target_id');
+    $this->assertEquals($views_data_entity_test['reverse__entity_test_mul__field_test_mul']['relationship']['field field'], 'field_test_mul_target_id_int');
     $this->assertEquals($views_data_entity_test['reverse__entity_test_mul__field_test_mul']['relationship']['join_extra'][0]['field'], 'field_test_mul_target_type');
     $this->assertEquals($views_data_entity_test['reverse__entity_test_mul__field_test_mul']['relationship']['join_extra'][0]['value'], 'entity_test');
     $this->assertEquals($views_data_entity_test['reverse__entity_test_mul__field_test_mul']['relationship']['join_extra'][1]['field'], 'deleted');
@@ -293,7 +293,7 @@ class DynamicEntityReferenceRelationshipTest extends ViewsKernelTestBase {
     $this->assertEquals($views_data_entity_test['reverse__entity_test_mul__field_test_mul']['relationship']['base'], 'entity_test_mul_property_data');
     $this->assertEquals($views_data_entity_test['reverse__entity_test_mul__field_test_mul']['relationship']['base field'], 'id');
     $this->assertEquals($views_data_entity_test['reverse__entity_test_mul__field_test_mul']['relationship']['field table'], 'entity_test_mul__field_test_mul');
-    $this->assertEquals($views_data_entity_test['reverse__entity_test_mul__field_test_mul']['relationship']['field field'], 'field_test_mul_target_id');
+    $this->assertEquals($views_data_entity_test['reverse__entity_test_mul__field_test_mul']['relationship']['field field'], 'field_test_mul_target_id_int');
     $this->assertEquals($views_data_entity_test['reverse__entity_test_mul__field_test_mul']['relationship']['join_extra'][0]['field'], 'field_test_mul_target_type');
     $this->assertEquals($views_data_entity_test['reverse__entity_test_mul__field_test_mul']['relationship']['join_extra'][0]['value'], 'entity_test_mul');
     $this->assertEquals($views_data_entity_test['reverse__entity_test_mul__field_test_mul']['relationship']['join_extra'][1]['field'], 'deleted');
