본문 바로가기

프로그래밍/이것저것 일하면서

[데이터베이스] FK 쓸까, 말까? 오늘 외래키를 삭제한 이유

반응형

완성된 프로그램 솔루션을 납품하는 일은 언제나 커스터마이징과의 싸움입니다. 이 부분을 얼마나 줄일수 있냐에 따라 수익성이 달려 있다고 해도 과언이 아닙니다.

아무것도 없는 허허벌판에 공사를 하는 것은 오히려 쉬울 수 있습니다. 하지만 이미 복잡한 시스템과 체계를 갖추어 놓은 고객사에 납품을 할 때는 생각보다 많은 난관에 봉착하게 됩니다. 

오늘은 고객사에서 오라클 데이터베이스의 외래키(FK, Foreign Key)를 삭제해달라는 요구를 받아 검토를 해보았습니다. 이유는 마이그레이션 이유인데요, 외래키를 써야하는 경우와 쓸 수 없는 경우에 대해 정리해보았습니다.

관계형 데이터베이스에서 외래키를 쓰는 & 쓰지 않는 경우

데이터베이스에서 외래키(Foreign Key)는 다른 테이블의 기본키(Primary Key)를 참조하는 제약 조건입니다. 즉, 한 테이블의 컬럼에 저장된 값이 다른 테이블의 기본키 값과 일치해야만 데이터베이스에서 유효한 참조 관계를 맺을 수 있습니다.

외래키를 사용하는 이유는 다음과 같습니다.

 

외래키를 사용하는 이유

  1. 데이터 일관성 유지: 외래키를 사용하면 참조하는 값이 변경되거나 삭제될 때, 이에 대한 유효성 검사가 이루어져 데이터 일관성을 유지할 수 있습니다.
  2. 데이터 무결성 보장: 외래키를 사용하면 데이터베이스에서 트랜잭션(Transaction) 처리 과정에서 데이터 무결성을 보장할 수 있습니다.
  3. 효율적인 데이터 검색: 외래키를 사용하면 데이터베이스에서 두 개 이상의 테이블을 연결해 검색을 수행할 수 있습니다.

외래키를 사용하지 않는 이유

  1. 성능 저하: 외래키를 사용하면 데이터 검색 및 수정 작업 시 연관된 다른 테이블까지 조회해야 하므로 성능 저하가 발생할 수 있습니다.
  2. 복잡한 데이터 모델링: 외래키를 사용하면 복잡한 데이터 모델링을 수행해야 하므로 설계 및 유지보수가 어려울 수 있습니다.
  3. 인덱스 필요: 외래키를 사용하면 연관된 다른 테이블의 인덱스도 함께 생성해야 하므로 데이터베이스 용량이 더 커지게 됩니다.

외래키를 사용하지 않아도 되는 경우도 있습니다. 예를 들어 중복된 데이터를 제거하는 등의 이유로 테이블을 분리할 때, 외래키를 사용하지 않는 경우가 있을 수 있습니다. 그러나 보통의 경우에는 데이터 일관성과 무결성을 보장하기 위해 외래키를 사용하는 것이 좋습니다.

결론

외래키는 데이터베이스에서 데이터 일관성과 무결성을 보장하기 위한 중요한 개념입니다. 결론적으로 사용 여부는 상황에 따라 결정해야 합니다. 오늘 업무에서는 FK를 삭제하기로 결정했습니다. 마이그레이션 할 데이터의 정합성이 애초에 맞지 않아 외래키를 유지하며 데이터를 밀어넣을 수가 없었기 때문입니다.

그래서 저의 결론은 다음과 같습니다.

사용하지 못하는 것이 아니라면 사용하지 않을 이유는 없다

 

데이터베이스, 오라클, foreign key, 외래키

반응형

개발자가 그리는 인스타툰 팔로우하세요!