데이터 모델링의 특징
특징 | 설명 |
추상화(Abstraction) | 공통적인 특징을 찾고 간략하게 표현한다. |
단순화(Simplification) | 누구나 이해할 수 있게 표현한다. |
명확성(Clarity) | 명확하게 의미가 해석되어야 하고 한 가지 의미를 가져야 한다. |
데이터 모델링 단계
- 개념적 모델링(Conceptual Data Modeling)
- 복잡하게 표현하지 않고 중요한 부분을 위주로 모델링하는 단계이다.
- 추상화 수준이 가장 높은 수준의 모델링이다.
- 전사적 관점에서 기업의 데이터를 모델링한다.
- 논리적 모델링(Logical Data Modeling)
- 개념적 모델링 → 논리적 모델링으로 변환하는 과정이다.
- 식별자를 정의하고 관계, 속성 등을 모두 표현한다.
- 정규화를 수행해서 데이터 모델의 독립성을 확보한다.
- 물리적 모델링(Physical Modeling)
- 테이블, 인덱스, 함수 등을 사용하여 데이터베이스를 실제로 구축한다. (SQL코딩을 통)
- 성능, 보안, 가용성 등을 고려해서 구축한다.
엔터티(Entity)
엔터티는 업무에서 관리해야 하는 데이터 집합을 의미하며, 저장되고 관리되어야 하는 데이터이다.
사람, 장소, 물건, 사건, 개념 등의 명사에 해당한다.
엔터티의 특징
1. 업무에서 관리되어야 하는 집합이다.
엔터티 특징의 첫 번째는 반드시 시스템을 구축하고자 하는 업무에서 필요로 하고 관리하고자 하는 정보여야 한다는 점이다. 예를 들어 위 그림에서 S병원은 환자의 엔터티가 필요하지만 A회사의 인사시스템에서는 필요없다.
2. 유일한 식별자가 있어야 한다.
어떤 엔터티이건 임의의 식별자(일련번호)를 부여하여 유일하게 만들 수는 있지만, 엔터티를 도출하는 경우에 각각의 업무적으로 의미를 가지는 인스턴스가 식별자에 의해 한 개씩만 존재하는지 검증해 보아야 한다.
예를 들어 직원을 구분할 수 있는 방법은 이름이나 사원번호가 될 수가 있다. 그러나 이름은 동명이인이 될 수 있으므로 유일하게 식별될 수 없다. 사원번호는 회사에 입사한 사람에게 고유하게 부여된 번호이므로 유일한 식별자가 될 수 있는 것이다.
3. 두 개 이상의 인스턴스가 있어야 한다.
인스턴스를 하나만 가지고 있는 엔터티는 집합이라고 볼 수 없다.
4. 엔터티에는 반드시 속성이 포함되어야 한다.
속성을 포함하지 않고 엔터티의 이름만 가지고 있는 경우는 관계가 생략되어 있거나 업무 분석이 미진하여 속성정보가 누락되는 경우에 해당한다. 단, 예외적으로 관계엔터티(Associative Entity)의 경우는 주식별자 속성만 가지고 있어도 엔터티로 인정한다.
5. 엔터티는 다른 엔터티와 최소한 한 개 이상 관계가 있어야 한다.
기본적으로 엔터티가 도출되었다는 것은 해당 업무내에서 업무적인 연관성을 가지고 다른 엔터티와의 연관의 의미를 가지고 있음을 나타낸다. 그러나 관계가 설정되지 않은 엔터티의 도출은 부적절한 엔터티가 도출되었거나 아니면 다른 엔터티와 적절한 관계를 찾지 못했을 가능성이 크다.
엔터티의 종류
▶ 유형과 무형에 따른 엔터티 종류
종류 | 설명 |
유형 엔터티 | 업무에서 도출되며 지속적으로 사용되는 엔터티 EX) 고객, 강사, 사원 등 |
개념 엔터티 | 물리적 형태가 없는 엔터티 EX) 거래소 종목, 코스닥 종목, 생명보험 상품 등 |
사건 엔터티 | 비즈니스 프로세스를 실행하면서 생성되는 엔터티 EX) 주문, 체결, 수수료 청구 등 |
▶ 발생 시점에 따른 엔터티 종류
종류 | 설명 |
기본 엔터티(Basic Entity) | 다른 엔터티로부터 영향을 받지 않고 독립적으로 생성되는 엔터티 EX) 고객, 상품, 부서 등 |
중심 엔터티(Main Entity) | 기본 엔터티로부터 발생되고 행위 엔터티를 생성하는 엔터티 EX) 계좌, 주문, 취소, 체결 등 |
행위 엔터티(Active Entity) | 2개 이상의 엔터티로부터 발생되는 엔터티 EX) 주문 이력, 체결 이력 등 |
속성(Attribute)
속성이라는 것은 업무에서 필요한 정보인 엔터티가 가지는 항목
더 이상 분리되지 않는 단위로, 업무에 필요한 데이터를 저장할 수 있음
속성의 특징
- 속성은 업무에서 관리되는 정보이다.
- 속성은 일반적으로 하나의 값만 가진다.
- 주식별자에게 함수적으로 종속된다. 즉, 기본키가 변경되면 속성의 값도 변경된다.
속성의 종류
▶ 분해 여부에 따른 속성의 종류
종류 | 설명 |
단일 속성 | 하나의 의미로 구성된 것 EX) 회원ID, 이름 |
복합 속성 | 여러 개의 의미가 있는 것 EX) 주소(시, 군, 동 등으로 분해 가능) |
다중값 속성 | 속성에 여러 개의 값을 가질 수 있는 것 EX) 상품 리스트 |
▶ 특성에 따른 속성의 종류
종류 | 설명 |
기본 속성 | 비즈니스 프로세스에서 도출되는 본래의 속성 EX) 회원ID, 이름, 계좌번호, 주문 일자 등 |
설계 속성 | 데이터 모델링 과정에서 발생되는 속성, 유일한 값을 부여 EX) 상품코드, 지점코드 |
파생 속성 | 다른 속성에 의하여 만들어지는 속성 EX) 합계, 평균 |
관계(Relationship)
관계는 엔터티 간의 관련성을 의미하며 존재 관계와 행위 관계로 분류된다.
관계의 종류
[1] 존재 관계
존재 관계는 엔터티 간의 상태를 의미한다.
예를 들어 고객이 은행의 회원가입을 하면, 관리점이 할당되고, 그 할당된 관리점에서 고객을 관리한다.
[2] 행위 관계
행위 관계는 두 개의 엔터티가 어떤 행위에 의한 관련성이 있는 것이다.
예를 들어 증권회사는 계좌를 개설하고 그 계좌를 이용하여 주문을 발주하는 것이다.
관계 차수(Relation Cardinality)
두 개의 엔터티간 관계에서 참여자의 수를 표현하는 것을 관계 차수라고한다.
가장 일반적인 관계차수 표현방법은 1:1, 1:N, M:N이다.
가장 중요하게 고려해야 할 사항은 한 개의 관계가 존재하느냐 아니면 두 개 이상의 멤버쉽이 존재하는지를 파악하는 것이 중요하다.
① 1 : 1 관계(일대일 관계)
1:1 관계에 참여하는 각각의 엔터티는 관게를 맺는 다른 엔터티의 엔터티에 대해 단지 하나의 관계만을 가지고 있다.
② 1 : N 관계(일대다 관계)
1:N 관계는 엔터티에 행이 하나 있을 때 다른 엔터티의 값이 여러 개 있는 관계이다.
③ M : N 관계(다대다 관계)
M:N 관계는 두 개의 엔터티가 서로 여러 개의 관계를 가지고 있는 것이다.
한 제품에 대해 여러 개의 주문이 들어올 수 있고 반대로 여러 개의 제품에 대하여 하나의 주문이 들어올 수 있기 때문에 이 사이는 M:N 관계이다.
필수적 관계와 선택적 관계
- 필수적 관계 : 반드시 하나는 존재해야 하는 관계. 필수적 관계는 " | "로 표현된다.
- EX) 학생이 반드시 있어야 수업이 개설될 수 있기 때문에 수업 엔터티에게 학생 엔터티는 필수적 관계이다.
- 선택적 관계 : 없을 수도 있는 관계. 선택적 관계는 " O "로 표현된다.
- EX) 학생은 수업을 들을 수도, 안 들을 수도 있기 때문에 수업 엔터티에 대해 선택적 관계가 된다.
식별 관계(Identification Relationship)와 비식별 관계(Non-Identification Relationship)
[1] 식별 관계(Identification Relationship)
- 계좌와 계좌입금 엔터티에서 계좌는 독립적으로 존재할 수 있는 강한 개체(Strong Entity)이다.
- 강한 개체는 식별 관계로 표현된다.
- 즉, 식별 관계란 계좌 엔터티의 기본키인 계좌번호를 계좌입금 엔터티의 기본키(FK)의 하나로 공유하는 것이다.
- 강한 개체의 기본키 값이 변경되면 식별 관계(기본키를 공유받은)에 있는 엔터티의 값도 변경된다.
- 여기서 계좌입금 엔터티는 약한 개체가 된다.
- 식별 관계는 실선으로 표현한다.
[2] 비식별 관계
- 비식별 관계는 강한 개체의 기본키를 다른 엔터티의 기본키가 아닌 일반 칼럼으로 관계를 가지는 것이다.
- 예를 들어 사원 엔터티의 기본키는 부서 코드이고, 부서 엔터티와 비식별 관계를 가지고 있다.
- 즉, 부서 코드는 사원 엔터티의 기본키가 아닌 일반칼럼으로 참조된다.
- 비식별 관계는 점선으로 표현한다.
'SQL' 카테고리의 다른 글
DDL(Data Definition Language) (0) | 2023.07.24 |
---|---|
정규화(Normalization)와 반정규화(De-Normalization) (0) | 2023.07.13 |
관계형 데이터베이스 (0) | 2023.07.08 |
SQL이란? (0) | 2023.07.07 |