1binni9 2025. 3. 9. 17:18

 

SQLD를 공부하는 데 있어 국민대 김남규 교수의 '데이터베이스 실무' 강의를 참조함.

 

데이터 모델링의 특징 

1) 추상화(=모형화)

2) 단순화

3) 명확화

-> 구체화, 복잡화, 일반화 x

 

모델링의 관점

- 데이터 관점 (what)

- 프로세스 관점 (how) 

- 데이터와 프로세스의 상관 관점 (interaction) 

 

데이터 모델링의 3단계

개념 : ERD 도출(추상 업무 중심)
논리 : 테이블 도출, 재사용성, 정규화
물리 : DBMS에 맞는 테이블 도출
파일 시스템은 중복되는 데이터 변경 시 문제가 발생하지만 DB 시스템은 프로그램과 데이터의 독립을 보장하여 데이터 중복이 제거됨.
 

데이터베이스의 3단계 구조

외부 스키마 <-> 개념 스키마 <-> 내부 스키마
외부 스키마는 각 사용자/프로그램, 개념 스키마는 모든 관점 통합, 내부 스키마는 DB가 물리적으로 저장.
데이터 독립성 : 응용 프로그램의 변경 x, 논리적+물리적 독립성
논리적 독립성 : 개념 변경 -> 외부 변경 x / 물리적 독립성 : 내부 변경 -> 개념, 외부 변경 x
 

데이터 모델링의 3가지 구성요소

개체(Entity) 
속성(Attribute)
관계(Relationship) 

 

엔터티 ) 인스턴스 ) 속성
엔터티는 2개 이상의 인스턴스, 인스턴스는 2개 이상의 속성, 속성은 1개의 속성값을 지님.

 

엔터티의 분류

 

<유형과 무형에 따른 분류>

유형 : 물리적 형태가 존재
개념 : 관리해야 할 개념적 정보
사건 : 행위

 

개념과 사건은 무형 entity 에 해당됨

 

<발생 시점에 따른 분류>

기본 : 독립적으로 생성

중심 : 기본과 행위 중간에서 생성

행위 : 2개 이상의 엔터티에서 생성

 

엔터티의 특징

-해당 업무에서 반드시 필요하고 관리해야 함

-유일한 식별자에 의해 식별 가능해야 함

-반드시 속성을 가지되, 연관 엔터티는 주식별자 속성만 가져도 무관함

-통계성,코드성 엔터티를 제외하면 다른 엔터티와 최소 한 개 이상의 관계를 가짐. 즉, 고립 엔터티를 인정하지 않음

-이름이 동일한 엔터티가 중복 존재하는 것을 허용하지 않음

 

관계의 표기법

-관계 차수 : 관계에 참여할 수 있는 인스턴스 수

-관계 소속성 : 관계에 선택적으로 참여

 

 

속성의 정의와 특징

-분리되지 않는 최소의 데이터 단위로서 원자성을 지님

-주식별자에 함수적으로 종속되어야 함

-속성은 한 개의 속성값을 지니나 multi-valued는 별도의 엔터티로 분리됨

-현업에서 사용하는 이름이 부여됨

-명사형 사용

-전체 모델에서 유일하게 정의

 

속성의 도메인

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

-속성에 대한 data type, 크기 등을 지정하는 개념

 

속성의 특성에 따른 분류

기본 속성

설계 속성 : 데이터 모델링을 위해 새로 만든 속성으로 코드나 일련번호 등이 해당

파생 속성 : 다른 속성으로부터 유도된 속성으로 계산값과 같은 통계가 해당

 

속성의 엔터티 구성 방식에 따른 분류

PK : 엔터티의 인스턴스를 구별할 수 있는 속성

FK : 타 엔터티의 PK를 참조하는 속성

타 엔터티의 pk를 일반 속성으로서 참조하는 형태에 해당됨.

일반 : 그 외의 속성

 

식별자의 분류

<대표성>

식별자(PK)

보조 식별자(CK) : 대표성을 가질 수 없는 것 외에는 PK와 동일하다.

 

<목적>

내부 식별자 : 엔터티 내부에서 스스로 만들어짐

외부 식별자 : 타 엔터티의 식별자(FK)

 

<속성 수>

단일 식별자

복합 식별자 : 둘 이상의 속성이 존재해야 식별자가 됨

 

<본질>

본질 식별자 

인조 식별자 : 설계 속성, 복잡한 구성일 경우

 

식별자의 특징

유일성 : 각 인스턴스들을 모두 유일하게 구분할 것

최소성 : 유일성이 만족되면 복합 식별자를 두지 않을 것

불변성 : 식별자의 값은 변하지 않을 것

존재성 : NULL값이 될 수 없을 것

 

식별자 관계 vs 비식별자 관계

FK가 주식별자에 포함 -> 식별자 관계 (실선 표기)

FK가 비식별자 속성으로 포함 -> 비식별자 관계 (점선 표기)

식별자 관계를 남용시 주식별자 속성이 증가하며 비식별자 관계를 남용시 조인(join) 증가

 

식별자 관계

-부모의 주식별자가 자식 엔터티의 주식별자로 상속

-반드시 부모 엔터티가 생성되어야 자식 생성(weak entity)

-1:1관계는 유일한 주식별자가 FA, 1:N관계는 FA 포함 주식별자가 다수

 

관계의 분류

ERD : 존재/행위에 대한 관계 (단일화)

UML : 연관/의존 관계 (실선/점선 표기)

 

관계의 표기법

관계명

관계차수

관계선택사양(Optionality)

 

 

성능 데이터 모델링

DB성능을 고려하여 데이터 모델링을 수행하는 것으로 (반)정규화, 테이블 통합 및 분할, 조인 구조, PK/FK 설정이 포함됨

 

정규화

삽입./삭제/갱신 이상현상 방지, 함수적 종속성 기반, 중복 방지, 조회 조인 발생 

1NF : 모든 값이 원자성을 가짐(유사속성 반복 비허용)

2NF : 부분함수종속 제거(PK 중 일부와의 종속관계 제거)

3NF : 이행함수종속 제거(PK 외의 종속관계 제거)

 

반정규화

조회 성능 향상, 속성(칼럼) 중복 허용, 과도한 반정규화는 데이터 무결성을 해침

칼럼 반정규화 : 중복 추가(조인 감소), 파생 추가, 이력 테이블 추가

테이블 반정규화 : 병합, 분할, 추가

관계 반정규화

 

슈퍼/서브타입 

one-to-one : pk 부모자식 동일

plus type : 슈퍼 + 서브타입 접근 필요

single type : All in one, 동시 접근 다수