[!info]
1과목 - 데이터 모델링의 이해에 대한 내용을 정리한 페이지입니다.
1장 데이터 모델링의 이해
데이터 모델링
모델링
현실의 정보를 약속된 표기법을 활용하여 DB 구조로 표현하는 과정
- 특징 : 단추명 — 단순화, 추상화, 명확화
- 유의사항
- 중복 : 같은 데이터 제공 X
- 비유연성 : 사소한 업무변화에 잦은 모델 변경 X, 데이터 정의를 프로세스와 분리
- 비일관성 : DB 내의 정보가 모순·상반 X
- 관점 : 데이터 / 프로세스 / 데이터와 프로세스 관점 (CRUD 분석 기반)
모델링 단계
개논물 : 개념적 → 논리적 → 물리적 모델링
- 개념적 모델링 : 핵심 엔터티 추출, ERD 작성
- 논리적 모델링 : 정규화 수행, 재사용 가능
- 물리적 모델링 : 실제로 구현
데이터 모델의 필수 구성요소 : 엔터티(Entity), 속성(Attribute), 관계(Relationship)
스키마 (ANSI/SPARC)
스키마 : DB의 구조와 제약 조건에 관한 전반적 명세를 기술한 메타데이터의 집합
- 외부 스키마 : 사용자 관점 (뷰)
- 개념 스키마 : 전체적인 논리 구조
- 내부 스키마 : 물리적 장치에서 실제 저장
독립성
- 논리적 독립성 : 개념 스키마 변경 → 외부 스키마 영향 X
- 물리적 독립성 : 내부 스키마 변경 → 외부/개념 스키마 영향 X
ERD
- 피터첸 Entity Relationship Model 개발 (1976)
- IE 표기법
- Barker 표기법
ERD 작성 순서
도배설명차선
- 엔터티 도출 → 배치 → 관계 설정 → 관계명 기술 → 관계 차수 기술 → 필수/선택사양 기술
엔터티
엔터티
현실 세계에서 독립적으로 식별 가능한 객체. 업무상 분석해야 하는 대상(인스턴스)의 집합
특징 (6가지)
- 유일한 식별자에 의해 식별 가능
- 해당 업무에서 필요하고 관리하고자 하는 정보
- 두 개 이상의 인스턴스들의 집합
- 반드시 2개 이상의 속성을 가짐
- 업무 프로세스에 의해 이용되어야 함
- 다른 엔터티와 최소 1개 이상의 관계 성립
엔터티의 분류
-
유무형에 따른 분류
- 유형 엔터티 : 물리적 형태 O (학생, 책, 고객)
- 개념 엔터티 : 물리적 형태 X (과목, 학과, 부서)
- 사건 엔터티 : 업무 수행에 따라 발생 (수강, 주문)
-
발생시점에 따른 분류
- 기본 엔터티 : 업무에 원래 존재. 타 엔터티의 부모 역할. 고유한 주식별자 보유
- 중심 엔터티 : 기본 엔터티로부터 발생. 다른 엔터티와의 관계를 통해 행위 엔터티 생성
- 행위 엔터티 : 2개 이상의 부모엔터티로부터 발생. 자주 바뀌거나 데이터 양 증가
엔터티 명명 규칙
- 현업에서 사용하는 용어 사용
- 약자 사용 자제
- 단수 명사 사용
- 고유한 이름 (모든 엔터티에서 유일하게)
- 엔터티 생성 의미대로 부여
속성
속성
업무에서 필요로 하는 고유한 성질·특징. 더 이상 분리되지 않는 최소의 데이터 단위 (원자성). 컬럼으로 표현
- 한 개의 엔터티는 2개 이상의 인스턴스 집합
- 한 개의 엔터티는 2개 이상의 속성 가짐
- 한 개의 속성은 1개의 속성값 가짐 (원자성)
속성의 특징
- 해당 업무에서 필요하고 관리하고자 하는 정보
- 정해진 주식별자에 함수적 종속성을 가져야 함
- 한 속성에 여러 값인 경우 별도 엔터티로 분류
함수적 종속성
속성 A에 의해 속성 B가 유일하게 결정되면 B는 A에 함수적으로 종속 (A → B)
- 완전함수적 종속 : PK값 모두에 의한 종속관계
- 부분함수적 종속 : 기본키 일부에 대해 종속
속성의 분류
-
속성의 특성에 따른 분류
- 기본 속성 : 업무로부터 추출한 모든 일반적인 속성
- 설계 속성 : 기본 속성 외에 업무를 규칙화하기 위해 새로 만들거나 변형한 속성
- 파생 속성 : 다른 속성에 영향을 받아 발생하는 속성. 대부분 계산된 값. 빠른 성능 위해 적을수록 좋음
-
엔터티 구성방식에 따른 분류
- PK (Primary Key) : 기본키
- FK (Foreign Key) : 외래키
- 일반 속성 : 엔터티 속 PK, FK가 아닌 속성
-
분해 여부에 따른 분류
- 단일 : 하나의 의미
- 복합 : 여러 개의 의미
- 다중값 : 여러 개의 값을 가질 수 있는 경우
속성 명명규칙
- 해당 업무에서 사용하는 이름 부여
- 서술식 속성명 사용 X
- 약어 사용 자제
- 전체 데이터 모델에서 유일한 명칭 가져야 함
도메인
각 속성이 가질 수 있는 값의 범위. 속성의 데이터 타입, 크기, 제약사항 지정
관계
관계
엔터티의 인스턴스 사이의 논리적 연관성으로 서로에게 연관성이 부여된 상태
관계의 종류 (ERD에서 구분 X)
- 존재적 관계 : 한 엔터티의 존재가 다른 엔터티의 존재에 영향을 미치는 관계
- 행위적 관계 : 엔터티 간 어떤 행위가 있는 것
ERD에서는 구분 X, UML에서는 구분 O
관계의 구성 — 관차선
- 관계명 (Membership) : 관계의 이름
- 차수 (Cardinality) : 엔터티 간 참여자 수 (1:1, 1:N, M:N)
- 선택사양 (Optionality) : 필수/선택적 참여 여부
관계의 차수 (Cardinality)
- 1:1
- 완전 1:1 : 관계되는 엔터티가 반드시 하나
- 선택적 1:1 : 관계되는 데이터가 없을 수 있음
- 1:N : 엔터티 행 하나에 다른 엔터티값 여러 개
- M:N : 두 엔터티가 다대다 연결. 조인 시 연결엔터티로 1:N으로 해소
관계의 페어링
인스턴스가 개별적으로 관계를 가지는 것
- 차수 : 하나의 엔터티와 다른 엔터티 간의 레코드 연결 방식
- 페어링 : 두 엔터티 간의 특정 연결을 설명하고 추가 정보를 제공하는 용도
관계 체크사항
- 연관규칙이 있는가?
- 정보의 조합이 발생하는가?
- 규칙이 서술되어 있는가?
- 동사가 있는가?
식별자
식별자
각 인스턴스를 구분하는 대표적 속성. 논리모델링 용어 (물리 모델링에서는 key)
식별자의 특징
- 유일성 : 모든 인스턴스 유일하게 구분
- 최소성 : 유일성을 만족하는 최소 개수 속성
- 불변성 : 식별자의 값 불변 (항상 고유값)
- 존재성 : 반드시 값 존재. NULL 허용 X
식별자 분류
- 대표성 여부
- 주식별자 : 대표성 O, 참조관계 연결 O
- 보조식별자 : 대표성 X, 참조관계 연결 X
- 생성 여부
- 내부식별자 : 스스로 생성됨
- 외부식별자 : 타 엔터티로부터 받아옴 (외래키)
- 속성의 수
- 단일식별자 : 하나의 속성
- 복합식별자 : 2개 이상의 속성으로 구성
- 대체여부
- 본질식별자 (원조식별자) : 업무에 의해 만들어짐
- 인조식별자 : 인위적으로 만들어짐 (자동 증가 일련번호 등)
주식별자 도출기준
- 해당 업무에서 자주 이용되는 속성
- 명칭, 내역 등과 같이 이름으로 기술되는 것 X
- 복합 주식별자 구성할 경우 너무 많은 속성 X → 너무 많은 경우 인조식별자 생성
인조식별자 단점
- 중복 데이터 발생 → 데이터 품질저하
- 불필요한 인덱스 생성 → 저장공간 낭비 및 DML 성능저하
식별 관계와 비식별 관계
- 식별관계 (주식별자) : 자식의 주식별자로 부모의 주식별자 상속 (부모 기본키 = 자식 기본키). NULL 불가
- 비식별관계 (비식별자) : 부모 속성을 자식의 일반 속성으로 사용
키의 종류
- 기본키 (PK) : 엔터티를 대표할 수 있는 키
- 후보키 (Candidate Key) : 유일성, 최소성 O. 이들 중 하나가 기본키, 나머지는 대체키
- 슈퍼키 : 유일성 O, 최소성 X
- 외래키 (FK) : 다른 테이블 기본키를 참조하는 키
2장 데이터 모델과 SQL
정규화
이상현상을 줄이기 위해 최소한의 데이터를 하나의 엔터티에 넣는 식으로 데이터를 분해하는 과정
- 데이터의 중복 제거, 데이터모델의 독립성 확보
- 논리 데이터 모델링 시점 : 엔터티 상세화 과정
이상현상 (Abnormality)
정규화를 하지 않아 발생하는 현상
- 삽입이상 / 갱신이상 / 삭제이상
정규화 단계
- 제1정규화 (1NF) : 테이블 컬럼이 원자성 갖도록 분해
- 하나의 행, 컬럼이 한 값만 갖도록 만듦
- 제2정규화 (2NF) : 완전 함수 종속을 만듦
- PK가 2개 이상일 때 부분 함수 종속 관계 분리
- 제3정규화 (3NF) : 이행적 종속 없애도록 분리
- PK가 아닌 일반 컬럼에 의존하는 컬럼 분리
반정규화
DB의 성능 향상을 위해 데이터 중복을 허용하고 조인을 줄이는 DB 성능 향상 방법
조인
정규화로 분리된 두 테이블을 동시에 출력하거나, 참조하기 위해 데이터를 연결하는 과정
- 계층형 데이터 모델 : 셀프조인. 자기 자신끼리 관계 발생
- 상호배타적 관계 : 두 테이블 중 하나만 상속
NULL
아직 정해지지 않은 값 (≠ 0, 빈문자열). 모델 설계 시 각 컬럼별로 허용여부 결정
NULL의 특성
- NULL을 포함한 연산 결과는 항상 NULL (사전에 NULL값을 치환해야 연산 값이 나옴)
- 집계함수는 NULL을 제외하고 연산 수행
- SUM, AVG, MAX, MIN : 항상 NULL 무시
- COUNT(컬럼) : NULL 제외 / COUNT(*) : 모든 행
NULL의 ERD 표기법
- IE 표기법 : NULL 허용여부 알 수 없음
- Barker 표기법 : 속성 앞 O → NULL 허용
트랜잭션
데이터베이스의 논리적 연산단위. 하나의 연속적인 업무 단위. 부분 COMMIT 불가. 필수적 관계 형태를 가짐
필수적·선택적 관계
- 두 엔터티가 필수적 관계 형태 → 트랜잭션 형성
- 서로 독립적 수행이 가능 → 선택적 관계로 표현