SQLD - 개념노트 완성하기(1과목)

개미는뚠뚠·2024년 2월 25일
1

자격증 준비

목록 보기
5/6

SQLD 시험이 이제 정말 얼마 안 남았다(3월 9일...🥹). 최근 일정이 너무 바빠서 공부를 많이 못했는데 이제 진짜 핵심정리 찐하게 두 번 하고, 기출문제 매일 풀어야겠다.

사실 블로그에 이미 개념정리를 많이 올려서 포스팅하기 귀찮았는데 어제 자기 전에 봤던 유튜브가 너무 핵심정리가 깔끔한 것이였다(참고로 24년도 개정판 신유형임).

https://www.youtube.com/watch?v=QB_GYdHUHmA

아무튼 홍썜을 믿고 지금 공부하는 내용을 해당 포스팅을 채워보려고 한다.

버전 정보
2024-02-25(ver 1.0) : 데이터 모델링 + 엔티티 + 속성
2024-02-26(ver 1.1) : 관계 + 식별자
2024-03-03(ver 1.2) : 정규화 + 트랜잭션 + NULL


🌍 1. 테이블 vs 엔티티

(물리적 설계) 테이블-컬럼-행 vs (논리적 설계)엔티티-인스턴스-속성


🌍 2. 데이터 모델링

모델링의 개념

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

모델링의 특징

  1. 단순화 - 핵심요소에 집중하고 불필요한 세부사항 제거
  2. 추상화 - 일정한 형식에 맞추어 간략하게 표현
  3. 명확화 - 대상을 애매모호함을 제거하고 정확하게 현상하는 기술

모델링의 유의점

  1. 중복 : 한 테이블 또는 여러 테이블에 같은 정보 저장 X
  2. 비유연성 : 사소한 업무 변화에 모델이 자주 변경 X
  3. 비일관성 : 관련이 없거나 모순되는 내용 X

데이터 모델링 3요소

  1. 대상(Entity)
  2. 속성(Attribute)
  3. 관계(Relationship)

데이터 모델링 3단계

  1. 개념적 모델링 : 업무 분석 및 핵심 엔티티 추출
  2. 논리적 모델링 : 엔티티 내 관계 설정 및 식별자 추출
  3. 물리적 모델링 : 하드웨어에 DB를 실질적으로 올리는 단계

데이터 모델 표기법(ERD)

  1. 엔티티와 엔티티를 관계를 시각적으로 표현한 다이어그램
  2. 1976년 피터첸이 만듬

ERD 그리는 순서

  1. 엔티티 그림
  2. 엔티티 배치
  3. 엔티티 관계 설정
  4. 관계명 서술
  5. 관계의 참여도 기술
  6. 관계 필수 여부

🌍 3. 엔티티(Entity)

엔티티의 개념

  1. 현실 세계에서 독립적으로 식별 가능한 객체나 사물을 나타냄
  2. 테이블이라고 생각하면 편함

엔티티의 구성요소

  1. 엔티티(테이블) : 학생
  2. 속성(컬럼) : 학번, 이름, 학과
  3. 식별자(pk) : 학번
  4. 인스턴스(데이터) : 학번 - 20210101, 이름 - 김대호, 학과 - 컴퓨터 공학

엔티티의 특징

  1. 유일한 식별자에 의해 식별 가능(PK)
  2. 해당 업무에 필요하고 관리하고자 하는 정보(관련성)
  3. 인스턴스들의 집합(데이터가 최소 2개 이상)
  4. 엔티티는 반드시 속성을 가짐(속성이 최소 2개 이상)
  5. 엔티티는 업무 프로세스에 의해 이용(업무 관련 내용만, 관련 없거나 사용 안 하면 삭제)
  6. 다른 엔티티와 최소 1개 이상의 관계 성립(독자적인 엔티티는 부적절함)

엔티티의 분류1 (유형과 무형에 따른)

  1. 유형엔티티 : 물리적인 형태가 있음(사원, 물품)
  2. 개념엔티티 : 물리적인 형태가 없음(조직, 보험상품)
  3. 사건엔티티 : 업무수행에 따라 발생(주문, 청구)

엔티티의 분류2 (발생 시점에 따른)

  1. 기본엔티티 : 그 업무에 원래 존재하는 정보(자신만의 고유 식별자를 가짐, 예시 - 사원, 부서, 고객)
  2. 중심엔티티 : 기본엔티티로 발생하고, 업무에서 중심적 역활(다른 엔티티를 통해 발생, 예시 - 계약, 사고, 청구)
  3. 행위엔티티 2개 이상의 부모엔티티로부터 발생(업무 진행 도중 발생, 예시 - 이력)

엔티티의 명명

  1. 협업에서 사용하는 용어로
  2. 약자는 최대한 사용 X
  3. 단수 명사 사용
  4. 모든 엔티티에서 중복 X
  5. 엔티티 의미에 따라 이름 부여

엔티티 표기법

🌍 3. 속성(Attribute)

속성의 개념

  1. 업무에서 필요로 하는 고유한 성질
  2. 컬럼으로 표현할 수 있는 단위

속성의 특징

  1. 반드시 업무에 필요하고 관리하고자 하는 정보여야 한다.
  2. 정해진 주식별자에 함수적 종속성을 가져야 한다(pk로 쓸 내용?)
  3. 하나의 속성은 한 개의 값만 가진다.
  4. 하나의 속성에 여러 개의 값이 있는 다중값일 경우 별도 엔티티르 이용하여 분리한다.
  5. 하나의 인스턴스는 속성마다 반드시 하나의 속성 값을 가진다.(원자성)
  • 원자성 : 인스턴스가 해당 속성에 대해 단일하고 명확한 값을 가지는 것(두개 이상 값 X)

함수의 종속성

  • A의 값에 의해 다른 속성 B가 유일하게 결정되는 경우
  1. 완성 함수적 종속 - 기본키 전체가 종속될 때

  1. 부분 함수적 종속 - 기본키 전체가 아니라 기본키 일부만 종속될 떄

속성의 분류

1) 속성에 따른 분류

  1. 기본 속성 - 업무에서 추출된 모든 속성(엔티티에 가장 일반적으로 많이 존재, 원금, 예치기간)
  2. 설계 속성 - 기본 속성 외 업무를 규칙화 하기 위해 새로 만들어지는 속성(상품, 지점코드)
  3. 파생 속성 - 다른 속성에 의해 만들어지는 속성

2) 엔티티 구성방식에 따른 분류

  1. pk
  2. fk
  3. 일반속성(엔티티에는 포함되지만 pk/fk에 포함되어 있지 않은 속성)

3) 분해 여부에 따른 분류

  1. 단일 속성 (하나의 의미로만 구성된 경우 - 회원ID, 이름)
  2. 복합 속성 (여러개의 의미로 구성된 경우 - 주소[시,군,구])
  3. 다중값 속성 (속성에 여러 개의 값을 가질 수 있는 경우 - 상품리스트)

도메인

  1. 각 속성이 가질 수 있는 값의 범위를 말함
  2. 엔티티 내 속성의 데이터 타입, 크기, 제약 사항 등

🌍 4. 관계(RealtionShip)

관계의 개념

  1. 엔티티끼리 연관성을 말함
  2. 인스턴스 간 논리적인 연관성을 파악하여 정리

관계의 종류

  1. 존재적 관계 - 한 엔티티의 존재가 다른 엔티티의 영향을 미치는 관계(엔티티끼리 연결된 상태)
  2. 행위적 관계 - 엔티티 간의 어떤 행위가 있는 것을 의미(ex.고객 엔티티의 행동에 의해 주문 엔티티의 발생)
  • ERD에서는 존재 관계와 행위 관계를 구분하지 않는다.

관계의 구성

  1. 관계명
  2. 차수(ex. 1:1? 1:n)
  3. 선택성(필수요소 또는 선택 요소)

관계의 차수

🌍 5. 식별자(RealtionShip)

식별자의 개념

하나의 엔티티에 구성된 여러개의 속성 중에 엔티티를 대표할 수 있는 속성(주식별자)

주식별자의 특징

  1. 유일성 - 주식별자의 의해 모든 인스턴스를 유일하게 구분
  2. 최소성 - 주식별자를 구성하는 속성은 유일성을 만족하기 위해 최소한의 속성으로 구성
  3. 불변성 - 한번 엔티티에 지정이 되면 그 식별자의 값은 변경 X
  4. 존재성 - 반드시 값이 존재하며, NULL 은 허용 X

식별자 분류

  1. 대표성 여부에 따른 식별자 종류
  1. 생성여부에 따른 식별자 종류
  1. 속성 수에 따른 식별자 종류
  1. 대체 여부에 따른 식별자 종류

식별자 표기법

관계간 엔티티 구분

  1. 강한 개체 - 독립적으로 존재할 수 있는 엔티티(고객과 계좌 엔티티 중 고객은 독립적 존재 가능)
  2. 약한 개체 - 독립적으로 존재할 수 없는 엔티티(파생 엔티티를 의미)

식별관계와 비식별관계

  1. 식별 관계 - 하나의 엔티티의 기본키가 다른 엔티티와 기본키의 하나로 공유하는 관계
  2. 비식별관계 - 하나의 엔티티의 일반속성으로 다른 엔티티와 기본키의 하나로 공유하는 관계

🌍 6. 정규화(DB Normalization)

정규화의 개념

  • 최소한의 데이터만을 하나의 엔티티에 넣는 식으로 데이터를 분해하는 과정
  • 중복을 제거하고, 데이터 모델의 독립성을 확보

이상현상

정규화를 하지 않아 발생하는 현상을 의미

  1. 삽입이상
  2. 갱신이상
  3. 삭제이상

정규화 단계

  • 제 1 정규화

하나의 행과 컬럼이 반드시 한 값만 입력되도록 행을 분리하는 단계

  • 제 2 정규화

제 1정규화를 진행한 테이블에 대해 완전 함수 종속을 만들도록 테이블을 분해.

  • 제 3 정규화

제 2 정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블을 분리(A->B , B->C 의 관게가 성립할 때 A->C 가 성립되는 것을 의미..

반정규화 = 역정규화

  1. 데이터 베이스 성능 향상을 위해 테이블 중복을 허용하고 조인을 줄이는 방식.
  2. 시스템 성능 향상, 개발 및 운영의 단순화를 위해 데이터 모델을 중복, 통합, 분리하는 모델링 기법

반정규화 수행 케이스

  1. 정규화에 충실하여 종속성, 활용성은 향상되지만 수행 속도가 느려지는 경우
  2. 다량의 범위를 자주 처리해야 하는 경우
  3. 특정 범위의 데이터만 자주 처리하는 경우
  4. 요약/집계 정보가 자주 요구되는 경우

🌍 7. 트랜잭션(Transation)

트랜잭션의 개념

  1. 하나의 연속적인 업무 단위를 말함.
  2. 트랙젠셕에 의한 관계는 필수적인 관계 형태를 가짐.
  3. 하나의 트랜젝션에는 여러 SELECT, INSERT, DELETE, UPDATE 등이 포함될 수 있음.

트랜잭션의 특징

  1. 연속적인 업무 단위를 가지며 모두성공/모두취소를 의미함.
  2. 부분 COMMIT 불가 (동시 COMMIT 또는 ROLLBACK 처리)

필수적, 선택적 관계와 ERD

  • 두 엔티티의 관계가 서로 필수적일 때 하나의 트랜젝션을 형성
  • 두 엔티티가 서로 독립적 수행이 가능하다면 선택적 관계로 표현

🌍 8. NULL

NULL의 개념

  • DBMS에서 아직 정해지지 않은 값을 의미
  • 0과 빈 문자열("")과는 다른 개념
  • 모델 설계 시 컬럼별 NULL 허용여부 지정

NULL의 핵심

  1. NULL을 포함한 연산 결과는 항상 NULL
  2. 집계함수는 NULLL을 제외한 연산 결과 리턴(SUM, AVG, MIN, MAX 등)

NULL의 ERD 표기법

IE 표기법에서는 알 수 없으나, 바커 표기법에서는 속성 앞에 동그라미가 NULL 허용 속성을 의미한다.

2개의 댓글

comment-user-thumbnail
2024년 3월 3일

달려가시는 모습에 많이 늘많이배웁니다 화팅입니다!

1개의 답글