인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

Inflearn Community Q&A

bluebamus's profile image
bluebamus

asked

Database Intermediate (Modeling)

Book loan management practice problem 2

1:1 관계에 질문이 있습니다.

Written on

·

171

0

부모 테이블에 자식 테이블 명을 넣으면 된다는 말이 이해가 되지 않습니다.

 

처음에 이렇게 생각했습니다.

부모 테이블의 PK를 자식 테이블의 PK와 동일하게 맞춰라

그러면 PK 없이 각 테이블의 연관성 있는 데이터를 동일한 PK로 가져올 수 있다.

 

헌데 과연 이게 적절한지 궁금합니다.

관련이 있는 테이블이라면 정확성과 신뢰성을 위해 부모 테이블에 자식 테이블의 PK가 있어야 하는게 아닌가?

그리고 자식 테이블의 PK가 있다면, PK 값은 중요하지 않지 않을까? 해당 PK만 참고하면 직관적으로 해당 테이블의 PK 위치를 참고하면 되니깐, 

1:1 무결성에 의해 부모가 삭제되면 연관된 자식 테이블의 데이터도 삭제되도록 "on delete cascade"를 설정하면 되는거 아닌지요?

혹 말씀하신 내용이  Table 내 데이터 크기를 최적화 하기 위한 것인지 알고 싶습니다

강의 중 언급하신 내용이 이해하기가 조금 어려워 질문을 드립니다.

DBMS/RDBMS데이터 엔지니어링

Answer 2

2

kjlee님의 프로필 이미지
kjlee
Instructor

예를 들어 한달에 천만개의 데이터가 쌓이는 테이블이 있습니다. 일년을 가져가면 일억개의 레코드가 생기겠죠. 이때 테이블을 일년단위로 분할해서 관리할 필요가  생깁니다. 테이블명이 로그라고 한다면 최근테으블은 놔두고 작년데이터들을 다른 테이블을 만들어 옮겨놔야 하는경우가 있습니다. 예늘 들어 로그2011, 로그2010과 같이 테이블을 만들고 데이터를 옮기는거죠. 이때는 여러개의 로그테이블을 관리하는 로그관리테이블이 필요하고 그 테이블에는 데이블명이 들어가서 연결되는 구조를 설명한겁니다.

이렇게 백업을 목적으로 만든 테이블들은 조회의 목적으로만 사용되고, 다른테이블들하고 관계설정을 하지 않습니다. 왜냐면 무결성은 이미 검증된거고 읽기전용으로만 사용하기 때문입니다

0

kjlee님의 프로필 이미지
kjlee
Instructor

내용을 오해하신것 같습니다. 항상 pk, fk로 이어지도록 모델링을 할수는 없습니다. 그런 경우가 많이 나옵니다. 특히 로그나 이와 유사한 테이블을 무한히 크게 가져갈 수는 없죠. 이런 경우를 설명하고 있는거예요

bluebamus님의 프로필 이미지
bluebamus
Questioner

해당 영상을 여러번 반복해서 봤는데 이해가 잘 안가서 질문 드립니다.

pk fk로 연결할 수 없는 모델링의 경우가 어떤게 있는지 잘 이해가 안갑니다.

분리된 테이블에 키를 만들 수 없다면, 임의의 자동 증가키를 할당할 수 있을텐데

어떤 문제가 발생할 경우, pk fk로 연결할 수 없는 상황이 되는건지 알고 싶습니다.

 

그리고 혹시나 해서 나름 생각해 보았습니다.

예로 로그를 말씀 주셨는데 로그의 컬럼 수가 많은 경우, 해당 테이블에서 중복되는 내부 종속자들을

새로운 테이블로 분리하고, 이러한 경우 지속적으로 순간 데이터들이 누적 증감되므로

외래키를 연결하는 것 자체가 불필요한 용량 낭비라 인지될 경우,

부모 테이블의 특정 컬럼들에 관련한 테이블 명 자체를 키 대용으로 저장한다.

그리고 모든 1:1 관계의 자식 테이블 기본 키 값을 부모의 관련한 튜플과 동일한 키 값으로 할당한다.

 

제가 생각한 경우가 맞는지 알고 싶습니다.

혹, 부족한 부분이 있다면 경우를 빗대어 설명을 해 주시면 감사드리겠습니다.

제가 부족하여 많이 어려운 부분에 대해 독학으로 이해가 어려운것 같습니다.

좋은 하루 되시길 바라겠습니다.

bluebamus's profile image
bluebamus

asked

Ask a question