1. 72강 온라인 강의에서 참조무결성을 설명할때 외래키값은 NULL이 되면 안되다 하는데
2권 52페이지 책을 보면 참조 무결성은 외래키값은 NULL이여야 한다 적혀있습니다.
또한 강의에서 물품 릴레이션의 물품번호가 외래키라고 하는데
책에서는 물품번호는 기존키이고 고객 릴레이션의 구입물품번호가 외래키라고 적혀있습니다.
강의 오류 아닌가요?
참조무결성과 그예에 대해 정확하게 가르쳐주시면 감사하겠습니다.
2. 2권 77페이지에서도 SQL문의 ON DELETE SET NULL과 ON UPDATE CASCADE를 설명할때 이상한데
책에서 보면 2개는 참조테이블의 속성값 변화에 따라 기본 테이블이 변한다고 적혀있습니다.
FOREIGN KEY(전공) REFERENCES 학과(학과코드)라 하면
기본테이블은 학생테이블이며 참조테이블은 학과테이블 아닌가요?
그러면 학과테이블의 학과코드 속성값이 삭제되면 학생테이블의 전공 속성값이 NULL로 변한다
=>ON DELETE SET NULL
학과테이블의 학과코드 속성값이 변경되면 학생테이블의 전공 속성값도 변한다
=>ON UPDATE CASCADE
아닌가요? 그런데 온라인강의 74강에선 반대로 기본테이블(학생테이블)이 변하거나 삭제될때
참조테이블(학과테이블)이 변하는것처럼 말씀하시던데 너무 혼동되네요.
3. 77페이지 '잠깐만요'에서 FOREIGN절에 CONSTRAINT절 사용에 보면 외래키 이름을 설정할 수 있다고 하는데
그럼 예제 마지막줄에 CONSTRAINT 제약조건명 FOREIGN KEY(전공)~여기서
제약조건명이 외래키 이름이 되나요?
4. 99쪽에 예제 1번, 101쪽에 예제 1번 SELECT 학번, 이름, 학생.학과코드, 학과명
102쪽 예제 2번에 보면 SELECT 학번, 이름, 학과.학과코드, 학과명
으로 적어놨는데 '학생.학과코드'라 적는거나 '학과.학과코드'나 적는거나 상관없나요?
즉. 99쪽에 예제 1번, 101쪽에 예제 1번,예제 2번에 학과.학과코드=학생.학과코드가 되는거 맞나요?
빠른답변 부탁드립니다.
안녕하세요. 길벗 수험서 운영팀입니다.
1. 72강 온라인 강의에서 참조무결성을 설명할때 외래키값은 NULL이 되면 안되다 하는데
2권 52페이지 책을 보면 참조 무결성은 외래키값은 NULL이여야 한다 적혀있습니다.
또한 강의에서 물품 릴레이션의 물품번호가 외래키라고 하는데
책에서는 물품번호는 기존키이고 고객 릴레이션의 구입물품번호가 외래키라고 적혀있습니다.
강의 오류 아닌가요?
참조무결성과 그예에 대해 정확하게 가르쳐주시면 감사하겠습니다.
[답변]
답변이 늦어져 죄송합니다.
강의 관련 내용은
디지털 콘텐츠 팀에서 답변할 수 있도록 전달하였습니다.
강의 확인 후 답변을 하겠다는 전달을 받았으니 조금만 기다려주세요.
2. 2권 77페이지에서도 SQL문의 ON DELETE SET NULL과 ON UPDATE CASCADE를 설명할때 이상한데 책에서 보면 2개는 참조테이블의 속성값 변화에 따라 기본 테이블이 변한다고 적혀있습니다. FOREIGN KEY(전공) REFERENCES 학과(학과코드)라 하면 기본테이블은 학생테이블이며 참조테이블은 학과테이블 아닌가요?
그러면 학과테이블의 학과코드 속성값이 삭제되면 학생테이블의 전공 속성값이 NULL로 변한다
=>ON DELETE SET NULL
학과테이블의 학과코드 속성값이 변경되면 학생테이블의 전공 속성값도 변한다
=>ON UPDATE CASCADE
아닌가요? 그런데 온라인강의 74강에선 반대로 기본테이블(학생테이블)이 변하거나 삭제될때
참조테이블(학과테이블)이 변하는것처럼 말씀하시던데 너무 혼동되네요.
[답변]
불편을 드려 죄송합니다.
이 부분은 영상을 확인 후 빠르게 조치하도록 하겠습니다.
해당 부분의 설명은 아래 내용을 확인해주세요.
<학생>
이름 |
학번(PK) |
전공(FK) |
성별 |
생년월일 |
김갑 |
0502 |
C185 |
남 |
1989-01-02 |
이을 |
0803 |
B465 |
여 |
1991-11-16 |
박병 |
1302 |
A222 |
남 |
1993-03-22 |
<학과>
학과코드(PK) |
담당교수 |
A222 |
이하늘 |
B465 |
김수잔 |
C185 |
박용호 |
D134 |
최을동 |
예시로 위와 같은 두 테이블이 있다고 가정하겠습니다.
① <학과> 테이블을 ‘학과코드’를 참조하는 <학생> 테이블의 ‘생년월일’ 속성의 값은 ‘학과코드’ 속성의 값들과 동일하거나 NULL값이어야 합니다. (참조 무결성)
② ON DELETE SET NULL : <학생> 테이블의 외래키인 ‘전공’ 속성의 값들은 아무리 지워도 <학과> 테이블의 ‘학과코드’는 변경될 수 없습니다. 반대로 이 명령어를 사용했을 때 참조되는 <학과> 테이블의 ‘학과코드’의 값이 삭제될 경우 참조하는 <학생> 테이블의 ‘전공’ 속성의 값들이 NULL로 변경되게 됩니다.
예를 들어 ‘학과코드’ 속성의 값 중 C185를 지우게 된다면 아래와 같이 됩니다.
<학생>
이름 |
학번(PK) |
전공(FK) |
성별 |
생년월일 |
김갑 |
0502 |
NULL |
남 |
1989-01-02 |
이을 |
0803 |
B465 |
여 |
1991-11-16 |
박병 |
1302 |
A222 |
남 |
1993-03-22 |
<학과>
학과코드(PK) |
담당교수 |
A222 |
이하늘 |
B465 |
김수잔 |
D134 |
최을동 |
③ ON UPDATE CASCADE : 참조되는 <학과> 테이블에서 ‘학과코드’가 변경되게 되면 참조하는 <학생> 테이블의 같은 값을 지닌 외래키(FK)도 변경되게 되는 속성입니다. 예를 들어 '학과코드'의 “A222”를 “A333”으로 변경하게 되면 <학생> 테이블의 ‘전공’에 있는 모든 “A222”가 “A333"으로 변경된다는 이야기 입니다.
<학생>
이름 |
학번(PK) |
전공(FK) |
성별 |
생년월일 |
김갑 |
0502 |
C185 |
남 |
1989-01-02 |
이을 |
0803 |
B465 |
여 |
1991-11-16 |
박병 |
1302 |
|
남 |
1993-03-22 |
<학과>
학과코드(PK) |
담당교수 |
|
이하늘 |
B465 |
김수잔 |
C185 |
박용호 |
D134 |
최을동 |
3. 77페이지 '잠깐만요'에서 FOREIGN절에 CONSTRAINT절 사용에 보면 외래키 이름을 설정할 수 있다고 하는데 그럼 예제 마지막줄에 CONSTRAINT 제약조건명 FOREIGN KEY(전공)~여기서
제약조건명이 외래키 이름이 되나요?
[답변]
외래키 이름이라는 것이 속성명을 말씀하시는 것이라면 아닙니다.
외래키인 속성명은 FOREIGN KEY 뒤 괄호에 있는 ‘전공’이 외래키인 속성명입니다.
CONTRAINT 뒤에 오는 ‘제약조건명’ 부분은 외래키 설정 제약조건 전체를 대신해서 사용할 수 있는 명칭이라고 생각하시면 될 것 같습니다.
4. 99쪽에 예제 1번, 101쪽에 예제 1번 SELECT 학번, 이름, 학생.학과코드, 학과명
102쪽 예제 2번에 보면 SELECT 학번, 이름, 학과.학과코드, 학과명
으로 적어놨는데 '학생.학과코드'라 적는거나 '학과.학과코드'나 적는거나 상관없나요?
즉. 99쪽에 예제 1번, 101쪽에 예제 1번,예제 2번에 학과.학과코드=학생.학과코드가 되는거 맞나요?
[답변]
예, 맞습니다.
두 테이블을 JOIN할 때 겹쳐지는 속성의 경우 SELECT에 들어가는 속성은 두 테이블 중 어떤 테이블의 속성이 들어가도 상관없습니다.
행복한 하루되세요.^^
-
*2018-09-14 14:52:00
안녕하세요. 길벗 수험서 운영팀입니다.
1. 72강 온라인 강의에서 참조무결성을 설명할때 외래키값은 NULL이 되면 안되다 하는데
2권 52페이지 책을 보면 참조 무결성은 외래키값은 NULL이여야 한다 적혀있습니다.
또한 강의에서 물품 릴레이션의 물품번호가 외래키라고 하는데
책에서는 물품번호는 기존키이고 고객 릴레이션의 구입물품번호가 외래키라고 적혀있습니다.
강의 오류 아닌가요?
참조무결성과 그예에 대해 정확하게 가르쳐주시면 감사하겠습니다.
[답변]
답변이 늦어져 죄송합니다.
강의 관련 내용은
디지털 콘텐츠 팀에서 답변할 수 있도록 전달하였습니다.
강의 확인 후 답변을 하겠다는 전달을 받았으니 조금만 기다려주세요.
2. 2권 77페이지에서도 SQL문의 ON DELETE SET NULL과 ON UPDATE CASCADE를 설명할때 이상한데 책에서 보면 2개는 참조테이블의 속성값 변화에 따라 기본 테이블이 변한다고 적혀있습니다. FOREIGN KEY(전공) REFERENCES 학과(학과코드)라 하면 기본테이블은 학생테이블이며 참조테이블은 학과테이블 아닌가요?
그러면 학과테이블의 학과코드 속성값이 삭제되면 학생테이블의 전공 속성값이 NULL로 변한다
=>ON DELETE SET NULL
학과테이블의 학과코드 속성값이 변경되면 학생테이블의 전공 속성값도 변한다
=>ON UPDATE CASCADE
아닌가요? 그런데 온라인강의 74강에선 반대로 기본테이블(학생테이블)이 변하거나 삭제될때
참조테이블(학과테이블)이 변하는것처럼 말씀하시던데 너무 혼동되네요.
[답변]
불편을 드려 죄송합니다.
이 부분은 영상을 확인 후 빠르게 조치하도록 하겠습니다.
해당 부분의 설명은 아래 내용을 확인해주세요.
<학생>
이름
학번(PK)
전공(FK)
성별
생년월일
김갑
0502
C185
남
1989-01-02
이을
0803
B465
여
1991-11-16
박병
1302
A222
남
1993-03-22
<학과>
학과코드(PK)
담당교수
A222
이하늘
B465
김수잔
C185
박용호
D134
최을동
예시로 위와 같은 두 테이블이 있다고 가정하겠습니다.
① <학과> 테이블을 ‘학과코드’를 참조하는 <학생> 테이블의 ‘생년월일’ 속성의 값은 ‘학과코드’ 속성의 값들과 동일하거나 NULL값이어야 합니다. (참조 무결성)
② ON DELETE SET NULL : <학생> 테이블의 외래키인 ‘전공’ 속성의 값들은 아무리 지워도 <학과> 테이블의 ‘학과코드’는 변경될 수 없습니다. 반대로 이 명령어를 사용했을 때 참조되는 <학과> 테이블의 ‘학과코드’의 값이 삭제될 경우 참조하는 <학생> 테이블의 ‘전공’ 속성의 값들이 NULL로 변경되게 됩니다.
예를 들어 ‘학과코드’ 속성의 값 중 C185를 지우게 된다면 아래와 같이 됩니다.
<학생>
이름
학번(PK)
전공(FK)
성별
생년월일
김갑
0502
NULL
남
1989-01-02
이을
0803
B465
여
1991-11-16
박병
1302
A222
남
1993-03-22
<학과>
학과코드(PK)
담당교수
A222
이하늘
B465
김수잔
D134
최을동
③ ON UPDATE CASCADE : 참조되는 <학과> 테이블에서 ‘학과코드’가 변경되게 되면 참조하는 <학생> 테이블의 같은 값을 지닌 외래키(FK)도 변경되게 되는 속성입니다. 예를 들어 '학과코드'의 “A222”를 “A333”으로 변경하게 되면 <학생> 테이블의 ‘전공’에 있는 모든 “A222”가 “A333"으로 변경된다는 이야기 입니다.
<학생>
이름
학번(PK)
전공(FK)
성별
생년월일
김갑
0502
C185
남
1989-01-02
이을
0803
B465
여
1991-11-16
박병
1302
A222A333남
1993-03-22
<학과>
학과코드(PK)
담당교수
A222A333이하늘
B465
김수잔
C185
박용호
D134
최을동
3. 77페이지 '잠깐만요'에서 FOREIGN절에 CONSTRAINT절 사용에 보면 외래키 이름을 설정할 수 있다고 하는데 그럼 예제 마지막줄에 CONSTRAINT 제약조건명 FOREIGN KEY(전공)~여기서
제약조건명이 외래키 이름이 되나요?
[답변]
외래키 이름이라는 것이 속성명을 말씀하시는 것이라면 아닙니다.
외래키인 속성명은 FOREIGN KEY 뒤 괄호에 있는 ‘전공’이 외래키인 속성명입니다.
CONTRAINT 뒤에 오는 ‘제약조건명’ 부분은 외래키 설정 제약조건 전체를 대신해서 사용할 수 있는 명칭이라고 생각하시면 될 것 같습니다.
4. 99쪽에 예제 1번, 101쪽에 예제 1번 SELECT 학번, 이름, 학생.학과코드, 학과명
102쪽 예제 2번에 보면 SELECT 학번, 이름, 학과.학과코드, 학과명
으로 적어놨는데 '학생.학과코드'라 적는거나 '학과.학과코드'나 적는거나 상관없나요?
즉. 99쪽에 예제 1번, 101쪽에 예제 1번,예제 2번에 학과.학과코드=학생.학과코드가 되는거 맞나요?
[답변]
예, 맞습니다.
두 테이블을 JOIN할 때 겹쳐지는 속성의 경우 SELECT에 들어가는 속성은 두 테이블 중 어떤 테이블의 속성이 들어가도 상관없습니다.
행복한 하루되세요.^^