diff --git a/core/modules/comment/config/install/views.view.comments_recent.yml b/core/modules/comment/config/install/views.view.comments_recent.yml
index a5dca72..dd4ba6a 100644
--- a/core/modules/comment/config/install/views.view.comments_recent.yml
+++ b/core/modules/comment/config/install/views.view.comments_recent.yml
@@ -9,7 +9,7 @@ label: 'Recent comments'
 module: views
 description: 'Recent comments.'
 tag: default
-base_table: comment
+base_table: comment_field_data
 base_field: cid
 core: 8.x
 display:
@@ -208,7 +208,7 @@ display:
           entity_field: created
         cid:
           id: cid
-          table: comment
+          table: comment_field_data
           field: cid
           relationship: none
           group_type: group
diff --git a/core/modules/comment/src/CommentViewsData.php b/core/modules/comment/src/CommentViewsData.php
index 2a7083c..2b5ed89 100644
--- a/core/modules/comment/src/CommentViewsData.php
+++ b/core/modules/comment/src/CommentViewsData.php
@@ -20,16 +20,16 @@ class CommentViewsData extends EntityViewsData {
   public function getViewsData() {
     $data = parent::getViewsData();
 
-    $data['comment']['table']['base']['help'] = t('Comments are responses to content.');
-    $data['comment']['table']['base']['access query tag'] = 'comment_access';
+    $data['comment_field_data']['table']['base']['help'] = t('Comments are responses to content.');
+    $data['comment_field_data']['table']['base']['access query tag'] = 'comment_access';
 
-    $data['comment']['table']['wizard_id'] = 'comment';
+    $data['comment_field_data']['table']['wizard_id'] = 'comment';
 
     $data['comment_field_data']['subject']['title'] = t('Title');
     $data['comment_field_data']['subject']['help'] = t('The title of the comment.');
     $data['comment_field_data']['subject']['field']['id'] = 'comment';
 
-    $data['comment']['cid']['field']['id'] = 'comment';
+    $data['comment_field_data']['cid']['field']['id'] = 'comment';
 
     $data['comment_field_data']['name']['title'] = t('Author');
     $data['comment_field_data']['name']['help'] = t("The name of the comment's author. Can be rendered as a link to the author's homepage.");
diff --git a/core/modules/comment/src/Plugin/views/wizard/Comment.php b/core/modules/comment/src/Plugin/views/wizard/Comment.php
index 34908ad..aa89369 100644
--- a/core/modules/comment/src/Plugin/views/wizard/Comment.php
+++ b/core/modules/comment/src/Plugin/views/wizard/Comment.php
@@ -19,7 +19,7 @@
  *
  * @ViewsWizard(
  *   id = "comment",
- *   base_table = "comment",
+ *   base_table = "comment_field_data",
  *   title = @Translation("Comments")
  * )
  */
diff --git a/core/modules/comment/tests/modules/comment_test_views/test_views/views.view.test_comment_user_uid.yml b/core/modules/comment/tests/modules/comment_test_views/test_views/views.view.test_comment_user_uid.yml
index 6c1ffee..9b0b973 100644
--- a/core/modules/comment/tests/modules/comment_test_views/test_views/views.view.test_comment_user_uid.yml
+++ b/core/modules/comment/tests/modules/comment_test_views/test_views/views.view.test_comment_user_uid.yml
@@ -11,7 +11,7 @@ label: test_comment_user_uid
 module: comment_test_views
 description: ''
 tag: default
-base_table: node
+base_table: node_field_data
 base_field: nid
 core: '8'
 display:
@@ -41,7 +41,7 @@ display:
         nid:
           field: nid
           id: nid
-          table: node
+          table: node_field_data
           plugin_id: node
           entity_type: node
           entity_field: nid
diff --git a/core/modules/node/config/install/views.view.archive.yml b/core/modules/node/config/install/views.view.archive.yml
index 0e37d99..209346d 100644
--- a/core/modules/node/config/install/views.view.archive.yml
+++ b/core/modules/node/config/install/views.view.archive.yml
@@ -8,7 +8,7 @@ label: Archive
 module: node
 description: 'All content, by month.'
 tag: default
-base_table: node
+base_table: node_field_data
 base_field: nid
 core: '8'
 display:
diff --git a/core/modules/node/config/install/views.view.content.yml b/core/modules/node/config/install/views.view.content.yml
index bb1e2c0..794bdf7 100644
--- a/core/modules/node/config/install/views.view.content.yml
+++ b/core/modules/node/config/install/views.view.content.yml
@@ -9,7 +9,7 @@ label: Content
 module: node
 description: 'Find and manage content.'
 tag: default
-base_table: node
+base_table: node_field_data
 base_field: nid
 core: 8.x
 display:
diff --git a/core/modules/node/config/install/views.view.content_recent.yml b/core/modules/node/config/install/views.view.content_recent.yml
index bc12a13..0fb273d 100644
--- a/core/modules/node/config/install/views.view.content_recent.yml
+++ b/core/modules/node/config/install/views.view.content_recent.yml
@@ -9,7 +9,7 @@ label: 'Recent content'
 module: node
 description: 'Recent content.'
 tag: default
-base_table: node
+base_table: node_field_data
 base_field: nid
 core: 8.x
 display:
diff --git a/core/modules/node/config/install/views.view.frontpage.yml b/core/modules/node/config/install/views.view.frontpage.yml
index d9dc888..2d9f093 100644
--- a/core/modules/node/config/install/views.view.frontpage.yml
+++ b/core/modules/node/config/install/views.view.frontpage.yml
@@ -9,7 +9,7 @@ label: Frontpage
 module: node
 description: 'All content promoted to the front page.'
 tag: default
-base_table: node
+base_table: node_field_data
 base_field: nid
 core: 8.x
 display:
diff --git a/core/modules/node/config/install/views.view.glossary.yml b/core/modules/node/config/install/views.view.glossary.yml
index 7060764..da43946 100644
--- a/core/modules/node/config/install/views.view.glossary.yml
+++ b/core/modules/node/config/install/views.view.glossary.yml
@@ -9,7 +9,7 @@ label: Glossary
 module: node
 description: 'All content, by letter.'
 tag: default
-base_table: node
+base_table: node_field_data
 base_field: nid
 core: '8'
 display:
diff --git a/core/modules/node/src/NodeViewsData.php b/core/modules/node/src/NodeViewsData.php
index f7a5dee..9ab5ddf 100644
--- a/core/modules/node/src/NodeViewsData.php
+++ b/core/modules/node/src/NodeViewsData.php
@@ -20,12 +20,12 @@ class NodeViewsData extends EntityViewsData {
   public function getViewsData() {
     $data = parent::getViewsData();
 
-    $data['node']['table']['base']['weight'] = -10;
-    $data['node']['table']['base']['access query tag'] = 'node_access';
-    $data['node']['table']['wizard_id'] = 'node';
+    $data['node_field_data']['table']['base']['weight'] = -10;
+    $data['node_field_data']['table']['base']['access query tag'] = 'node_access';
+    $data['node_field_data']['table']['wizard_id'] = 'node';
 
-    $data['node']['nid']['field']['id'] = 'node';
-    $data['node']['nid']['field']['argument'] = [
+    $data['node_field_data']['nid']['field']['id'] = 'node';
+    $data['node_field_data']['nid']['field']['argument'] = [
       'id' => 'node_nid',
       'name field' => 'title',
       'numeric' => TRUE,
@@ -255,26 +255,26 @@ public function getViewsData() {
     $data['node_field_data']['uid_revision']['filter']['id'] = 'node_uid_revision';
     $data['node_field_data']['uid_revision']['argument']['id'] = 'node_uid_revision';
 
-    $data['node_revision']['table']['wizard_id'] = 'node_revision';
+    $data['node_field_revision']['table']['wizard_id'] = 'node_revision';
 
     // Advertise this table as a possible base table.
-    $data['node_revision']['table']['base']['help'] = t('Content revision is a history of changes to content.');
-    $data['node_revision']['table']['base']['defaults']['title'] = 'title';
+    $data['node_field_revision']['table']['base']['help'] = t('Content revision is a history of changes to content.');
+    $data['node_field_revision']['table']['base']['defaults']['title'] = 'title';
 
-    $data['node_revision']['nid']['argument'] = [
+    $data['node_field_revision']['nid']['argument'] = [
       'id' => 'node_nid',
       'numeric' => TRUE,
     ];
     // @todo the NID field needs different behaviour on revision/non-revision
     //   tables. It would be neat if this could be encoded in the base field
     //   definition.
-    $data['node_revision']['nid']['relationship']['id'] = 'standard';
-    $data['node_revision']['nid']['relationship']['base'] = 'node';
-    $data['node_revision']['nid']['relationship']['base field'] = 'nid';
-    $data['node_revision']['nid']['relationship']['title'] = t('Content');
-    $data['node_revision']['nid']['relationship']['label'] = t('Get the actual content from a content revision.');
+    $data['node_field_revision']['nid']['relationship']['id'] = 'standard';
+    $data['node_field_revision']['nid']['relationship']['base'] = 'node';
+    $data['node_field_revision']['nid']['relationship']['base field'] = 'nid';
+    $data['node_field_revision']['nid']['relationship']['title'] = t('Content');
+    $data['node_field_revision']['nid']['relationship']['label'] = t('Get the actual content from a content revision.');
 
-    $data['node_revision']['vid'] = array(
+    $data['node_field_revision']['vid'] = array(
       'argument' => array(
         'id' => 'node_vid',
         'numeric' => TRUE,
@@ -288,13 +288,13 @@ public function getViewsData() {
       ),
     ) + $data['node_revision']['vid'];
 
-    $data['node_revision']['langcode']['help'] = t('The language the original content is in.');
-    $data['node_revision']['langcode']['field']['id'] = 'node_language';
+    $data['node_field_revision']['langcode']['help'] = t('The language the original content is in.');
+    $data['node_field_revision']['langcode']['field']['id'] = 'node_language';
 
-    $data['node_revision']['revision_log']['field']['id'] = 'xss';
+    $data['node_field_revision']['revision_log']['field']['id'] = 'xss';
 
-    $data['node_revision']['revision_uid']['help'] = t('Relate a content revision to the user who created the revision.');
-    $data['node_revision']['revision_uid']['relationship']['label'] = t('revision user');
+    $data['node_field_revision']['revision_uid']['help'] = t('Relate a content revision to the user who created the revision.');
+    $data['node_field_revision']['revision_uid']['relationship']['label'] = t('revision user');
 
     $data['node_field_revision']['table']['wizard_id'] = 'node_field_revision';
 
diff --git a/core/modules/node/src/Plugin/views/row/Rss.php b/core/modules/node/src/Plugin/views/row/Rss.php
index 0b1acac..55d62a5 100644
--- a/core/modules/node/src/Plugin/views/row/Rss.php
+++ b/core/modules/node/src/Plugin/views/row/Rss.php
@@ -24,14 +24,14 @@
  *   help = @Translation("Display the content with standard node view."),
  *   theme = "views_view_row_rss",
  *   register_theme = FALSE,
- *   base = {"node"},
+ *   base = {"node_field_data"},
  *   display_types = {"feed"}
  * )
  */
 class Rss extends RssPluginBase {
 
   // Basic properties that let the row style follow relationships.
-  var $base_table = 'node';
+  var $base_table = 'node_field_data';
 
   var $base_field = 'nid';
 
diff --git a/core/modules/node/src/Plugin/views/wizard/Node.php b/core/modules/node/src/Plugin/views/wizard/Node.php
index 288e7aa..829f852 100644
--- a/core/modules/node/src/Plugin/views/wizard/Node.php
+++ b/core/modules/node/src/Plugin/views/wizard/Node.php
@@ -20,7 +20,7 @@
  *
  * @ViewsWizard(
  *   id = "node",
- *   base_table = "node",
+ *   base_table = "node_field_data",
  *   title = @Translation("Content")
  * )
  */
diff --git a/core/modules/node/src/Plugin/views/wizard/NodeRevision.php b/core/modules/node/src/Plugin/views/wizard/NodeRevision.php
index ade28e9..4a86948 100644
--- a/core/modules/node/src/Plugin/views/wizard/NodeRevision.php
+++ b/core/modules/node/src/Plugin/views/wizard/NodeRevision.php
@@ -18,7 +18,7 @@
  *
  * @ViewsWizard(
  *   id = "node_revision",
- *   base_table = "node_revision",
+ *   base_table = "node_field_revision",
  *   title = @Translation("Content revisions")
  * )
  */
diff --git a/core/modules/taxonomy/src/Plugin/views/wizard/TaxonomyTerm.php b/core/modules/taxonomy/src/Plugin/views/wizard/TaxonomyTerm.php
index 3e6ce9a..848ef1b 100644
--- a/core/modules/taxonomy/src/Plugin/views/wizard/TaxonomyTerm.php
+++ b/core/modules/taxonomy/src/Plugin/views/wizard/TaxonomyTerm.php
@@ -14,7 +14,7 @@
  *
  * @ViewsWizard(
  *   id = "taxonomy_term",
- *   base_table = "taxonomy_term_data",
+ *   base_table = "taxonomy_term_field_data",
  *   title = @Translation("Taxonomy terms")
  * )
  */
diff --git a/core/modules/user/config/install/views.view.user_admin_people.yml b/core/modules/user/config/install/views.view.user_admin_people.yml
index 3dbaf84..f2ea8c3 100644
--- a/core/modules/user/config/install/views.view.user_admin_people.yml
+++ b/core/modules/user/config/install/views.view.user_admin_people.yml
@@ -8,7 +8,7 @@ label: People
 module: user
 description: 'Find and manage people interacting with your site.'
 tag: default
-base_table: users
+base_table: users_field_data
 base_field: uid
 core: 8.x
 display:
@@ -733,7 +733,7 @@ display:
           entity_field: status
         uid_raw:
           id: uid_raw
-          table: users
+          table: users_field_data
           field: uid_raw
           relationship: none
           group_type: group
diff --git a/core/modules/user/src/Plugin/views/field/Roles.php b/core/modules/user/src/Plugin/views/field/Roles.php
index 3f38496..4ba1309 100644
--- a/core/modules/user/src/Plugin/views/field/Roles.php
+++ b/core/modules/user/src/Plugin/views/field/Roles.php
@@ -61,7 +61,7 @@ public static function create(ContainerInterface $container, array $configuratio
   public function init(ViewExecutable $view, DisplayPluginBase $display, array &$options = NULL) {
     parent::init($view, $display, $options);
 
-    $this->additional_fields['uid'] = array('table' => 'users', 'field' => 'uid');
+    $this->additional_fields['uid'] = array('table' => 'users_field_data', 'field' => 'uid');
   }
 
   public function query() {
diff --git a/core/modules/user/src/Plugin/views/wizard/Users.php b/core/modules/user/src/Plugin/views/wizard/Users.php
index 1052476..aa6488e 100644
--- a/core/modules/user/src/Plugin/views/wizard/Users.php
+++ b/core/modules/user/src/Plugin/views/wizard/Users.php
@@ -18,7 +18,7 @@
  *
  * @ViewsWizard(
  *   id = "users",
- *   base_table = "users",
+ *   base_table = "users_field_data",
  *   title = @Translation("Users")
  * )
  */
diff --git a/core/modules/user/src/UserViewsData.php b/core/modules/user/src/UserViewsData.php
index acf2100..2553a5e 100644
--- a/core/modules/user/src/UserViewsData.php
+++ b/core/modules/user/src/UserViewsData.php
@@ -20,21 +20,21 @@ class UserViewsData extends EntityViewsData {
   public function getViewsData() {
     $data = parent::getViewsData();
 
-    $data['users']['table']['base']['help'] = t('Users who have created accounts on your site.');
-    $data['users']['table']['base']['access query tag'] = 'user_access';
+    $data['users_field_data']['table']['base']['help'] = t('Users who have created accounts on your site.');
+    $data['users_field_data']['table']['base']['access query tag'] = 'user_access';
 
-    $data['users']['table']['wizard_id'] = 'user';
+    $data['users_field_data']['table']['wizard_id'] = 'user';
 
-    $data['users']['uid']['field']['id'] = 'user';
-    $data['users']['uid']['argument']['id'] = 'user_uid';
-    $data['users']['uid']['argument'] += array(
+    $data['users_field_data']['uid']['field']['id'] = 'user';
+    $data['users_field_data']['uid']['argument']['id'] = 'user_uid';
+    $data['users_field_data']['uid']['argument'] += array(
       'name table' => 'users_field_data',
       'name field' => 'name',
       'empty field name' => \Drupal::config('user.settings')->get('anonymous'),
     );
-    $data['users']['uid']['filter']['id'] = 'user_name';
-    $data['users']['uid']['filter']['title'] = t('Name');
-    $data['users']['uid']['relationship'] = array(
+    $data['users_field_data']['uid']['filter']['id'] = 'user_name';
+    $data['users_field_data']['uid']['filter']['title'] = t('Name');
+    $data['users_field_data']['uid']['relationship'] = array(
       'title' => t('Content authored'),
       'help' => t('Relate content to the user who created it. This relationship will create one record for each content item created by the user.'),
       'id' => 'standard',
@@ -44,7 +44,7 @@ public function getViewsData() {
       'label' => t('nodes'),
     );
 
-    $data['users']['uid_raw'] = array(
+    $data['users_field_data']['uid_raw'] = array(
       'help' => t('The raw numeric user ID.'),
       'real field' => 'uid',
       'filter' => array(
diff --git a/core/modules/views/src/EntityViewsData.php b/core/modules/views/src/EntityViewsData.php
index 0efd164..e0704f3 100644
--- a/core/modules/views/src/EntityViewsData.php
+++ b/core/modules/views/src/EntityViewsData.php
@@ -129,26 +129,31 @@ public function getViewsData() {
     // Setup base information of the views data.
     $data[$base_table]['table']['group'] = $this->entityType->getLabel();
     $data[$base_table]['table']['provider'] = $this->entityType->getProvider();
-    $data[$base_table]['table']['base'] = [
+
+    $views_base_table = $base_table;
+    if ($data_table) {
+      $views_base_table = $data_table;
+    }
+    $data[$views_base_table]['table']['base'] = [
       'field' => $base_field,
       'title' => $this->entityType->getLabel(),
     ];
 
     if ($label_key = $this->entityType->getKey('label')) {
       if ($data_table) {
-        $data[$base_table]['table']['base']['defaults'] = array(
+        $data[$views_base_table]['table']['base']['defaults'] = array(
           'field' => $label_key,
           'table' => $data_table,
         );
       }
       else {
-        $data[$base_table]['table']['base']['defaults'] = array(
+        $data[$views_base_table]['table']['base']['defaults'] = array(
           'field' => $label_key,
         );
       }
     }
 
-    $data[$base_table]['operations'] = array(
+    $data[$views_base_table]['operations'] = array(
       'field' => array(
         'title' => $this->t('Operations links'),
         'help' => $this->t('Provides links to perform entity operations.'),
@@ -169,7 +174,12 @@ public function getViewsData() {
     if ($revision_table) {
       $data[$revision_table]['table']['group'] = $this->t('@entity_type revision', ['@entity_type' => $this->entityType->getLabel()]);
       $data[$revision_table]['table']['provider'] = $this->entityType->getProvider();
-      $data[$revision_table]['table']['base'] = array(
+
+      $views_revision_base_table = $revision_table;
+      if ($revision_data_table) {
+        $views_revision_base_table = $revision_data_table;
+      }
+      $data[$views_revision_base_table]['table']['base'] = array(
         'field' => $revision_field,
         'title' => $this->t('@entity_type revisions', array('@entity_type' => $this->entityType->getLabel())),
       );
diff --git a/core/modules/views/src/Plugin/Derivative/DefaultWizardDeriver.php b/core/modules/views/src/Plugin/Derivative/DefaultWizardDeriver.php
index f7610f2..51eaa2d 100644
--- a/core/modules/views/src/Plugin/Derivative/DefaultWizardDeriver.php
+++ b/core/modules/views/src/Plugin/Derivative/DefaultWizardDeriver.php
@@ -22,6 +22,7 @@ class DefaultWizardDeriver extends DeriverBase {
   public function getDerivativeDefinitions($base_plugin_definition) {
     $views_data = Views::viewsData();
     $base_tables = array_keys($views_data->fetchBaseTables());
+    print_r($base_tables);
     $this->derivatives = array();
     foreach ($base_tables as $table) {
       $views_info = $views_data->get($table);
@@ -34,6 +35,7 @@ public function getDerivativeDefinitions($base_plugin_definition) {
         );
       }
     }
+    print_r($this->derivatives);
     return parent::getDerivativeDefinitions($base_plugin_definition);
   }
 }
diff --git a/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php b/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php
index cdf0723..fa80c98 100644
--- a/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php
+++ b/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php
@@ -124,7 +124,7 @@ public function __construct(array $configuration, $plugin_id, $plugin_definition
 
     $entity_types = \Drupal::entityManager()->getDefinitions();
     foreach ($entity_types as $entity_type_id => $entity_type) {
-      if ($this->base_table == $entity_type->getBaseTable()) {
+      if ($this->base_table == $entity_type->getBaseTable() || $this->base_table == $entity_type->getDataTable()) {
         $this->entityType = $entity_type;
         $this->entityTypeId = $entity_type_id;
       }
diff --git a/core/modules/views/src/ViewsData.php b/core/modules/views/src/ViewsData.php
index 81469e7..9155df6 100644
--- a/core/modules/views/src/ViewsData.php
+++ b/core/modules/views/src/ViewsData.php
@@ -293,6 +293,9 @@ public function fetchBaseTables() {
 
     foreach ($this->get() as $table => $info) {
       if (!empty($info['table']['base'])) {
+        if (!isset($info['table']['base']['title'])) {
+          debug($table);
+        }
         $tables[$table] = array(
           'title' => $info['table']['base']['title'],
           'help' => !empty($info['table']['base']['help']) ? $info['table']['base']['help'] : '',
diff --git a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_argument_default_current_user.yml b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_argument_default_current_user.yml
index 8b7b5fb..2e774d1 100644
--- a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_argument_default_current_user.yml
+++ b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_argument_default_current_user.yml
@@ -8,7 +8,7 @@ label: ''
 module: views
 description: ''
 tag: ''
-base_table: node
+base_table: node_field_data
 base_field: nid
 core: '8'
 display:
diff --git a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_argument_default_fixed.yml b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_argument_default_fixed.yml
index 60f617d..4a32743 100644
--- a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_argument_default_fixed.yml
+++ b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_argument_default_fixed.yml
@@ -8,7 +8,7 @@ label: ''
 module: views
 description: ''
 tag: ''
-base_table: node
+base_table: node_field_data
 base_field: nid
 core: '8'
 display:
diff --git a/core/modules/views/tests/src/Unit/EntityViewsDataTest.php b/core/modules/views/tests/src/Unit/EntityViewsDataTest.php
index c1aac0f..6ef7bc2 100644
--- a/core/modules/views/tests/src/Unit/EntityViewsDataTest.php
+++ b/core/modules/views/tests/src/Unit/EntityViewsDataTest.php
@@ -188,10 +188,15 @@ public function testDataTable() {
     $data = $this->viewsData->getViewsData();
     $field_views_data = $data['entity_test_mul_property_data'];
 
+    // Ensure that the base table it set to the data table.
+    $this->assertEquals('id', $data['entity_test_mul_property_data']['table']['base']['field']);
+    $this->assertEquals('Entity test', $data['entity_test_mul_property_data']['table']['base']['title']);
+    $this->assertFalse(isset($data['entity_test']['table']['base']));
+
     $this->assertEquals('entity_test_mul', $data['entity_test_mul_property_data']['table']['entity type']);
     $this->assertEquals('Entity test', $data['entity_test_mul_property_data']['table']['group']);
     $this->assertEquals('entity_test', $data['entity_test']['table']['provider']);
-    $this->assertEquals(['field' => 'label', 'table' => 'entity_test_mul_property_data'], $data['entity_test']['table']['base']['defaults']);
+    $this->assertEquals(['field' => 'label', 'table' => 'entity_test_mul_property_data'], $data['entity_test_mul_property_data']['table']['base']['defaults']);
 
     // Ensure the join information is set up properly.
     $this->assertCount(1, $field_views_data['table']['join']);
@@ -201,12 +206,12 @@ public function testDataTable() {
   }
 
   /**
-   * Tests revision table support.
+   * Tests revision table without data table support.
    */
-  public function testRevisionTable() {
+  public function testRevisionTableWithoutDataTable() {
     $entity_type = $this->baseEntityType
       ->set('revision_table', 'entity_test_mulrev_revision')
-      ->set('revision_data_table', 'entity_test_mulrev_property_revision')
+      ->set('revision_data_table', NULL)
       ->set('id', 'entity_test_mulrev')
       ->setKey('revision', 'revision_id')
     ;
@@ -214,7 +219,42 @@ public function testRevisionTable() {
 
     $data = $this->viewsData->getViewsData();
 
+    $this->assertEquals('Entity test revisions', $data['entity_test_mulrev_revision']['table']['base']['title']);
+    $this->assertEquals('revision_id', $data['entity_test_mulrev_revision']['table']['base']['field']);
+
     $this->assertEquals('entity_test_mulrev', $data['entity_test_mulrev_revision']['table']['entity type']);
+    $this->assertEquals('Entity test revision', $data['entity_test_mulrev_revision']['table']['group']);
+    $this->assertEquals('entity_test', $data['entity_test']['table']['provider']);
+
+    // Ensure the join information is set up properly.
+    // Tests the join definition between the base and the revision table.
+    $revision_data = $data['entity_test_mulrev_revision'];
+    $this->assertCount(1, $revision_data['table']['join']);
+    $this->assertEquals(['entity_test' => ['left_field' => 'revision_id', 'field' => 'revision_id', 'type' => 'INNER']], $revision_data['table']['join']);
+    $revision_data = $data['entity_test_mulrev_property_revision'];
+    $this->assertCount(1, $revision_data['table']['join']);
+    $this->assertEquals(['entity_test_mulrev_revision' => ['left_field' => 'revision_id', 'field' => 'revision_id', 'type' => 'INNER']], $revision_data['table']['join']);
+    $this->assertFalse(isset($data['data_table']));
+  }
+
+  /**
+   * Tests revision table with data table support.
+   */
+  public function testRevisionTableWithDataTable() {
+    $entity_type = $this->baseEntityType
+      ->set('revision_table', 'entity_test_mulrev_revision')
+      ->set('revision_data_table', 'entity_test_mulrev_property_revision')
+      ->set('id', 'entity_test_mulrev')
+      ->setKey('revision', 'revision_id')
+    ;
+    $this->viewsData->setEntityType($entity_type);
+
+    $data = $this->viewsData->getViewsData();
+
+    $this->assertEquals('Entity test revisions', $data['entity_test_mulrev_property_revision']['table']['base']['title']);
+    $this->assertEquals('revision_id', $data['entity_test_mulrev_property_revision']['table']['base']['field']);
+    $this->assertFalse(isset($data['entity_test_mulrev_revision']['table']['base']));
+
     $this->assertEquals('entity_test_mulrev', $data['entity_test_mulrev_property_revision']['table']['entity type']);
     $this->assertEquals('Entity test revision', $data['entity_test_mulrev_revision']['table']['group']);
     $this->assertEquals('entity_test', $data['entity_test']['table']['provider']);
