FK란 무엇입니까? 각 관계 유형은 언제 가장 효과적입니까?


소개

“FK가 무엇인지, 왜 사용하는지, 언제 사용하는지 설명해주세요.” 모의 면접에서 한 질문이 나왔다.

이 부분은 조금 더 공부해 보도록 하겠습니다.


FK란 무엇이며 왜 사용해야 합니까?

외래 키를 외래 키라고 합니다. RDBMS에서 관계를 지정할 때 사용합니다.

다만 FK가 아닌 일반 컬럼을 이용하여 관계를 표현할 수 있는데 FK를 이용하는 이유는 *참조 무결성 제약 조건조정할 수 있기 때문에

(참조 무결성은 RDBMS에서 FK와 PK 사이의 일관성을 유지합니다.)

어떤 종류의 관계?

기본적으로 RDBMS는 다음과 같은 네 가지 유형의 관계를 지원합니다.

  • 1-1
  • 일대다 / 다대일
  • 너무 많이

적절한 예를 사용하여 개별 관계 매핑의 장단점을 설명합니다.


1-1


설명:

각 레코드 1 대 1관계를 맺을 때 사용합니다.

사용 예:

  • 사용자 및 사용자 프로필
  • 주문 및 결제 정보
  • 학생 및 법적 보호자

이점:

  • 참조 무결성
  • 쿼리 성능 향상
  • 확장성 및 유지보수성

고려해야 할 사항:

일대일 관계는 테이블로 그룹화할 수 있습니다. 테이블을 공유해야 하는 이유 당신은 그것에 대해 생각해야

위 예시에서 선택한 포인트를 하나씩 설명해보자.

  • 사용자 및 사용자 프로필(개인 및 공개 정보)
    • 사용자: 이용자의 개인정보(PK고유ID, 비밀번호, 이메일 등) 등 비공개 정보저장할 수 있습니다.
    • 유저 프로필: 사용자 자신 공개적으로 사용 가능한 정보가져올 수 있습니다.
    • 이렇게 디자인한 이유는 사용자와 사용자 프로필 테이블에 저장된 데이터의 특성이 다르기 때문입니다. 확장성 측면에서 검토할 수 있습니다. 데이터는 다르지만 같은 테이블에 저장할 필요는 없습니다!
  • 주문 및 결제 정보
    • 명령: 구매아이템정보 좋아요 공개적으로 사용 가능한 정보저장만 되기 때문에
    • 결제 정보: 사용자 은둔(계좌 번호, 주문 번호, 사용자 이름 등)
    • 위와 같은 이유로. 사용자의 개인 정보와 같은 민감한 정보는 주문 미리보기 DTO에 표시할 필요가 없기 때문입니다.
  • 학생 및 법적 보호자
    • 대학생: 학생의 정보를 담고 있습니다.
    • 보호자: 학부모 정보가 포함되어 있습니다.
    • 서비스에 따라 다릅니다. 자택서신이나 학부모의 동의가 필요한 경우를 제외하고는 학교라고 가정 법정대리인이 수시로 이용하는 정보있기 때문에 별개입니다.


일대다 / 다대일


설명:

각 레코드 일대다관계를 맺을 때 사용합니다.

사용 예:

  • 게시물 및 댓글
  • 회사와 직원

이점:

  • 참조 무결성
  • 쿼리 성능 향상
  • 데이터 중복 최소화

고려해야 할 사항:

일대다 관계도 데이터의 특성을 고려하지만 다른 관계보다 상당히 직관적입니다.

주로 많은 사람이 하나에 의존할 때 설계됩니다.. 그렇지 않은 경우도 있습니다. (예: 게시물 해시태그, 학생 및 코스)

이에 대해서는 다대다 섹션에서 설명합니다.


너무 많이


설명:

각 레코드 너무 많이에 매핑될 때 사용됩니다.

사용 예:

  • 게시물 및 해시태그
  • 학생과 과정

이점:

  • 참조 무결성
  • 쿼리 성능 향상
  • 데이터 중복 최소화

고려해야 할 사항:

다 대 다는 본질적으로 두 가지 설계 방법으로 나뉩니다.

  • 단지 다대다 방식의 디자인
  • 다대일을 두 번 그리고 중간에 사용*매핑 테이블사용하는 방법

매핑 테이블이란 무엇입니까?


이 감정

너무 많이 관계에서 다대다를 사용하지 않고 두 테이블의 다대일처럼 두 테이블 사이의 값을 JOIN하는 방식이다.

대부분의 다대다(many-to-many)는 매핑 테이블을 통해 교환할 수 있습니다.

다대다 대신 매핑 테이블을 언제 사용해야 합니까?

이점:

  • 데이터 정규화: 중복 데이터를 최소화하여 효율적인 데이터 관리가 가능합니다.
  • 확장성: 매핑 테이블을 통해 새 엔터티를 쉽게 추가하거나 삭제할 수 있습니다.
  • 성능: 다대다 관계에서 JOIN을 사용하여 관련 엔터티를 쿼리하면 정확한 결과를 제공하고 중복 데이터를 제거합니다.

불리:

  • 설계 복잡성: 다대다 관계를 구현하려면 중간에 매핑 테이블을 추가하여 복잡한 데이터 모델을 구축해야 합니다.
  • 성능: 매핑 테이블을 사용하면 두 테이블 간에 JOIN이 필요하므로 데이터베이스 성능에 영향을 줄 수 있습니다.
  • 데이터 무결성: 매핑 테이블을 사용하는 경우 중복 데이터 제거 실패는 데이터 무결성을 위반합니다.아마도. 또한 삭제된 데이터의 취급에 주의하십시오.

요약하면 매핑 테이블은 중복 데이터가 필요하지 않을 때 유용합니다. 두 개의 FK를 COMPOSITE KEY로 설정하기만 하면 됩니다.

언제 복합 키를 사용해야 합니까?

그러나 약간의 성능 저하가 있을 수 있습니다.

이러한 관점에서 위에서 설명한 다대다 예제를 사용하는 방법을 설계할 수 있습니다.

  • 게시물 및 해시태그: 중복 여부를 확인하기 위해 새 해시태그를 생성해서는 안 됩니다. 매핑 테이블 방식
  • 참석한 학생 및 과정: 과정을 반복하여 반복할 수 있으므로 재확인할 필요가 없습니다. 성능을 위해 매핑 테이블이 사용되지 않습니다.