diff --git a/core/modules/system/src/Tests/Entity/DefaultTableMappingIntegrationTest.php b/core/modules/system/src/Tests/Entity/DefaultTableMappingIntegrationTest.php
new file mode 100644
index 0000000..71d8211
--- /dev/null
+++ b/core/modules/system/src/Tests/Entity/DefaultTableMappingIntegrationTest.php
@@ -0,0 +1,75 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\system\Tests\Entity\DefaultTableMappingIntegrationTest.
+ */
+
+namespace Drupal\system\Tests\Entity;
+
+use Drupal\Core\Field\BaseFieldDefinition;
+use Drupal\Core\Field\FieldStorageDefinitionInterface;
+
+/**
+ * Tests the default table mapping class for content entities stored in SQL.
+ *
+ * @see \Drupal\Core\Entity\Sql\DefaultTableMapping
+ * @see \Drupal\Core\Entity\Sql\TableMappingInterface
+ *
+ * @group Entity
+ */
+class DefaultTableMappingIntegrationTest extends EntityUnitTestBase {
+
+  /**
+   * The table mapping for the tested entity type.
+   *
+   * @var \Drupal\Core\Entity\Sql\TableMappingInterface
+   */
+  protected $tableMapping;
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = ['entity_test_extra'];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+
+    // Setup some fields for entity_test_extra to create.
+    $definitions['multivalued_base_field'] = BaseFieldDefinition::create('string')
+      ->setName('multivalued_base_field')
+      ->setTargetEntityTypeId('entity_test_mulrev')
+      ->setTargetBundle('entity_test_mulrev')
+      ->setCardinality(FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED);
+    $this->state->set('entity_test_mulrev.additional_base_field_definitions', $definitions);
+
+    $this->entityManager->clearCachedDefinitions();
+    $this->tableMapping = $this->entityManager->getStorage('entity_test_mulrev')->getTableMapping();
+  }
+
+  /**
+   * Tests DefaultTableMapping::getFieldTableName().
+   *
+   * @covers ::getFieldTableName
+   */
+  public function testGetFieldTableName() {
+    // Test the field table name for a single-valued base field, which is stored
+    // in the entity's base table.
+    $expected = 'entity_test_mulrev';
+    $this->assertEqual($this->tableMapping->getFieldTableName('uuid'), $expected);
+
+    // Test the field table name for a translatable and revisionable base field,
+    // which is stored in the entity's data table.
+    $expected = 'entity_test_mulrev_property_data';
+    $this->assertEqual($this->tableMapping->getFieldTableName('name'), $expected);
+
+    // Test the field table name for a multi-valued base field, which is stored
+    // in a dedicated table.
+    $expected = 'entity_test_mulrev__multivalued_base_field';
+    $this->assertEqual($this->tableMapping->getFieldTableName('multivalued_base_field'), $expected);
+  }
+
+}
diff --git a/core/modules/system/src/Tests/Entity/Update/UpdateApiEntityDefinitionUpdateTest.php b/core/modules/system/src/Tests/Entity/Update/UpdateApiEntityDefinitionUpdateTest.php
index fcfff4a..78f19c0 100644
--- a/core/modules/system/src/Tests/Entity/Update/UpdateApiEntityDefinitionUpdateTest.php
+++ b/core/modules/system/src/Tests/Entity/Update/UpdateApiEntityDefinitionUpdateTest.php
@@ -72,6 +72,9 @@ public function testSingleUpdates() {
     $this->enableUpdates('entity_test', 'entity_definition_updates', 8001);
     $this->applyUpdates();
 
+    // Ensure the 'entity_test__user_id' table got created.
+    $this->assertTrue(\Drupal::database()->schema()->tableExists('entity_test__user_id'));
+
     // Check that data was correctly migrated.
     $entity = $this->reloadEntity($entity);
     $this->assertEqual(count($entity->user_id), 1);
diff --git a/core/tests/Drupal/Tests/Core/Entity/Sql/SqlContentEntityStorageTest.php b/core/tests/Drupal/Tests/Core/Entity/Sql/SqlContentEntityStorageTest.php
index 34013c4..02970d7 100644
--- a/core/tests/Drupal/Tests/Core/Entity/Sql/SqlContentEntityStorageTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/Sql/SqlContentEntityStorageTest.php
@@ -467,6 +467,42 @@ public function providerTestGetTableMappingSimple() {
   }
 
   /**
+   * Tests getTableMapping() with a base field that requires a dedicated table.
+   *
+   * @covers ::__construct
+   * @covers ::getTableMapping
+   */
+  public function testGetTableMappingSimpleWithDedicatedStorageFields() {
+    $base_field_names = ['multi_valued_base_field'];
+
+    // Set up one entity key in order to have a base table.
+    $this->fieldDefinitions = $this->mockFieldDefinitions(['test_id']);
+
+    // Set up the multi-valued base field.
+    $this->fieldDefinitions += $this->mockFieldDefinitions($base_field_names, [
+      'hasCustomStorage' => FALSE,
+      'isMultiple' => TRUE,
+      'getTargetEntityTypeId' => 'entity_test',
+    ]);
+
+    $this->setUpEntityStorage();
+
+    $mapping = $this->entityStorage->getTableMapping();
+    $this->assertEquals(['entity_test', 'entity_test__multi_valued_base_field'], $mapping->getTableNames());
+    $this->assertEquals($base_field_names, $mapping->getFieldNames('entity_test__multi_valued_base_field'));
+
+    $extra_columns = array(
+      'bundle',
+      'deleted',
+      'entity_id',
+      'revision_id',
+      'langcode',
+      'delta',
+    );
+    $this->assertEquals($extra_columns, $mapping->getExtraColumns('entity_test__multi_valued_base_field'));
+  }
+
+  /**
    * Tests getTableMapping() with a revisionable, non-translatable entity type.
    *
    * @param string[] $entity_keys
