150 likes | 423 Views
2. 관계형 데이터베이스 관리 시스템. I. 관계형 DBMS 에 대한 이해 II. 예제를 통한 관계형 DBMS. I. 관계형 DBMS 에 대한 이해. 1-1) 관계형 DBMS 의 정의 데이터베이스 관리 시스템의 기본 개념 “ 데이터베이스는 최소한의 의미를 가지는 테이블들로 구성되며 그 테이블들에 있는 컬럼으로 연결한 것이다 . ” 위의 내용 중에서 가장 중요한 내용은 “ 데이터베이스는 최소한의 의미를 가지는 테이블들로 구성된다 . ” 이다 .
E N D
2. 관계형 데이터베이스 관리 시스템 I. 관계형 DBMS에 대한 이해 II. 예제를 통한 관계형 DBMS
I. 관계형 DBMS에 대한 이해 1-1) 관계형 DBMS의 정의 데이터베이스 관리 시스템의 기본 개념 “데이터베이스는 최소한의 의미를 가지는 테이블들로 구성되며 그 테이블들에 있는 컬럼으로 연결한 것이다.” 위의 내용 중에서 가장 중요한 내용은 “ 데이터베이스는 최소한의 의미를 가지는 테이블들로 구성된다.”이다. 이 말은 결론적으로 얘기하자면 가장 효율적으로 데이터를 저장하기 위해서 이다. 쓸데없이 낭비되는 공간 없이 효율적으로 데이터를 저장하기 위해서 최소한의 의미를 가지는 테이블로 나뉘어져야 하며 그 테이블들에 있는 컬럼들이란 부모 테이블의 기본키(Primary Key)와 자식 테이블의 포린키(Foreign Key)를 말하는 것으로 데이터 간의 연관된 정보를 얻기 위해 사용된다. 그리고 그러한 연관된 정보를 얻기 위한 구문을 JOIN이라고 한다.
II. 예제를 통한 관계형 DBMS에 대한 이해 2-1) 고객관리를 위한 테이블 작성 위의 고객관리 예제 테이블에서 박찬호와 선동열은 자동차를 소유하고 있지 않으며 이들의 차량 정보 컬럼들에는 모두 Null값이 들어가 있다. 이렇게 Null값이 들어가 있다는 것은 쓸데없이 공간이 낭비되고 있다는 것을 의미한다. 위의 고객관리 테이블은 아무리 데이터를 잘 집어 넣는다 해도 자동차가 없는 고객들의 차량 정보와 관련된 컬럼들에는 Null값이 들어갈 수 밖에 없는 구조로 되어 있다.
II. 예제를 통한 관계형 DBMS에 대한 이해 2-2) L자형 테이블 차량 정보에 대한 Null값을 가지고 있는 데이터를 위쪽으로 그리고 차량을 가지고 있는 데이터를 밑으로 내려보면 그러면 위의 그림처럼 데이터가 위치하게 되는데 이러한 구조의 테이블을 전형적인 L자형 테이블이라고 한다. 이러한 L자형 테이블은 가장 잘못된 테이블 설계의 유형으로 기본적으로 Null값이 입력되지 않도록 Null값이 있는 곳을 기준으로 하여 테이블을 나누어 주어야 한다.
II. 예제를 통한 관계형 DBMS에 대한 이해 2-3) L자형 테이블을 나누는 방법 2-3-1) 레코드를 기준으로 테이블 나누기
II. 예제를 통한 관계형 DBMS에 대한 이해 2-3) L자형 테이블을 나누는 방법 2-3-1) 레코드를 기준으로 테이블 나누기 이렇게 데이터를 저장했었을 때의 문제점은 무엇인가? 내마 만약 자동차판매원이라면 한 달에 자동차를 소유하지 않은 고객 테이블에서 자동차를 소유한 고객 테이블로 데이터가 내려오는 건수가 평균 4~5건 정도는 되고 자동차를 소유한 고객 테이블에서 자동차를 소유하지 않은 고객 테이블로 올라가는 경우의 수도 어림잡아 1~2건 정도는 될 것이다. 하지만 개인의 경우가 아니라 하루에 몇 천, 몇 만 건의 데이터가 발생하는 기업의 프로세서를 저장하는 데이터베이스 내의 테이블 구조가 이렇게 되어 있다면, 이러한 프로세스를 관리 하는데 어려움이 많을 것이다. 결론 적으로 레코드를 기준으로 해서 테이블을 나누지는 않는다. (레코드를 기준으로 테이블을 분리하는 경우 : 역정규화를 하면서 발생된다.)
II. 예제를 통한 관계형 DBMS에 대한 이해 2-3) L자형 테이블을 나누는 방법 2-3-2) 컬럼을 기준으로 테이블 나누기
II. 예제를 통한 관계형 DBMS에 대한 이해 2-3) L자형 테이블을 나누는 방법 2-3-2) 컬럼을 기준으로 테이블 나누기 컬럼을 기준으로 테이블을 분리하면 역시 Null값이 들어가 있는 공간이 필요 없기 때문에 효율적으로 데이터를 저장할 수 있게 된다. 컬럼을 기준으로 테이블을 나누었을 때 문제점 만약 어느날 자동차 테이블을 조회 했을 때 그 안의 데이터는 자동차에 대한 정보만 있을 것이고 그 자동차가 누구의 소유인지에 대한 정보를 알 수 있는 방법이 없다 컬럼을 기준으로 테이블을 나누었을 때 문제점 해결 바로 여기에서 ‘관계(Relation)’라는 개념이 필요하다. 기본적으로 Null 값이 입력될 수 밖에 없는 L자형 테이블을 레코드나 컬럼을 기준으로 나누는 이유는 보다 효율적으로 데이터를 저장하기 위함이다.
II. 예제를 통한 관계형 DBMS에 대한 이해 2-4) 관계에 대한 정의 관계란? 관계는 업무적인 연관성이다. 앞의 두 테이블은 내가(자동차 영업사원) 업무적으로 사용하려고 만든 테이블이었고 지금은 둘로 나뉘어져 있지만 내가 원하는 정보를 보려면 이 두 테이블에서 일치하는 정보를 가져야 하므로 앞의 두 테이블 간에는 업무적인 연관성 즉 관계가 있다고 할 수 있다. 관계는 두 테이블 사이에 존재하며 관계를 맺고 있는 두 테이블 중 반드시 하나는 부모 테이블이고 반드시 하나는 자식 테이블이다. 부모 테이블의 기본키(Primary key)는 자식 테이블에 포린키(Foreign Key)로 전이 되어진다.
II. 예제를 통한 관계형 DBMS에 대한 이해 2-5) 부모 테이블과 자식 테이블에 대한 정의 관계의 유형 1) 존재의 유형 부서테이블과 사원 테이블의 관계를 보자. 각 부서에는 사원이 존재하기 때문에 둘 간의 관계가 성립된다. 2) 행위의 유형 고객 테이블과 주문 테이블의 관계를 보자. 각 고객이 주문이라는 행위를 했기 때문에 둘 간의 관계가 성립된다. 그럼 관게를 가지고 있는 두 테이블 중 어떤 테이블이 부모 테이블인지를 판단할 수 있는 기준은 무엇인가? 그것은 바로 어떤 테이블이 주체냐 하는 것이다. 주체가 되는 테이블이 부모 테이블이 되고 그렇지 않은 테이블이 자식 테이블이 된다.
II. 예제를 통한 관계형 DBMS에 대한 이해 2-5) 부모 테이블과 자식 테이블에 대한 정의 주체가 누구인지 판단하기가 모호하다면 두 테이블 간의 관계를 서술해보면 쉽게 파악할 수 있다. 예) 앞의 예제였던 두 테이블 중에 어떤 테이블이 주체인지를 파악하기 위해서 관계를 서술해 보면, 각 고객은 자동차를 소유한다. 각 자동차는 고객에 의해 소유되어 진다. 관계를 서술했을 때 능동사로 표현되는 개인신상 테이블이 부모 테이블이 되고 수동사로 표현되는 자동차 테이블은 자식 테이블이 된다. 그리고 부모 테이블의 기본키는 자식 테이블의 포린키로 전이 되어진다.
II. 예제를 통한 관계형 DBMS에 대한 이해 2-6) 관계에 대한 정의 방법 관계란 업무적인 연관성이고 관계는 두 테이블 사이에 존재한다. 그리고 관계를 맺고 있는 두 테이블 중에 반드시 하나는 부모 테이블이 되고 나머지 하나는 자식 테이블이 되며 부모 테이블의 기본키는 자식 테이블의 포린키로 전이 되어진다. 위의 테이블에서 부모 테이블인 개인신상 테이블의 이름 이란 기본키 컬럼이 자식 테이블인 자동차 테이블에 포린키로 전이되어짐으로써 두 테이블 간에 ‘소유’라는 관계가 설명 되어 진다.
II. 예제를 통한 관계형 DBMS에 대한 이해 2-7) 참조 무결성에 대한 이해 두 테이블 간에 관계가 형성 되었을 경우 데이터를 입력, 수정, 삭제할 때의 고려사항 1) 자식 테이블에 데이터를 입력/수정할 때 관계 형을 통해 개인신상 테이블의 기본키가 자동차 테이블에 포린키로 전이 되었기 때문에 자동차 테이블에 데이터를 입력하기 이전에 이름(FK) 컬럼에 데이터가 입력될 때 개인신상 테이블의 이름 컬럼(부모테이 블의 PK)을 검색하게 된다. 그러므로 자식 테이블에서 부모 테이블에 존재하는 데이터로는 수정이 가능하다. 이것을 PK-FK 참조 무결성이라 한다. 즉, 참조 무결성이란 관계 형성을 통해서 정의되어지는 것이다. 개인신상 자동차 이름(PK) 이름(FK) 홍길동 승용차 소나타3 1997 1998-12-15
II. 예제를 통한 관계형 DBMS에 대한 이해 2-7) 참조 무결성에 대한 이해 두 테이블 간에 관계가 형성 되었을 경우 데이터를 입력, 수정, 삭제할 때의 고려사항 2) 부모 테이블에 데이터를 수정/삭제 할 때 관계 형성이 이루어진 후에 부모 테이블에서 데이터를 수정 내지 삭제할 수 없는 것이 아니라 자식 테이블에서 부모 테이블의 데이터를 참조하고 있는 부모 테이블의 데이터인 경우에는 수정하거나 삭제할 수 없다.
제약 조건 부모 테이블 자식 테이블 입 력 제약 없음 부모 테이블에 데이터가 존재하는지 검증 수 정 수정 하려는 데이터를자식 테이블에서 참조하고 있는지를 검증 부모 테이블에 존재하는 다른 데이터로 변경 가능 삭 제 삭제 하려는 데이터를자식 테이블에서 참조하고 있는지를 검증 제약 없음 II. 예제를 통한 관계형 DBMS에 대한 이해 2-7) 참조 무결성에 대한 이해 참조 무결성이 적용되는 내용