실무에서 외래키를 사용하지 않는 이유가 궁금합니다.
8899
작성한 질문수 1
안녕하세요, 외래키 내용을 설명해주시면서 실무에서는 외래키를 사용하지 않고, 참조 관계에 있는 테이블만 명시한다고 하셨는데 그 원인이 궁금합니다.
답변 1
2
torch010 님 안녕하세요 :)
외래키를 사용하는 이유는 데이터의 정합성을 유지하기 위해서 사용을 하는데요.
하지만 실무에서는 수작업으로 데이터를 다루는(수정, 생성) 경우가 빈번합니다. 이때 테이블의 관계상 데이터 생성 순서가 맞지 않으면 에러가 발생하기도 하고, 어쩔 수 없이(e.x, 데이터 재생성을 위한 등) 데이터(자식 테이블)를 삭제 하는 경우 CASCADE 옵션이 걸려 있다면 부모 테이블 데이터가 삭제가 되는 참사가 발생하기도 합니다.
문제가 생겨 빠르게 수작업을 처리를 해야 되는 경우에 외래키로 인해서 처리가 늦어질 수도 있고, 작업을 처리하는 개발자의 번거로움이 있습니다.
외래키가 걸려 있는 테이블을 다룰 때 수작업 시 번거로움으로 인해서 외래키를 사용하지 않는 경우가 많습니다 :)
또 다른 이유로는 데이터베이스 설계를 초기에 잘 해놓았더라도 시간이 지나면서 추가 개발과 설계가 수정이 되어 질 수 있습니다. 데이터 정합성을 유지하기 위한 외래키가 이후에는 더 큰 수정 개발을 불러 일으킬 수도 있겠습니다. 외래키를 만들 때는 득과 실을 잘 따져보고 걸어야 되지만 제 경우에는 실제 실무(Spring boot 및 오라클, MY-SQL 기반)에서는 아직까지는 외래키를 생성하는 경우를 본 적이 없습니다.
도움이 되셨으면 좋겠습니다.
감사합니다.
DB 설계와 JPA 관련 질문입니다
0
3
1
21c 버전으로 해도 무방한가요?
0
25
3
vercel실행 - failed to fetch
0
25
2
드랍 테이블로 지운 ordes에 대해서 질문
0
26
1
문제 풀이 1번 질문
0
31
1
아주 작은 정오표 전달드립니다.
0
58
2
mysql워크벤치를 실행할때마다 오류가 뜹니다. 해결 방법좀 가르켜주세요.
0
51
1
함수기반 인덱스
0
32
2
날짜 인덱스관련 질문
0
27
1
복합인덱스 확인법
0
25
0
order_product 까마귀발
0
44
2
공통 코드 , 계층 구조 질문
1
40
1
77번 문제
0
27
1
76번 문제
1
36
2
64번 문제 관련
0
39
2
2,3차 정규화 질문
0
45
2
수강완료 후 문의 드립니다.
1
47
2
실전 모의고사 난이도
0
67
2
Part2 기출 문제 및 해설 자료 파일 없음 형태
0
55
2
mysql 연결
0
405
1
AWS사용과 슬랙 접속에 어려움이 있습니다
0
348
1
AWS 결제 관련 도움 부탁드립니다.
0
463
1
AWS에서 9만원이 넘는 금액이 결재되었습니다..ㅠㅠ
0
644
2
SQL Error 관련
0
248
1





