데이터 모델링과 예제 데이터베이스 데이터 모델링의 개요를 이해한다. 데이터 모델링과 관련된 용어를 이해한다. 데이터 모델링과 예제 데이터베이스 데이터 모델링의 개요를 이해한다. 데이터 모델링과 관련된 용어를 이해한다. 논리적 모델링과 그 외 모델링 방법을 이해한다. 예제 데이터베이스의 구조(스키마)와 업무 규칙을 이해한다.
데이터 모델링과 예제 데이터베이스 1. 데이터 모델링 2. 예제 데이터베이스
데이터 모델링 >> 개요 데이터 모델링과 예제 데이터베이스 ■ 논리적 모델링과 물리적 모델링 구분 단계 설명 논리적 모델링 데이터베이스 구축의 분석 단계에 해당 - 특정 DBMS에 의존하지 않는 골격을 만드는 작업 - 실체, 속성, 관계 등을 만들고 서로 관련을 맺는 작업을 포함 물리적 모델링 데이터베이스 구축의 설계 단계에 해당 - 특정 DBMS에 의존하는 데이터 형식, 각종 제약 조건, 뷰, 인덱스 등을 설정하는 작업 ■ 실체-관계도(ERD, Entity-Relationship Diagram) 방법론
데이터 모델링 >> 기초 용어 데이터 모델링과 예제 데이터베이스 ■ 실체(Entity) ▸ 정보를 가지고 있거나 그에 대한 정보를 알아야 하는 유형/무형의 사람, 장소, 사물, 사건, 개념 등 ▸ 대부분의 경우, 논리적 모델에서의 실체는 나중에 데이터베이스의 테이블이 됨 ▸ 실체를 파악하는 간단한 방법: 요구 사항 명세를 문장으로 적은 후, 거기서 명사나 명사형을 추출하고, 이들 중 의미가 있는 것을 골라내어 실체의 후보로 만들 수 있음
데이터 모델링 >> 기초 용어 데이터 모델링과 예제 데이터베이스 ■ 속성(Attribute) ▸ 실체의 성질, 분류, 식별, 수량, 상태 등을 나타내는 세부적인 특성 ▸ 주 식별자(Primary Identifier)도 하나 이상의 속성 집합임 ▸ 식별자에 해당하지 않는 속성을 비식별자 속성(non-identifier attributes)이라 부름 ▸ 일반적으로 한 실체의 속성 수는 2개 이상 10개 이하 정도를 권장하지만, 상황에 따라 이 범위를 벗어날 수도 있음 ■ 인스턴스(Instance) ▸ 실체의 단일 사례(인스턴스들의 집합) ▸ 예: 필자 이름이 ‘홍길동‘이고, 전화가 ‘02-123-4567‘이며, 주소가 ‘서울시 강남구 역삼동 100번지‘인 필자는 필자 실체의 한 인스턴스 ▸ 식별자 및 관계 차수와 깊은 연관이 있음
데이터 모델링 >> 기초 용어 데이터 모델링과 예제 데이터베이스 ■ 식별자(1) ● 주 식별자(Primary Identifier) ▸ 한 실체에서 꼭 같은 인스턴스가 두 개 이상 있다면 그 중 하나를 추출하는 것은 불가능하며, 결과적으로 데이터 중복 및 조회 문제가 발생함 ▸ 실용적인 데이터베이스를 구축할 때 인스턴스의 값을 유일하게 유지 관리하는 것이 필수적 ▸ 이때, 인스턴스들을 좀더 효율적으로 서로 구분할 수 있게 하는 것이 주 식별자 ▸ 속성 하나나 둘 이상의 속성 조합으로 구성할 수 있음(둘 이상의 속성 조합으로 구성하는 주 식별자는 “복합 주 식별자”). ● 후보 식별자(Candidate Identifier): 주 식별자가 될 수 있는 각 후보들 ● 부 식별자(Alternate Identifier) ▸ 후보 식별자 중에서 주 식별자로 지정하지 않은 것(여러 벌이 있을 수 있음). ▸ 부 식별자는 물리적 모델링에서 유일성(UNIQUE) 인덱스를 설정하는 경우가 많음
데이터 모델링 >> 기초 용어 데이터 모델링과 예제 데이터베이스 ■ 식별자(2) 필자 ID 필자 이름 전화 주소 1 필자 이름 전화 주소 1 홍길동 02-123-4567 서울시 강남구 역삼동 100번지 2 02-234-5678 서울시 서초구 서초동 200번지 3 을지매 031-765-4321 경기도 수원시 매탄동 300번지 ▸ 필자의 주 식별자는 필자 ID이고, 책의 주 식별자는 책 ID다. ▸ [표 4-2]에서는 주 식별자와 비 식별자 속성 사이를 두 줄로 구분함 ▸ 주 식별자인 필자 ID만으로 인스턴스들을 완벽하게 식별할 수 있음 ▸ 주민번호와 같이 자연적인 속성도 후보(Candidate)가 될 수 있으나, 필자 ID나 책 ID처럼 인위적인 것도 좋은 후보라 할 수 있음 ▸ 인위적인 주 식별자를 물리적 모델에서 IDENTITY 속성 등과 연계하면 좀더 효율적으로 테이블을 관리할 수 있음
데이터 모델링 >> 기초 용어 데이터 모델링과 예제 데이터베이스 ■ 관계(Relationship) ▸ 실체들간에 의미가 있는 연결 ▸ 관계에는 이름이 붙어 있음 ▸ 관계형 데이터베이스에서 가장 중요한 요소 ▸ 관계를 파악하는 간단한 방법: 요구 사항 명세를 문장으로 적은 후 거기서 동사를 추출하고, 이들 중 위에서 파악한 실체들 사이에 적용할 수 있는 것을 골라내어, 관계 후보로 만들 수 있음 ▸ 관계를 좀더 체계적으로 파악하기 위해 관계 표를 이용할 수도 있음
데이터 모델링 >> 기초 용어 데이터 모델링과 예제 데이터베이스 ■ 관계차수(Cardinality) ● 관계를 구성하는 실체들의 인스턴스 수를 규명하는 것 ● 관계 차수를 따질 때는 반드시 인스턴스를 이용해야 한다. ● 중요한 관계 차수 및 표시법 관계 차수 식별 관계에서의 표시법 비식별 관계에서의 표시법 0, 1 또는 그 이상 1 또는 그 이상 0 또는 1 정확히 N(예를 들어, 1:3) ▸ 왼쪽에는 부모(주) 실체가, 오른쪽에는 자식(종) 실체가 있다고 가정함 ▸ IDEFIX: 데이터 모델링 기법의 일종으로, 1993년에 미국 NIST(National Institute of Standards and Technology)에서 데이터 모델링 표준으로 발표해 미 정부 기관에서 주로 사용해 왔고, 현재는 일반인들도 많이 사용함
데이터 모델링 >> 기초 용어 데이터 모델링과 예제 데이터베이스 ■ 관계표 실체 1 실체 2 실체 3 X 0-N X ▸ 관계 표의 세로축과 가로축에 실체들을 나열하고, 모든 실체들 사이에 관계가 있는지, 있다면 관계 차수가 어떻게 되는지를 따져서, 대각선으로 나눠져 있는 각각의 셀에 기입 ▸ 예: 세로축의 실체1을 기준으로 실체2를 보았을 때의 관계 차수가 ‘1 : 0, 1 또는 그 이상‘ 이라고 가정할 때, 첫째 행 셋째 열처럼 기입(실체1은 부모 실체가, 실체2는 자식 실체가 됨) ▸ X는 관계가 없음을 나타내고, 자기 자신과의 관계는 뒤에 설명할 자기 참조를 나타냄 ● 관계 차수를 정확히 구현하기 위해서는 트리거나 저장 프로시저 등의 프로그래밍이 필요
데이터 모델링 >> 기초 용어 데이터 모델링과 예제 데이터베이스 ■ 외래 식별자 ● 실체들 사이에 관계를 맺을 때 부모 실체의 주 식별자가 자식 실체의 외래 식별자(Foreign Identifier)로 이주함(migration) ● ERWin과 같은 CASE 도구를 사용할 경우에는 자동으로 이루어지지만, 수작업으로 모델링할 경우에는 작업자가 직접 외래 식별자에 해당하는 속성을 자식 실체에 추가해야만 함 ● 외래 식별자로 지정된 속성은 임의의 값을 가지지 못하고, 외래 식별자가 참조하는 부모 실체의 주 식별자가 가지고 있는 값만 가질 수 있음(참조 무결성(Referential Integrity))
데이터 모델링 >> 기초 용어 데이터 모델링과 예제 데이터베이스 ● 참조 무결성의 예 ▸ 책 실체와 필자 실체 사이의 관계를 끊고 책 실체 내에 필자 ID를 (외래 식별자 대신) 일반 속성으로 정의했다고 가정함
데이터 모델링 >> 기초 용어 데이터 모델링과 예제 데이터베이스 책 ID 필자 ID 책 이름 출판사 출판년도 쪽수 가격 1 삼국지 … 2 4 이런 책은 없다 ▸ 필자 ID가 4인 인스턴스(책 이름 ‘이런 책은 없다‘)를 삽입할 수 있게 됨 ▸ 그런데 필자 실체에는 필자 ID가 4인 인스턴스가 없으므로, 데이터 무결성이 깨지고 심각한 문제가 생김 ● 관계에 의해 필자 ID가 외래 식별자로 지정된 경우: 필자 실체에 존재하는 필자 ID 값인 1, 2 또는 3만 책 실체의 외래 식별자인 필자 ID의 값으로 허용되므로, [표 4-4]에서 필자 ID 값이 4인 인스턴스의 삽입은 근본적으로 차단됨(DBMS가 삽입을 거부함).
데이터 모델링 >> 기초 용어 데이터 모델링과 예제 데이터베이스 ■ 식별(Identifying) 관계 ▸ 부모 실체의 주 식별자가 자식 실체의 외래 식별자이자 동시에 주 식별자가 되는 관계 ▸ 식별 관계선은 실선으로 표시 ▸ 식별 관계에 의해, 필자 실체의 주 식별자(필자 ID)가 책 실체의 주 식별자 영역에 외래 식별자(필자 ID)로 들어감 ▸ 식별 관계의 단점(1) : 주 식별자 영역이 점점 비대해지며(식별 관계는 부모 실체의 주 식별자를 자식 실체의 주 식별자로 계속하여 전파시키는 특성이 있기 때문에), 결과적으로 무의미한 외래 식별자들이 주 식별자 영역에 들어가는 경우도 많이 있음
데이터 모델링 >> 기초 용어 데이터 모델링과 예제 데이터베이스 ▸ 식별 관계의 단점(2) : 조인(JOIN)할 때 부모 테이블의 주 식별자와 자식 테이블의 외래 식별자를 조인 조건에서 사용하는데, 식별 관계를 많이 사용할 경우, 복합 주 식별자가 만들어질 가능성이 높아지기 때문에 조인 조건식이 복잡해지고 결과적으로 성능을 저하시킴 ▸ 불가피한 경우를 제외하고는 비식별 관계를 맺는 것이 좋음 ▸ ‘불가피한 경우‘의 예 ▸ 하위 형식 관계(Subtype Relationship)라 불리는 것으로, 필자를 전임 필자와 프리랜서 필자로 세분화하고, 필자 실체의 속성을 하위 형식 실체들(전임 필자 및 프리랜서 필자)이 공유하는 개념(객체 지향의 상속 개념과 유사). 이 경우, 이들 사이의 관계는 반드시 식별 관계여야 함
데이터 모델링 >> 기초 용어 데이터 모델링과 예제 데이터베이스 ■ 비식별(Non-Identifying) 관계 ▸ 부모 실체의 주 식별자가 자식 실체의 비식별자 영역의 외래 식별자인 관계 ▸ 비식별 관계선은 점선으로 표시함 ▸ 비식별 관계를 적용하는 것이 적절한 경우가 많음 ▸ 강제적(Mandatory) 비식별 관계와 선택적(Optional) 비식별 관계로 구분 ● 강제적(Mandatory) 비식별 관계 ▸ 외래 식별자에 NULL을 허용하지 않는 관계 ▸ 자식 실체가 존재하기 위해 부모 실체가 반드시 먼저 존재해야 함을 의미 ● 선택적(Optional) 비식별 관계 ▸ 외래 식별자에 NULL을 허용하는 관계 ▸ 부모 실체가 없이도 자식 실체가 존재할 수 있음을 의미함
데이터 모델링 >> 기초 용어 데이터 모델링과 예제 데이터베이스 ■ ERD ▸ 필자 없는 책이 존재할 수도 있다는 것을 나타냄 ▸ 관계 자체를 약화시킨다고 볼 수도 있으나, 상황에 따라 필요한 경우가 많음 ▸ 주의: 외래 식별자가 NULL이 아닌 경우에는 참조 무결성 제약을 반드시 지켜야 함(외래 식별자는 자기가 참조하는 부모 실체의 주 식별자가 가지고 있는 값만 가질 수 있음). ▸ 선택적 비식별 관계선의 부모 실체 쪽에는 다이아몬드 형태로 표시 ■ ERD ▸ Entity Relationship Diagram의 약자 ▸ 번역하면 ‘실체-관계도‘ ▸ 실체와 그 사이의 관계를 규명한 다이어그램
데이터 모델링 >> 논리적 모델링 데이터 모델링과 예제 데이터베이스 데이터 모델링 >> 논리적 모델링 ■ 다대다 관계 해소 ● 책은 서점에 납품되어야 하므로, 분명히 관계는 있음 ● 관계 차수를 따져보면, 책 한 종류(인스턴스)는 여러 서점에 납품되어야 하고, 한 서점에는 여러 종류의 책을 납품받아야 하므로, 다대다 관계임 ● IDEF1X에서는 다대다 관계를 양쪽에 검은 원을 가진 실선으로 표시 ● 논리적 모델에서만 허용되며, 물리적 모델에서는 허용되지 않음
데이터 모델링 >> 논리적 모델링 데이터 모델링과 예제 데이터베이스 데이터 모델링 >> 논리적 모델링
데이터 모델링 >> 논리적 모델링 데이터 모델링과 예제 데이터베이스 데이터 모델링 >> 논리적 모델링 ● 교차 실체 Erwin에서 자동으로 해소한 다대다 관계(물리적 모델) 다대다 관계를 해소한 논리적 모델
데이터 모델링 >> 논리적 모델링 데이터 모델링과 예제 데이터베이스 데이터 모델링 >> 논리적 모델링 ● 다대다 관계가 발생하는 상황 ▸ 관계가 없는 경우: 없는 관계를 만들려고 할 때 다대다 관계가 많이 형성됨. 이 경우, 관계를 맺지 말아야 한다(지속적인 경험으로 익힐 수 있음). ▸ 간접적인 관계가 있는 경우(중간의 실체가 누락): 두 실체간에 직접적인 관계는 없으나, 하나 이상의 중간 실체를 경유한 간접적인 관계가 있는 경우임. 중간의 실체(들)를 찾아내는 작업을 해야 함 ● 논리적 모델링에서 다대다 관계가 발생할 경우, 위의 두 가지 상황 중 하나에 해당된다고 판단하고 이를 해소해야 함 ● 관계 표를 이용하는 것도 정확한 관계를 파악하는데 도움이 됨
데이터 모델링 >> 논리적 모델링 데이터 모델링과 예제 데이터베이스 데이터 모델링 >> 논리적 모델링 ■ 정규화 ● 데이터 중복을 막고 무결성을 강화하기 위해 하나의 실체를 둘 이상의 실체로 분리하는 작업 ● 정규형(Normal Form): 정규화 된 모델 ① 제 1 정규형(First Normal Form; 1NF) ② 제 2 정규형(Second Normal Form; 2NF) ③ 제 3 정규형(Third Normal Form; 3NF) ④ Boyce-Codd 정규형(BCNF) ⑤ 제 4 정규형(Fourth Normal Form; 4NF) ⑥ 제 5 정규형(Fifth Normal Form; 5NF) ● 실무에서는 제 3 정규형으로 충분하다고 알려져 있으며, 제 4 정규형이나 제 5 정규형은 다가 종속성(multi-valued dependancy)까지 분석하는 것인데 이것은 오히려 모델링에 나쁜 영향을 미치는 것으로 판명되었음. ● Boyce-Codd 정규형은 제 3 정규형의 대안이 될 수 있는 것이지만, 종합적으로 판단할 때 제 3 정규형이 최선책이라고 알려져 있음
데이터 모델링 >> 논리적 모델링 데이터 모델링과 예제 데이터베이스 데이터 모델링 >> 논리적 모델링 ■ 정규화 – 함수적 종속성(Functional Dependency) ● 속성들 사이(실체들 사이가 아님!)의 종속 관계를 나타내는 것 ● 예: 주문 실체 내에 주문 번호, 고객 ID, 영업 사원 ID 라는 속성이 있고, 주문 번호는 고객 ID를 결정짓고, 주문 번호는 영업 사원 ID를 결정지으며, 고객 ID는 영업 사원 ID를 결정짓는다고 할 때, 이들의 함수적 종속 관계임(화살표 방향은 결정짓는 쪽에서 종속되는 쪽으로 향하는 것에 유의). ● ‘주문 번호가 고객 ID를 결정짓는다‘: 주문 번호 하나에 대해서 오직 하나의 고객 ID를 가질 수 있으며, 주문 번호와 고객 ID는 (다른 실체로) 서로 분리될 수 없다는 뜻. ‘고객 ID는 주문 번호에 함수적으로 종속된다‘라는 말과 동의어 ● 함수적 종속성은 제 2 ~ 5 정규형을 규명하기 위해 반드시 알아야 하는 개념
데이터 모델링 >> 논리적 모델링 데이터 모델링과 예제 데이터베이스 데이터 모델링 >> 논리적 모델링 ■ 정규화 – 제1 정규형 ● 실체 내에 반복되는 속성이나 속성 그룹이 없는 형태 ● 자식1 ~ 자식7까지의 속성이 반복되고 있으므로, 비1차 정규형(non-first normal form; NFNF 또는 NF2) ● 반복되는 속성(그룹)은 정보 손실과 저장 공간 낭비라는 심각한 문제점을 안고 있으므로 반드시 제거해야 함 ● 문제 해결: 반복되는 속성(그룹)을 별도의 실체로 분리 → 제 1 정규형(First Normal Form; 1NF)
데이터 모델링 >> 논리적 모델링 데이터 모델링과 예제 데이터베이스 데이터 모델링 >> 논리적 모델링
데이터 모델링 >> 논리적 모델링 데이터 모델링과 예제 데이터베이스 데이터 모델링 >> 논리적 모델링 ■ 정규화 – 제2 정규형 ● 하나의 실체가 제 1 정규형이면서, 모든 비식별자 속성들이 주 식별자에 함수적으로 완전히 종속되는 형태 ● 복합 주 식별자의 경우, 주 식별자의 일부 속성에만 함수적으로 종속되는 비식별자 속성이 있어서는 안 됨 ● 예: 속성들이 주 식별자에 함수적으로 완전히 종속되도록 실체를 분리 → 제 2 정규형 제2정규형 제1정규형
데이터 모델링 >> 논리적 모델링 데이터 모델링과 예제 데이터베이스 데이터 모델링 >> 논리적 모델링 ■ 정규화 – 제3 정규형 ● 하나의 실체가 제 2 정규형이면서, 어떠한 비 식별자 속성들도 다른 비 식별자 속성에 함수적으로 종속되지 않는 형태 ● 예: 속성들을 별도의 실체로 분리 → 제 3 정규형
데이터 모델링과 예제 데이터베이스
데이터 모델링 >> 기타 모델링 데이터 모델링과 예제 데이터베이스 ■ 물리적 모델링 ■ 객체 지향 데이터 모델링 ■ 물리적 모델링 ● 특정 DBMS에 의존하는 데이터 형식, 각종 제약 조건, 뷰, 인덱스 등을 설정하는 작업 ● 물리적 모델링의 수행 절차 ① 이름 영문화: 논리적 모델에서는 대부분 한글 이름을 부여하는데, 물리적 모델에서는 이것을 영문 이름으로 바꾸어야 함 ② 데이터 형 지정 ③ NULL, NOT NULL 및 IDENTITY 지정 ④ 제약 기본 값과 개체 기본 값 정의 ⑤ 체크와 규칙 정의 ⑥ 도메인 정의 및 적용 ⑦ 인덱스 설정 ⑧ 테이블별 코멘트 작성 ⑨ 뷰 정의 ■ 객체 지향 데이터 모델링 ● UML(UML 데이터 모델링 프로필) ● ORM(개체 역할 모델링, Object Role Modeling)
데이터 모델링과 예제 데이터베이스 예제 데이터베이스 ■ Pubs ● 물리적 모델
데이터 모델링과 예제 데이터베이스 예제 데이터베이스 ● 스키마와 업무 규칙 책의 [표 4 - 8] 참고
데이터 모델링과 예제 데이터베이스 예제 데이터베이스 ■ Northwind ● 물리적 모델
예제 데이터베이스 데이터 모델링과 예제 데이터베이스 ■ 기타 예제 데이터베이스 ● 스키마와 업무 규칙 책의 [표 4 - 9] 참고 ■ 기타 예제 데이터베이스 ● 3장의 ‘예제 DB 재구축’을 참고