Какой самый практичный способ структурировать базу данных noSQL? - PullRequest
0 голосов
/ 18 февраля 2019

Рассмотрим три следующих примера структуры данных с одной и той же информацией:

//the properties are nested
{
  clientOne: {
    users: {
      userOne: {
        userType: "admin"
      },
      userTwo: {
        userType: "user"
      }
    },
    projects: {
      projectOne: {
        elements: {
          elementOne: "a",
          elementTwo: "b",
          elementThree: "c"
        },
        collections: {
          collectionOne: {
            elementOne: {
              elementTwo: {
                elementThree: true
              }
            }
          }
        }
      }
    }
  }
}

В приведенном выше примере каждая информация находится в одном и том же месте, дочерние данные вложены в своего родителя.

//the properties are flattened, parent contains it's children
{
  clients: {
    clientOne: {
      users: {
        userOne: true,
        userTwo: true
      },
      projects: {
        projectOne: true
      }
    }
  },
  users: {
    userOne: {
      userType: "admin"
    },
    userTwo: {
      userType: "user"
    }
  },
  projects: {
    projectOne: {
      elements: {
        elementOne: true,
        elementTwo: true,
        elementThree: true
      },
      collections: {
        collectionOne: true
      }
    }
  },
  elements: {
    elementOne: "a",
    elementTwo: "b",
    elementThree: "c"
  },
  collections: {
    collectionOne: {
      elementOne: {
        elementTwo: {
          elementThree: true
        }
      }
    }
  }
}

В приведенном выше примере свойства «независимы» друг от друга, родитель просто указывает на маршрут, где находится его дочерний элемент.

//the properties are flattened, child contains it's parent
{
  clients: {
    clientOne: true
  },
  users: {
    userOne: {
      userType: "admin",
      clientId: "clientOne"
    },
    userTwo: {
      userType: "user",
      clientId: "clientOne"
    }
  },
  projects: {
    projectOne: true
  },
  elements: {
    elementOne: {
      value: "a",
      projectId: "projectOne"
    },
    elementTwo: {
      value: "b",
      projectId: "projectOne"
    },
    elementThree: {
      value: "c",
      projectId: "projectOne"
    }
  },
  collections: {
    collectionOne: {
      projectId: "projectOne",
      value: {
        elementOne: {
          elementTwo: {
            elementThree: true
          }
        }
      }
    }
  }
}

В приведенном выше примере дочерний элемент указывает на егопрямой родительский идентификатор.

Три базы данных содержат одинаковую информацию, но по-разному.В каких случаях нужен какой метод?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...