. 모델링의 특징
– 현실세계를 일정한 형식에 맞추어 표현하는 추상화의 의미를 가질 수 있다.
– 복잡한 현실을 제한된 언어나 표기법을 통해 이해하기 쉽게 하는 단순화의 의미를 가지고 있다.
– 애매모호함을 배제하고 누구나 이해가 가능하도록 정확하게 현상을 기술하는 정확화의 의미를 가진다.
. 모델링의 필요
– 업무정보를 구성하는 기초가 되는 정보들에 대해 일정한 표기법에 의해 표현한다.
– 분석된 모델을 가지고 데이터베이스를 생성하여 개발 및 데이터관리에 사용하기 위한 것이다.
– 데이터모델링 자체로서 업무의 흐름을 설명하고 분석하는 부분에 의미를 가지고 있다.
. 데이터 모델링 유의사항
– 여러 장소의 데이터베이스에 같은 정보를 저장하지 않도록 하여 중복성을 최소화 한다.
– 데이터의 정의를 데이터의 사용 프로세스와 분리하여 유연성을 높인다.
– 데이터간의 상호 연관관계를 명확하게 정의하여 일관성 있게 데이터가 유지되도록 한다.
. 비유연성
– 데이터 모델을 어떻게 설계했느냐에 따라 사소한 업무변화에도 데이터 모델이 수시로 변경됨으로써 유지보수의 어려움을 가중시킬 수 있다.
– 데이터의 정의를 데이터의 사용 프로세스와 분리함으로써 데이터 모델링은 데이터 혹은 프로세스의 작은 변화가 애플리케이션과 데이터베이스에 중대한 변화를 일으킬 수 있는 가능성을 줄인다.
. 개념적 데이터 모델링
– 전사적 데이터 모델링을 수핼할 때 많이 하며, 추상화 수준이 높고 업무 중심적으로 포괄적인 수준의 모델링을 진행하는것
. 물리적 데이터 모델링
– 실제로 데이터베이스에 이식할 수 있도록 성능, 저장 등의 물리적인 성격을 고려한 데이터 모델링 하는것
. 개념스키마(Conceptual Schema)
– 모든 사용자 관점을 통합한 조직 전체 관점의 통합적 표현
– 모든 응용시스템들이나 사용자들이 필요로 하는 데이터를 통합한 조직 전체의 DB를 기술한 것으로 DB에 저장되는 데이터와 그들간의 관계를 표현하는 스키마
. 고객 – 주문 ERD
– 한 명의 고객은 여러 개의 제품을 주문 할 수 있다. 주문은 할 수도 있고 안 할 수도 있다.
– 하나의 주문은 반드시 한 명의 고객에 의해 주문된다.
– 주문에 데이터를 입력할 때는 반드시 고객데이터가 존재해야 한다.
. ERD
– 1976년 피터첸(Peter Chen)에 의해 Entity-Relationship Model(E-R Model)이라는 표기법으로 만들어졌다.
– 일반적으로 ERD를 작성하는 방법은 엔터티 도출 -> 엔터티 배치 -> 관계 설정 -> 관계명 기술의 흐름으로 작업을 진행한다.
– 관계의 명칭은 관계 표현에 있어서 매우 중요한 부분에 해당한다.
. 엔터티-> 환자
– S병원은 여러 명의 환자가 존재하고 각 환자에 대한 이름, 주소 등을 관리해야 한다.
– 단, 업무범위와 데이터의 특성은 상기 시나리오에 기술되어 있는 사항만을 근거하여 판단해야 한다.
. 엔터티의 특징
– 속성이 없는 엔터티는 있을 수 없다. 엔터티는 반드시 속성을 가져야 한다.
– 엔터티는 다른 엔터티와 관계가 있을 수 밖에 없다. 단, 통계성 엔터티나, 코드성 엔터티의 경우 관계를 생략할 수 있다.
– 데이터로서 존재하지만 업무에서 필요로 하지않으면 해당 업무의 엔터티로 성립될 수 없다.
– 유일한 식별자에 의해 식별이 가능해야 한다.
– 엔터티는 업무 프로세스에 의해 이용되어야 한다.
– 엔터티는 반드시 속성을 포함해야 한다.
. 기본 엔터티(키엔터티)
– 다른 엔터티로부터 주식별자를 상속받지 않고 자신의 고유한 주식별자를 가지며, 사원 부서, 고객, 상품, 자재 등이 예가 될 수 있는 엔터티
. 엔터티의 이름 부여 방법
– 현업의 업무 용어를 사용하여 업무상의 의미를 분명하게 한다.
– 모든 엔터티에서 유일한 이름을 부여되어야 한다.
– 엔터티가 생성되는 의미대로 자연스럽게 부여하도록 한다.
. 속성(Attribute)
– 업무에서 필요로 하는 인스턴스에서 관리하고자 하는 의미상 더이상 분리되지 않는 최소의 데이터 단위
– 엔터티에 대한 자세하고 구체적인 정보를 나타낸다.
– 하나의 엔터티는 두 개 이상의 속성을 갖는다.
– 속성도 집합이다.
. 속성의 설명
– 우리은행은 예금분류(일반예금, 특별예금 등)의 원금, 예치지간, 이자율을 관리할 필요가 있다. 또한 원금에 대한 이자율을 적용하여 계산된 이자에 대해서도 속성으로 관리하고자 한다. 예를 들어 원금이 1000원이고 예치기간이 5개월이며 이자율이 5.0%라는 속성을 관리하고 계산된 이자도 관리한다. 일반예금이나 특별예금 등에 대해서는 코드를 부여(예. 01-일반예금, 02-특별예금 등)하여 관리한다.
– 이자와 이자율은 파생(DERIVED)속성이다.
. 파생속성(Derived Attribute)
– 데이터를 조회할 때 빠른 성능을 낼 수 있도록 하기 위해 원래 속성의 값을 계산하여 저장할 수 있도록 만든 속성
. 도메인(Domain)
– 주문이라는 엔터티가 있을 때 단가라는 속성 값의 범위는 100에서 10,000 사이의 실수 값이며 제품명이라는 속성은 길이가 20자리 이내의 문자열로 정의할 수 있다.
. 데이터모델링을 할 때 속성의 명칭을 부여한 방법
– 속성의 이름에 약어를 사용할 경우 그 의미를 명확하게 이해할 수 없고 혼돈을 초래하여 커뮤니케이션의 혼란을 야기할 수 있으므로 지나친 약어 사용은 가급적 제한하도록한다.
– 속성의 이름에는 서술식 용어는 사용하지 않다록 한다.
– 데이터모델링 대상에서 사용하는 용어도 있고 외부에서 사용하는 용어도 있어 중복이 있을 때, 가급적 해당 업무에서 자주 사용하는 이름을 이용하도록 한다.
. 데이터모델링 관계
– 관계는 존재에 의한 관계와 행위에 의한 관계로 구분될 수 있으나 ERD에서는 관계를 연결할 때, 존재와 행위를 구분하지 않고 단일화된 표기법을 사용한다.
– UML(Unified Modeling Language)에는 클래스다이어그램의 관계 중 연관관계(Asscociation)와 의존관계(Dependency)가 있고 이것은 실선과 점선의 표기법으로 다르게 표현이 된다.
. 관계에 대한 설명
– 관계는 존재적 관계와 행위에 의한 관계로 나누어볼 수 있다.
– 부서와 사원 엔터티 간의 ‘소속’ 관계는 존재적 관계의 사례이다.
– 주문과 배송 엔터티 간의 ‘배송근거’ 관계는 행위에 의한 관계의 사례이다.
. 관계차수(Relationship Degree/Cardinality)
– 엔터티간의 관계에서 1:1, 1:M과 같이 관계의 기수성을 나타내는 것
. 두개의 엔터티 사이에 정의한 관계 체크 사항
– 두 개의 엔터티 사이에 관심 있는 연관규칙이 존재하는가?
– 두 개의 엔터티 사이에 정보의 조합이 발생되는가?
– 업무기술서, 장표에 관계연결에 대한 규칙이 서설되어 있는가?
– 업무기술서, 장표에 관계연결을 가능하게 하는 동사(Verb)가 있느나?
. 주식별자를 지정할 때 고려해야 할 사항
– 주식별자에 의해 엔터티 내의 모든 인스턴스들이 유일하게 구분되어야 한다.
– 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다.
– 지정된 주식별자의 값은 자주 변하지 않는 것이어야 한다.
– 주식별자가 지정이 되면 반드시 값이 들어와야 한다.
. 사원엔터티에서 식별자의 특성
– 주식별자
– 단일식별자
– 내부식별자
. 엔터티 내에 주식별자를 도출하는 기준
– 해당 업무에서 자주 이용되는 속성을 주식별자로 지정한다.
– 복합으로 주식별자를 구성할 경우 너무 많은 속성을 포함하지 않도록 한다.
. 비식별자 관계를 선택하는 기준
– 관계의 강약을 분석하여 상호간에 연관성이 약할 경우 비식별자관계를 고려한다.
– 자식테이블에서 독립적인 Primary Key의 구조를 가지기 원할 때 비식별자관계를 고려한다.
– 모든 관계가 식별자 관계로 연결되면 SQL Where절에서 비교하는 항목이 증가되어 조인에 참여하는 테이블에 따라 SQL문장이 길어져 SQL문의 복잡성이 증가되는 것을 방지하게 위해 비식별자관계를 고려한다.
– 부모엔터티에 참조값이 없어도 자식엔테터의 인스턴스가 생성될 수 있는 경우
– 여러 개의 엔터티를 하나로 통합하면서 각각의 엔터티가 갖고 있던 여러 개의 개별 관계가 통합되는 경우
– 자식쪽 엔터티의 주식별자를 부모엔터티와는 별도로 생성하는 것이 더 유리하다고 판단하는 경우
. 식별자와 비식별자관계 비교
항목 | 식별자관계 | 비식별자관계 |
목적 | 강한 연결관계 표현 | 약한 연결관계 표현 |
자식 주식별자 영향 | 자식 주식별자의 구성에 포함됨 | 자식 일반 속성에 포함됨 |
표기법 | 실선 표현 | 점선 표헌 |
연결 고려사항 | – 반드시 부모엔터티 종속 – 자식 주식별자구성에 부모 주식별자 포함 필요 – 상속받은 주식별자속성을 타엔터티에 이전 필요 |
– 약한 종속관계 – 자식 주식별자구성을 독립적으로 구성 – 자식 주식별자구성에 부모 주식별자 부분 필요 – 상속받은 주식별자속성을 타 엔터티에 차단 필요 – 부모쪽의 관계참여가 선택관계 |
. 식별자의 분류체계
분류 | 식별자 | 설명 |
대표성 여부 |
주식별자 | 엔터티 내에서 각 어커런스를 구분할 수 있는 구분자이며, 타 엔터티와 참조관계를 연결할 수 있는 식별자 |
보조식별자 | 엔터티 내에서 각 어커런스를 구분할 수 있는 구분자이나 대표성을 가지지 못해 참조관계 연결을 못함 | |
스스로 생성여부 |
내부식별자 | 엔터티 내부에서 스스로 만들어지는 식별자 |
외부식별자 | 타 엔터티와의 관계를 통해 타 엔터티로부터 받아오는 식별자 | |
속성의 수 | 단일식별자 | 하나의 속성으로 구성된 식별자 |
복합식별자 | 둘 이상의 속성으로 구성된 식별자 | |
대체 여부 | 본질식별자 | 업무에 의해 만들어지는 식별자 |
인조식별자 | 업무적으로 만들어지지는 않지만 원조식별자가 복잡한 구성을 가지고 있기 때문에 인위적으로 만든 식별자 |