제1절 데이터 모델의 이해
[데이터 모델링이란]
- 정보시스템을 구축하기 위한 데이터 관점의 업무 분석 기법
- 현실 세계의 데이터(what)에 대해 약속된 표기법으로 표현하는 과정
- 데이터베이스를 구축하기 위한 분석/설계의 과정
- 일정한 형식에 맞추어 표현하는 추상화의 의미를 가진다.
- 누구나 이해 가능하도록 단순하고 정확하게 현상을 기술해야 한다.
[데이터 모델링 유의점]
- 같은 정보를 저장하지 않도록 중복성 최소화
- 데이터 정의를 사용 프로세스와 분리하여 유연성 최대화
- 매핑을 통한 연계성 지양
- 데이터 간 상호 연관관계를 명확하게 정의하여 일관성 유지 지향
[데이터 모델링 개념]
- 개념적 데이터 모델링 — 추상화 수준이 높고 업무 중심적, 전사적 데이터 모델링
- 논리적 데이터 모델링 — 시스템 구축에 대해 Key, 속성, 관계 등을 정확하게 표현(재사용성 높음)
- 물리적 데이터 모델링 — 실제로 데이터베이스에 이식할 수 있도록 성능, 저장 등 고려하여 설계
[데이터베이스 스키마]
- 외부 스키마
- 개념 스키마 — 전체 관점의 통합적 표현, 필요로 하는 데이터를 통합하고 표현한 스키마
- 내부 스키마
제2절 엔터티
[ERD란]
- 1976년 피터첸에 의해 Entity-Relationship Model 이란 표기법이 만들어짐
- 작성 방법은 엔터티 도출 → 엔터티 배치 → 관계 설정 → 관계명 기술
- 관계의 명칭은 관계 표현에 있어 매우 중요
- 가장 중요한 엔터티를 왼쪽 상단에 배치, 추가로 발생되는 엔터티들을 왼편과 하단에 배치
[엔터티의 특징]
- 반드시 해당 업무에서 이용하고 관리하고자 하는 정보
- 유일한 식별자에 의해 식별 가능
- 영속적 인스턴트의 집합(두 개 이상)
- 반드시 속성이 있어야 한다.
- 다른 엔터티와 최소 한 개 이상의 관계가 있어야 한다.
- 약어 사용 X, 단수 명사, 유일한 이름, 생성 의미대로 이름 부여
- ERD에서는 존재적 관계와 행위에 의한 관계를 구분하지 않고 단일화
- 하지만 클래스 다이어그램에서는 이것을 구분하여 연관관계와 의존 관계로(실선과 점선의 표기) 표현
[엔터티의 종류]
- 기본 엔터티(키엔터티) — 원래 존재하는 정보, 독립적 생성 가능, 다른 엔터티 부모 역할, 고유한 주식별자
- 중심 엔터티(메인엔터티)
- 행위 엔터티
- 개념 엔터티
제3절 속성
[속성이란]
업무에서 필요로 하는 인스턴스를 관리하고 더 이상 분리되지 않는 최소 데이터 단위
각 엔터티(테이블)의 속성에 대해 데이터 타입, 크기, 제약사항을 정의하는 개념은 도메인(Domain)
[속성의 특징]
- 엔터티에 대해 자세하고 구체적인 정보를 나타낸다.
- 하나의 엔터티는 두 개 이상의 속성을 갖는다.
- 하나의 인스턴스에서 각각의 속성은 한 개의 속성값을 가진다.
- 속성도 집합
[속성의 종류]
- 기본 속성 — 원래 가지고 있어야 하는 속성
- 설계 속성 — 데이터를 조회할 때 빠른 성능을 낼 수 있도록 원래 속성의 값을 계산하여 저장할 수 있는 속성
- 파생 속성
[속성의 명칭 부여]
- 해당 업무에서 사용하는 이름 부여
- 서술식 속성명 지양
- 약어 사용 제한
- 젠체 데이터모델에서 유일성 확보
제4절 관계
[관계란]
- 존재적 관계와 행위에 의한 관계로 나뉨
- 관계의 표기법은 관계명, 차수명, 선택성(선택사양)의 3가지 개념을 사용
[관계의 표기법]
- 관계명(Membership) — 관계의 이름
- 관계 차수(Cardinality) — 1:1, 1:M, M:N
- 관계 선택사양(Optionality) — 필수 관계, 선 택관계
[관계 체크 사항]
- 두 개의 엔터티 사이에 관심 있는 연관 규칙이 존재하는지
- 두 개의 엔터티 사이에 정보의 조합이 발생되는지
- 업무 기술서, 장표에 관계 연결 규칙이 서술되어 있는지
- 업무 기술서, 장표에 관계 연결을 가능하게 하는 동사(Verb)가 있는지
제5절 식별자
[식별자의 종류]
- 엔터티 내에서 대표성을 가지는가에 따라 주 식별자, 보조 식별자로 구분
- 엔터티 내에서 스스로 생성되었는지 여부에 따라 내부 식별자, 외부 식별자로 구분
- 단일 속성으로 식별이 되는가에 따라 단일 식별자, 복합 식별자로 구분
- 원래 업무적으로 의미가 있던 식별자 속성을 대체하여 일련번호와 같이 새롭게 만든 식별자를 구분하기 위해 본질 식별자, 인조 식별자로 구분
[주 식별자 특징]
- 유일성 — 주 식별자에 의해 엔터티내에 모든 인스턴스들을 유일하게 구분
- 최소성 — 주 식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 함
- 불변성 — 주 식별자가 한 번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 함
- 존재성 — 주 식별자가 지정되면 반드시 데이터 값이 존재(Null 안 됨)
[주 식별자 도출 기준]
- 해당 업무에서 자주 이용되는 속성을 주 식별자로 지정
- 명칭, 내역 등과 같이 이름으로 기술되는 것들은 지정하기에 적절치 않음 (특히 이름 같은 경우 동명이인이 있을 수 있어 더욱더 적절치 않다.)
- 복합으로 주 식별자를 구성할 경우 너무 많은 속성을 포함하지 않도록 한다.
[식별자와 비 식별자 관계]
- 관계의 강약을 분석하여 상호 간에 연관성이 약할 경우 비 식별자 관계를 고려
- 자식 테이블에서 독립적인 Primary Key의 구조를 가지기 원할 때 식별자 관계를 고려
- 부모 엔터티의 주 식별자를 자식 엔터티에서 받아 손자 엔터티까지 계속 흘려보내기 위해 식별자 관계를 고려
- 모든 관계가 식별자 관계로 연결되면 SQL 문장이 길어져 복잡성이 증가되는 것을 방지하기 위해 비 식별자 관계를 고려 (가장 마지막에 고려해야 하는 비중, 단순히 SQL 문장의 복잡도를 낮추는 목적에서 고려되는 건 바람직하지 않다.)
- 부모 엔터티에 참조 값이 없어도 자식 엔터티의 인스턴스가 생성될 수 있는 경우 비 식별자 관계로 고려
- 부모 엔터티의 인스턴스가 자식 엔터티와 같이 소멸되는 경우 식별자 관계를 고려
- 여러 개의 엔터티를 하나로 통합하면서 각각의 엔터티가 갖고 있던 여러 개의 개별 관계가 통합되는 경우 비 식별자 관계로 고려
- 자식 쪽 엔터티의 주 식별자를 부모 엔터티와는 별도로 생성하는 것이 더 유리하다고 판단하는 경우 비 식별자 관계로 고려