database.sarang.net
UserID
Passwd
Database
ㆍDBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
DBMS Q&A 950 게시물 읽기
No. 950
이게 도데체무슨말인지 이해가 안갑니다~조언좀주세요~~
작성자
이성민(zzang2s)
작성일
2004-03-28 10:53
조회수
8,112

회사 데이터베이스에 두 개의 릴레이션이 포함되어 있다. EMPLOYEE릴레이션의 DEPTNO

애트리뷰트는 DEPT 릴레이션에 대한 외래 키이다. 10번 부서를 삭제하려한다.

이 때 참조 무결성을 유지하는 방안들을 설명하라.

EMP(EMPNO, EMPNAME, SALARY, DEPTNO)

DEPT(DEPTNO, DEPTNAME, MGRNO)

 

 

위의문제인데요..도통 무슨소리인지 알아먹질못하겠어요..

데이터베이스를 처음배우는데..말이 참으로 어렵네요~~

 

부탁드립니다....조언또는 해결좀 해주세요~~~

이 글에 대한 댓글이 총 5건 있습니다.

만약 단순히 아래와 같은 질문이라면 간단할듯 싶네요

10번 부서가 폐지 되었다  부서테이블에선 10번(DEPTNO)이 사라진경우이다  어찌 처리 해야 할까요?

delete 구문으로 해당 row를 지워주면 되겠지요 

 

그러나 현재는 부서 테이블에 종속된 사원테이블이 있는 이런경우

EMP 테이블과 DEPT테이블 사이에 릴레이션이 존재하기때문에

사원 테이블에 DEPTNO 가 10번으로 된것이 있다 치면

 

사원 테이블안에 부서의 정보를 가질수 있는 키가 되는 DEPTNO의

데이터는 잘못된(삭제해버린) 10번 부서를 가리키고 있겠지요.

즉.. 무결성이 깨지는 경우가 발생합니다.

 

쉽게 Primary, Foreign KEY를 활용하는 방법(해당 DBMS 에서 지원을 해주는 경우라면)

필요,효율에 따라 강제로 NULL 또는 개발자가 정의한 코드가 삽입되도록

하는 방법, LOCK 등으로 양쪽의 데이터가 일치하지 않으면 삭제,변경치 못하게 하는 방법등 여러가지가 있을듯합니다.

크게 말하자면 DB 모델링 과정에서 해결해주는방법,프로그래밍시 해결해주는 방법

두가지 다 고려 하는방법이 가능하다 보입니다.

박순성(딱따구리)님이 2004-03-29 01:41에 작성한 댓글입니다.
이 댓글은 2004-03-29 01:49에 마지막으로 수정되었습니다.

위에 순성님이 잘 설명해 두었네요.

Foreign key 와 Primary key 는 자료의 무결성을 유지하기 위한 기본적인 기능입니다. 철저하게 이해를 해야겠지요.

EMP 테이블의 DeptNo 키는 DEPT 테이블의 DeptNo 에 대한 외래키다.

이말을 잘 이해하셔야겠네요. 즉 Dept.DeptNo 에 없는 값이  EMP.DeptNo 에 들어갈수 없다는 얘기지요. 만약 Dept.DeptNo 값이 하나가 지워진다면 어떻게 될까요. 그냥 지운 것으로서 끝날까요.

아니죠. EMP.DeptNo 에서 만약 지워진 Dept.DeptNo 값을 가진 행이 존재한다면 큰일 나죠. 자료의 무결성이 깨지는 것입니다.

이럴 경우 어떻게 처리해 주어야 하는가 하는 문제가 자료의 무결성을 유지하기 위해서 어떻게 해주어야 하는가 하는 질문과 동일한 것입니다.

 

순성님이 얘기한대로 방법은 몇가지가 있습니다.

1. 지워진 Dept.DeptNo 값을 가지는 EMP 테이블내의 모든 row 들을 지워 버린다.

2. 해당 값을 가지는 EMP 테이블 내의 모든 row 들을 찾아서 EMP.DeptNo 값을 사용자가 정의한 특정 값으로 채워 넣는다.

3. 해당 값을 가지는 EMP 테이블 내의 모든 row 들을 찾아서 EPM.DeptNo 값을 NULL 값으로 바꿔 버린다.

 

이 세가지 방법이 일반적입니다. 이렇게 해 주는 방법은 일반적으로 디비 모델링시에 해당 조건을 주어서 테이블을 정의하는 경우가 대부분입니다.

정재익(advance)님이 2004-03-29 12:55에 작성한 댓글입니다.

식별자 업무규칙 정의에 대한 문제이군요

식별자 업무 규칙은 입력규칙, 삭제규칙, 수정규칙의 세가지이며 위의 문제는 삭제규칙에 대한 답을 쓰라는 내용이군요!

 

1. 입력규칙은 부모 테이블에 PK로 존재하지 않는 값이 자식 테이블의 FK 값으로 입력될때, 부모 테이블의 참조 무결성 유지를 위해 제공되는 규칙을 나타내며 의존형태(Dependency), 자동형태(Automatic), 기본형태(Defualt), 지정형태(Customized), NULL형태(Nullify), 무관련형태(No effect)의 6가지 규칙을 가질 수 있습니다.

 

2. 삭제규칙은 부모 테이블의 PK의 값이 삭제될 때, 자식 테이블의 참조 무결성 유지를 위해 제공되는 규칙을 나타내며 제한형태(Restrict), 연쇄형태(Cascade), 기본형태(Defualt), 지정형태(Cusomaized), NULL형태(Nullify), 무관련형태(No effect)의 6가지 규칙을 가질 수 있습니다.

 

3. 수정규칙은 부모테이블의 PK의 값이 변경될 때, 자식 테이블의 참조 무결성 유지를 위해 제공되는 규칙을 나타내며 제한형태(Restrict), 연쇄형태(Cascade)의 2가지 규칙을 가질 수 있습니다.

 

위에서 설명한 식별자 업무 규칙을 모두 DBMS에서 제공하는 것은 아닙니다. 각각의 DBMS마다 참조 무결성의 유지를 위해 위에 설명한 규칙중 일부만을 채택하여 제공하고 있습니다.

Sunny(war1997)님이 2004-03-30 16:35에 작성한 댓글입니다.

완벽한 답변 -.-;;;

정재익(advance)님이 2004-03-30 17:45에 작성한 댓글입니다.

완벽한 설명에 할 말을 잃었습니다..

위의 설명이 힘드시다면 외래키에 대한 내용을 보시는 것을 추천합니다.

외래키는 이해하는 데.... 시간이 걸렸습니다.

경민기(moonend)님이 2004-03-30 20:00에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
953c/s환경하고 이전환경하고 뭐가 근본적으로 틀리나요? [3]
정인호
2004-04-03
7073
952Web DB가 뭐죠? [1]
정인호
2004-04-02
7421
951초보에요~~!! 컴활실기셤땜에~!! [1]
정양
2004-03-31
6993
950이게 도데체무슨말인지 이해가 안갑니다~조언좀주세요~~ [5]
이성민
2004-03-28
8112
948DB를 처음 배우기 시작했어요. 글 읽고 조언 좀 해주세요^^; [6]
이소연
2004-03-24
8120
947ORDBMS가 어떤 면에서 RDBMS와 다른지 궁금합니다. [1]
mooni
2004-03-23
7314
946테이블 작성하는 것좀 알켜주세요.. [1]
새내기
2004-03-23
6881
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2021 DSN, All rights reserved.
작업시간: 0.012초, 이곳 서비스는
	PostgreSQL v13.3으로 자료를 관리합니다