소개
“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로 설정하기만 하면 됩니다.
언제 복합 키를 사용해야 합니까?
그러나 약간의 성능 저하가 있을 수 있습니다.
이러한 관점에서 위에서 설명한 다대다 예제를 사용하는 방법을 설계할 수 있습니다.
- 게시물 및 해시태그: 중복 여부를 확인하기 위해 새 해시태그를 생성해서는 안 됩니다. 매핑 테이블 방식
- 참석한 학생 및 과정: 과정을 반복하여 반복할 수 있으므로 재확인할 필요가 없습니다. 성능을 위해 매핑 테이블이 사용되지 않습니다.