728x90
"외래 키는 개념적으로는 설계에 포함되지만, 실제 데이터베이스에서는 제약 조건 없이 관리되는 경우가 많습니다."
Foregin key를 실질적으론 잘 사용하지 않고 개념만 가지고 사용한다는게 사실을 처음 들었다.
실제로 많은 개발자들이 데이터베이스에서 외래 키(Foreign Key)를 물리적으로 설정하지 않고, 개념적으로만 사용하는 경우가 많은데 아마 아래와 같은 이유들로 인한 것 같다.
1. 성능 이슈: 대규모 트랜잭션이 발생하거나 많은 데이터를 저장하는 경우 외래 키 제약 조건이 성능에 부정적인 영향을 줄 수 있습니다. 따라서 물리적으로 외래 키를 설정하면 데이터베이스의 속도가 저하될 수 있습니다.
2. 분산 시스템: 마이크로서비스 아키텍처 같은 분산 시스템에서는 여러 데이터베이스를 사용할 수 있기 때문에 물리적으로 외래 키를 설정하기 어려운 경우가 많습니다. 이 경우 서비스 레이어에서 외래 키 관계를 코드로 관리하게 됩니다.
3. 유연성: 개발 및 유지 보수 시 외래 키 제약 조건이 있으면 데이터 구조 변경이 어렵기 때문에, 유연성을 높이기 위해 외래 키를 생략하고 응용 프로그램 레벨에서 제약 조건을 관리합니다.
4. ORM 사용: 많은 개발자들이 JPA와 같은 ORM을 사용하여 외래 키 관계를 코드에서 관리합니다. 이 경우 물리적인 외래 키 설정이 없어도 데이터 무결성을 어느 정도 보장할 수 있습니다.
728x90
'STUDY > DB SQL' 카테고리의 다른 글
[SQL] 행 개수 지정 조회 SELECT TOP LIMIT FETCH FIRST ROWNUM (1) | 2024.11.07 |
---|---|
[MySQL] 테이블 스키마 백업하기 (0) | 2024.10.11 |
[MySQL][JAVA] 연동 시 Public key retrieval is not allowed 오류 (0) | 2024.10.11 |
[MyBatis] <selectKey> 시퀀스 획득 (0) | 2024.10.11 |
[MyBatis] Oracle Clob Select String 마이바티스 오라클 clob 출력 (0) | 2024.08.12 |