DB 외래키를 사용안했을 때의 장, 단점

Kevin·2024년 3월 8일

Database

목록 보기
10/15
post-thumbnail

서론

지금까지 외래키를 늘 사용해오다가, 외래키를 사용하지 않는 테이블들을 보게되었다.

분명 무슨 이유나 장점이 있기에 외래키를 사용하지 않고, 테이블간의 관계를 끊었을 것이기에 한번 이번에 알아보려고 한다.


외래키 사용 장점

그러면 먼저 외래키를 왜 사용하는걸까?

바로 무결성을 유지하기 위해서 사용한다.

무결성이란 현재 데이터베이스에 존재하는 값이 틀리지 않았다는 것을 증명하는 것을 의미한다.


만약 외래키 값을 수정하려고 할 때 이를 참조하고 있는 모든 릴레이션에서 마찬가지로 외래키가 수정되어야 하는데,

외래키는 이 때 ‘ON UPDATE CASCADE’ 라는 속성을 추가만 해주었다면 무결성을 지키기 위해서 외래키 수정시 참조 릴레이션의 외래키도 모두 자동으로 변경해준다.

또는 어떤 키를 수정(ON UPDATE, 이하 MySQL기준) 또는 삭제(ON DELETE)하려고 할 때 다른 곳에서 해당 키를 참조하고 있다면 키 자체를 수정, 삭제 못하도록 막거나(RESTRICT)
참조하는 릴레이션에서도 모두 함께 수정, 삭제되도록 할 수 있다(CASCADE)

이렇게 외래 키를 사용하면 서로 얽히고 얽힌 릴레이션들의 데이터들이 모두 무결성을 갖추도록 할 수 있다.

즉 무결성을 위해서 외래키를 사용한다.


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

귀찮다.

위의 말이 싸가지 없이(?) 보일 수 있겠지만, 어느정도는 일맥상통한다.

외래키 사용시 제약 조건 및 cascade 등 개발자가 신경써야 할 부분이 늘어나기에 데이터의 양이 많아지고, 관계가 복잡해질수록 더욱 심해진다.


또한 참조되는 릴레이션은 반드시 참조하는 릴레이션보다 먼저 만들어져 있어야하기에 생성, 수정시 순서를 신경써주어야 한다.


즉 무결성, 정합성을 희생시켜 개발 편의와 안정성, 확장성을 도모하기 위함이라고 할 수 있다.

profile
Hello, World! \n

0개의 댓글