재귀 관계 또는 자체 조인이라고도 하는 자체 참조 관계는 테이블에 동일한 테이블의 기본 키를 다시 참조하는 외래 키가 포함되어 있는 경우 관계형 데이터베이스의 컨텍스트에서 발생합니다. 이러한 유형의 관계는 엔터티가 직접 또는 간접적으로 자체와 관련되는 계층적 데이터 구조, 조직 차트, 부모-자식 종속성과 같은 다양한 실제 시나리오에서 널리 사용됩니다. 자체 참조 관계를 구현하려면 관계형 데이터베이스 설계 원칙에 대한 깊은 이해와 제약 조건 및 참조 무결성 규칙의 효과적인 사용이 필요합니다.
예를 들어, 각 직원, 부서, 직위 및 기타 관련 데이터에 대한 정보를 저장하는 회사 데이터베이스 내의 Employee 테이블을 생각해 보세요. 조직 계층의 주요 측면 중 하나는 관리자-하위 관계입니다. 관리자를 위한 별도의 테이블을 만드는 대신 Employee_ID 기본 키 열을 다시 참조하는 Manager_ID 외래 키 열을 추가하여 Employee 테이블 내에 자체 참조 관계를 설정할 수 있습니다. 이 경우 관리자인 직원은 자신의 Employee_ID를 Manager_ID로 가지며, 관리자에게 보고하는 직원은 해당 관리자의 Employee_ID를 Manager_ID로 갖습니다.
PostgreSQL과 같은 관계형 데이터베이스 관리 시스템(RDBMS)에서 자체 참조 관계를 생성하려면 테이블 스키마 내에서 기본 키와 외래 키 열을 정의하고 참조 무결성을 유지하기 위한 적절한 제약 조건과 규칙을 설정해야 합니다. Employee 테이블 예에서 다음 SQL 문을 사용하여 테이블 스키마를 생성하고 자체 참조 관계를 설정할 수 있습니다.
테이블 만들기 직원( Employee_ID INT 기본 키, 이름 VARCHAR(50), 성 VARCHAR(50), 부서 VARCHAR(50), 관리자_ID INT, CONSTRAINT fk_Manager 외래 키(Manager_ID) 참조 직원(Employee_ID) );
자체 참조 관계를 작업할 때는 참조 무결성 유지의 중요성을 이해하는 것이 중요합니다. 여기에는 ON DELETE 및 ON UPDATE 절에 대한 적절한 CASCADE, SET NULL 또는 SET DEFAULT 규칙 설정이 포함됩니다. 이러한 규칙은 기본 키 값이 업데이트되거나 삭제될 때 수행할 작업을 지정합니다.
예를 들어 관리자의 Employee_ID가 변경되거나 관리자가 Employee 테이블에서 제거되는 시나리오를 생각해 보세요. 참조 무결성을 유지하려면 ON DELETE 절에 SET NULL 또는 SET DEFAULT 규칙을 사용하는 동시에 영향을 받는 하위 항목에 대해 새 Manager_ID 값이 적절하게 설정되도록 할 수 있습니다. 마찬가지로 ON UPDATE 절에 CASCADE 규칙을 사용하면 관리자의 Employee_ID가 변경될 때 관련된 모든 하위 직원의 Manager_ID 값을 자동으로 업데이트할 수 있습니다.
강력한 no-code 플랫폼인 AppMaster 에서 사용자는 백엔드 애플리케이션을 설계할 때 데이터 모델에서 자체 참조 관계를 시각적으로 생성할 수 있습니다. 이 플랫폼을 통해 사용자는 기본 키 및 외래 키 열을 정의하고 제약 조건 및 참조 무결성 규칙을 지정하며 데이터베이스 스키마를 시각적으로 관리할 수 있습니다. AppMaster 의 직관적인 인터페이스를 통해 사용자는 조직 계층, 다단계 제품 분류 시스템 또는 자체 참조 관계와 관련된 기타 시나리오 등 애플리케이션에서 복잡한 반복 관계를 쉽게 생성하고 관리할 수 있습니다.
생성된 Go 기반 백엔드 애플리케이션 내에 자체 참조 관계를 통합함으로써 AppMaster 기업 및 고부하 사용 사례를 처리할 때 확장성과 성능을 보장합니다. 또한 이 플랫폼은 요구 사항이 변경될 때 처음부터 애플리케이션을 원활하게 재생성하여 기술적 부채를 제거하고 개발 프로세스를 간소화합니다.
포괄적인 통합 개발 환경(IDE)인 AppMaster 사용하면 사용자는 자체 참조 관계와 같은 복잡한 데이터 구조와 관계를 통합하는 강력하고 확장 가능한 웹, 모바일 및 백엔드 애플리케이션을 설계, 구축 및 배포할 수 있습니다. AppMaster 의 광범위한 기능을 활용함으로써 사용자는 다양한 비즈니스 요구 사항을 충족하는 애플리케이션을 신속하게 개발 및 배포할 수 있으므로 프로세스가 10배 더 빠르고 비용 효율성이 3배 향상됩니다.