외래키를 사용하지 않는 DB

조은지·2021년 10월 28일
1

UMC활동

목록 보기
1/1

개인적으로 느낀 점과 링크를 적어둔 글... 개념정리글은 아닙니다..

쓰게 된 이유

오늘 동아리 스터디에서 각자 설계한 ERD를 공유하던 중, 외래키를 사용하지 않고 디비를 구축한 팀원들이 있어서 쓰게 되었다.

4주차 동아리 강의에서 실무에서는 외래키를 사용하지 않는 경우가 있다고 해서 외래키를 쓰지 않았다고 말씀하셨다.

나는 여태까지 관계형 데이터베이스에서 가장 중요한 것은 개체와 개체간의 관계이고, 관계를 표시해주기 위해서는 외래키가 필요하다고 생각을 했었다.

그리고 외래키가 데이터의 무결성을 보증해줄 수 있다라고 기억을 한다.

그래서 외래키를 사용하지 않았다는 얘기를 듣고
외래키를 사용을 안한다고? 그러면 관계형 데이터베이스 왜 쓰는거지?라고 생각을 했다.

참고한 글들

FK를 사용하지 않는 이유에 대한 글

첫번째 글에서 table lock과 row lock이 뭔지 몰라서 추가 검색을 해봤다. https://offbyone.tistory.com/225

위의 글을 읽고 외래키를 사용하지 않는 이유는 처리속도등의 성능과 확장성, 수정의 용이성 때문이라고 이해를 했다.

첫번째 글의 예시- 블로그 삭제 시 게시글 삭제를 할 때의 문제
게시글도 마찬가지로 댓글 등 다른 테이블과 연관되어있을텐데 블로그 하나를 삭제할 때 연관된 테이블에 모두 접근해 삭제를 해야되기 때문에 실행계획을 제어할 수 없다.

두번째 글은 사실 잘 이해하지 못했다. 맨 밑의 확장 가능성 부분을 읽고 어렴풋이 감만 잡는 수준..?

다른 의견을 가진 글도 있었다.
물론 문제점 해결방법은 이해를 못했다 ㅎㅎ
그래도 외래키를 사용하는 것이 이상적이라는 내용의 글이었다.

정리, 추가 궁금한 점

완전히 궁금증을 해소하지는 못했지만 관계형 데이터베이스를 사용할 때 외래키를 사용하지 않는 것이 성능적인 부분에서 더 좋다는 것을 알게 되었다.

그러면 NoSQL이랑 다른게 뭐지? 라는 생각도 했다.
(NoSQL을 잘 모름 히히)
(NoSQL과 SQL의 차이) https://gyoogle.dev/blog/computer-science/data-base/SQL%20&%20NOSQL.html

이 글에서 NoSQL의 단점 부분을 보면서 SQL을 외래키 없이 사용하면 중복된 값에 대해서 매번 업데이트 해줄 필요가 없겠구나..하면서 유추...해봄...

다른 글들도 보면서 실무에서는 설계 변경이 생길 수도 있고, 데이터 타입이 바뀔수도 있기 때문에 되도록이면 외래키를 안쓴다는 것을 알게 되었다.
실무랑 이론은 다르다는 것을 알게 되었다... ..

1개의 댓글

comment-user-thumbnail
2022년 6월 16일

오 이내용 찾고있었는데 감사함담~

답글 달기