SQLD를 준비하며 개인적으로 조금 외워두면 좋을 것 같은 것들만 적어보았습니다.
참고한 책은 "2024 유선배 SQL개발자(SQLD) 과외노트"입니다.
01 데이터 모델의 이해
모델링의 특징
- 추상화
- 단순화
- 명확화
상세화
모델링의 3가지 관점
- 데이터 관점
- 프로세스 관점
- 데이터와 프로세스의 상관 관점 : 관계 위주
데이터의 품질 보장을 위해 유의해야 할 점
- 중복 : 중복 x
- 비유연성 : 유연하게 설계
- 비일관성 : 일관성 있게 설계
모델링의 3가지 단계
- 개념적 데이터 모델링 : 추상화 수준이 가장 높음
- 논리적 데이터 모델링 : 재사용성이 가장 높음 - key, 속성, 관계 등 모두 표현하는 단계
- 물리적 데이터 모델링 : 실제 DB에 구현할 수 있도록 물리적인 성격을 고려
3단계 스키마 구조 - 데이터의 독립성
- 외부 스키마 : 사용자 관점
- 개념 스키마 : 데이터 간 관계 관점
- 내부 스키마 : 물리적인 관점 - 실제 DB에 저장하는 구조 / 저장 구조, 칼럼 정의, 인덱스 등
이로 인해 논리적, 물리적 독립성이 보장된다.
- 논리적 독립성 : 개념 스키마가 변경되어도 외부 스키마는 영향 X
- 물리적 독립성 : 내부 스키마가 변경되어도 외부/개념 스키마는 영향 X
ERD(Entity Relationship Diagram)
IE/Crow's Foot 모델이 가장 많이 사용된다.
ERD 작성 순서
- 엔티티를 도출하고 그리기
- 배치
- 엔티티 간 관계 설정
- 관계명 기입
- 관계 참여도 기입
- 관계의 필수/선택 여부 기입
02 엔티티(Entity)
엔티티 용어
- 엔티티 - Table
- 인스턴스 - Row
- 속성 - Column
엔티티의 특징
- 업무에서 실제로 사용
- Unique Key가 있어야 함
- 2개 이상의 인스턴스를 갖고 있어야 함 (1개이거나, 앞으로도 쭉 1개일 경우 엔티티 X)
- 속성(Column)이 있어야 함
- 다른 엔티티와 1개 이상의 관계를 갖고 있어야 함
엔티티의 종류 - 유/무형에 따른 분류
- 유형 엔티티 : 물리적 형태, 안정성, 지속성 (회원, 상품 등)
- 개념 엔티티 : 물리적 형태 없음, 개념적(부서, 학과 등)
- 사건 엔티티 : 행위로 발생(주문, 이벤트 응모 등)
엔티티의 종류 - 발생 시점에 따른 분류
- 기본 엔티티 : 업무에 원래 존재하는 정보 (상품, 회원, 사원, 부서 등)
- 중심 엔티티 : 기본 엔티티로부터 파생, 행위 엔티티 생성(주문, 매출, 계약 등)
- 행위 엔티티 : 2개 이상의 엔티티로부터 파생, 데이터가 자주 변경되거나 증가 가능 (주문 내역, 이벤트 응모 이력 등)
03 속성(Attribute)
속성의 특징
- 더 이상 쪼개지지 않는 레벨
- 프로세스에 필요한 항목
- 업무상 불필요하면 삭제하는 게 낫다.
- 속성은 한 개의 값만 가져야 한다. (원자값, atomic) == 하나의 속성은 하나의 속성 값만 가진다.
- 하나의 엔티티는 두 개 이상의 속성을 갖는다.
- 엔티티의 구체적이고 명확한 정보를 나타낸다.
속성의 분류 - 특성에 따른 분류
- 기본 속성(Basic) : 업무 프로세스를 통해 바로정의 / 가장 많은 비중을 차지한다.
- 설계 속성(Designed) : 업무에 존재하지는 않지만, 필요하다고 판단해서 도출해 낸 속성 - ex) 학생의 고유 번호
- 파생 속성(Derived) : 다른 속성의 속성값에 대해 계산된 값 또는 가공된 값 - ex) 재고, 좋아요 수 등
데이터 정합성이 고려되어야 한다.
속성의 분류 - 구성 방식에 따른 분류
- PK속성 : 인스턴스의 Unique 함을 부여하는 속성
- FK 속성 : 다른 엔티티와 관계를 맺게 해주는 속성 - FK는 null 값 가능
- 일반 속성 : PK, FK를 제외한 나머지 속성
도메인(Domain)
- 속성이 가질 수 있는 속성값의 범위 - ex) 우편 번호는 다섯 자리 숫자라는 범위를 갖고 있다.
용어 사전 : 업무상 Rule을 정하기 위해 업무용 지침을 정하기도 한다.
시스템 카탈로그 : 시스템 관련 DB / 여기 담긴 데이터를 메타데이터라고 하고, SELECT만 가능하다.
04 관계(Relationship)
관계의 종류
- 존재 관계 : 엄마 - 아기처럼 존재 자체로 연관성이 있는 관계 (직원-부서, 학생-학과 등)
- 행위 관계 : 행위를 함으로써 연관성이 생기는 관계 (회원-주문, 학생-출석 등)
관계 표기법
- 관계명 : 엔티티 간에 어떤 관계를 맺고 있는지를 나타내는 문장 - 항상 양쪽에서 하나씩 두 개의 관계명
-> 명확한 문장 / 현재형 - 관계 차수 : 각 엔티티에서 관계에 참여하는 수 (1:1 / 1:M / M:N )
- 관계 선택 사양 : 필수인지, 선택인지의 여부
05 식별자(Identifiers)
식별자란?
각각의 인스턴스를 구분 가능하게 만들어주는 대표적인 속성
주 식별자(PK)의 속성
PK(Primary Key), 기본키, 주식별자라고 불린다.
하나의 속성이 주 식별자가 될 수도 있고, 여러 개의 속성이 주 식별자가 될 수도 있다.
- 유일성 : 각 인스턴스에 유니크함을 부여해서 식별이 가능하도록 한다.
- 최소성 : 유일성을 보장하는 최소 개수의 속성이어야 한다.
- 불변성 : 속성값이 되도록 변하지 않아야 한다.
- 존재성 : 속성값이 Null일 수 없다.
식별자의 분류
[대표성 여부]
- 주 식별자 : 유일성, 최소성, 불변성, 존재성을 가진 대표 식별자 / 다른 엔티티와 참조 관계로 연결
- 보조 식별자 : 인스턴스를 식별할 수는 있지만, 참조 관계로 연결되지는 않음 / 다른 엔티티와 참조 관계 X
[스스로 생성되었는지 여부]
- 내부 식별자 : 엔티티 내부에서 스스로 생성된 식별자
- 외부 식별자 : 다른 엔티티에서 온 생성자, 다른 엔티티와의 연결고리 역할 (FK)
[단일 속성의 여부]
- 단일 식별자 : 하나의 속성으로 구성된 식별자
- 복합 식별자 : 두 개 이상의 속성으로 구성된 식별자
[대체여부]
- 원조 식별자 : 업무 프로세스에 존재하는 식별자 ( 가공되지 않은 원래의 식별자 )
- 대리 식별자 : 주 식별자의 속성이 두 개 이상인 경우, 그 속성들을 하나로 묶어서 사용하는 식별자 (두 개를 묶어서 만들어냄)
식별자 vs 비식별자
식별자 관계
자식 엔티티에 PK가 따로 없고, 다른 엔티티의 PK를 FK로 사용한다.
부모 엔티티가 있어야 자식 엔티티를 생성할 수 있다. (1:1 또는 1:M)
비식별자 관계
부모 엔티티의 식별자가 자식 엔티티의 일반 속성이 되는 관계이다.
부모 엔티티가 없어도 자식 엔티티를 생성할 수 있고, 부모 엔티티가 삭제되어도 자식 엔티티가 존재할 수 있다.
+ 기타 정리
반응형
'Database' 카테고리의 다른 글
[Database / SQLD] 데이터 모델과 SQL _ 정규화, 반정규화, 트랜잭션 (Part1 - Ch02) (0) | 2024.04.24 |
---|---|
[Redis] Redisson 분산락(DistributedLock) AOP 적용 (0) | 2023.11.10 |
[Redis] Redisson 분산 락을 간단하게 적용해보기 (0) | 2023.11.07 |
[Redis] 레디스 설치 및 기본 기능 (0) | 2023.11.07 |
[H2 DB] 인메모리 방식 연결 방법 (미설치) (1) | 2023.08.18 |