15
2. 관관관 관관관관관관 관관 관관관 I. 관관관 DBMS 관 관관 관관 II. 관관관 관관 관관관 DBMS

2. 관계형 데이터베이스 관리 시스템

Embed Size (px)

DESCRIPTION

2. 관계형 데이터베이스 관리 시스템. I. 관계형 DBMS 에 대한 이해 II. 예제를 통한 관계형 DBMS. I. 관계형 DBMS 에 대한 이해. 1-1) 관계형 DBMS 의 정의 데이터베이스 관리 시스템의 기본 개념 “ 데이터베이스는 최소한의 의미를 가지는 테이블들로 구성되며 그 테이블들에 있는 컬럼으로 연결한 것이다 . ” 위의 내용 중에서 가장 중요한 내용은 “ 데이터베이스는 최소한의 의미를 가지는 테이블들로 구성된다 . ” 이다 . - PowerPoint PPT Presentation

Citation preview

Page 1: 2.  관계형 데이터베이스 관리 시스템

2. 관계형 데이터베이스 관리 시스템

I. 관계형 DBMS 에 대한 이해

II. 예제를 통한 관계형 DBMS

Page 2: 2.  관계형 데이터베이스 관리 시스템

I. 관계형 DBMS 에 대한 이해1-1) 관계형 DBMS 의 정의 데이터베이스 관리 시스템의 기본 개념

“ 데이터베이스는 최소한의 의미를 가지는 테이블들로 구성되며 그 테이블들에 있는 컬럼으로 연결한 것이다 .”

위의 내용 중에서 가장 중요한 내용은 “ 데이터베이스는 최소한의 의미를 가지는 테이블들로 구성된다 .” 이다 . 이 말은 결론적으로 얘기하자면 가장 효율적으로 데이터를 저장하기 위해서 이다 .

쓸데없이 낭비되는 공간 없이 효율적으로 데이터를 저장하기 위해서 최소한의 의미를가지는 테이블로 나뉘어져야 하며 그 테이블들에 있는 컬럼들이란 부모 테이블의 기본키 (Primary Key) 와 자식 테이블의 포린키 (Foreign Key) 를 말하는 것으로 데이터 간의 연관된 정보를 얻기 위해 사용된다 . 그리고 그러한 연관된 정보를 얻기 위한 구문을 JOIN 이라고 한다 .

Page 3: 2.  관계형 데이터베이스 관리 시스템

II. 예제를 통한 관계형 DBMS 에 대한 이해

2-1) 고객관리를 위한 테이블 작성

위의 고객관리 예제 테이블에서 박찬호와 선동열은 자동차를 소유하고 있지 않으며 이들의 차량 정보 컬럼들에는 모두 Null 값이 들어가 있다 . 이렇게 Null 값이 들어가 있다는 것은 쓸데없이 공간이 낭비되고 있다는 것을 의미한다 .

위의 고객관리 테이블은 아무리 데이터를 잘 집어 넣는다 해도 자동차가 없는 고객들의 차량 정보와 관련된 컬럼들에는 Null 값이 들어갈 수 밖에 없는 구조로 되어 있다 .

Page 4: 2.  관계형 데이터베이스 관리 시스템

II. 예제를 통한 관계형 DBMS 에 대한 이해

2-2) L 자형 테이블차량 정보에 대한 Null 값을 가지고 있는 데이터를 위쪽으로 그리고 차량을 가지고 있는 데이터를 밑으로 내려보면

그러면 위의 그림처럼 데이터가 위치하게 되는데 이러한 구조의 테이블을 전형적인 L 자형 테이블이라고 한다 .

이러한 L 자형 테이블은 가장 잘못된 테이블 설계의 유형으로 기본적으로 Null 값이 입력되지 않도록 Null 값이 있는 곳을 기준으로 하여 테이블을 나누어 주어야 한다 .

Page 5: 2.  관계형 데이터베이스 관리 시스템

II. 예제를 통한 관계형 DBMS 에 대한 이해

2-3) L 자형 테이블을 나누는 방법 2-3-1) 레코드를 기준으로 테이블 나누기

Page 6: 2.  관계형 데이터베이스 관리 시스템

II. 예제를 통한 관계형 DBMS 에 대한 이해

2-3) L 자형 테이블을 나누는 방법 2-3-1) 레코드를 기준으로 테이블 나누기

이렇게 데이터를 저장했었을 때의 문제점은 무엇인가 ?내마 만약 자동차판매원이라면 한 달에 자동차를 소유하지 않은 고객 테이블에서 자동차를 소유한 고객 테이블로 데이터가 내려오는 건수가 평균 4~5 건 정도는 되고 자동차를 소유한 고객 테이블에서 자동차를 소유하지 않은 고객 테이블로 올라가는 경우의 수도 어림잡아 1~2 건 정도는 될 것이다 .

하지만 개인의 경우가 아니라 하루에 몇 천 , 몇 만 건의 데이터가 발생하는 기업의 프로세서를 저장하는 데이터베이스 내의 테이블 구조가 이렇게 되어 있다면 , 이러한 프로세스를 관리 하는데 어려움이 많을 것이다 .

결론 적으로 레코드를 기준으로 해서 테이블을 나누지는 않는다 . ( 레코드를 기준으로 테이블을 분리하는 경우 : 역정규화를 하면서 발생된다 .)

Page 7: 2.  관계형 데이터베이스 관리 시스템

II. 예제를 통한 관계형 DBMS 에 대한 이해

2-3) L 자형 테이블을 나누는 방법 2-3-2) 컬럼을 기준으로 테이블 나누기

Page 8: 2.  관계형 데이터베이스 관리 시스템

II. 예제를 통한 관계형 DBMS 에 대한 이해

2-3) L 자형 테이블을 나누는 방법 2-3-2) 컬럼을 기준으로 테이블 나누기

컬럼을 기준으로 테이블을 분리하면 역시 Null 값이 들어가 있는 공간이 필요 없기 때문에 효율적으로 데이터를 저장할 수 있게 된다 .

컬럼을 기준으로 테이블을 나누었을 때 문제점만약 어느날 자동차 테이블을 조회 했을 때 그 안의 데이터는 자동차에 대한 정보만 있을 것이고 그 자동차가 누구의 소유인지에 대한 정보를 알 수 있는 방법이 없다

컬럼을 기준으로 테이블을 나누었을 때 문제점 해결바로 여기에서 ‘관계 (Relation)’ 라는 개념이 필요하다 .

기본적으로 Null 값이 입력될 수 밖에 없는 L 자형 테이블을 레코드나 컬럼을 기준으로나누는 이유는 보다 효율적으로 데이터를 저장하기 위함이다 .

Page 9: 2.  관계형 데이터베이스 관리 시스템

II. 예제를 통한 관계형 DBMS 에 대한 이해

2-4) 관계에 대한 정의

관계란 ? 관계는 업무적인 연관성이다 .앞의 두 테이블은 내가 ( 자동차 영업사원 ) 업무적으로 사용하려고 만든 테이블이었고 지금은 둘로 나뉘어져 있지만 내가 원하는 정보를 보려면 이 두 테이블에서 일치하는 정보를 가져야 하므로 앞의 두 테이블 간에는 업무적인 연관성 즉 관계가 있다고 할 수 있다 .

관계는 두 테이블 사이에 존재하며 관계를 맺고 있는 두 테이블 중 반드시 하나는 부모 테이블이고 반드시 하나는 자식 테이블이다 .부모 테이블의 기본키 (Primary key) 는 자식 테이블에 포린키 (Foreign Key) 로 전이 되어진다 .

Page 10: 2.  관계형 데이터베이스 관리 시스템

II. 예제를 통한 관계형 DBMS 에 대한 이해

2-5) 부모 테이블과 자식 테이블에 대한 정의

관계의 유형 1) 존재의 유형부서테이블과 사원 테이블의 관계를 보자 . 각 부서에는 사원이 존재하기 때문에 둘 간의 관계가 성립된다 .

2) 행위의 유형고객 테이블과 주문 테이블의 관계를 보자 .각 고객이 주문이라는 행위를 했기 때문에 둘 간의 관계가 성립된다 .

그럼 관게를 가지고 있는 두 테이블 중 어떤 테이블이 부모 테이블인지를 판단할 수 있는 기준은 무엇인가 ?그것은 바로 어떤 테이블이 주체냐 하는 것이다 . 주체가 되는 테이블이 부모 테이블이 되고 그렇지 않은 테이블이 자식 테이블이 된다 .

Page 11: 2.  관계형 데이터베이스 관리 시스템

II. 예제를 통한 관계형 DBMS 에 대한 이해

2-5) 부모 테이블과 자식 테이블에 대한 정의

주체가 누구인지 판단하기가 모호하다면 두 테이블 간의 관계를 서술해보면 쉽게 파악할 수 있다 .

예 ) 앞의 예제였던 두 테이블 중에 어떤 테이블이 주체인지를 파악하기 위해서 관계를 서술해 보면 ,

각 고객은 자동차를 소유한다 . 각 자동차는 고객에 의해 소유되어 진다 .

관계를 서술했을 때 능동사로 표현되는 개인신상 테이블이 부모 테이블이 되고 수동사로 표현되는 자동차 테이블은 자식 테이블이 된다 .그리고 부모 테이블의 기본키는 자식 테이블의 포린키로 전이 되어진다 .

Page 12: 2.  관계형 데이터베이스 관리 시스템

II. 예제를 통한 관계형 DBMS 에 대한 이해

2-6) 관계에 대한 정의 방법관계란 업무적인 연관성이고 관계는 두 테이블 사이에 존재한다 . 그리고 관계를 맺고 있는두 테이블 중에 반드시 하나는 부모 테이블이 되고 나머지 하나는 자식 테이블이 되며 부모 테이블의 기본키는 자식 테이블의 포린키로 전이 되어진다 .

위의 테이블에서 부모 테이블인 개인신상 테이블의 이름 이란 기본키 컬럼이 자식 테이블인 자동차 테이블에 포린키로 전이되어짐으로써 두 테이블 간에 ‘ 소유’라는 관계가 설명 되어 진다 .

Page 13: 2.  관계형 데이터베이스 관리 시스템

II. 예제를 통한 관계형 DBMS 에 대한 이해2-7) 참조 무결성에 대한 이해두 테이블 간에 관계가 형성 되었을 경우 데이터를 입력 , 수정 , 삭제할 때의 고려사항1) 자식 테이블에 데이터를 입력 / 수정할 때관계 형을 통해 개인신상 테이블의 기본키가 자동차 테이블에 포린키로 전이 되었기 때문에 자동차 테이블에 데이터를 입력하기 이전에 이름 (FK) 컬럼에 데이터가 입력될때 개인신상 테이블의 이름 컬럼 ( 부모테이 블의 PK) 을 검색하게 된다 .그러므로 자식 테이블에서 부모 테이블에 존재하는 데이터로는 수정이 가능하다 .이것을 PK-FK 참조 무결성이라 한다 . 즉 , 참조 무결성이란 관계 형성을 통해서 정의되어지는 것이다 .

개인신상 자동차이름 (PK) 이름 (FK)

홍길동 승용차 소나타 3 1997 1998-12-15

Page 14: 2.  관계형 데이터베이스 관리 시스템

II. 예제를 통한 관계형 DBMS 에 대한 이해2-7) 참조 무결성에 대한 이해

두 테이블 간에 관계가 형성 되었을 경우 데이터를 입력 , 수정 , 삭제할 때의 고려사항

2) 부모 테이블에 데이터를 수정 / 삭제 할 때

관계 형성이 이루어진 후에 부모 테이블에서 데이터를 수정 내지 삭제할 수 없는 것이 아니라 자식 테이블에서 부모 테이블의 데이터를 참조하고 있는 부모 테이블의 데이터인 경우에는 수정하거나 삭제할 수 없다 .

Page 15: 2.  관계형 데이터베이스 관리 시스템

II. 예제를 통한 관계형 DBMS 에 대한 이해

2-7) 참조 무결성에 대한 이해

참조 무결성이 적용되는 내용

제약 조건 부모 테이블 자식 테이블

입 력

수 정

삭 제

제약 없음 부모 테이블에 데이터가 존재하는지 검증

수정 하려는 데이터를자식 테이블에서 참조

하고 있는지를 검증

부모 테이블에 존재하는 다른 데이터로

변경 가능

삭제 하려는 데이터를자식 테이블에서 참조

하고 있는지를 검증제약 없음