본문 바로가기

Study/SQLD

[SQLD] SQLD 1과목 데이터 모델링의 이해 (1)

테이블(엔터티), 컬럼(속성), 행(인스턴스)

 

모델링

현실 세계의 비지니스 프로세스와 데이터 요구 사항을 추상적이고 구조화된 형태로 표현하는 과정

 

모델링 특징

1. 단순화 (Simplification)

: 불필요한 세부 사항 제거

 

2. 추상화 (Abstraction)

: 간략하게 표현

 

3. 명확화 (Clarity)

: 정확하게 현상 기술


데이터 모델링 3가지 관점

1. 데이터 관점

데이터가 어떻게 저장되고, 접근되고, 관리되는지 정의하는 단계

 

2. 프로세스 관점

-데이터가 시스템 내에서 어떻게 흐르고 변환되는지 확인

 

3. 데이터와 프로세스 관점

 어떤 데이터 사용하는지, 데이터가 어떻게 생성되고 변경되는지 명확하게 정의


데이터 모델링 유의점

1. 중복 (Duplication)

: 같은 정보 저장하지 않도록 설계

 

2. 비유연성 (Inflexibility)

: 잦은 모델 변경 되지 않도록 주의

 

3. 비일관성 (Inconsistency)

- 데이터간 상호연관 관계 명확히 정의

- 데이터 중복 없어도 비일관성 발생 가능


데이터 모델링 3가지 요소

- 대상 (Entity) : 업무가 관리하고자 하는 대상 (객체)

- 속성 (Attribute) : 대상들이 갖는 속성

- 관계 (Relationship) : 대상들 간 관계


데이터 모델링 3단계

1. 개념적 모델링

- 포괄적(전사적) 수준 모델링

- 가장 추상적

- 핵심 엔터티 (Entity) 추출 단계

- ERD 작성

 

2. 논리적 모델링

- 세부속성, 식별자, 관계 등 표현 단계

- 재사용 가능

- 데이터 정규화 수행

 

3. 물리적 모델링

- 물리적으로 생성하는 과정

- 데이터베이스 성능, 디스크 저장구조, 하드웨어 보안성, 가용성 등 고려

- 가장 구체적

 


스키마

데이터베이스 구조와 제약 조건에 관한 전반적인 명세 기술한 메타데이터 집합

 

스키마 3단계 구조

1. 외부 스키마

: 사용자가 보는 관점

 

2. 개념 스키마

- 데이터베이스 전체 논리적 구조 정의

- 전체 데이터베이스의 개체, 속성, 관계, 데이터 타입 등 정의

 

3. 내부 스키마

- 데이터가 물리적으로 어떻게 저장되는지 정의

- 데이터 저장 구조, 컬럼, 인덱스 등 정의


3단계 스키마 독립성

 1. 논리적 독립성

: 논리적 데이터 구조 변경되어도 (개념 스키마 변경) 응용 프로그램에 영향 주지 X

 

2. 물리적 독립성

: 물리적 구조 변경되어도 (내부 스키마 변경) 개념/외부 스키마에 영향 주지 X

 

 


데이터 모델 표기법 (ERD : Entity Relationship Diagram)

엔터티 (Entity)와 엔터티 간 관계 (Relationship) 시각적으로 표현한 다이어그램

 

 

ERD 작성 절차 (6단계)

1. 엔터티 도출 후 그림

2. 엔터티 배치

3. 엔터티 간 관계 설정

4. 관계명 서술

5. 관계 참여도 기술

6. 관계 필수 여부 확인

 

 


엔터티 (Entity)

- 독립적으로 식별 가능한 객체나 사물

- 대상 (Instance)들로 이뤄진 집합

 

엔터티 (Entity) 특징

1. 유일한 식별자에 의해 식별 가능

2. 해당 업무에 필요하고 관리하고자 하는 정보

3. 인스턴스들 집합

- 영속적으로 전재하는 2개 이상의 인스턴스 집합 (인스턴스 한 개 밖에 없는 엔터티는 집합 아니므로 성립 X)

4. 반드시 속성 가짐

- 엔터티는 2개 이상 속성 가짐

- 하나의 인스턴스는 각각의 속성들에 대한 1개의 속성 값만 가짐

5. 업무 프로세스에 의해 이용

6. 다른 엔터티와 최소 1개 이상 관계 성립


엔터티 분류

1. 유형과 무형에 따른 분류

1) 유형엔터티

- 물리적 형태 O (실체 있는 대상)

- 안정적이며 지속적으로 활용

- 업무로부터 구분하기 가장 용이

ex) 사원, 물품 등

 

2) 개념엔터티

물리적 형태 X

ex) 조직, 보험상품 등

 

3. 사건엔터티

- 업무 수행에 따라 발생

- 발생량 많고 각종 통계자료에 이용

ex) 주문, 청구, 미납 등

 

2. 발생 시점에 따른 분류

1) 기본엔터티

- 업무에 원래 존재하는 정보

- 독립적 생성

- 타 엔터티 부모 역할

- 자신의 고유한 주식별자 가짐

ex) 사원, 부서, 고객, 상품 등

 

2) 중심엔터티

- 기본엔터티로부터 발생, 업무에서 중심적 역할

- 많은 데이터 발생, 다른 엔터티와 관계 통해 많은 행위 엔터티 생성

ex) 계약, 사고, 청구, 매출 등

 

3) 행위엔터티

- 2개 이상 부모엔터티로부터 발생

- 자주 내용 바뀌거나 데이터 양 증가

- 상세 설계 단계나 프로세스와 상관모델링 진행하며 도출

ex) 주문 (고객과 상품 엔터티로부터 발생)


엔터티 명명

1. 현업에서 사용하는 용어 사용

2. 약자 사용 자제

3. 단수 명사 사용

4. 모든 엔터티에서 유일하게 이름 부여

5. 엔터티 생성 의미대로 이름 부여

 

 


속성 (Attribute)

- 업무에서 필요로 하는 고유한 성질, 특징 -> 컬럼으로 표현할 수 있는 단위

- 더 이상 분리되지 않는 최소의 데이터 단위

 

엔터티, 인스턴스, 속성, 속성값 관계

- 한 개 엔터티는 2개 이상의 인스턴스 집합이어야 함 (하나의 테이블은 두 개 이상의 행 가짐)

- 한 개 엔터티는 2개 이상 속성 가짐 (하나의 테이블은 두 개 이상 컬럼으로 구성)

- 한 개 속성은 1갱의 속성값 가짐 (각 컬럼의 값은 하나씩만 삽입 가능)

- 각 속성은 구체적인 값 가짐


속성 특징

- 주식별자에 함수적 종속성 가져야 함

- 원자성 (인스턴스가 해당 속성에 대해 단일하고 명확한 값 가지는 것)


함수적 종속성

어떤 속성 A의 값에 의해 다른 속성 B도 유일하게 결정된다면, B는 A에 함수적으로 종속됐다 함 (A -> B)

 

1. 완전 함수적 종속

- 특정 컬럼이 기본키에 대해 완전히 종속될 때

- PK 구성하는 컬럼이 2개 이상일 경우 PK 값 모두에 의한 종속관계를 나타낼 때 완전 함수 종속성 만족

 

2. 부분 함수적 종속

: 기본키 일부에 대해 종속될 때


속성 분류

1. 속성 특성에 따른 분류

1) 기본 속성

- 업무로부터 추출된 모든 속성

- 가장 일반적으로 많이 존재하는 속성

 

2) 설계 속성

: 기본 속성 외 업무 규칙화하기 위해 새로 만들어지거나 기본 속성 변형해 만들어지는 속성

 

3) 파생 속성

- 다른 속성에 의해 만들어지는 속성

- 데이터 정합성 유지 위해 가급적 적게 정의하는 것이 좋음

 

2. 엔터티 구성방식에 따른 구분

1) PK (Primary Key, 기본키)

: 인스턴스 식별할 수 있는 속성

 

2) FK (Foreign Key, 외래키)

: 다른 엔터티와 관계에서 포함된 속성

 

3) 일반 속성

: 엔터티에 포함되어 있고 PK/FK에 포함되지 않는 속성

 

3. 분해 여부에 따른 속성

1) 단일 속성

: 하나의 의미로 구성된 경우

 

2) 복합 속성

: 여러개 의미로 구성된 경우

ex) 주소 (시, 구, 동 등으로 분해 가능) 등

 

3) 다중값 속성

- 속성에 여러 개 값 가질 수 있는 경우

- 엔터티로 분해


속성 명명규칙

1. 업무에서 사용하는 이름 부여

2. 서술식 속성명은 사용 X

3. 약어 사용 가급적 제한

4. 전체 데이터 모델에서 유일한 명칭


도메인 (Domain)

- 각 속성이 가질 수 있는 값 범위

- 엔터티 내에서 속성에 대한 데이터 타입과 크기, 제약사항을 지정하는 것

 

 


관계 (Relationship)

- 엔터티간 연관성 나타낸 개념

- 관계 정의할 때는 인스턴스 (각 행 데이터) 간 논리적인 연관성 파악하여 정의

- 엔터티 어떻게 정의하느냐에 따라 변경되기도 함

 

관계 종류 (ERD에서는 존재관계와 행위관계 구분 X)

1. 존재적 관계

- 한 엔터티 존재가 다른 엔터티 존재에 영향 미치는 관계

- 엔터티 간 연관된 상태 의미

ex) 부서 엔터티가 삭제되면 사원 엔터티 존재에 영향 미침

 

2. 행위적 관계

: 엔터티 간 어떤 행위 있는 것 의미

ex) 고객 엔터티 행동에 의해 주문 엔터티 발생


관계 구성

1. 관계명

2. 차수 (Cardinality)

3. 선택성 (Optionality)


관계 차수 (Cardinality)

- 한 엔터티의 레코드 (인스턴스)가 다른 엔터티 레코드 (인스턴스)와 어떻게 연결되는지 나타내는 표현

- 1:1, 1:N, N:M 등 표현

 

1. 1 대 1 관계

1) 완전 1 대 1 관계

: 하나의 엔터티에 관계되는 엔터티 반드시 하나로 존재

ex) 사원은 반드시 소속 부서 있어야 함

 

2) 선택적 1 대 1 관계

: 하나의 엔터티에 관계되는 엔터티가 하나 or 없을 수 있는 경우

ex) 사원은 하나의 소속 부서 있거나 아직 발령전이면 없을 수 있음

 

2. 1 대 N 관계

: 엔터티에 하나의 행에 다른 엔터티 값 여러 개 있는 관계

ex) 고객은 여러 개 계좌 소유할 수 있음

 

3. M 대 N 관계

ex) 한 학생이 여러 강의 수강할 수 있고, 한 강의 기준으로도 여러 학생 보유할 수 있음


관계 페어링

- 엔터티 안에 인스턴스가 개별적으로 관계 가지는 것

- 관계란 페어링 집합 의미

(차수는 하나의 엔터티와 다른 엔터티 간 레코드 연결 방식 나타내지만,

페어링은 두 엔터티 간 특정 연결 설명하고 추가 정보를 제공하는 용도로 사용)

 

 


식별자

- 엔터티를 대표할 수 있는 속성

- 하나의 유일한 식별자 존재해야 함

- 논리 모델링에서 사용하는 용어 (물리 모델링에서는 키 (key)라고 표현)

ex) 학생 엔터티 주식별자는 학생번호 속성 (논리 모델링) / 학생 테이블의 기본키는 학생번호 컬럼 (물리 모델링)

 

주식별자 특징

1. 유일성

: 모든 인스턴스 유일하게 구분

 

2. 최소성

: 유일성 만족하는 최소한의 속성으로 구성

 

3. 불변성

: 한번 특정 엔터티에 지정되면 그 식별자 값은 변하지 않아야 함 (항상 고유값으로 존재)

 

4. 존재성

: 반드시 값 존재해야 하면 NULL은 허용 X


식별자 분류

1. 대표성 여부에 따른 식별자 종류

주식별자 - 유일성과 최소성 만족하는 엔터티 대표하는 식별자
- 엔터티 내 각 인스턴스 유일하게 구분할 수 있는 식별자
- 타 엔터티와 참조관계 연결할 수 있는 식별자
보조식별자 - 엔터티 내 각 인스턴스 구분할 수 있는 구분자지만, 대표성 가지지 못해 참조 관계 연결 할 수 없는 식별자
- 유일성과 최소성은 만족하지만 대표성은 만족하지 못하는 식별자

 

2. 생성 여부에 따른 식별자 종류

내부식별자 다른 엔터티 참조 없이 엔터티 내부에서 스스로 생성되는 식별자
외부식별자 다른 엔터티와 관계로 인해 만들어지는 식별자 (외래키)

 

3. 속성 수에 따른 식별자 종류

단일식별자 하나의 속성으로 구성
복합식별자 2개 이상의 속성으로 구성

 

4. 대체 여부에 따른 식별자 종류

본질식별자 (원조식별자) 비즈니스 프로세스에서 만들어지는 식별자
인조식별자 - 인위적으로 만들어지는 식별자
- 자동 증가하는 일련번호 같은 형태

주식별자 도출기준

1. 자주 이용되는 속성을 주식별자로 지정

ex) 학생번호와 주민번호 중 학생번호가 주식별자, 주민번호는 보조식별자

2. 명칭이나 내역등과 같은 이름은 피함

ex) 부서명 보다는 부서코드 부여해 부서코드로 주식별자 사용

3. 속성 수 최대한 적게 구성

- 주식별자를 너무 많은 속성으로 구성 시, 조인으로 인한 성능저하 발생 우려

- 7~8개 이상 주식별자 구성은 새로운 인조식별자 생성해 모델 단순화 시키는 것이 좋음

ex) 주문 엔터티에 대해 주문일자 + 주문상품코드 + 고객번호 + ... 등 구성 => 주문번호 속성 추가


관계간 엔터티 구분

1. 강한 개체

: 독립적으로 존재할 수 있는 엔터티

ex) 고객과 계좌 엔터티 중, 고객은 독립적으로 존재 가능

 

2. 약한 개체

: 독립적으로 존재할 수 없는 엔터티 (파생되는 엔터티)


식별관계와 비식별관계

1. 식별관계 (Identification Relationship)

- 하나의 엔터티 기본키를 다른 엔터티가 기본키의 하나로 공유하는 관계

- ERD에서 실선 표시

 

2. 비식별관계 (Non-identification Relationship)

- 강한 개체 기본키를 다른 엔터티 기본키가 아닌 일반 속성으로 관계 가지는 것

- ERD에서 점선으로 표시


Key 종류

1. 기본키 (Primary Key)

: 엔터티 대표할 수 있는 키

 

2. 후보키 (Candidate Key)

- 유일성 (유니크한 특성)과 최소성 (최소한 컬럼으로 유일성 만족하는 특징) 만족하는 키

- 후보키들 중 하나가 기본키 되고, 나머지 대체키라 부름

 

3. 슈퍼키 (Super Key)

: 유일성은 만족하지만 최소성은 만족하지 않는 키

ex) 학생 테이블에서 학번으로만 PK 구성해도 되지만, (학번 + 이름)으로 구성하면 슈퍼키

 

4. 대체키 (Alternate Key)

: 후보키 중 기본키 아닌 키

 

5. 외래키 (Foreign Key)

- 다른 테이블 기본키 참조하는 키 

- 참조 테이블은 하나 or 여러 개 가능

'Study > SQLD' 카테고리의 다른 글

[SQLD] SQLD 2과목 SQL 기본 및 활용(1)  (0) 2025.05.16
[SQLD] SQLD 1과목 데이터 모델링의 이해 (2)  (3) 2025.05.15
[SQLD] 핵심요약 (3)  (0) 2025.05.12
[SQLD] 핵심요약 (2)  (0) 2025.05.12
[SQLD] 핵심요약 (1)  (0) 2025.05.12