본문 바로가기

취업/자격증

SQLD 1과목 정리

참고 링크: https://www.youtube.com/watch?v=QB_GYdHUHmA

 

데이터베이스 - 데이터의 집합

DBMS - 보다 잘 관리할 수 있는 것

 

[모델링의 개념]

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

- 데이터베이스의 구조와 관계를 정의하며, 이를 통해 데이터의 저장, 조작, 관리 방법을 명확하게 정의

 

[모델링의 특징]

1. 단순화 - 현실을 단순화하여 핵심 요소에 집중

2. 추상화 - 현실세계를 일정한 형식에 맞추어 간략하게 대략적으로 표현하는 과정

3. 명확화 - 대상에 대한 애매모호함을 최대한 제거하고 정확하게 현상을 기술하는 과정

 

[데이터 모델링 유의점]

1. 중복 - 같은 정보 저장하지 않도록

2. 비유연성 - 사소한 업무 변화에 대해서도 잦은 모델 변경이 되지 않도록

3. 비일관성 - 데이터베이스 내의 정보가 모순되거나 상반된 내용을 갖는 상태

 

[데이터 모델링 3가지 요소]

1. 대상 - 업무가 관리하고자 하는 대상(객체)

2. 속성 - 대상들이 갖는 속성

3. 관계 - 대상들 간의 관계

 

[데이터 모델링의 3단계]

1. 개념적 모델링 - 업무 중심적이고 포괄적인 수준, 추상화 수준이 가장 높음

2. 논리적 모델링 - 개념적 모델링의 결과를 토대로 세부속성, 식별자, 관계 등을 표현하는 단계, 데이터 정규화 수행

3. 물리적 모델링 - 논리 모델링이 끝나면 이를 직접 물리적으로 생성하는 과정, 가장 구체적인 데이터 모델링, 추상화 수준                                가장 낮음

 

[데이터 모델의 표기법(ERD)]

- 엔티티와 엔티티 간의 관계를 시각적으로 표현한 다이어그램

 

[ERD 작성 절차 6단계]

1. 엔티티 도출 후 그림

2. 엔티티 배치

3. 엔티티 간의 관계 설정

4. 관계명 서술

5. 관계의 참여도 기술

6. 관계의 필수 여부를 확인

 

[엔티티의 개념]

- 현실 세계에서 독립적으로 식별 가능한 객체나 사물을 나타냄

- 대상들로 이루어진 집합

 

[엔티티의 특징]

1. 유일한 식별자에 의해 식별 가능

2. 해당 업무에 필요하고 관리하고자 하는 정보

3. 인스턴스들의 집합

4. 엔티티는 반드시 속성을 가짐

5. 엔티티는 업무 프로세스에 의해 이용

6. 다른 엔티티와 최소 1개 이상의 관계 성립

 

[엔티티의 분류]

1) 유형과 무형에 따른 분류

- 유형엔티티: 물리적 형태가 있음

- 개념엔티티: 물리적 형태X

- 사건엔티티: 업무를 수행에 따라 발생하는 엔티티

 

2) 발생 시점에 따른 분류

- 기본엔티티: 그 업무에 원래 존재하는 정보

- 중심엔티티: 기본엔티티로부터 발생되고 그 업무에서 중심적인 역할

- 행위엔티티: 2개 이상의 부모엔티티로부터 발생

 

[엔티티의 명명]

- 현업에서 사용하는 용어 사용

- 가능하면 약자 사용 자제

- 단수 명사 사용

- 유일하게 이름 부여

- 엔티티 생성 의미대로 이름 부여

 

[속성의 개념]

- 속성은 업무에서 필요로 하는 고유한 성질, 특징을 의미(관찰 대상) -> 컬럼으로 표현할 수 있는 단위!

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

 

[엔티티, 인스턴스, 속성, 속성값의 관계]

- 1개의 엔티티는 2개 이상의 인스턴스의 집합이어야 한다.

- 1개의 엔티티는 2개 이상의 속성을 갖는다.

- 한 개의 속성은 1 개의 속성값을 갖는다.

 

[속성의 특징]

- 업무에서 필요

- 주식별자에 함수적 종속성을 가져야 한다.

- 속성의 원자성(각 속성이 하나의 값을 갖고 있어야 한다.)

 

[함수적 종속성]

- 한 속성의 값이 다른 속성의 값에 종속적인 관계를 갖는 특징을 말함

- 즉, 어떤 속성 A의 값에 의해 다른 속성 B도 유일하게 결정된다면, B는 A에 함수적으로 종속됐다 한다.

+ 완전 함수 종속과 부분 함수 종속 알아두기

 

[속성의 분류]

1. 기본 속성 - 업무로부터 추출된 모든 속성

2. 설계 속성 - 업무를 규칙화하기 위해 새로 만들어지거나 기본 속성을 변형하여 만들어지는 속성

3. 파생 속성 - 다른 속성에 의해 만들어지는 속성, 일반적으로 계산된 값들

 

[엔티티 구성방식에 따른 분류]

1. PK(Primary Key, 기본)

2. FK(Foregin Key, 외래키)

3. 일반 속성 - pk,fk가 아닌 것

 

[분해 여부에 따른 속성]

1. 단일 속성 - 하나의 의미로 구성된 경우

2. 복합 속성 - 여러개의 의미로 구성된 경우 ex)주소

3. 다중값 속성 - 여러 개의 값을 가질 수 있는 경우 ex)상품 리스트

 

[도메인]

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

- 엔티티 내에서 속성에 대한 데이터 타입과 크기, 제약사항을 지정하는 것

 

[관계의 개념]

- 관계는 엔티티간의 연관성을 나타낸 개념

 

[관계의 종류]

1) 존재적 관계 - 한 엔티티의 존재가 다른 엔티티의 존재에 영향을 미치는 관계

2) 행위적 관계 - 엔티티 간의 어떤 행위가 있는 것을 의미

 

[관계의 구성]

1. 관계명

2. 차수(Cardinality)

3. 선택성(Optionality)

 

[관계의 차수]

- 한 엔티티의 레코드가 다른 엔티티의 레코드와 어떻게 연결되는지를 나타내는 표현

- 1:1, 1:N, N:M

 

[관계의 페어링]

- 엔티티 안에 인스턴스가 개별적으로 관계를 가지는 것

 

* 관계와 차수, 페어링 차이

- 학생과 강의 엔티티는 관계를 가짐

- 차수는 다대다

- 인스턴스 입장에서 보면 "학생 A가 강의 B를 ~~" 특정한 페어링이 형성

- 차수는 하나의 엔티티와 다른 엔티티 간의 레코드 연결 방식, 페어링은 두 엔티티 간의 특정 연결을 설명

 

[식별자 개념]

- 엔티티를 대표할 수 있는 속성

- 유일한 식별자가 존재해야 한다.

- 논리 모델링에서 사용하는 용어로, 물리 모델링에서는 키(key)라고 표현

 

[주식별자 특징]

1. 유일성

2. 최소성

3. 불변성

4. 존재성

 

[식별자 분류]

1) 대표성 여부에 따른 식별자의 종류 - 주식별자 vs 보조식별자

2) 생성 여부에 따른 식별자의 종류 - 내부식별자 vs 외부식별자

3) 속성 수에 따른 식별자 종류 - 단일식별자 vs 복합식별자

4) 대체 여부에 따른 식별자의 종류 - 본질식별자 vs 인조식별자

 

[식별 관계와 비식별 관계]

1) 식별 관계 - 하나의 엔티티 기본키를 다른 엔티티가 기본키의 하나로 공유하는 관계

2) 비식별 관계 - 기본키가 아닌 일반 속성으로 관계를 가지는 것

 

[정규화의 개념]

- 최소한의 데이터만을 하나의 엔티티에 넣는식으로 데이터를 분해하는 과정

- 논리 데이터 모델링 수행 시점에서 고려

- 중복을 제거하고 데이터 모델의 독립성을 확보

- 제 1부터 5까지 있지만 3까지만 실제로 수행이 된다.

 

[이상현상]

- 정규화를 하지 않아 발생하는 현상(삽입이상, 갱신이상, 삭제이상)

 

[정규화 단계]

1. 제 1 정규화(1NF) - 테이블의 컬럼이 원자성을 갖도록 테이블을 분해하는 단계, 하나의 행에 하나의 값만 입력되도록 하는 것

2. 제 2 정규화(2NF) - 완전 함수 종속이 되도록 테이블을 분해하는 것. 부분 함수 종속성을 가지지 않도록 하는 것

*완전 함수 종속이란? 기본키를 구성하는 모든 컬럼의 값이 다른 컬럼을 결정짓는 상태

3. 제 3 정규화(3NF) - 이행적 종속을 없애도록 테이블을 분리하는 것, a->b가 b->c고 a->c가 성립하게 되면 분리해야 함

 

[반정규화=역정규화]

- 데이터베이스의 성능 향상을 위해 데이터 중복을 허용하고 조인을 줄이는 것

 

[반정규화 수행 케이스]

- 수행 속도가 느려지는 경우

- 다량의 범위를 자주 처리해야 하는 경우

- 특정 범위의 데이터만 자주 처리하는 경우

 

[관계의 개념]

- 엔티티의 인스턴스 사이의 논리적인 연관성

 

[관계의 분류]

- 존재 관계: 엔티티 간의 상태를 의미

- 행위 관계: 엔티티 간의 어떤 행위가 있는 것을 의미

 

[조인의 의미]

- 두 테이블의 데이터를 동시에 출력하거나 관계가 있는 테이블을 참조하기 위해 데이터를 연결하는 과정

 

[트랜잭션]

- 하나의 연속적인 업무 단위

- 필수적인 관계 형태

 

[NULL 이란]

- 아직 정해지지 않은 값으로 0이랑 다름

 

[NULL의 특성]

- null을 포함한 연산 결과는 항상 null

- null을 치환해서 연산을 하면 연산 결과를 원하는 대로 얻을 수 있다.

- 집계함수(sum, avg, min, max)는 null을 제외한 연산 결과 리턴

 

[식별자 구분]

1) 본질식별자 - 업무에 의해 만들어지는 식별자

2) 인조식별자 - 인위적으로 만들어지는 식별

* 인조식별자 단점 - 중복 데이터 발생 가능성(데이터 품질 저하), 불필요한 인덱스 생성(저장공간 낭비 및 DML 성능 저하)

 

<개인적인 의견>

SQLD 다시 준비하는데 이번에는 꼭 합격하길...바라는 마음으로 공부해봅니다...

자격증이랑 안 맞는 사람인 거 뼈저리게 느꼈지만... 그래도 다시 한 번...

IT 공부는 진짜 복습의 연속인 것 같아요