<3번>왜 대학의 기본키가 학과의 외래키가 되는 건가요?? (학과의 기본키가 대학의 외래키가 아닌...)
안녕하세요 길벗수험서 운영팀입니다.
<학과> 테이블과 <대학> 테이블을 구성했다고 가정해보세요.
<학과> 테이블에 구성된 여러개의 튜플은 <대학> 테이블에 해당하는 하나의 튜플에 연결됩니다. 즉, 보기 1번과 같이 '단과대학명'이라는 속성을 추가해서 이러한 연결이 가능하죠.
말씀하신대로 반대로 구성해보죠.
<대학> 테이블에 구성된 하나의 튜플은 <학과> 테이블의 여러개의 튜플에 연결됩니다.
<대학> = {단과대학명, 학장이름, 학과코드} 이와 같이 구성하게 되면, 하나의 단과대학에 여러개의 학과코드가 부여되면서 릴레이션의 기본 원칙인 '원자성'을 위배하게 됩니다.
즉, 하나의 튜플을 예로 들자면
(학과코드 1001을 경영학과, 1002를 경제학과, 1003을 컴공과 라고 가정)
[단과대학명 / 학장이름 / 학과코드]
서울대 / 김갑동 / 1001, 1002, 1003
이렇게 하나의 튜플에 해당하는 하나의 속성이 여러 개의 값을 갖는 상황이 발생하게 됩니다.
그렇다고
[단과대학명 / 학장이름 / 학과코드]
서울대 / 김갑동 / 1001
서울대 / 김갑동 / 1002
서울대 / 김갑동 / 1003
이렇게 구성하게 되면 기본키가 되는 '단과대학명'이 유일성을 위배하게되기 때문에 안됩니다.
행복한 하루되세요 :)
-
관리자2020-03-02 14:20:28
안녕하세요 길벗수험서 운영팀입니다.
<학과> 테이블과 <대학> 테이블을 구성했다고 가정해보세요.
<학과> 테이블에 구성된 여러개의 튜플은 <대학> 테이블에 해당하는 하나의 튜플에 연결됩니다. 즉, 보기 1번과 같이 '단과대학명'이라는 속성을 추가해서 이러한 연결이 가능하죠.
말씀하신대로 반대로 구성해보죠.
<대학> 테이블에 구성된 하나의 튜플은 <학과> 테이블의 여러개의 튜플에 연결됩니다.
<대학> = {단과대학명, 학장이름, 학과코드} 이와 같이 구성하게 되면, 하나의 단과대학에 여러개의 학과코드가 부여되면서 릴레이션의 기본 원칙인 '원자성'을 위배하게 됩니다.
즉, 하나의 튜플을 예로 들자면
(학과코드 1001을 경영학과, 1002를 경제학과, 1003을 컴공과 라고 가정)
[단과대학명 / 학장이름 / 학과코드]
서울대 / 김갑동 / 1001, 1002, 1003
이렇게 하나의 튜플에 해당하는 하나의 속성이 여러 개의 값을 갖는 상황이 발생하게 됩니다.
그렇다고
[단과대학명 / 학장이름 / 학과코드]
서울대 / 김갑동 / 1001
서울대 / 김갑동 / 1002
서울대 / 김갑동 / 1003
이렇게 구성하게 되면 기본키가 되는 '단과대학명'이 유일성을 위배하게되기 때문에 안됩니다.
행복한 하루되세요 :)
-
관리자2020-03-02 20:47:57
안녕하세요 길벗수험서 운영팀입니다.
예, 알고계신 것이 맞습니다.
다만 말씀하신 경우는 개체와 개체 간의 관계를 1:n으로 표시할 때에만 해당합니다.
예를 들어 324쪽 3번의 해설에서 <소속> 테이블과 <대학> 테이블만을 두고 보았을 때 <대학> 테이블의 단과대학명은 PK, <소속> 테이블의 '단과대학명'은 FK가 되겠죠.
다만 3번 문제나 4번 문제의 ER 다이어그램에서는 관계(마름모)와 개체(사각형)의 관계를 (1, N)으로 표현하고 있는데 이는 어느 한쪽이 1인지 N인지를 명확히 표시하고 있지 않다는 점 때문에 명확한 공식을 세울 수가 없습니다.
<소속>과 <대학> 사이에는 (1, N)이라고 표시하고 있지만 <소속>이 1인지 <대학>이 1인지 특정할 수 없다는 점 때문에, 일반적인 이치를 따져서 파악해야 문제를 풀 수 있습니다.
행복한 하루되세요 :)
-
*2020-03-02 16:09:30
그러면 어느쪽의 pk가 다른쪽의 fk로 되는지는 entity명을 보고 파악해야 하는 건가요??
학교 데이터베이스 수업 때 1:N인 관계일 경우 1인 쪽의 pk가 N쪽의 fk로 된다는 공식(?)을 배웠던 것 같은데,
기억이 확실하지 않아서 맞는지 여쭤보려고 추가질문 드립니다.