1. 데이터 모델링의 기본 원칙
- 커뮤니케이션 원칙: 요구 사항은 모든 사람들이 이해할 수 있도록 명확하게 공표됨은 물론 최종 사용자 지향적으로 분명하게 파악되는 수준으로 작성되어야 함.
- 모델링 상세화 원칙: 데이터의 상세화 정도를 제시하고, 조직이 사용하는 정보 구조의 ’최소 공통 분모‘를 제시해야 함.
- 논리적 표현 원칙: 모델은 물리적 제약조건 없이 비즈니스를 그대로 반영해야 함. 즉, 논리적 데이터 모델은 특정 아키텍처, 기술 또는 제품 등에 독립적이어야 함.
2. 데이터 모델링 정의
개념 데이터 모델링
- 현실 세계의 다양한 업무 정보를 추상화를 통해 정보의 구조와 업무 규칙을 ERD로 표현하는 과정.
- 엔터티 정의를 명확히 하는 것은 바람직하나, 연관 하위 엔터티까지 정의하는 것은 수평적 사고를 방해할 위험이 있어 권장되지 않음.
논리 데이터 모델링
- 개념 데이터 모델을 특정 데이터베이스 구조(계층형, 망형, 관계형)로 표현하는 것.
- 수행 절차: 주제영역 정의 → 엔터티 정의 → 관계 정의 → 속성 정의 → 식별자 확정 → 정규화 → 이력관리.
- 주제영역 정의:
- 조직이 사용하는 데이터의 최상위 집합으로 하향식(Top Down) 분석에 유용함.
- 계층적 표현이 가능하며 분해 시 하위 주제영역이나 엔터티가 나타남.
- 내부 개체들이 높은 결합성을 갖도록 설계해야 함.
3. 엔터티-관계 데이터 모델 (ER Model)
- 피터 첸이 최초로 제안하였으며, 단순성 덕분에 개념/논리 모델링에서 가장 일반적으로 사용됨.
- 현실 세계 개체들의 “공통된 특징”을 파악하여 추상화하고 핵심 개념을 간추려 내는 활동임.
- 3구성요소: 엔터티, 관계, 속성.
- 확장된 ER 모델은 서브타입을 포함하며, 서로 다른 뷰들을 하나로 통합한 단일 설계안 도출이 가능함.
4. 논리 데이터 모델링에서 사용하는 추상화 유형
- 유형화(Classification): 현실의 같은 성질 멤버들을 타입 또는 유형(Class)이라는 하나의 개념으로 정의함.
- 집단화(Aggregation): 속성이라는 타입들의 세트로 구성되는 새로운 타입(엔터티 타입)을 정의함.
- 일반화(Generalization): 여러 엔터티 타입 간의 공통 특성을 파악하여 서브세트(부분집합)를 정의함.
5. 논리 데이터 모델링 추가 사항
- 대상 데이터의 논리적 형태를 표현하기 위해 한글화가 필수적이며 자연어로 표현되어야 함.
- 초기 단계에는 다대다, 순환, 배타적 관계 등이 빈번하게 나타남.
- 잘 설계된 모델은 업무 영역이 바뀌어도 설계 변경이 거의 발생하지 않음.
- 하나의 엔터티가 물리적으로 반드시 하나의 테이블이나 세그먼트가 되지 않을 수 있음.
6. 엔터티 일반화 (Super/Subtype)
- 배타적 서브타입:
- 서브타입 간 상호 배타적이며 슈퍼타입 인스턴스는 반드시 하나의 서브타입과 1:1 관계를 가짐.
- 서브타입의 합은 슈퍼타입과 같으며, 관계는 모두 선택적이거나 모두 필수적이어야 함.
- 물리 모델 구현 시 성능이나 유연성을 고려해 하나로 통합될 수 있음.
- 포괄적 서브타입: 슈퍼타입 인스턴스 하나가 두 개 이상의 서브타입과 관계를 가질 수 있음.
7. 일반화(Generalization) vs 상세화(Specialization) 비교
| 구분 | 일반화(Generalization) | 상세화(Specialization) |
|---|---|---|
| 장점 | • 데이터 통합으로 조회가 간편함 • 한 개의 프로그램으로 업무 처리 가능 • 업무 추가 시 최소한의 변경으로 지원 • 전체 업무 로직 변화 시 신속 반영 |
• 업무에 대한 명확한 파악 가능 • 데이터 추가/변경이 자유로움 • 특화 업무의 속성/프로그램 관리 용이 • 장애/에러 파급효과가 작음 • 인수인계 및 업무 파악 신속 수행 |
| 단점 | • 공통적이지 않은 속성 많으면 효과 반감 • 업무 데이터 혼재로 정확한 파악 힘듦 • 모든 업무 이해 인원만 관리 가능 • 특정 데이터 변경이 타 업무에 영향 |
• 엔터티 수 증가로 관리 어려움 발생 • 데이터 간 불일치 초래 가능성 • 통합적인 정보 도출이 어려움 • 동일 로직 별도 개발로 관리 비효율 |
8. 데이터의 특성
- 조작과 기술에 비해 독립적임.
- 프로세스에 비해 안정적(변화가 적음).
- 여러 프로세스 또는 기능에서 공통으로 사용됨.
9. 데이터 무결성 규칙
- 엔터티 무결성: 주 키(PK)는 Null 값을 포함하지 않으며 유일해야 함.
- 참조 무결성: 외래 키(FK) 값은 관련 있는 엔터티의 주 키 값으로 존재해야 함.
- 도메인 무결성: 타입, 길이, 허용 값, 기본값, 널 여부 등 속성에 관한 제한 규칙.
- 연쇄 작용/업무 규칙: 입력, 수정, 삭제 시 다른 엔터티나 속성에 영향을 미치는 업무 규칙.
10. 엔터티 무결성
- 엔터티 내 특정 건의 유일성을 보장해야 함.
- 최소한의 속성 집합으로 구성되어야 함.
11. 참조 무결성 규칙
입력 규칙 (자식 엔터티 입력 시)
- Dependent: 부모 PK가 존재할 때만 자식 입력 허용.
- Automatic: 부모 PK가 없으면 생성 후 자식 입력.
- Default / Nullify: 부모 PK가 없으면 자식을 기본값 또는 Null로 처리.
- No effect: 조건 없이 입력 허용.
삭제 규칙 (부모 엔터티 삭제 시)
- Restrict: 자식 데이터가 없는 경우에만 부모 삭제 허용.
- Cascade: 부모 삭제 시 참조하는 자식 데이터까지 연쇄 삭제.
- Default / Null: 부모 삭제 허용 후 자식 외래 키를 기본값 또는 Null로 수정.
- No effect: 조건 없이 삭제 허용.
12. 도메인 무결성
- 같은 도메인의 값들끼리만 비교가 가능함.
- 속성이 취할 수 있는 값의 범위를 제한함.
13. 관계형 모델 이론
데이터를 열(Attribute)과 행(Tuple)으로 구성된 테이블(Relation)로 표현하는 방식임.
- 릴레이션 = 테이블 / 애트리뷰트 = 열 / 튜플 = 행.
- 차수(Degree): 애트리뷰트의 개수.
- 카디널리티(Cardinality): 튜플의 개수.
- 데이터의 가장 작은 논리적 단위는 애트리뷰트이며, 같은 타입의 원자 값 집합을 도메인이라 함.
14. 객체 지향 모델 (Object-Oriented)
- 객체(Object): 데이터와 이를 운영하는 메소드(Method)로 구성됨.
- 객체들은 속성과 메소드를 공유하여 객체 클래스가 되며, 실제 데이터는 객체 인스턴스임.
- 상속, 다형성, 캡슐화 개념을 활용하며 객체 간 연관 또는 상속을 통해 연결됨.
15. 객체지향 모델링 - 논리 데이터 모델링 대응
| 객체지향 (OO) | 논리 데이터 모델 |
|---|---|
| 객체 | 엔터티 |
| 객체 클래스 | 엔터티 유형 |
| 객체 인스턴스 | 엔터티 인스턴스 |
| 속성 | 속성 |
| 연결 (Association) | 관계 (Relationships) |
| 캡슐화 / 메시지 | 대응 개념 없음 |
16. 관계형 모델의 릴레이션(테이블) 6가지 특성
- 각 열은 하나의 값을 가짐: 애트리뷰트의 원자성 및 반복 그룹 불허 (1차 정규형).
- 각 열의 값은 동일 종류: 같은 도메인 하에서 정의됨 (도메인 무결성).
- 각 행은 유일함: 튜플의 유일성 보장 (엔터티 무결성).
- 열의 순서 무관: 물리적 위치가 아닌 이름에 의해 값을 식별함.
- 행의 순서 무관: 순서가 바뀌어도 본질적 릴레이션은 동일함.
- 유일한 열 이름: 열은 위치가 아닌 유일한 이름으로 식별함.
17. 관계형 vs 비관계형 모델 이론
- 관계형: 데이터 중심 분석, 구조/조작/무결성 정의, 집합적 처리 요구.
- 비관계형: 프로세스 중심 분석, 구조/조작 정의, 레코드 단위(한 건씩) 처리 요구.
18. 관계연산자와 처리연산자
- 관계연산자: Select(행 추출), Project(열 추출), Product(행 조합), Join(수평 결합), Union(수직 결합), Intersection(교집합), Difference(차집합), Division 등.
- 처리연산자: Insert, Update, Delete.
19. 속성 (Attribute)
- 정의: 더 이상 분리되지 않는 단위 값이며 실체를 서술하는 정보 항목임.
- 유형:
- 기본 속성: 원래 존재하며 유도될 수 없는 속성.
- 유도 속성: 다른 속성값으로부터 계산/유도되는 속성.
- 설계 속성: 시스템 운영 단순화를 위해 생성한 속성.
- 검증: 원자 단위 검증, 유일값 검증, 추출값 검증.
20. 엔터티 분류
일반적인 분류
- 유형 엔터티: 물리적 존재 (고객, 상품).
- 활동 엔터티: 사건 정보 (주문, 계약).
- 개념 엔터티: 무형의 개념 (계정과목, 성적).
모델 관점 분류
- 독립 엔터티: 타 인스턴스에 의존하지 않음 (고객, 사원).
- 종속 엔터티: 타 인스턴스에 의존하여 식별됨 (주문상품).
- 특성 엔터티: 속성 그룹으로 존재 (사원경력).
- 연관 엔터티: M:N 관계 해소 시 생성.
- 서브타입 엔터티: 공통 속성을 공유하는 부분집합.
발생 시점 분류
- 키 엔터티: 부모가 없는 엔터티 (사원, 부서).
- 메인 엔터티: 업무 중심에 해당하는 엔터티 (주문, 보험계약).
- 액션 엔터티: 키/메인을 제외한 이력성 엔터티 (상태 이력).
후보 선정 유의 사항
- 중요 엔터티라도 너무 깊게 분석하지 말 것.
- 프로세스에 연연하지 말고 집합을 개념적으로 정의할 것.
- 이음동의어, 동음이의어를 명확히 구분하여 파악할 것.