
데이터 모델링 특징
- 단순화 : 복잡한 현실 세계를 이해하고 표현하기 쉽게함.
- 추상화 : 현실 세계를 일정한 형식에 맞추어 간략하게 표현함.
- 명확화 : 애매모호함을 배제하고 누구나 이해가 가능하도록 현상을 기술함.
데이터 모델링 유의점
- 중복
- 비유연성
- 비일관성
데이터 모델링 3요소
- 대상(Entity)
- 속성(Attribute)
- 관계(Relationship)
데이터 모델링 구조 3단계
- 개념적 모델링 : 업무 중심적이고 포괄적인 수준의 모델링으로 추상화 수준이 가장 높다. 업무의 핵심 엔티티를 추출하는 단계로 ERD를 작성한다.
- 논리적 모델링 : 개념적 모델링의 결과를 토대로 속성, 식별자, 관계 등을 표현한다. 정규화를 수행한다. 재사용성이 가장 높다.
- 물리적 모델링 : 논리적 모델링 이후에 물리적으로 생성하는 단계이다. 성능, 디스크 저장구조, 가용성, 보안 등을 고려한다.
데이터베이스 스키마 구조 3단계
- 외부 스키마 : 사용자가 보는 관점에서 데이터베이스 스키마를 정의한다.
- 개념 스키마 : 사용자 관점의 데이터베이스 스키마를 통합하여 데이터베이스의 전체적인 논리적 구조(엔티티, 속성, 관계 등)를 정의한다.
- 내부 스키마 : 데이터가 물리적으로 어떻게 저장되는지를 정의한다. 즉, 데이터의 저장 구조, 컬럼, 인덱스 등을 정의한다.
ERD(Entity Relationship Diagram)
- 엔티티와 엔티티 간의 관계를 시각적으로 표현한 다이어그램으로 1976년 피터 첸(Peter Chen)에 의해 만들어진 표기법이다.
ERD 작성 순서
- 엔티티를 그린다.
- 엔티티를 적절하게 배치한다.
- 엔티티 간 관계를 설정한다.
- 관계명을 기술한다.
- 관계의 참여도를 기술한다.
- 관계의 필수여부를 기술한다.
필수적, 선택적 관계의 ERD
두 엔티티의 관계가 서로 필수적일 때 하나의 트랜젝션을 형성하게 되고, 두 엔티티가 서로 독립적 수행이 가능하면 선택적 관계로 표현한다.
- IE 표기법 : 필수적 관계에서는 원을 그리지 않는다. 선택적 관게에서는 관계선 끝에 원을 그린다.
- BARKER 표기법 : 필수적 관계에서는 관계선을 실선으로 표기한다. 선택적 관계에서는 관계선을 점선으로 표기한다.
NULL의 ERD 표기법
- IE 표기법 : NULL 허용 여부를 알 수 없다.
- BARKER 표기법 : 속성 이름 앞에 원이 있으면 NULL 값을 허용함을 의미한다.
엔티티의 특징
- 반드시 해당 업무에서 필요하고 관리하고자 하는 정보이여야 한다.
- 유일한 식별자에 의해 식별이 가능해야 한다.
- 영속적으로 존재하는 인스턴스의 집합이여야 한다.
- 엔티티는 업무 프로세스에 의해 이용되어야 한다.
- 엔티티는 반드시 속성이 있어야 한다.
- 엔티티는 다른 엔티티와 최소 한 개 이상의 관계가 있어야 한다.
엔티티의 분류
- 유형과 무형에 따른 분류
- 유형 엔티티 : 물리적인 형태가 있는 엔티티
- 개념 엔티티 : 물리적인 형태가 없는 엔티티
- 사건 엔티티 : 업무 수행에 따라 발생하는 엔티티
- 발생 시점에 따른 분류
- 기본, 키 엔티티 : 업무에 원래 존재하는 정보로 자신의 고유한 주식별자를 가진다. 다른 엔티티로부터 영향을 받지 않고 독립적으로 생성되는 엔티티이다.
- 중심 엔티티 : 기본, 키 엔티티로부터 발생되고 그 업무에서의 중심적인 역할을 한다.
- 행위 엔티티 : 두 개 이상의 부모 엔티티로부터 발생된다.
속성(Attribute)
- 업무에서 필요로하는 고유한 성질, 특징을 의미한다. 더 이상 분리되지 않는 최소의 데이터 단위이다.
속성의 특징
- 반드시 해당 업무에서 필요하고 관리하고자 하는 정보이여야 한다.
- 주식별자에 함수적 종속성을 가져야 한다.
- 한 개의 속성은 한 개의 속성값만을 갖는다.(원자성)
속성의 분류
- 속성의 특성에 따른 분류
- 기본 속성 : 업무로부터 추출된 모든 속성이다.
- 설계 속성 : 기본 속성 외에 업무를 규칙화하기 위해 새로 만들어지거나 기본 속성을 변형하여 만들어지는 속성이다.
- 파생 속성 : 다른 속성에 의해 만들어지는 속성으로, 일반적으로 계산 된 값들이 해당된다.
- 엔티티 구성방식에 따른 분류
- PK
- FK
- 일반 속성
- 분해 여부에 따른 분류
- 단일 속성
- 복합 속성
- 다중값 속성
엔티티, 인스턴스, 속성, 속성값의 관계
- 한 개의 엔티티는 두 개 이상의 인스턴스 집합이어야 한다.
- 한 개의 엔티티는 두 개 이상의 속성을 갖는다.
- 한 개의 속성은 한 개의 속성값을 갖는다.
함수적 종속성
어떤 속성 A의 값에 의해 다른 속성 B가 유일하게 결정된다면, B는 A에 함수적으로 종속되었다고 한다. A -> B
- 완전 함수적 종속 : 특정 컬럼이 기본키 전체에 대해 완전히 종속되었을 때를 말한다.
- 부분 함수적 종속 : 기본키 전체가 아니라, 기본키 일부에 대해 종속되었을 때를 말한다.
관계의 종류
- 존재적 관계 : 한 엔티티의 존재가 다른 엔티티의 존재에 영향을 미치는 관계이다.
- 행위적 관계 : 엔티티 간의 어떤 행위가 영향을 미치는 관계이다.
관계의 구성
- 관계명(Membership)
- 관계 차수(Cardinality) : 한 엔티티의 인스턴스가 다른 엔티티의 인스턴스와 어떻게 연결되는지를 나타내는 표현이다. 1:1, 1:M, M:N 등으로 표현한다.
- 완전 1:1 관계 : 하나의 엔티티에 관계되는 엔티티가 반드시 하나로 존재하는 경우
- 선택적 1:1 관계 : 하나의 엔티티에 관계되는 엔티티가 없을 수 있는 경우
- 1:M 관계 : 엔티티의 하나의 행에 다른 엔티티의 값이 여러 개 있는 경우
- M:N 관계 : 조인 연산 시 카테시안 곱이 발생하므로 1:N 관계로 해소하는 것이 좋다.
- 관계 선택사양(Optionality) : 필수 관계, 선택 관계
두 개의 엔티티 사이에서 관계를 도출할 때 확인해야 할 사항
- 두 개의 엔티티 사이에 관심 있는 연관규칙이 존재하는가?
- 두 개의 엔티티 사이에 정보의 조합이 발생하는가?
- 업무기술서, 장표에 관계연결에 대한 규칙이 서술되어 있는가?
- 업무기술서, 장표에 관계 연결을 가능하게 하는 동사(Verb)가 있는가?
식별자의 분류
- 엔티티 내에서 대표성 여부에 따른 분류
- 주식별자 : 유일성과 최소성을 만족하면서 엔티티를 대표하는 식별자.
- 보조식별자 : 유일성과 최소성은 만족하지만 대표성을 만족하지 못하는 식별자.
- 엔티티 내에서 스스로 생성되었는지 여부에 따른 분류
- 내부식별자 : 다른 엔티티의 참조 없이 엔티티 내부에서 생성되는 식별자.
- 외부식별자 : 다른 엔티티와 관계로 인해 만들어지는 식별자.(FK)
- 단일 속성으로 식별이 되는가에 따른 분류
- 단일식별자 : 하나의 속성으로 구성.
- 복합식별자 : 두 개 이상의 속성으로 구성.
- 대체 여부에 따른 분류
- 본질식별자 : 비즈니스 프로세스에서 만들어지는 식별자.
- 인조식별자 : 인위적으로 만들어지는 식별자.
주식별자의 특징
- 유일성 : 주식별자에 의해 엔티티 내에 모든 인스턴스들을 유일하게 구분함.
- 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 함.
- 불변성 : 주식별자가 한 번 특정 엔티티에 지정되면 그 식별자의 값은 자주 변하지 않는 것이어야 한다.
- 존재성 : 주식별자가 지정되면 반드시 데이터 값이 존재해야 함.(NULL 값을 허용하지 않는다.)
식별자 관계와 비식별자 관계
- 식별자 관계(강한 연결 관계) : 하나의 엔티티의 기본키를 다른 엔티티가 기본키의 하나로 공유하는 관계이다. ERD에서 실선으로 표시한다. 반드시 부모 엔티티에 종속한다.
- 비식별자 관계(약한 연결 관계) : 하나의 엔티티의 기본키를 다른 엔티티가 기본키가 아닌 일반 속성으로 갖는 관계이다. ERD에서 점선으로 표시한다. 부모 쪽의 관계 참여가 선택적이다.
정규화
- 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 과정이다.
- 데이터의 중복을 제거하고 데이터 모델의 독립성을 확보한다.
- 데이터 이상 현상을 줄이기 위한 데이터베이스 설계 기법이다.
- 엔티티를 상세화하는 과정으로 논리 데이터 모델링 시점에서 고려된다.
정규화 단계
- 제 1정규형 : 모든 속성은 반드시 하나의 값을 가져야 한다.
- 제 2정규형 : 완전 함수적 종속을 만족하도록 테이블을 분해한다. 즉, 부분 함수적 종속을 갖는 컬럼을 다른 테이블로 분해한다.
- 제 3정규형 : 이행적 종속을 제거하기 위해 테이블을 분해한다.
계층형 데이터 모델
- 자기 자신끼리 관계가 발생하는 셀프 조인을 말한다.
NULL의 특성
- 널 값은 아직 정의되지 않은 값으로 0 또는 공백과 다르다.
- 테이블을 생성할 때 NOT NULL 또는 PRIMARY KEY로 정의되지 않은 모든 속성은 널 값을 포함할 수 있다.
- 널 값을 포함하는 연산의 경우 연산 결과는 항상 널 값이다.
- 결과값으로 널이 아닌 다른 값을 얻고자 할 때 NVL, ISNULL 함수를 사용한다.
- 그룹 함수(집계 함수)는 널 값을 제외하고 연산을 수행한다.
- COUNT(*) 함수는 널 값과 상관없이 모든 행의 수를 반환한다.
- NULL 그룹도 GROUP BY 결과로 출력된다.