본문 바로가기
IT Study/SQL

[SQLD] 데이터 모델링의 이해

by 하람 Haram 2025. 10. 16.
728x90

모델링이란

  • 모델링 (Modeling) : 현실세계를 대상으로 일종의 모델(Model)을 만드는 것
    • 약속된 표기법을 따라야 한다

모델링의 특징

1. 추상화 (Abstraction)

2. 단순화 (Simpification)

3. 명확화 (Clarify)

- 중복(Duplication) 최소화

- 비유연성(Inflexibility) 최소화

    - 데이터 정의와 데이터의 사용 프로세스를 분리해야 한다

    - 데이터 독립성 : 데이터를 사용하는 사용자 영역과 데이터를 저장하는 디스크나 메모리 영역을 서로 분리하는 것

- 비일관성(Inconsistency) 최소화

 

모델링의 세가지 관점

1. 데이터 관점(대상, What)

2. 프로세스 관점(처리방법, How)

3. 데이터와 프로세스의 상관 관점(대상과 처리방법의 상관관계, Interaction)

    - CRUD(Create, Read, Update, Delete) 분석을 기반으로 한다

 

모델링의 세가지 단계

1 .개념적 데이터 모델링 (Conceptual Data Modeling)

    - 엔티티(Entity)와 속성(Attribute)를 도출한다

2. 논리적 데이터 모델링 (Logical Data Modeling)

    - 키(key), 속성(Attribute), 관계(Relationship) 등을 표현 

3. 물리적 데이터 모델링 (Physical Data Modeling)

    - DBMS의 성능이나 보안, 가용성 등을 고려하려 설계

 

 

ANSI-SPARC에서 정의한 3단계 스키마 구조

ANSI-SPARC (American National Standards Institute, Standards Planning And Requirements Committee)

1. 외부 스키마(External Schema)

    - 사용자 관점

    - 데이터베이스 스키마를 정의

    - 다중 사용자 뷰를 제공

2. 개념 스키마 (Conceptual Schema)

    - 설계자 관점

    - 데이터와 그 관계를 정의

    - 통합된 뷰를 제공

3. 내부 스키마 (Internal Schema)

    - 개발자 관점

    - 테이블, 칼럼, 인덱스 등을 정의

    - 물리적 뷰를 제공

 

ERD

ERD (Entity Relationship Diagram) : 데이터 모델링에 대한 문서화 방법

  • 엔터티들 간의 관계를 특별한 표기법으로 나타냄
    • Entity : Entity는 박스로 나타냄 (이름은 박스 상단에 표시)
    • Attribute : 박스안에 리스트 형태로 표현 (주식별자(PK)와 일반 속성은 칸막이로 구분)
    • 카디널리티 :  O, |, 까치발 등으로 관계를 나타냄 (1:1, 1:다, 다:다) / O: 관계 있을 수도 없을 수도 있다(Null 포함)
    • 관계 : 관계는 박스를 연결한 선 (비식별자 관계는 점선으로 표현)

 

 

엔터티 (Entity)

ㅇTable: Entity를 물리적으로 구현한 것 (Entity는 개념적 정의)

ㅇEntity : Database의 구성요소 중 독립 적으로 식별 가능한 객체 (Object)

 

엔터티의 특징

- 식별이 가능하도록 유일한 식 별자를 가져야 한다

- 영속적으로 존재하는 인스턴스(Instance)가 두 개 이상인 집합을 이루어야 한다

- 하위 요소로 반드시 속성을 가져야 한다

- 엔터티는 다른 엔터티와 한 개 이상의 관계(Relation ship을 가져야 한다)

     - 단 통계성 엔터티와 코드성 엔터티의 경우 관계를 생략할 수 있다

- 업무에서 필요로 하지 않더라도 데이터로 존재한다면 엔터티로 정의될 수 있다 (X)

    - 업무에서 필요로 하고 관리 대상일 때만 엔터티로 정의

 

 

엔터티의 분류

1. 발생시점/상속 관계에 따른 엔터티 분류

  • 기본 엔터티(Fundamental ENTITY) = KEY 엔터티
    : 해당 업무에 기본적으로 존재하는 정보.
    상위엔터티 없이 독자적으로 생성. (사원, 부서 엔터티)
  • 중심 엔터티(Main ENTITY)
    : 업무에 핵심적인 역할을 하는 정보.
    상위 엔터티로부터 생성. (접수, 계약 엔터티)
  • 행위 엔터티(Action ENTITY)
    : 기본과 중심 엔터티을 근간으로 업무가 흘러가면서 발생되는 엔터
    티 (주문내역, 계약진행 엔터티)

기본, 중심 엔터티를 묶어서 핵심엔터티라고 한다.

 

2. 물리적 형태의 존재 여부에 따른 분류

  • 유형 엔터티(Tangible ENTITY) = KEY 엔터티
    : 물리적 형태가 존재하는 엔터티
       ex) 사원, 물품
  • 개념 엔터티(Conceptual ENTITY)
    : 물리적 형태 없이 개념적으로 정의되는 엔터티
       ex) 부서, 상품분류, 강의
  • 사건 엔터티(Event ENTITY)
    : 업무 수행에 따라 발생하는 행위나 이벤트를 나타내는 엔터티
       ex) 주문, 대여, 수강

 

+) 교차 엔터티 (Intersection Entity)

  • 다대다 (M:N  관계)를 해소하기 위해 만들어진 엔터티
  • 방법: 교차 엔터티를 적용해 교차(연관) 정보를 저장하는 테이블을 별도로 만듬

  • 고객 ---0|<- 배당 ->|0--- 주식

-- 고객 일반 정보 
CREATE TABLE customer(
	id VARCHAR2(100) PRIMARY KEY,
	password VARCHAR2(100) NOT NULL,
	name VARCHAR2(100) NOT NULL,
	address VARCHAR2(100) NOT NULL
)



-- 주식 일반 정보 
CREATE TABLE stock(
	symbol VARCHAR2(100) PRIMARY KEY,
	price NUMBER NOT NULL
)



-- 고객과 주식의 관계정보 ( 교차엔티티 ) 
CREATE TABLE shares(
	id VARCHAR2(100),
	symbol VARCHAR2(100),
	quantity NUMBER NOT NULL,
	CONSTRAINT erd_shares_pk PRIMARY KEY(id,symbol),
	CONSTRAINT erd_customer_fk FOREIGN KEY(id) REFERENCES customer(id),
	CONSTRAINT erd_stock_fk FOREIGN KEY(symbol) REFERENCES stock(symbol)
)

 

 

 

 

속성 (Attribute) 

ㅇ Entity 안에 상세한 설명 (하위요소)

Entity에 대한 자세하고 구체적인 정보를 나타낸 것 / 업무와 관계되어 필요한 것들

ex) 엔티티 : 회원 / 속성 : 아이디, 이름, 전화번호

해당 엔터티를 정의하는데 필수적인 것들로 최소화 해야 한다.

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

주식별자 : PK(Primary Key)

    ㅇ 엔터티를 ERD러 표현 할 때, PK속성과 일반 속성은 칸막이로 구분

 


속성의 분류

1. 속성의 특성에 따른 분류

- 기본 속성 : 엔터티가 본래부터 가지고 있어야 하는 속성

- 설계 속성 : 엔터티가 본래부터 가지고 있지는 않지만 설계 시 필요하다고 판단하여 부여된 속성

- 파생 속성 : 다른 속성 부터 계산되거나, 특정 규칙에 따라 변형되어 만들어진 속성

 

2. 속성의 구성방식에 따른 분류

- PK (Primary Key, 기본키) 속성 : 해당 Entity를 유일하게 식별할 수 있는 속성

- FK (Foreign Key, 외래키) 속성 : 관계를 통해 다른 엔티티의 속성을 가져와 포함시킨 속성

- 일반 속성 : 키가 아닌 나머지 일반 속성

 

속성값

ㅇ 속성이 가질 수 있는 특정 값

하니의 Entity 인스턴스에서 각각의 속성은 한 개의 속성값만 가져야 한다.


인스턴스 (Instance)

ㅇ엔터티(구조)에 맞게 실제로 저장된 데이터 1개

ㅇ진짜 데이터들

 


엔터티 / 인스턴스 / 속성 값

- 한 개의 Entity (Table)은 두 개 이상의 Instance (Row)를 가진다

- 한 개의 Entity (Table)는 두 개 이상의 Attribute (Column)을 가진다

- 한 개의 속성은 한 개의 속성 값만 가진다

 

 

도메인 (Domain)

- 속성이 가질 수 있는 값으 범위(값의 데이터 타입과 크기)

- 데이터의 제약 사항

 

관계 (Relationship)

ㅇEntity와 Entity 간에 맺고 있는 연관성을 의미

 

 

UML의 클래스 다이어 그램

존재적 관계

- 일종의 소속관계를 가지는 경우 (ex 사원 , 부서) / 존재 자체로 서로 연관성을 갖는 관계

UML : 연관 관계 (Association) : Entity 들이 항상 서로 관련되어 있는 존재적 관계를 나타냄

    - 연관관계는 실선으로 표현

    - 클래스의 멤버 변수로 선언되어 사용

 

 

행위적 관계

- 한 엔터티가 특정 행위나 이벤트를 일으킬 경우에 연관성이 발생하는 관계 (ex 고객, 주문)

UML : 의존 관계 (Dependency) : 한 클래스가 다른 클래스의 행위에 의존하는 행위적 관계

    - 의존관계는 점선으로 표현

    - 클래스의 메소드(Operation) 내에서 파라미터 등으로 사용

 

* ERD에서는 존재적 관계와 행위적 관계를 구분하지 않는다

 

 

관계명 (Membership)

관계의 이름을 나타낸다 (존재적 관계와 행위적 관계를 기술한다) 

 

 

 

관계차수(Cardinality)

1:1(일대일), 1:M(일대다), M:N(다대다) 와 같이 관계를 맺는 엔터티 인스터스의 차수

 

* ERD에서는 존재적관계와 행위적 관계를 구분하지 않는다

* ERD에서의 실선과 점선은 식별자 관계와 비식별자 관계를 구분할 때 사용

 

관계선택사양(Optionality)

- 필수적 관계인지 선택적 관계인지를 나타냄 (Null 가능 여부)

  • 필수적 관계 : Null  가능 x
  • 선택적 관계 : Null 가능 O
    • 까치발 기호에 O표시로 나타냄

 

식별자 (Identifier)

ㅇ속성 중 유일하게 구별할 수 있는 속성 (Key 와 유사)

  • Key : 슈퍼키(Super key), 후보키(Candidate Key), 기본키(Primary Key), 대체키(Alternate Key), 외래키(Foregin key)
  • 후보키 : 유일성과 최소성을 만족하는 속성들 (PK,AK 모두 후보키 이다)

 

식별자 구분 방법

 

대표성 여부

주식별자 (PK : Primary Identifier): 해당 Entity를 유일하게 구별해주는 식별자 PK(Primary Key)

  • 다른 엔터티와 참조관계를 연결할 수 있다
  • 유일성. 최소성, 불변성, 존재성 (Null 불가) => Unique Key + Not Null 조건

보조식별자 (AK : Alternate Identifier): 해당 엔터티를 유일하게 구분은 할 수 있지만 대표성은 가지지 않음

  • 다른 엔터티와 참조관계를 연결할 수 없다

 

스스로 생성 가능 여부

내부식별자 (Internal Identifier): 엔터티 내부에서 스스로 만들어지는 식별자)

외부식별자 (Foregin Identifier): 관계를 통해 다른 엔터티 부터 반아오는 식별자 (외래키 FK(Foreign Key))

 

 

속성의 수

단일 식별자 (Single Identifier): 식별자를 구성하는 속성이 하나인 식별자

복합 식별자 (Composite Identifier): 식별자를 구성하는 속성이 둘 이상인 식별자

 

대체 여부

본질 식별자 (Original Identifier): 업무에 존재하는 본래의 식별자

인조 식별자, 대리식별자 (Surrogate Identifier): 업무에 존재하지는 않으나 원조식별자가 너무 복잡해서 인위적으로 만든 식별자

 

식별자와 비식별자

식별자: 엔터티 간의 강한 연결 관계를 표현 (실선)

  • 부모엔터티 인스턴스가 소멸할 때 자식 엔터티 인스턴스도 같이 소명하는 경우 표현

비식별자: 엔터티 간의 약한 연결 관계 (점선)

  • 부모와 자식 엔터티 인스턴스가 다른 생명주기를 가질 때 사용
728x90