diff --git a/core/modules/views/src/Plugin/views/HandlerBase.php b/core/modules/views/src/Plugin/views/HandlerBase.php
index c307178..396550c 100644
--- a/core/modules/views/src/Plugin/views/HandlerBase.php
+++ b/core/modules/views/src/Plugin/views/HandlerBase.php
@@ -473,6 +473,15 @@ public function showExposeForm(&$form, FormStateInterface $form_state) {
    * {@inheritdoc}
    */
   public function access(AccountInterface $account) {
+
+    // Check for missing relationships.
+    if (!empty($this->options['relationship'])) {
+      $relationships = array_keys($this->view->display_handler->getHandlers('relationship'));
+      if ($this->options['relationship'] != 'none' && !in_array($this->options['relationship'], $relationships)) {
+        return FALSE;
+      }
+    }
+
     if (isset($this->definition['access callback']) && function_exists($this->definition['access callback'])) {
       if (isset($this->definition['access arguments']) && is_array($this->definition['access arguments'])) {
         return call_user_func_array($this->definition['access callback'], array($account) + $this->definition['access arguments']);
diff --git a/core/modules/views/src/Plugin/views/display/DisplayPluginBase.php b/core/modules/views/src/Plugin/views/display/DisplayPluginBase.php
index 12b05fb..332da77 100644
--- a/core/modules/views/src/Plugin/views/display/DisplayPluginBase.php
+++ b/core/modules/views/src/Plugin/views/display/DisplayPluginBase.php
@@ -2359,6 +2359,17 @@ public function validate() {
       $errors = array_merge($errors, $result);
     }
 
+    // Check for missing relationships.
+    $relationships = array_keys($this->getHandlers('relationship'));
+    foreach (ViewExecutable::getHandlerTypes() as $type => $info) {
+      foreach ($this->getHandlers($type) as $handler) {
+        if (!empty($handler->options['relationship']) && $handler->options['relationship'] != 'none' && !in_array($handler->options['relationship'], $relationships)) {
+          $errors[] = $this->t('You can not remove this relationship because it is used by other handlers.');
+          break 2;
+        }
+      }
+    }
+
     // Validate handlers
     foreach (ViewExecutable::getHandlerTypes() as $type => $info) {
       foreach ($this->getHandlers($type) as $handler) {
diff --git a/core/modules/views_ui/src/Form/Ajax/ConfigHandler.php b/core/modules/views_ui/src/Form/Ajax/ConfigHandler.php
index 90de6d9..2722bfe 100644
--- a/core/modules/views_ui/src/Form/Ajax/ConfigHandler.php
+++ b/core/modules/views_ui/src/Form/Ajax/ConfigHandler.php
@@ -171,7 +171,7 @@ public function buildForm(array $form, FormStateInterface $form_state) {
         '#type' => 'submit',
         '#value' => $this->t('Remove'),
         '#submit' => array(array($this, 'remove')),
-        '#limit_validation_errors' => array(array('override')),
+        '#limit_validation_errors' => ($type == 'relationship') ? array(array('override'), array(NULL)) : array(array('override')),
         '#ajax' => array(
           'path' => current_path(),
         ),
@@ -191,6 +191,29 @@ public function buildForm(array $form, FormStateInterface $form_state) {
   public function validateForm(array &$form, FormStateInterface $form_state) {
     $form_state->get('handler')->validateOptionsForm($form['options'], $form_state);
 
+    // Removal of relationships should not be allowed if there are handlers that depend on it.
+    if ($form_state->get('type') == 'relationship' && $form_state->getValue('op') == t('Remove')) {
+      $id = $form_state->get('id');
+      $executable = $form_state->get('view')->getExecutable();
+
+      $dependency_exists = FALSE;
+      $override = $form_state->getValue('override');
+      $display_id = $override['dropdown'];
+
+      foreach (ViewExecutable::getHandlerTypes() as $type => $info) {
+        $handlers = $executable->getHandlers($type, $display_id);
+        foreach ($handlers as $handler) {
+          if (!empty($handler['relationship']) && $handler['relationship'] == $id) {
+            $dependency_exists = TRUE;
+            break 2;
+          }
+        }
+      }
+      if ($dependency_exists) {
+        $form_state->setErrorByName(NULL, t('You can not remove this relationship because it is used by other handlers.'));
+      }
+    }
+
     if ($form_state->getErrors()) {
       $form_state->set('rerender', TRUE);
     }
