안녕하세요. SQL 수업 잘 들었습니다.
수업의 내용을 기반으로 데이터베이스를 구성해보고 있습니다.
1. 회원이 가입을 하면 2개 이상의 테이블에 가입을 기반으로 한 정보가 입력됩니다.
헬스클럽에 한 회원이 가입을 하면, 기본정보테이블과 바디테이블에 회원 정보가 입력됩니다.
기본정보 테이블: mem_id(인덱스용도, PK, AI) / id / 전화번호 / 등록일 / 주소 등
바디정보 테이블: body_id(인덱스용도, PK, AI) / mem_id / 신장 / 체중 / 체지방률 등
2. 회원 가입 시 위 두개의 테이블 모두에 정보가 생성이 되어야 함으로 트랜젝션으로 두 테이블의 insert를 처리했습니다.
3. 트랜젝션 내에서는 바로 반영이 되질 않고 커밋이 되고 난 후에 테이블에 반영이 되는걸로 알고 있습니다.
4. 현재 테이블 스키마에
- 바디정보 테이블의 mem_id를 기본정보 테이블의 mem_id와 FK로 참조시켜 놨습니다.
5. 트랜젝션과 쿼리를 실행해보니 회원가입 테이블에 참조할 mem_id가 없어서 바디정보 테이블에 insert 할 수 없다고 나왔습니다.
여기서 관련해 구글링을 한 결과 실무에서는 FK를 사용하지 않는다는 내용의 글들이 많았습니다.
초보자의 입장에서는 데이터 무결성을 위해 반드시 사용되어야 하는걸로 알고있습니다. 허나 위와 같은 경우 join을 통해서 처리를 한다고
하는데 과연 FK가 이론적으로는 필수적인 요소이지만 정말 실무에서는 논리적으로만 이해하고 물리적으로는 사용을 안해도 되는지
이 부분에 대해 궁금증이 생겨 선생님께 견해를 듣고 싶습니다.