MongoDB의 외래 키

Tahseen Tauseef 2024년2월15일
  1. 외래 키
  2. 몽고DB 레퍼런스
  3. MongoDB에서 가상 외래 키 생성
  4. 결론
MongoDB의 외래 키

MongoDB는 스키마 없이 작동하는 잘 알려진 데이터베이스입니다. 대신 JSON과 유사한 파일을 사용하여 데이터를 보유하고 구조를 부과하지 않습니다.

MongoDB는 기존 RDBMS와 달리 데이터베이스 설계에 대한 고유한 접근 방식이 필요합니다. 그러나 전반적으로 데이터베이스는 많은 제한을 두지 않기 때문에 확장하기가 더 쉽습니다.

외래 키

외래 키는 두 테이블을 연결하는 열 또는 열 집합입니다. 하위 테이블의 다른 열에 연결된 상위 테이블의 기본 키 열로 구성됩니다.

예를 들어 국가와 도시라는 두 개의 테이블이 있습니다. 각 도시가 적절한 국가와 연결되도록 이 두 테이블을 함께 연결하려고 합니다.

이를 위해 외래 키를 사용할 수 있습니다.

외래 키

위의 예에서 도시 테이블의 데이터를 읽으면 각 도시에 연결된 country_id.가 있음을 알 수 있습니다. 이렇게 하면 단일 쿼리로 파키스탄의 모든 도시를 검색할 수 있습니다.

외래 키를 생성할 때 데이터가 수정되거나 파괴될 경우 발생할 일을 지정할 수 있습니다. 예를 들어 계단식으로 선택할 수 있습니다. 즉, 국가가 제거되면 연결된 모든 도시도 제거됩니다.

null을 설정할 수도 있습니다. 즉, 국가 데이터베이스의 데이터가 삭제되면 연결된 도시가 null로 설정됩니다.

몽고DB 레퍼런스

일반적으로 MongoDB는 외래 키 개념과 함께 작동하지 않습니다. 그러나 관계형 데이터베이스는 외래 키를 사용하여 여러 컬렉션의 데이터를 동시에 시각화할 수 있습니다.

MongoDB가 데이터를 저장하는 방식도 다릅니다. 예를 들어 MongoDB는 테이블, 열 및 행을 사용하는 대신 컬렉션, 개체 및 필드를 사용합니다.

MongoDB는 컬렉션에 데이터를 저장하는 두 가지 방법인 비정규화와 정규화를 제공합니다.

비정규화

비정규화에서는 동일한 컬렉션에 다양한 데이터가 포함됩니다.

아래 샘플은 각 사람과 연결된 addresses가 어떻게 persons 컬렉션에 포함되었는지 보여줍니다.

> db.persons.findOne()
{
    name: 'Ali Ikram',
    addresses : [
        { street: '123 PWD', city: 'Rawalpindi', cc: 'PAK' },
        { street: '123 ABC', city: 'Faisalabad', cc: 'PAK' }
    ]
}

일대일에 적합합니다. 다른 문서에 추가 쿼리를 수행할 필요가 없다는 장점이 있습니다.

그러나 내장 문서의 엔터티를 개별적으로 관리할 수는 없습니다.

표준화

정규화에서는 다양한 데이터가 다양한 컬렉션에 저장됩니다. 이 프로세스는 관계형 데이터베이스에 데이터를 저장하는 것과 유사하지만 테이블 대신 컬렉션을 사용합니다.

MongoDB에서 참조는 주로 정규화 프로세스에 사용됩니다. 그러면 하위 테이블(일반적으로 개체 ID)의 참조가 상위 테이블에 포함됩니다.

정보를 읽을 때 사용자는 여러 컬렉션에서 데이터를 검색하기 위해 여러 쿼리를 수행해야 합니다.

예를 들어 studentscourses라는 두 컬렉션을 선택합니다. 코스에는 코스 컬렉션에 참조된 많은 학생이 포함됩니다.

MongoDB에서 소위 외래 키를 정의할 수 있습니다. 그러나 데이터 무결성은 직접 유지해야 합니다.

예:

students
{
    _id: ObjectId(...),
    name: 'Haris',
    courses: ['chem101', 'chem102']   // <= ids of the courses
}

courses
{
    _id: 'chem101',
    name: 'Chemistry 101',
    description: 'Introduction to Chemistry'
}

courses 필드에는 코스의 _id가 포함됩니다. 일대다 관계를 정의하는 것은 매우 간단합니다.

그러나 Haris, 학생의 코스 이름을 검색하려면 _id.를 통해 courses 문서를 검색하는 다른 작업을 수행해야 합니다.

과정 chem101이 제거된 경우 students 문서에서 courses 필드를 업데이트하기 위해 다른 작업을 수행해야 합니다.

MongoDB에서 가상 외래 키 생성

DbSchema는 스키마의 로컬 이미지를 모델 파일에 저장합니다. 즉, 데이터베이스에 연결할 필요 없이 오프라인으로 프로젝트에서 작업할 수 있습니다.

다시 연결한 후 데이터베이스와 로컬 프로젝트 파일 간의 차이점을 비교하고 동기화할 수 있습니다. 프로젝트 파일과 가상 외래 키 관계를 구성할 수도 있습니다.

이러한 외래 키는 DbSchema에서만 사용할 수 있으며 데이터베이스에는 영향을 주지 않습니다.

외래 키는 빠르고 쉽게 만들 수 있습니다. 예를 들어 도시국가 컬렉션을 살펴보십시오. 참조를 위해 둘 다 “국가 ID"라는 공통 필드를 갖습니다.

외래 키 2

한 열을 다른 열 위로 끌어다 놓아 외래 키를 만듭니다. 이렇게 하면 외래 키에 설명을 제공하고 추가 필드를 추가할 수 있는 새 창이 생성됩니다.

MongoDB에서 더 빠른 데이터 브라우징을 위해 가상 외래 키 사용

가상 외래 키를 사용하여 컬렉션에서 데이터를 찾아볼 수 있습니다. 또한 관계형 데이터 편집기를 사용하면 여러 컬렉션의 데이터를 동시에 찾아볼 수 있습니다.

외래 키를 사용하여 국가와 연결된 도시를 빠르게 탐색할 수 있습니다.

결론

이 MongoDB 자습서 기사를 통해 MongoDB 컬렉션을 다이어그램으로 시각화하고 DbSchema를 사용하여 가상 외래 키를 빌드하는 방법을 배웠습니다. 이제 서로 다른 컬렉션의 데이터를 동시에 검색할 수도 있습니다.

또한 가상 외래 키는 로컬 프로젝트 파일에만 저장되며 데이터베이스에는 영향을 주지 않습니다.

관련 문장 - MongoDB Database