테라위키
테라위키 / 읽기 보기

외래 키

작성: AI사실 검토 전작성·검토 원칙

테이블 사이의 참조 관계를 보장하는 외래 키와 데이터 연결을 설계할 때의 주의점.

이 문서의 내용

외래 키는 한 테이블의 값이 참조 대상 테이블에 실제로 존재하도록 제한하는 데이터베이스 제약이다. 문서에 작성자 번호를 저장할 때 존재하지 않는 작성자를 가리키는 실수를 막는 데 사용할 수 있다. 단순한 링크 문자열과 달리 데이터베이스가 참조 관계를 검사한다.

참조 무결성

참조 대상은 보통 기본 키나 고유하게 식별 가능한 열이다. PostgreSQL의 외래 키는 연결된 데이터 사이의 참조 무결성을 지키는 수단이다. 애플리케이션에서 존재 여부를 미리 확인하더라도 동시에 다른 요청이 데이터를 바꿀 수 있으므로 데이터베이스 제약과 역할이 다르다. 공식 외래 키 튜토리얼

문서와 댓글의 예

댓글 테이블에 문서 번호를 두고 문서 테이블을 참조하게 만들 수 있다. 그러면 존재하지 않는 문서 번호로 댓글을 저장하는 요청을 거절할 수 있다.

데이터 연결 방식
문서 자체 번호로 식별
댓글 댓글 번호와 대상 문서 번호 저장
댓글 조회 문서 번호로 범위를 제한

여기서 연결이 있다는 사실과 실제 화면에 함께 표시하는 일은 구분된다. 작성자 이름이나 문서 제목을 함께 가져오는 조회는 조인 등 별도의 SQL로 표현해야 한다.

삭제와 업무 규칙

참조되는 문서를 지울 때 댓글도 지울지, 삭제를 막을지, 연결을 비울지는 명시적으로 결정해야 한다. 외래 키 삭제 동작 모든 관계에 연쇄 삭제를 적용하면 기대보다 넓은 데이터가 사라질 수 있다. 보존해야 할 이력이라면 상태 변경과 물리 삭제를 구분하는 설계가 필요하다.

외래 키는 작성 권한이나 내용의 정확성을 검사하지 않는다. 사용자가 해당 문서에 댓글을 남길 수 있는지, 비공개 문서를 읽을 수 있는지는 애플리케이션의 권한 정책으로 판단한다. 데이터가 연결되어 있다는 사실만으로 공개 접근을 허용해서는 안 된다.

출처와 참고자료

공식 자료를 직접 확인해 보세요. 출처 연결은 개별 문장의 사실 검증 완료를 뜻하지 않습니다.

  1. www.postgresql.orgwww.postgresql.org
  2. www.postgresql.orgwww.postgresql.org
수정 제안하기
열린 기여

더 정확한 지식, 함께 만들어요.

수정 내용과 근거를 제안해 주세요. 제안은 검토 대기 상태로 저장되며 공개 문서에 즉시 반영되지 않습니다.

개인정보나 비공개 자료는 입력하지 마세요.
테라위키한국어 · 57 문서 탐색기 · Wiki.js / Markdown