데이터 모델링의 개요를 이해한다. 데이터 모델링과 관련된 용어를 이해한다. 논리적 모델링과 기타 모델링 방법을 이해한다.
데이터 모델링 데이터 모델링
1. 데이터 모델링 개요 데이터 모델링은 다음과 같이 크게 논리적 모델링과 물리적 모델링 으로 나뉜다. 데이터 모델링은 전통적으로 실체-관계도(ERD, Entity- Relationship Diagram) 방법론을 많이 사용해 왔으므로, 여기서도 기본적인 설명은 이를 기준으로 할 것이다.
1. 데이터 모델링 기초 용어 모델링을 본격적으로 알아보기 전에 모델링에 관련된 기초 용어를 알아두면 나중에 모델링을 이해하는 데 도움이 될 것이다. 여기서는 주로 논리적 모델링에서 사용되는 실체, 속성, 인스턴스, 식별자, 관계, 관계 차수, 외래 식별자, 식별 관계, 비식별 관계, ERD (실체들의 관계를 표현한 다이어그램) 등의 기초 용어에 대해 살펴볼 것이다.
1. 데이터 모델링 기초 용어 실체(entity) 정보를 가지고 있거나 그에 대한 정보를 알아야 하는 유 / 무형의 사람, 장소, 사물, 사건, 개념 등을 가리킨다. [그림 12-1]에서는 필자와 책이 실체다. 대부분의 경우, 논리적 모델에서의 실체는 나중에 데이터베이스 의 테이블이 된다. 실체를 파악하는 방법에는 여러 가지가 있지만, 요구 사항 명세를 문장 으로 적은 후, 거기서 명사나 명사형을 추출하고, 이들 중 의미가 있는 것을 골라내어 실체의 후보로 만드는 방법이 있다.
1. 데이터 모델링 기초 용어
1. 데이터 모델링 기초 용어 속성(attribute) 실체의 성질, 분류, 식별, 수량, 상태 등을 나타내는 세부적인 특성이다. 주 식별자(primary identifier)도 하나 이상의 속성 집합이며, 식별자에 해당하지 않는 속성은 비식별자 속성(non-identifier attributes)이라 한다. 대부분의 경우 속성은 데이터베이스의 열로 매핑된다. 일반적으로, 한 실체의 속성 수는 2개 이상 10개 이하 정도를 권장 하지만, 상황에 따라서는 이 범위를 벗어날 수도 있다.
1. 데이터 모델링 기초 용어 인스턴스(instance) 실체의 단일 사례다. 바꾸어 말하면, 실체는 인스턴스들의 집합이다. 예를 들어, 필자 이름이‘홍길동’이고, 전화번호가‘02-123-4567’ 이며, 주소가‘서울시 강남구 역삼동 100번지’인 필자를 [그림 12-1] 의 필자 실체의 한 인스턴스라고 할수 있다.
1. 데이터 모델링 기초 용어 식별자 한 실체에 똑같은 인스턴스가 두 개 이상 있다면 그 중 하나를 추출하는 것은 불가능하며, 결과적으로 데이터 중복 및 조회 문제가 발생한다. 따라서 실용적인 데이터베이스를 구축할 때는 인스턴스의 값을 유일하게 유지 관리해야 한다. 이때 인스턴스들을 좀 더 효율적으로 서로 구분할 수 있게 해주는 것이 주 식별자(primary identifier) 다. 주 식별자는 속성 하나나 둘 이상의 속성 조합으로 구성될 수 있다(둘 이상의 속성 조합으로 구성된 주 식별자를 복합 주 식별자라 한다).
1. 데이터 모델링 기초 용어 [그림 12-1]에서 필자의 주 식별자는 필자 ID고, 책의 주 식별자는 책 ID다. [표 12-2]에 필자 실체의 주 식별자와 인스턴스의 예를 들었다. 주 식별자인 필자 ID만으로 인스턴스들을 완벽하게 식별할 수 있음을 알 수 있다.
1. 데이터 모델링 기초 용어 주 식별자는 주민등록번호와 같이 자연적인 속성도 후보(candidate)가 될 수 있으나, 필자 ID나 책 ID처럼 인위적인 것도 좋은 후보가 될 수 있다. 인위적인 주 식별자를 물리적 모델에서 IDENTITY 속성 등과 연계하면 좀 더 효율적으로 테이블을 관리할 수 있다. 주 식별자가 될 수 있는 각 후보들을 후보 식별자(candidate identifier) 라 하며, 이 중에서 주 식별자로 지정하지 않은 것을 부 식별자(alternate identifier)라 한다. 부 식별자는 물리적 모델링에서 유일성(UNIQUE) 인덱스를 설정하는 경우가 많다.
1. 데이터 모델링 기초 용어 관계 실체들 간에 의미가 있는 연결을 관계(relationship)라고 한다. 관계에는 이름이 붙어 있다. 관계는 관계형 데이터베이스에서 가장 중요한 요소라 할 수 있다. 관계를 파악하는 방법 중 하나는 요구 사항 명세를 문장으로 적은 후 거기서 동사를 추출하고, 이들 중 위에서 파악한 실체들 사이에 적용할 수 있는 것을 골라내어 관계 후보로 만드는 것이다.
1. 데이터 모델링 기초 용어
1. 데이터 모델링 기초 용어 관계 차수(cardinality) 관계를 구성하는 실체들의 인스턴스 수를 규명하는 것이다. 관계 차수를 따질 때는 반드시 인스턴스를 이용해야 한다. 중요한 관계 차수 및 표시법들을 [표 12-3]에 나타냈다. 표시법에서 왼쪽에는 부모(주) 실체가, 오른쪽에는 자식(종) 실체가 있다고 가정 한다(식별 / 비식별 관계의 구분은 나중에 설명할 것이다).
1. 데이터 모델링 기초 용어 참고로, 여기서는 IDEF1X(integration definition for information modeling, 미 공군의 지원으로 개발된 IDEF 시리즈 중 데이터 모델링 용으로 특화된 모델링 기법으로, 현재 미 국방성 산하 기관뿐만 아니라 일반인들에 의해서도 많이 사용되고 있다) 표기법을 따른다.
1. 데이터 모델링 기초 용어 외래 식별자 실체들 사이에 관계를 맺을 때 부모 실체의 주 식별자가 자식 실체의 외래 식별자(foreign identifier)로 이주한다(migration). 이는 ERWin과 같은 CASE 도구를 사용할 경우에는 자동으로 이루어지지만, 수작업으로 모델링할 경우에는 작업자가 직접 외래 식별자에 해당하는 속성을 자식 실체에 추가시켜야만 한다. [그림 12-1]에서 책 실체 내의 필자 ID 속성이 바로 관계에 의해 추가된 외래 식별자에 해당된다.
1. 데이터 모델링 기초 용어 외래 식별자로 지정된 속성은 임의의 값을 갖지 못하고, 외래 식별자가 참조하는 부모 실체의 주 식별자가 가지고 있는 값만 가질 수 있는데, 이를 참조 무결성(referential integrity)이라 한다.
1. 데이터 모델링 기초 용어 식별(identifying) 관계 부모 실체의 주 식별자가 자식 실체의 외래 식별자이자 동시에 주 식별자 가 되는 관계다. 식별 관계선은 [그림 12-5]처럼 실선으로 표시된다. [그림 12-5]에서 식별 관계에 의해 필자 실체의 주 식별자(필자 ID)가 책 실체의 주 식별자 영역에 외래 식별자(필자 ID)로 들어가 있는 것을 볼 수 있다.
1. 데이터 모델링 기초 용어
1. 데이터 모델링 기초 용어 식별 관계는 장점도 많지만, 단점도 많다(이는 학자들 간에도 논란의 여지 가 많은 분야다). 한 예로, [그림 12-5]에서 필자와 책 그리고 책과 판매 실체 사이에 모두 식별 관계를 맺은 것을 볼 수 있는데(초보자들은 흔히 이렇게 모델링한다), 이 경우 주 식별자 영역이 점점 비대해지며, 결과적으로 무의미한 외래 식별자들이 주 식별자 영역에 들어가는 경우도 많다. 식별 관계는 부모 실체의 주 식별자를 자식 실체의 주 식별자로 계속해서 전파시키는 특성이 있기 때문이다. [그림 12-5]의 예에서 판매 실체의 주 식별자로 필자 ID는 필요치 않다.
1. 데이터 모델링 기초 용어 외래 식별자는 앞에서 설명한 대로 참조 무결성을 강화하는 목적으로도 쓰이지만, 최종적인 데이터베이스에서 부모 테이블과 자식 테이블을 조인 (JOIN)하는 데도 많이 사용된다. 조인할 때 대부분 부모 테이블의 주 식별자와 자식 테이블의 외래 식별자 를 조인 조건에서 사용하는데, 이때 조인 조건식이 복잡해지고 결과적 으로 성능이 저하되는 것도 식별 관계의 또 다른 단점이라고 볼 수 있다. 왜냐하면 식별 관계를 많이 사용할 경우, 복합 주 식별자가 만들어질 가능성이 높아지기 때문이다.
1. 데이터 모델링 기초 용어 비식별 관계 부모 실체의 주 식별자가 자식 실체의 비식별자 영역의 외래 식별자가 되는 관계를 비식별 관계(non-identifying)라고 한다. 비식별 관계선 은 [그림 12-1]처럼 점선으로 표시된다. 대부분의 경우, 비식별 관계를 적용하는 것이 적절한 경우가 많다. 비식별 관계는 강제적(mandatory) 비식별 관계와 선택적(optional) 비식별 관계로 구분된다.
1. 데이터 모델링 기초 용어 강제적(mandatory) 비식별 관계: 외래 식별자에 NULL을 허용하지 않는 관계다. 이는 자식 실체가 존재하기 위해 부모 실체가 반드시 먼저 존재해야 함을 의미한다. 선택적(optional) 비식별 관계: 외래 식별자에 NULL을 허용하는 관계다. 이는 부모 실체가 없어도 자식 실체가 존재할 수 있음을 의미하는데, [그림 12-7]에서 필자 없는 책이 존재할 수도 있다는 것을 나타낸다. 선택적 비식별 관계는 관계 자체를 약화시킨다고 볼 수도 있으나, 상황에 따라 필요한 경우가 많다. 여기서 유의할 사항은, 외래 식별자가 NULL이 아닌 경우에는 참조 무결성 제약을 반드시 지켜야 한다는 점이다.
1. 데이터 모델링 기초 용어 즉, 외래 식별자는 자기가 참조하는 부모 실체의 주 식별자가 가지고 있는 값만 가질 수 있다. 선택적 비식별 관계선의 부모 실체 쪽에는 [그림 12-7]과 같이 다이아몬드 형태로 표시한다. [그림 12-7]의 선택적 비식별 관계의 관계 차수는 ‘(0 또는 1) : (0, 1 또는 그 이상)’이다.
1. 데이터 모델링 기초 용어
1. 데이터 모델링 기초 용어 ERD ERD는 Entity-Relationship Diagram의 약자로, 번역하면‘실체- 관계도’가 되는데, 이는 [그림 12-7]과 같이 실체와 그 사이의 관계를 규명한 다이어그램을 의미한다.
1. 데이터 모델링 논리적 모델링 논리적 모델링은 데이터베이스 구축 과정 중 분석 작업에 해당한다. 분석이 잘 되어야 정확한 설계와 구현이 가능해지므로 논리적 모델링 은 데이터베이스 구축에 있어 가장 중요한 단계다. 여기서는 논리적 모델링에서 많이 사용되는 중요한 모델링 기법 몇 가지를 예제를 통해 살펴볼 것이다.
1. 데이터 모델링 논리적 모델링 다대다 관계 해소 [그림 12-8]의 논리적 모델을 통해 책과 서점 실체 사이의 관계를 파악 해 보자. 책은 서점에 납품되어야 하므로, 분명히 관계는 있는 것으로 보인다. 관계 차수를 따져보면 책 한 종류(인스턴스)는 여러 서점에 납품되어야 하고, 한 서점에서는 여러 종류의 책을 납품받아야 하므로, 다대다 관계가 된다. IDEF1X에서는 다대다 관계를 [그림 12-8]처럼 양쪽에 검은 원을 가진 실선으로 표시한다. 그런데 이 다대다 관계는 논리적 모델에서만 허용 되며, 물리적 모델에서는 허용되지 않는다.
1. 데이터 모델링 논리적 모델링
1. 데이터 모델링 논리적 모델링 다대다 관계가 발생하는 상황은 대부분 다음의 두 가지 경우다. 관계가 없는 경우 간접적인 관계가 있는 경우(중간의 실체가 누락) 첫 번째 상황은 초보자들이 흔히 저지르는 실수인데 없는 관계를 만들려고 할 때 많이 형성되며, 이런 경우에는 관계를 맺지 말아야 한다. 두 번째 상황은 두 실체 간에 직접적인 관계는 없으나, 하나 이상의 중간 실체를 경유한 간접적인 관계가 있는 경우다. [그림 12-8]의 책과 서점의 관계가 바로 이에 해당된다. 이 경우에는 중간의 실체(들)를 찾아내는 작업을 해야 한다.
1. 데이터 모델링 논리적 모델링 정규화 정규화(normalization)를 한 마디로 축약하면,‘ 데이터 중복을 막고 무결성을 강화시키기 위해 하나의 실체를 둘 이상의 실체로 분리하는 작업’이라고 할 수 있다. 정규화된 모델을 정규형(normal form)이라 한다.
1. 데이터 모델링 논리적 모델링 정규형에는 다음과 같은 종류가 있다. - 제 1 정규형(1NF, First Normal Form) - 제 2 정규형(2NF, Second Normal Form) - 제 3 정규형(3NF, Third Normal Form) - Boyce-Codd 정규형(BCNF) - 제 4 정규형(4NF, Fourth Normal Form) - 제 5 정규형(5NF, Fifth Normal Form)
1. 데이터 모델링 논리적 모델링 함수적 종속성(functional dependency): 속성들 사이(실체들 사이가 아님)의 종속 관계를 나타내는 것이다. 예를 들어, 주문 실체 내에 주문 번호, 고객 ID, 영업 사원 ID라는 속성이 있다고 가정하자. 또한 주문 번호 는 고객 ID를, 주문 번호는 영업 사원 ID를, 고객 ID는 영업 사원 ID를 결정짓는다고 할 때, 이들의 함수적 종속 관계를 [그림 12-11]처럼 나타 낼 수 있다(화살표 방향은 결정짓는 쪽에서 종속되는 쪽으로 향하는 것에 유의한다).
1. 데이터 모델링 논리적 모델링
1. 데이터 모델링 논리적 모델링 제 1 정규형(1NF, First Normal Form): 실체 내에 반복되는 속성이나 1∼7까지의 속성이 반복되고 있으므로 비 1차 정규형(NFNF 또는 NF2, Non-First Normal Form)에 해당된다. 반복되는 속성(그룹)은 정보 손실과 저장 공간 낭비라는 심각한 문제점을 안고 있으므로 반드시 제거 해야 한다.
1. 데이터 모델링 논리적 모델링
1. 데이터 모델링 논리적 모델링 제 2 정규형: 하나의 실체가 제 1 정규형이면서 모든 비식별자 속성들이 주 식별자에 함수적으로 완전히 종속되는 형태다. 복합 주 식별자의 경우, 주 식별자의 일부 속성에만 함수적으로 종속되는 비식별자 속성이 있어 서는 안 된다. 제 3 정규형: 하나의 실체가 제 2 정규형이면서 어떠한 비식별자 속성들도 다른 비식별자 속성에 함수적으로 종속되지 않는 형태다. 예를 들어, [그림 12-15]의 강아지 실체에서 개집 이름과 개집 위치는 개집 ID에 함수적 으로 종속되므로 이는 제 3 정규형을 위반하고 있다. 따라서 이 속성들을 별도의 실체로 분리하면 [그림 12-16] 과 같은 제 3 정규형이 만들어진다.
1. 데이터 모델링 논리적 모델링
1. 데이터 모델링 물리적 모델링 물리적 모델링: 논리적 모델링에 대응되는 모델링 기법으로, 특정 DBMS에 의존하는 데이터 형식, 각종 제약 조건, 뷰, 인덱스 등을 설정하는 작업이다. 물리적 모델링의 수행 절차는 대략 다음과 같다. 이름의 영문화 : 논리적 모델에서는 대부분 한글 이름을 부여하는데, 물리적 모델에서는 한글 이름을 영문 이름으로 바꿔야 한다. 이름은 각종 프로그래밍에도 쓰이므로 영문으로 바꾸는 것을 적극 권장한다. 데이터 형 지정 NULL, NOT NULL 및 IDENTITY 지정
1. 데이터 모델링 물리적 모델링 제약 기본값과 개체 기본값 정의 체크와 규칙 정의 도메인 정의 및 적용 인덱스 설정 테이블별 코멘트 작성 뷰 정의
1. 데이터 모델링 객체 지향 데이터 모델링 최근에 객체 지향과 컴포넌트 기반의 소프트웨어 개발이 전성기를 맞이하고 있다. 현재 우리 주변에서 볼 수 있는 개발 도구의 대부분은 객체 지향 개념을 적용하여 만들어진 것이고, 이러한 개발 도구를 이용하여 점차 기존의 절차적 프로그래밍에서 벗어나 객체 지향 프로그래밍 쪽으로 방향을 선회하고 있다. 그러나 데이터베이스 분야는 객체 지향(또는 객체 관계형) DBMS가 관계형 DBMS의 위력에 눌려 널리 확산되지 못하였기 때문에, 데이터 모델링 기법은 오랫동안 ERD 방식을 고수해 왔고, 또 이것을 최선의 방법이라고 여겨 왔다.
1. 데이터 모델링 객체 지향 데이터 모델링 그러나 최근에 데이터 모델링 분야에도 새로운 움직임이 일고 있다. 개체 역할 모델링인 UML(Unified Modeling Language, 객체 지향 분석 / 설계 언어이자 방법론)과 ORM(Object Role Modeling, ‘역할을 수행하는 개체’의 관점에서 현실 세계를 보며, 표현력이 우수 하고 의미적인 분석에 강한 모델링 방법론)을 이용하여 좀 더 효율적 이고 정확히 모델링하려는 움직임이 그것이다.
1. 데이터 모델링 객체 지향 데이터 모델링 예: UML(정확하게 말하면 UML 데이터 모델링 프로필)로 데이터 모델링을 할 수 있는 기능이 래셔널 로즈(Rational Rose)에 포함 되었고, 비주얼 스튜디오 닷넷 엔터프라이즈 아키텍트(Visual Studio .NET Enterprise Architect)에서는 개념적 데이터 모델링 단계에 ORM을 채택하고 있다.
1. 데이터 모델링 객체 지향 데이터 모델링 래셔널 로즈 데이터 모델러를 사용하면 데이터베이스 개발자와 응용 프로그램 개발자가 단일화된 언어(UML)와 동일한 개발 환경(래셔널 로즈)에서 작업할 수 있다는 장점이 있으며, ORM은 ERD나 UML 보다 표현력이 우수하고 의미적인 분석에 강하며 변경이 용이하다고 알려져 있다. 또한 완성된 ORM 모델은 ERD나 개체 관계 모델 (Object Relational Model)과 같은 다른 모델로 자동으로 변환 될 수 있다.