Foreign Key 설정시 0 2 1,163

by kjp [DB 모델링/설계] Foreign Key [2020.04.08 11:16:42]


Foreign Key 설정에 관한 질문입니다.


1) 반 테이블 : ClassRoom
2) 반에 속한 학생 테이블 : Student
3) 개별 학생들의 Data : Student_Data

기본적인 연관 관계는 아래와 같은데요,
ClassRoom <- Student <- Student_Data

여기서 검색 편의를 위해서 Student_Data에 ClassRoom <- Student_Data 연관관계를 추가한다면

student_data
    student_id  FK (student_id in student)
    class_id    FK (class_id in classroom) : 검색 편의를 위해 추가

검색시 편의를 위해 student_data 테이블만으로 바로 검색 가능하도록
class_id도 student_data 테이블에 FK로 추가한다면,

이것이 적절한 설계인지,
아니면 혹시 Foreign Key 설정을 남발하는 것은 아닌지 궁금합니다.

중간 단계를 건너뛰는 연관 관계가 생겨버려서 바람직하지 않은 것 같기도 하고...

 

by 마농 [2020.04.08 12:22:50]

학생과 반과의 관계에 따라 다를 것 같습니다.
A. 한 학생은 한개 반에만 속한다?
B. 한 학생은 여러 반에 속할 수 있다?
A 의 경우엔 2)번 테이블은 아예 필요 없을 것 같구요. 바로 1) - 3) 연결
B 의 경우엔 3)번 테이블에 반 속성을 둘 수 없죠. 만약 둔다면 대표 반 의미의 속성


by kjp [2020.04.08 13:06:26]

답변 감사드립니다~!

한 학생은 한개 반에만 속합니다.
그리고 student table은 학생 개인 정보, student_data table은 학생 성적 정보라서 테이블을 분리해놓는데,

student_data에는 student_id를 FK로 해놓고,
여기에 반 단위의 성적 검색, 통계 등을 편하게 하려고 class_id도 FK로 추가하는 것인데요.

DB 설계 초보라서
저런 편의를 위해서 FK를 늘리는 것이 DB설계의 기본 관점/연관 관계 설계에서 바람직한 것인가 싶어서 문의드립니다.

저런 FK를 추가하지 말고, 검색/통계시 그냥 join을 통하는 것이 바람직할까요?

 

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입