개념 데이터 설계가 DBMS 및 하드웨어 구조와 완전히 독립된 것이라면 논리적 설계에서 만들어지는 모델은 이 개념적 모델을 DBMS가 처리할 수 있도록 Mapping하는 과정이라고 보면 된다.
논리 설계를 위해 필요한 자료들을 정리해보면 다음과 같다.
-
개념 데이터 모델 : 개념 설계에서 작성한 ERD 등의 모델
-
운영 요구사항 : 요구사항 분석 단계에서 파악된 응답시간, 보안, 회복 및 데이터 저장, 익관성의 제약조건 등에 관한 명세
-
상위 수준의 프로그램 명세 : 데이터베이스 트랜잭션의 접근형태 등
-
DBMS 특성 : DBMS의 논리적 구조
-
기타 제약조건
일반적으로 모델링이라 함은 현실세계의 대상을 이해, 해석하는데 이용하기 위한 표현방법이라 할 수 있다. 따라서 데이터 모델링이라는 것은 처리되어야 할 데이터를 이해하고 해석하기 위해 그림 또는 문서의 형태로 알기쉽게 표현하는 것이라 보면 된다. 관계형 데이터베이스가 DBMS의 주를 이룸에 따라 ERD(Entity Relationship Diagram)의 작성은 데이터베이스 설계에서 가장 중요한 요소가 되었다.
4.1. ERD(Entity Relationship Diagram)의 작성
데이터베이스를 물리적으로 구축하기 전까지의 작업에서는 ERD를 통한 모델링과정에 가장 많은 노력을 들이게 된다. ERD는 현업의 데이터의 구성을 표현할 수 있어 데이터베이스의 논리적 구조를 이해할 수 있을 뿐만 아니라 신규 데이터베이스 구축의 근거가 된다.
다음은 ERD의 아주 간단한 예이며 ERD의 요소를 간단히 정리하면 다음과 같다.
4.2 엔티티 식별
엔티티는 명확히 정의를 내리기 어렵지만 다음과 같은 정의들이 있다.
-
Thomas Bruce : 정보가 유지되는 것에 관한 어떤 구별 가능한 사람, 장소, 어떤 것(thing), 이벤트 또는 개념이다.(1992)
-
Clive Finkelstein : 엔티티는 향후 참조되기 위해 저장될 'thing'을 표현한다. 엔티티라는 말은 데이터의 논리적 표현이다.(1989)
-
James Matin : 엔티티라는 저장되는 정보(고객, 공급자, 도구, 종업원, 비행기 좌석 등)에 관한 것이다. 각각의 엔티티 타입에 대해 속성들이 저장된다.(1989)
한마디로 저장되고 관리되어야 할 정보(명사)로서 물리적으로 DBMS의 Table하나 정도가 되는 것으로 보면 된다.
엔티티를 추출하기 위한 방법은 다음과 같다.
▶ 업무에 있어서 관심사이며 관리의 필요성이 있는 정보
▶ 명사, 단수형
▶ 업무요구사항의 파악에 중요한 것
▶ 모든 엔티티는 다수의 인스턴스(Insburlywoodce; 사용건수)를 가져야 한다.
▶ 모든 엔티티는 자신을 설명하는 속성들을 포함해야 한다.
예)
--------burlywoodgible
--------사람(Person) - 고객, 종업원, 관리자 등
--------장소(Site) - 자료실, 창고, 공장 등
--------어떤 것(Thing) - 제품, 벤더, 부품 등
--------Inburlywoodgible
--------개념(Concept) - 일정, 예산항목, 정산 등
--------사건(Event) - 판매, 구입 등
4.3 엔티티의 유형
-
Kernal Entity Type : 다른 엔티티의 인스턴스의 존재와 무관하게 존재하는 기본적인 엔티티
-
Characteristic Entity Type : 다른 엔티티의 존재에 의존하는 엔티티
-
Associative Entity Type : 두 엔티티간의 관계를 나타내는 엔티티
-
Subtype Entity Type : 다른 엔티티에 종속적인 엔티티
4.4 관계의 개념
관계(Relation)는 두 개의 엔티티나 그 자신과의 특정관계를 연결하여 양방향으로 표현한 것을 의미한다. 그림 4에서 처럼 관계선과 관계명, 카디널리티(Cardinality), 옵셔널리티(Optionality) 등으로 업무규칙(Business Rules)을 표현한다.
▶ 관계선 위와 아래에 관계명을 표시한다. 관계명은 동사(verb) 형태로 표현된다.
▶ 카디널리티는 양쪽의 엔티티의 관계가 1:n, n:1, 1:1, n:n 등 임을 나타낸다.
▶ 옵셔널리티는 양쪽의 엔티티가 Mandatory(반드시 존재해야 함), Optional(존재하지 않울 수 있음) 중 하나로 표현된다.
그림4의 경우는 고객은 주문을 하고 주문은 고객에게 주문되는 관계이며, 한명의 고객은 여러 주문을 할 수 있고 하나의 주문은 단 한명의 고객에 의해서만 이루어지므로 1:n의 관계이다. 또한 고객이 주문하는 관계에서 고객이 반드시 있어야 주문이 이루어지고, 고객만 있고 주문을 하지 않을 수 있으므로 고객은 Mandatory, 주문은 Optional이 된다.
ER 모델에서는 1:1의 관계나 n:n의 관계는 되도록 피하도록 한다. 1:1의 관계는 두 엔티티가 하나의 엔티티로 합쳐지는 것으로 볼 수도 있으며 n:n의 관계는 다른 한쪽의 식별이 어렵기 때문에 다음 그림과 같이 Associative 엔티티를 인위적으로 삽입하여 1:n의 관계로 풀어준다.
4.5 속성의 개념
속성(Attributes)은 엔티티 내에서 관리되는 정보들의 항목으로서 엔티티를 설명하는데 사용되는 명사이다. 즉, 엔티티를 구성하는 요소가 되며, 하나의 엔티티에는 고유식별자를 포함한 하나 이상의 속성이 포함되어야 한다.
속성의 명칭을 정의하는 방법을 간단하게 알아보면 다음과 같다.
▶ 의미가 명확하고 길지 않으며 내용을 함축성있게 표현
▶ 엔티티명을 사용해서는 안됨
▶ 단 하나의 엔티티에만 속하도록 함
▶ 가능한한 최소단위까지 분할
▶ 여러 값을 가지거나 반복되는 속성은 엔티티로 분할
▶ 추출값, 즉 Count값이거나 Total값, 최대, 최소, 평균 등의 계산 값 등은 포함시키는 것은 낭비
▶ 속성이 자신의 속성을 가질 수 있으면 엔티티로 분류
속성은 물리적 개발 단계에 앞서 각 속성의 값의 범위(Scope), 크기(Size), 형식(Format), Null 여부 등의 특성들을 기술해주어야 한다.
4.6 상세 데이터 모델링
개념 데이터 모델은 정규화(Normalization)를 해주어야 바람직한 모형이 된다. 직관적으로 엔티티에 속성을 배치하다보면 이를 테이블로 옮길 때 RDBMS의 무결성을 손상시킬 수 있다. 따라서 정보의 손실이나 불필요한 정보의 도입없이 일관성과 최소한의 중복 및 최대의 안정성을 확보하기 위해 데이터 구조를 정규화하게 된다. 되도록 엔티티(테이블)들을 쪼개는 작업이다. 정규화는 개념 모델링이 어느 정도 이루어진 후 하는 것이 바람직 하겠지만 ERD를 어느 정도 완성하다보면 1, 2차 정규화는 알게 모르게 이루어진다. 또한 정규화를 집중하여 하더라도 3차 이상의 정규화는 하지 않아도 큰 문제는 없다. 정규화의 이점을 다음과 같이 정리할 수 있다.
▶ 데이터 저장공간을 최소화 한다.
▶ 데이터베이스에서 데이터가 불일치할 위험을 최소화시킨다.
▶ 갱신 및 삭제시의 Anomalies를 최소화한다.
▶ 데이터 구조의 안정성을 최대화한다.
▶ 여러 값을 가지거나 반복되는 속성은 엔티티로 분할
▶ 추출값, 즉 Count값이거나 Total값, 최대, 최소, 평균 등의 계산 값 등은 포함시키는 것은 낭비
▶ 속성이 자신의 속성을 가질 수 있으면 엔티티로 분류
정규화의 규칙을 간략히 정리하면 다음과 같다.
-
제 1 정규형 : 모든 속성은 반드시 하나의 값을 가져야 한다. 즉, 여러 인스턴스(Insburlywoodce)가 발생되는 속성의 그룹은 별도의 엔티티로 분리시켜야 한다.
-
제 2 정규형 : 모든 속성은 반드시 고유식별자(또는 Key)에 종속되어야 한다. 즉, 고유식별자에 종속적이지 않은 속성들은 분리하여 별도의 엔티티로 만든다.
-
제 3 정규형 : 고유식별자가 아닌 모든 속성간에는 서로 종속될 수 없다. 고유식별자가 아닌 속성에 종속되는 속성들을 모아서 별도의 엔티티로 분리한다.
정규화외에도 3.4 절에서 설명한 바와 같이 n:n의 관계를 가진 두 엔티티의 관계를 1:n으로 해소해주는 작업도 상세 모델링에 해당된다. 이 때 Associative 엔티티가 추가되면서 엔티티의 분할이 이루어진다. |
댓글