01. 데이터 모델링의 이해
(1) 모델링(Modeling)
데이터베이스에서의 모델링은 '현실 세계를 단순화하여 표현하는 기법'이다.
(2) 모델링의 특징
① 추상화(Abstraction) : 현실 세계를 일정한 형식으로 표현하는 것, 아이디어나 개념을 간략하게 표현하는 과정
② 단순화(Simplification) : 복잡한 현실 세계를 정해진 표기법으로 단순하고 쉽게 표현한다는 의미
③ 명확화(Clarity) : 불분명함을 제거하고 명확하게 해석할 수 있도록 기술한다는 의미
(3) 모델링의 세 가지 관점
① 데이터 관점
데이터 위주의 모델링, 어떤 데이터들이 업무와 얽혀있는지, 그리고 그 데이터 간에는 어떤 관계가 있는지에 대해서 모델링하는 방법
② 프로세스 관점
프로세스 위주의 모델링, 이 업무가 실제로 처리하고 있는 일은 무엇인지 또는 처리해야 하는 일은 무엇인지 모델링하는 방법
③ 데이터와 프로세스의 상관 관점
데이터와 프로세스의 관계를 위주로 한 모델링, 프로세스의 흐름에 따라 데이터가 어떤 영향을 받는지를 모델링하는 방법
(4) 모델링의 세 가지 단계
① 개념적 데이터 모델링
전사적 데이터 모델링 수행 시 행해지며 추상화 레벨이 가장 높은 모델링, 이 단계는 업무 중심적이고 포괄적인 수준의 모델링이 진행
② 논리적 데이터 모델링
재사용성이 가장 높은 모델링으로 데이터베이스 모델에 대한 키, 속성, 관계 등을 모두 표현하는 단계
③ 물리적 데이터 모델링
실제 데이터베이스로 구현할 수 있도록 성능이나 가용성 등의 물리적인 성격을 고려하여 모델을 표현하는 단계
(5) 데이터의 독립성
① 3단계 스키마 구조
가. 외부스키마
사용자의 관점 : Multiple User's View 단계로 각 사용자가 보는 데이터베이스의 스키마를 정의
나. 개념스키마
통합된 관점 : Community View of DB 단계로 모든 사용자가 보는 데이터베이스의 스키마를 통합하여 전체 데이터베이스를 나타내는 것, 데이터베이스에 저장되는 데이터들을 표현하고 데이터들 간의 관계를 나타냄
다. 내부스키마
물리적 관점 : Physical Representation 단계로 물리적인 저장 구조를 나타낸다. 실질적인 데이터의 저장 구조나 컬럼 정의, 인덱스 등이 포함
② 3단계 스키마 구조가 보장하는 독립성
가. 논리적 독립성 : 개념스키마가 변경되어도 외부스키마는 영향받지 X
나. 물리적 독립성 : 내부스키마가 변경되어도 외부/개념 스키마는 영향받지 X
(6) ERD
시스템에 어떤 엔터티들이 존재하며 그들 간에 어떤 관계가 있는지를 나타내는 다이어그램
① ERD 작성순서
ㄱ. 엔터티를 도출하고 그린다.
ㄴ. 엔터티를 적절하게 배치한다.
ㄷ. 엔터티 간의 관계를 설정한다.
ㄹ. 관계명을 기입한다.
ㅁ. 관계의 참여도를 기입한다.
ㅂ. 관계의 필수/선택 여부를 기입한다.
02. 엔터티(Entity)
(1) 엔터티란?
엔터티의 사전적 의미는 '독립체'이다. DB에서 엔터티는 식별이 가능한 객체라는 의미를 가지고 있다.
쉽게 말해 엔터티는 업무에서 쓰이는 데이터를 용도별로 분류한 그룹이라 볼 수 있다.
(2) 엔터티의 특징
① 업무에서 쓰이는 정보여야 함
엔터티 특징의 첫 번째는 반드시 시스템을 구축하고자 하는 업무에서 필요로 하고 관리하고자 하는 정보여야 한다는 점이다. 예를 들어 환자라는 엔터티는 의료시스템을 개발하는 병원에서는 반드시 필요한 엔터티이지만 일반회사에서 직원들이 병에 걸려 업무에 지장을 준다하더라도 이 정보를 그 회사의 정보로서 활용하지는 않을 것이다. 즉 시스템 구축 대상인 해당업무에서 그 엔터티를 필요로 하는가를 판단하는 것이 중요하다.
② 식별이 가능해야 한다
두 번째는 식별자(Unique Identifier)에 의해 식별이 가능해야 한다는 점이다. 어떤 엔터티이건 임의의 식별자(일련번호)를 부여하여 유일하게 만들 수는 있지만, 엔터티를 도출하는 경우에 각각의 업무적으로 의미를 가지는 인스턴스가 식별자에 의해 한 개씩만 존재하는지 검증해 보아야 한다.
유일한 식별자는 그 엔터티의 인스턴스만의 고유한 이름이다. 두 개 이상의 엔터티를 대변하면 그 식별자는 잘못 설계된 것이다. 예를 들어 직원을 구분할 수 있는 방법은 이름이나 사원번호가 될 수가 있다. 그러나 이름은 동명이인(同名異人)이 될 수 있으므로 유일하게 식별될 수 없다. 사원번호는 회사에 입사한 사람에게 고유하게 부여된 번호이므로 유일한 식별자가 될 수 있는 것이다.
③ 2개 이상의 인스턴스를 가지고 있어야 함
세 번째는 영속적으로 존재하는 인스턴스의 집합이 되어야 한다는 점이다. 엔터티의 특징 중 “한 개”가 아니라 “두 개 이상”이라는 집합개념은 매우 중요한 개념이다. 두 개 이상이라는 개념은 엔터티뿐만 아니라 엔터티간의 관계, 프로세스와의 관계 등 업무를 분석하고 설계하는 동안 설계자가 모든 업무에 대입해보고 검증해 보아야 할 중요한 개념이다. 하나의 엔터티는 여러 개의 인스턴스를 포함한다.
④ 반드시 속성을 가지고 있어야 함
네 번째는 엔터티에는 반드시 속성(Attributes)이 포함되어야 한다는 점이다. 속성을 포함하지 않고 엔터티의 이름만 가지고 있는 경우는 관계가 생략되어 있거나 업무 분석이 미진하여 속성정보가 누락되는 경우에 해당한다. 또한 주식별자만 존재하고 일반속성은 전혀 없는 경우도 마찬가지로 적절한 엔터티라고 할 수 없다. 단, 예외적으로 관계엔터티(Associative Entity)의 경우는 주식별자 속성만 가지고 있어도 엔터티로 인정한다.
⑤ 다른 엔터티와 1개 이상의 관계를 가지고 있어야 함
다섯 번째는 엔터티는 다른 엔터티와 최소 한 개 이상의 관계가 존재해야 한다는 것이다. 기본적으로 엔터티가 도출되었다는 것은 해당 업무내에서 업무적인 연관성(존재적 연관성, 행위적 연관성)을 가지고 다른 엔터티와의 연관의 의미를 가지고 있음을 나타낸다. 그러나 관계가 설정되지 않은 엔터티의 도출은 부적절한 엔터티가 도출되었거나 아니면 다른 엔터티와 적절한 관계를 찾지 못했을 가능성이 크다.
(3) 엔터티의 분류
ㄱ. 유무형에 따른 분류
일반적으로 엔터티는 유무형에 따라 유형엔터티, 개념엔터티, 사건엔터티로 구분된다.
유형엔터티(Tangible Entity)는 물리적인 형태가 있고 안정적이며 지속적으로 활용되는 엔터티로 업무로부터 엔터티를 구분하기가 가장 용이하다. 예를 들면, 사원, 물품, 강사 등이 이에 해당된다.
개념엔터티(Conceptual Entity)는 물리적인 형태는 존재하지 않고 관리해야 할 개념적 정보로 구분이 되는 엔터티로 조직, 보험상품 등이 이에 해당된다.
사건 엔터티(Event Entity)는 업무를 수행함에 따라 발생되는 엔터티로서 비교적 발생량이 많으며 각종 통계자료에 이용될 수 있다. 주문, 청구, 미납 등이 이에 해당된다.
ㄴ. 발생시점에 따른 분류
엔터티의 발생시점에 따라 기본/키엔터티(Fundamental Entity, Key Entity), 중심엔터티(Main Entity), 행위엔터티(Active Entity)로 구분할 수 있다.
1) 기본엔터티
기본엔터티란 그 업무에 원래 존재하는 정보로서 다른 엔터티와 관계에 의해 생성되지 않고 독립적으로 생성이 가능하고 자신은 타 엔터티의 부모의 역할을 하게 된다. 다른 엔터티로부터 주식별자를 상속받지 않고 자신의 고유한 주식별자를 가지게 된다. 예를 들어 사원, 부서, 고객, 상품, 자재 등이 기본엔터티가 될 수 있다.
2) 중심엔터티
중심엔터티란 기본엔터티로부터 발생되고 그 업무에 있어서 중심적인 역할을 한다. 데이터의 양이 많이 발생되고 다른 엔터티와의 관계를 통해 많은 행위엔터티를 생성한다. 예를 들어 계약, 사고, 예금원장, 청구, 주문, 매출 등이 될 수 있다.
3) 행위엔터티
행위엔터티는 두 개 이상의 부모엔터티로부터 발생되고 자주 내용이 바뀌거나 데이터량이 증가된다. 분석초기 단계에서는 잘 나타나지 않으며 상세 설계단계나 프로세스와 상관모델링을 진행하면서 도출될 수 있다. 예를 들어 주문목록, 사원변경이력 등이 포함된다.
03. 속성
(1) 속성이란?
속성이란 사전적인 의미로는 사물(事物)의 성질, 특징 또는 본질적인 성질, 그것이 없다면 실체를 생각할 수 없는 것으로 정의할 수 있다. 본질적 속성이란 어떤 사물 또는 개념에 없어서는 안 될 징표(徵表)의 전부이다. 이 징표는 사물이나 개념이 어떤 것인지를 나타내고 그것을 다른 것과 구별하는 성질이라고 할 수 있다.
이런 사전적인 정의 이외에 데이터 모델링 관점에서 속성을 정의하자면, “업무에서 필요로 하는 인스턴스로 관리하고자 하는 의미상 더 이상 분리되지 않는 최소의 데이터 단위”로 정의할 수 있다. 업무상 관리하기 위한 최소의 의미 단위로 생각할 수 있고, 이것은 엔터티에서 한 분야를 담당하고 있다.
속성의 정의를 정리해 보면 다음과 같다.
- 업무에서 필요로 한다.
- 의미상 더 이상 분리되지 않는다.
- 엔터티를 설명하고 인스턴스의 구성요소가 된다.
(2) 속성의 특징
- 엔터티와 마찬가지로 반드시 해당 업무에서 필요하고 관리하고자 하는 정보이어야 한다. (예, 강사의 교재이름)
- 정규화 이론에 근간하여 정해진 주식별자에 함수적 종속성을 가져야 한다.
- 하나의 속성에는 한 개의 값만을 가진다. 하나의 속성에 여러 개의 값이 있는 다중값일 경우 별도의 엔터티를 이용하여 분리한다.
(3) 엔터티, 인스턴스, 속성, 속성값의 관계
엔터티, 인스턴스, 속성, 속성값에 대한 관계를 분석하면 다음과 같은 결과를 얻을 수 있다.
- 한 개의 엔터티는 두 개 이상의 인스턴스의 집합이어야 한다.
- 한 개의 엔터티는 두 개 이상의 속성을 갖는다.
- 한 개의 속성은 한 개의 속성값을 갖는다.
(4) 속성의 분류
① 특성에 따른 분류
속성은 업무분석을 통해 바로 정의한 속성을 기본속성(Basic Attribute), 원래 업무상 존재하지는 않지만 설계를 하면서 도출해내는 속성을 설계속성(Designed Attribute), 다른 속성으로부터 계산이나 변형이 되어 생성되는 속성을 파생속성(Derived Attribute)이라고 한다.
1) 기본속성
기본 속성은 업무로부터 추출한 모든 속성이 여기에 해당하며 엔터티에 가장 일반적이고 많은 속성을 차지한다. 코드성 데이터, 엔터티를 식별하기 위해 부여된 일련번호, 그리고 다른 속성을 계산하거나 영향을 받아 생성된 속성을 제외한 모든 속성은 기본속성이다. 주의해야 할 것은 업무로부터 분석한 속성이라도 이미 업무상 코드로 정의한 속성이 많다는 것이다. 이러한 경우도 속성의 값이 원래 속성을 나타내지 못하므로 기본속성이 되지 않는다.
2) 설계속성
설계속성은 업무상 필요한 데이터 이외에 데이터 모델링을 위해, 업무를 규칙화하기 위해 속성을 새로 만들거나 변형하여 정의하는 속성이다. 대개 코드성 속성은 원래 속성을 업무상 필요에 의해 변형하여 만든 설계속성이고 일련번호와 같은 속성은 단일(Unique)한 식별자를 부여하기 위해 모델 상에서 새로 정의하는 설계속성이다.
3) 파생속성
파생속성은 다른 속성에 영향을 받아 발생하는 속성으로서 보통 계산된 값들이 이에 해당된다. 다른 속성에 영향을 받기 때문에 프로세스 설계 시 데이터 정합성을 유지하기 위해 유의해야 할 점이 많으며 가급적 파생속성을 적게 정의하는 것이 좋다.
② 구성방식에 따른 분류
엔터티를 식별할 수 있는 속성을 PK(Primary Key)속성, 다른 엔터티와의 관계에서 포함된 속성을 FK(Foreign Key)속성, 엔터티에 포함되어 있고 PK, FK에 포함되지 않은 속성을 일반속성이라 한다.
(4) 도메인
각 속성은 가질 수 있는 값의 범위가 있는데 이를 그 속성의 도메인(Domain)이라 한다. 예를 들면 학생이라는 엔터티가 있을 때 학점이라는 속성의 도메인은 0.0에서 4.0 사이의 실수 값이며 주소라는 속성은 길이가 20자리 이내인 문자열로 정의할 수 있다. 여기서 물론 각 속성은 도메인 이외의 값을 갖지 못한다. 따라서 도메인을 좀더 이해하기 쉽게 정리하면, 엔터티 내에서 속성에 대한 데이터타입과 크기 그리고 제약사항을 지정하는 것이라 할 수 있다.
04. 관계
(1) 관계란?
관계(Relationship)를 사전적으로 정의하면 상호 연관성이 있는 상태로 말할 수 있다. 이것을 데이터 모델에 대입하여 정의해 보면, “엔터티의 인스턴스 사이의 논리적인 연관성으로서 존재의 형태로서나 행위로서 서로에게 연관성이 부여된 상태”라고 할 수 있다. 관계는 엔터티와 엔터티 간 연관성을 표현하기 때문에 엔터티의 정의에 따라 영향을 받기도 하고, 속성 정의 및 관계 정의에 따라서도 다양하게 변할 수 있다.
(2) 관계의 분류
관계가 존재에 의한 관계와 행위에 의한 관계로 구분될 수 있는 것은 관계를 연결함에 있어 어떤 목적으로 연결되었느냐에 따라 분류하기 때문이다.
(3) 표기법
관계에서는 표기법이 상당히 복잡하고 여러 가지 의미를 가지고 있다. 다음 3가지 개념과 함께 표기법을 이해할 필요가 있다.
- 관계명(Membership) : 관계의 이름
- 관계차수(Cardinality) : 1:1, 1:M, M:N
- 관계선택사양(Optionality) : 필수관계, 선택관계
1) 관계명
엔터티와 엔터티가 어떠한 관계를 맺고 있는지를 나타내는 문장, 모든 관계는 두 개의 관계명을 가지고 있는데 이유는 각 엔터티의 관점에서 관계명을 하나씩 가지기 때문이다. 관계명은 반드시 명확한 문장으로 표현해야 하며 현재형이어야 한다.
2) 관계차수
각 엔터티에서 관계에 참여하는 수를 의미, 일반적으로 1:1, 1:M, M:N 형식으로 구분할 수 있다.
3) 관계 선택사양
관계 선택사양은 이 관계가 필수요소인지 선택사항인지를 나타내는 말이다.
05. 식별자
(1) 식별자란?
모든 엔터티는 인스턴스를 가지고 있고, 인스턴스는 속성으로 자신의 특성을 나타낸다고 하였다. 식별자는 이런 속성 중에 각각의 인스턴스를 구분 가능하게 만들어주는 대표 격인 속성을 의미한다.
(2) 주식별자
주식별자는 기본키, PK(Primary Key)에 해당하는 속성이다. 하나의 속성이 주식별자가 될 수도 있고, 여러 개의 속성이 주식별자가 될 수도 있다.
(3) 분류
식별자를 분류하는 방식은 여러 가지로 나뉜다. 대체적으로 대표성 여부, 스스로 생성되었는지 여부, 단일 속성의 여부, 대체 여부가 분류의 기준이 되는데 각각의 기준대로 나누면 다음과 같이 구분될 수있다.
(4) 식별자 관계 / 비식별자 관계
① 식별자 관계
부모 엔터티의 식별자가 자식 엔터티의 주식별자가 되는 관계, 주식별자는 반드시 존재해야 하므로(존재성) 부모 엔터티가 있어야 생성 가능하며 단일식별자인지 복합식별자인지에 따라 1:1이거나 1:M이거나가 결정된다.
② 비식별자 관계
부모의 엔터티의 식별자가 자식 엔터티의 주식별자가 아닌 일반 속성이 되는 관계, 일반 속성의 속성값은 Null이 될 수 있으므로 부모 엔터티가 없는 자식 엔터티 생성이 가능하고 마찬가지의 이유로 자식 엔터티가 존재하는 상태에서 부모 엔터티가 삭제될 수도 있다.
'자격증 > SQLD' 카테고리의 다른 글
📘 SQLD 자격증 준비 — SQL 함수 완전 정복! (0) | 2025.05.06 |
---|---|
SQLD 요약정리 (1) (1) | 2024.07.03 |
[SQL] 변환함수, NULL 관련함수, CASE (0) | 2024.06.28 |
[SQL]문자함수, 숫자함수, 날짜함수 (0) | 2024.06.28 |
데이터 모델과 SQL (0) | 2023.10.24 |