diff --git a/core/lib/Drupal/Core/Entity/EntityTypeInterface.php b/core/lib/Drupal/Core/Entity/EntityTypeInterface.php
index 7e8662b..db3f520 100644
--- a/core/lib/Drupal/Core/Entity/EntityTypeInterface.php
+++ b/core/lib/Drupal/Core/Entity/EntityTypeInterface.php
@@ -46,7 +46,7 @@ public function get($property);
    * @param mixed $value
    *   The value to set.
    *
-   * @return static
+   * @return $this
    */
   public function set($property, $value);
 
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 e8cb5dc..d677e18 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
@@ -29,7 +29,7 @@ display:
         nid:
           field: nid
           id: nid
-          table: node
+          table: node_field_data
           plugin_id: node
           provider: node
       pager:
diff --git a/core/modules/field/tests/modules/field_test_views/test_views/views.view.test_view_fieldapi.yml b/core/modules/field/tests/modules/field_test_views/test_views/views.view.test_view_fieldapi.yml
index 275aefb..2033ff6 100644
--- a/core/modules/field/tests/modules/field_test_views/test_views/views.view.test_view_fieldapi.yml
+++ b/core/modules/field/tests/modules/field_test_views/test_views/views.view.test_view_fieldapi.yml
@@ -11,7 +11,7 @@ display:
         nid:
           field: nid
           id: nid
-          table: node
+          table: node_field_data
           plugin_id: node
           provider: node
         field_name_0:
diff --git a/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_contextual_links.yml b/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_contextual_links.yml
index 1850ce6..a607ffb 100644
--- a/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_contextual_links.yml
+++ b/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_contextual_links.yml
@@ -75,7 +75,7 @@ display:
           field: nid
           id: nid
           relationship: none
-          table: node
+          table: node_field_data
           plugin_id: numeric
           provider: views
       menu:
diff --git a/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_filter_node_uid_revision.yml b/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_filter_node_uid_revision.yml
index 76f3bd9..ecd4ebb 100644
--- a/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_filter_node_uid_revision.yml
+++ b/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_filter_node_uid_revision.yml
@@ -16,7 +16,7 @@ display:
           id: nid
           table: node
           field: nid
-          plugin_id: node
+          plugin_id: node_field_data
           provider: node
       filter_groups:
         groups:
@@ -38,7 +38,7 @@ display:
       sorts:
         nid:
           id: nid
-          table: node
+          table: node_field_data
           field: nid
           order: ASC
           plugin_id: standard
diff --git a/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_node_bulk_form.yml b/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_node_bulk_form.yml
index fa63477..b84663b 100644
--- a/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_node_bulk_form.yml
+++ b/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_node_bulk_form.yml
@@ -30,7 +30,7 @@ display:
       sorts:
         nid:
           id: nid
-          table: node
+          table: node_field_data
           field: nid
           order: ASC
           plugin_id: standard
diff --git a/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_node_revision_nid.yml b/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_node_revision_nid.yml
index fae1b18..012cc92 100644
--- a/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_node_revision_nid.yml
+++ b/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_node_revision_nid.yml
@@ -7,7 +7,7 @@ display:
       relationships:
         nid:
           id: nid
-          table: node_revision
+          table: node_field_revision
           field: nid
           required: true
           plugin_id: standard
@@ -15,19 +15,19 @@ display:
       fields:
         vid:
           id: vid
-          table: node_revision
+          table: node_field_revision
           field: vid
           plugin_id: standard
           provider: views
         nid_1:
           id: nid_1
-          table: node_revision
+          table: node_field_revision
           field: nid
           plugin_id: standard
           provider: views
         nid:
           id: nid
-          table: node
+          table: node_field_data
           field: nid
           relationship: nid
           plugin_id: node
@@ -35,7 +35,7 @@ display:
       arguments:
         nid:
           id: nid
-          table: node_revision
+          table: node_field_revision
           field: nid
           plugin_id: node_nid
           provider: node
diff --git a/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_node_revision_vid.yml b/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_node_revision_vid.yml
index 7871029..94122bd 100644
--- a/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_node_revision_vid.yml
+++ b/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_node_revision_vid.yml
@@ -7,7 +7,7 @@ display:
       relationships:
         vid:
           id: vid
-          table: node_revision
+          table: node_field_revision
           field: vid
           required: true
           plugin_id: standard
@@ -15,19 +15,19 @@ display:
       fields:
         vid:
           id: vid
-          table: node_revision
+          table: node_field_revision
           field: vid
           plugin_id: standard
           provider: views
         nid_1:
           id: nid_1
-          table: node_revision
+          table: node_field_revision
           field: nid
           plugin_id: standard
           provider: views
         nid:
           id: nid
-          table: node
+          table: node_field_data
           field: nid
           relationship: vid
           plugin_id: node
@@ -35,7 +35,7 @@ display:
       arguments:
         nid:
           id: nid
-          table: node_revision
+          table: node_field_revision
           field: nid
           plugin_id: node_nid
           provider: node
diff --git a/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_node_view.yml b/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_node_view.yml
index 4bc240e..d033795 100644
--- a/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_node_view.yml
+++ b/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_node_view.yml
@@ -70,7 +70,7 @@ display:
       fields:
         nid:
           id: nid
-          table: node
+          table: node_field_data
           field: nid
           relationship: none
           group_type: group
diff --git a/core/modules/rest/tests/modules/rest_test_views/test_views/views.view.test_serializer_node_display_field.yml b/core/modules/rest/tests/modules/rest_test_views/test_views/views.view.test_serializer_node_display_field.yml
index 41c8241..d8d72eb 100644
--- a/core/modules/rest/tests/modules/rest_test_views/test_views/views.view.test_serializer_node_display_field.yml
+++ b/core/modules/rest/tests/modules/rest_test_views/test_views/views.view.test_serializer_node_display_field.yml
@@ -28,7 +28,7 @@ display:
       fields:
         nid:
           id: nid
-          table: node
+          table: node_field_data
           field: nid
           plugin_id: numeric
           provider: node
diff --git a/core/modules/taxonomy/tests/modules/taxonomy_test_views/test_views/views.view.test_groupwise_term.yml b/core/modules/taxonomy/tests/modules/taxonomy_test_views/test_views/views.view.test_groupwise_term.yml
index fa61b8b..da3d130 100644
--- a/core/modules/taxonomy/tests/modules/taxonomy_test_views/test_views/views.view.test_groupwise_term.yml
+++ b/core/modules/taxonomy/tests/modules/taxonomy_test_views/test_views/views.view.test_groupwise_term.yml
@@ -23,7 +23,7 @@ display:
           field: nid
           id: nid
           relationship: tid_representative
-          table: node
+          table: node_field_data
           plugin_id: node
           provider: node
       pager:
diff --git a/core/modules/taxonomy/tests/modules/taxonomy_test_views/test_views/views.view.test_taxonomy_node_term_data.yml b/core/modules/taxonomy/tests/modules/taxonomy_test_views/test_views/views.view.test_taxonomy_node_term_data.yml
index afdd91e..c0e20ea 100644
--- a/core/modules/taxonomy/tests/modules/taxonomy_test_views/test_views/views.view.test_taxonomy_node_term_data.yml
+++ b/core/modules/taxonomy/tests/modules/taxonomy_test_views/test_views/views.view.test_taxonomy_node_term_data.yml
@@ -66,7 +66,7 @@ display:
           field: nid
           id: nid
           order: DESC
-          table: node
+          table: node_field_data
           plugin_id: standard
           provider: views
       style:
diff --git a/core/modules/user/tests/modules/user_test_views/test_views/views.view.test_groupwise_user.yml b/core/modules/user/tests/modules/user_test_views/test_views/views.view.test_groupwise_user.yml
index c1d4c89..0d537bf 100644
--- a/core/modules/user/tests/modules/user_test_views/test_views/views.view.test_groupwise_user.yml
+++ b/core/modules/user/tests/modules/user_test_views/test_views/views.view.test_groupwise_user.yml
@@ -24,7 +24,7 @@ display:
           field: nid
           id: nid
           relationship: uid_representative
-          table: node
+          table: node_field_data
           plugin_id: node
           provider: node
       filters:
diff --git a/core/modules/views/src/EntityViewsData.php b/core/modules/views/src/EntityViewsData.php
index b2859d0..39733d7 100644
--- a/core/modules/views/src/EntityViewsData.php
+++ b/core/modules/views/src/EntityViewsData.php
@@ -198,6 +198,8 @@ public function getViewsData() {
         foreach ($table_mapping->getFieldNames($table) as $field_name) {
           $this->mapFieldDefinition($table, $field_name, $field_definitions[$field_name], $table_mapping, $data[$table]);
         }
+        $this->processDuplicatedFieldsDataTable($table, $table_mapping, $data[$table]);
+        $this->processDuplicatedFieldsRevisionDataTable($table, $table_mapping, $data[$table]);
       }
     }
 
@@ -426,6 +428,68 @@ protected function processViewsDataForEntityReference($table, FieldDefinitionInt
   }
 
   /**
+   * Ensures that some fields just exists on the data table.
+   *
+   * Some fields like the entity ID is exposed on both the base table as well
+   * as the data table. This results in confusion for the site builder, so let's
+   * ensure that the one on the base table is not exposed automatically.
+   *
+   * @param string $table
+   *   The table the language field is added to.
+   * @param \Drupal\Core\Entity\Sql\TableMappingInterface $table_mapping
+   *   The table mapping.
+   * @param array $table_data
+   *   The corresponding views data for the given table.
+   */
+  protected function processDuplicatedFieldsDataTable($table, TableMappingInterface $table_mapping, &$table_data) {
+    // @todo Is there a way to make this generic?
+    if (($data_table = $this->entityType->getDataTable()) && $table == $this->entityType->getBaseTable()) {
+      $base_table_names = $table_mapping->getFieldNames($table);
+      $data_table_names = $table_mapping->getFieldNames($data_table);
+
+      // Exclude the entity ID, VID and the bundle, if it exists in both tables
+      // (base table, data table).
+      foreach (['id', 'revision', 'bundle'] as $field) {
+        $field_key = $this->entityType->getKey($field);
+        if (in_array($field_key, $base_table_names) && in_array($field_key, $data_table_names)) {
+          unset($table_data[$field_key]);
+        }
+      }
+    }
+  }
+
+  /**
+   * Ensures that some fields just exists on the revision data table.
+   *
+   * Some fields like the entity ID is exposed on both the base table as well
+   * as the data table. This results in confusion for the site builder, so let's
+   * ensure that the one on the base table is not exposed automatically.
+   *
+   * @param string $table
+   *   The table the language field is added to.
+   * @param \Drupal\Core\Entity\Sql\TableMappingInterface $table_mapping
+   *   The table mapping.
+   * @param array $table_data
+   *   The corresponding views data for the given table.
+   */
+  protected function processDuplicatedFieldsRevisionDataTable($table, TableMappingInterface $table_mapping, &$table_data) {
+    // @todo Is there a way to make this generic?
+    if (($data_table = $this->entityType->getRevisionDataTable()) && $table == $this->entityType->getRevisionTable()) {
+      $base_table_names = $table_mapping->getFieldNames($table);
+      $data_table_names = $table_mapping->getFieldNames($data_table);
+
+      // Exclude the entity ID, VID and the bundle, if it exists in both tables
+      // (base table, data table).
+      foreach (['id', 'revision', 'bundle'] as $field) {
+        $field_key = $this->entityType->getKey($field);
+        if (in_array($field_key, $base_table_names) && in_array($field_key, $data_table_names)) {
+          unset($table_data[$field_key]);
+        }
+      }
+    }
+  }
+
+  /**
    * Gets the table of an entity type to be used as base table in views.
    *
    * @todo Given that the base_table is pretty much useless as you often have to
diff --git a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_destroy.yml b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_destroy.yml
index 5dfd8c9..1e59060 100644
--- a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_destroy.yml
+++ b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_destroy.yml
@@ -83,7 +83,7 @@ display:
         nid:
           field: nid
           id: nid
-          table: node
+          table: node_field_data
           plugin_id: node
           provider: node
         path:
@@ -96,7 +96,7 @@ display:
         nid:
           field: nid
           id: nid
-          table: node
+          table: node_field_data
           plugin_id: numeric
           provider: views
         status:
diff --git a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_display_invalid.yml b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_display_invalid.yml
index b74f3c0..a457fad 100644
--- a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_display_invalid.yml
+++ b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_display_invalid.yml
@@ -10,7 +10,7 @@ display:
       fields:
         id:
           id: nid
-          table: node
+          table: node_field_data
           field: nid
           plugin_id: numeric
           provider: node
diff --git a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_dropbutton.yml b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_dropbutton.yml
index e83d67b..e0750db 100644
--- a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_dropbutton.yml
+++ b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_dropbutton.yml
@@ -29,7 +29,7 @@ display:
       fields:
         nid:
           id: nid
-          table: node
+          table: node_field_data
           field: nid
           plugin_id: node
           relationship: none
diff --git a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_entity_type_filter.yml b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_entity_type_filter.yml
index a9873c2..e5d8f12 100644
--- a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_entity_type_filter.yml
+++ b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_entity_type_filter.yml
@@ -12,7 +12,7 @@ display:
       fields:
         nid:
           id: nid
-          table: node
+          table: node_field_data
           field: nid
           relationship: none
           provider: node
diff --git a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_field_get_entity.yml b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_field_get_entity.yml
index ab11335..ce638b8 100644
--- a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_field_get_entity.yml
+++ b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_field_get_entity.yml
@@ -21,7 +21,7 @@ display:
         nid:
           field: nid
           id: nid
-          table: node
+          table: node_field_data
           relationship: node
           plugin_id: node
           provider: node
diff --git a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_filter_date_between.yml b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_filter_date_between.yml
index 5eefe8f..cfa3834 100644
--- a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_filter_date_between.yml
+++ b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_filter_date_between.yml
@@ -15,7 +15,7 @@ display:
         nid:
           field: nid
           id: nid
-          table: node
+          table: node_field_data
           plugin_id: node
           provider: node
       filters:
diff --git a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_filter_groups.yml b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_filter_groups.yml
index b0ef217..cd11171 100644
--- a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_filter_groups.yml
+++ b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_filter_groups.yml
@@ -31,7 +31,7 @@ display:
           field: nid
           group: '2'
           id: nid
-          table: node
+          table: node_field_data
           value:
             value: '1'
           plugin_id: numeric
@@ -40,7 +40,7 @@ display:
           field: nid
           group: '2'
           id: nid_1
-          table: node
+          table: node_field_data
           value:
             value: '2'
           plugin_id: numeric
@@ -92,7 +92,7 @@ display:
           field: nid
           group: '2'
           id: nid
-          table: node
+          table: node_field_data
           value:
             value: '1'
           plugin_id: numeric
@@ -101,7 +101,7 @@ display:
           field: nid
           group: '2'
           id: nid_1
-          table: node
+          table: node_field_data
           value:
             value: '2'
           plugin_id: numeric
diff --git a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_mini_pager.yml b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_mini_pager.yml
index 5409539..a91f129 100644
--- a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_mini_pager.yml
+++ b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_mini_pager.yml
@@ -69,7 +69,7 @@ display:
       sorts:
         nid:
           id: nid
-          table: node
+          table: node_field_data
           field: nid
           plugin_id: standard
           order: ASC
diff --git a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_tag_cache.yml b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_tag_cache.yml
index c1df594..8360098 100644
--- a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_tag_cache.yml
+++ b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_tag_cache.yml
@@ -27,7 +27,7 @@ display:
           group_type: {  }
           hide_empty: '0'
           id: nid
-          table: node
+          table: node_field_data
           plugin_id: numeric
           provider: views
         title:
diff --git a/core/modules/views/tests/src/Unit/EntityViewsDataTest.php b/core/modules/views/tests/src/Unit/EntityViewsDataTest.php
index d477572..7b8854d 100644
--- a/core/modules/views/tests/src/Unit/EntityViewsDataTest.php
+++ b/core/modules/views/tests/src/Unit/EntityViewsDataTest.php
@@ -33,7 +33,7 @@ class EntityViewsDataTest extends UnitTestCase {
   /**
    * Entity info to use in this test.
    *
-   * @var \Drupal\Core\Entity\EntityTypeInterface
+   * @var \Drupal\Core\Entity\EntityTypeInterface|\Drupal\Tests\views\Unit\TestEntityType
    */
   protected $baseEntityType;
 
@@ -382,7 +382,9 @@ public function testDataTableFields() {
     $data = $this->viewsData->getViewsData();
 
     // Check the base fields.
-    $this->assertNumericField($data['entity_test_mul']['id']);
+
+    // Ensure that the ID is not exposed multiple times.
+    $this->assertFalse(isset($data['entity_test_mul']['id']));
     $this->assertUuidField($data['entity_test_mul']['uuid']);
 
     $this->assertBundleField($data['entity_test_mul']['type']);
@@ -416,7 +418,9 @@ public function testRevisionTableFields() {
       ->set('revision_table', 'entity_test_mulrev_revision')
       ->set('data_table', 'entity_test_mulrev_property_data')
       ->set('revision_data_table', 'entity_test_mulrev_property_revision')
-      ->set('id', 'entity_test_mulrev');
+      ->set('id', 'entity_test_mulrev')
+      ->setKey('revision', 'revision_id')
+    ;
     $base_field_definitions = $this->setupBaseFields(EntityTestMulRev::baseFieldDefinitions($this->baseEntityType));
     $this->entityManager->expects($this->once())
       ->method('getBaseFieldDefinitions')
@@ -467,8 +471,8 @@ public function testRevisionTableFields() {
     $data = $this->viewsData->getViewsData();
 
     // Check the base fields.
-    $this->assertNumericField($data['entity_test_mulrev']['id']);
-    $this->assertNumericField($data['entity_test_mulrev']['revision_id']);
+    $this->assertFalse(isset($data['entity_test_mulrev']['id']));
+    $this->assertFalse(isset($data['entity_test_mulrev']['revision_id']));
     $this->assertUuidField($data['entity_test_mulrev']['uuid']);
     $this->assertStringField($data['entity_test_mulrev']['type']);
 
@@ -478,8 +482,8 @@ public function testRevisionTableFields() {
     $this->assertFalse(isset($data['entity_test_mulrev']['user_id']));
 
     // Check the revision fields.
-    $this->assertNumericField($data['entity_test_mulrev_revision']['id']);
-    $this->assertNumericField($data['entity_test_mulrev_revision']['revision_id']);
+    $this->assertFalse(isset($data['entity_test_mulrev_revision']['id']));
+    $this->assertFalse(isset($data['entity_test_mulrev_revision']['revision_id']));
 
     $this->assertLanguageField($data['entity_test_mulrev_revision']['langcode']);
     $this->assertEquals('Original language', $data['entity_test_mulrev_revision']['langcode']['title']);
@@ -490,6 +494,7 @@ public function testRevisionTableFields() {
 
     // Check the data fields.
     $this->assertNumericField($data['entity_test_mulrev_property_data']['id']);
+    $this->assertNumericField($data['entity_test_mulrev_property_data']['revision_id']);
     $this->assertLanguageField($data['entity_test_mulrev_property_data']['langcode']);
     $this->assertStringField($data['entity_test_mulrev_property_data']['name']);
 
