SQLD 시험을 준비하며, 공부한 내용을 요약정리 해보았습니다.
개인적으로 생각하는 시험에 자주 출제될 만한 부분들은 노란색으로 강조하였습니다!
정규화에 대한 내용은 해당 글을 참조 해주세요
[DB] 데이터베이스 정규화 / 반정규화의 개념
1. 정규화(Normalization) 란?정규화(Normaliztion): 이상 현상이 있는 테이블을 분해하여 이상 현상을 없애는 방법테이블을 분해하는 정규형 단계가 높아질수록 이상 현상이 줄어든다.정규화의 목적데
haburu23.tistory.com
트랜잭션에 대한 내용은 해당 글을 참조 해주세요
[DB] 트랜잭션(Transaction) 개념 및 동작원리
스프링 DB 1편 - 데이터 접근 핵심 원리 강의 | 김영한 - 인프런김영한 | 백엔드 개발에 필요한 DB 데이터 접근 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 DB 접근 기술의 원리와 구조
haburu23.tistory.com
모델링의 개념
- 비즈니스 프로세스 및 데이터 요구 사항을 추상적이고 구조화 된 형태로 표현하는 과정
- 데이터베이스의 구조와 관계를 정의하고, 데이터의 저장, 조작, 관리를 명확하게 정의
모델링의 특징
- 단순화
- 핵심요소에 집중하고 불필요한 세부 사항을 제거
- 추상화
- 간략하게 대략적으로 표현을 의미
- 명확화
- 애매모호한 점을 최대한 제거하고 정확하게 현상을 기술하는 과정
데이터 모델링의 3가지 관점
- 데이터 관점
- 데이터가 어떻게 저장, 접근, 관리 되는지 정의하는 단계
- 프로세스 관점
- 데이터가 시스템 내에서 어떻게 흐르고 변환되는지를 확인
- 데이터와 프로세스 관점
- 특정 프로세스가 어떤 데이터를 사용하고, 데이터가 어떻게 생성되고 변경되는지를 명확하게 정의
데이터 모델링 유의점
- 중복
- 테이블에 같은 정보를 저장하지 않도록 설계
- 비유연성
- 업무 변화에도 잦은 모델변경이 되지 않도록 주의
- 비일관성
- 데이터간 상호연관 관계를 명확히 정의
- 데이터 중복이 없더라도 비일관성은 발생할 수 있음.
데이터 모델링의 3단계
- 대상(Entity) : 업무가 관리하고자 하는 대상
- 속성(Attribute) : 대상들이 갖는 속성
- 관계(Relationship) : 대상들의 관계
데이터 모델링 3가지 요소
- 개념적 모델링
- 추상화 수준이 가장 높음
- 업무의 핵심 엔티티를 추출하는 단계
- 논리적 모델링
- 세부속성, 식별자 ,관계 등을 표현하는 단계
- 데이터 정규화 수행
- 물리적 모델링
- 논리적 모델링을 거친 후 이를 직접 물리적으로 생성하는 과정
- 가장 구체적인 데이터 모델링(추상화 수준은 가장 낮다)
스키마의 3단계 구조
- 스키마 : 데이터베이스의 구조와 제약 조건등을 나열한 메타데이터 집합
- 외부, 개념, 내부 스키마로 분리된다.
- 외부 스키마
- 사용자가 보는 관점에서 스키마를 정의
- 개념 스키마
- 데이터베이스의 전체 논리적 구조를 정의
- 데이터베이스의 개체, 속성, 관계, 데이터 타입 등을 정의
- 내부 스키마
- 데이터가 물리적으로 어떻게 저장되는지 정의
- 데이터의 저장 구조, 컬럼, 인덱스를 정의
[3단계 스키마의 독립성]
- 논리적 독립성
- 논리적 데이터 구조가 변경 되어도 개념 스키마에 영향을 주지않는 특성
- 물리적 독립성
- 물리적 구조가 변경 되어도 내부 스키마에 영향을 주지않는 특성
데이터 모델의 표기법
- 엔티티와 엔티티 간의 관계를 시각적으로 표현한 다이어그램
- 1976년 피터 첸이 만든 표기법
ERD 작성 절차(6단계)
- 엔티티 도출 -> 엔티티 배치 -> 엔티티 관계 설정 -> 관계명 서술 -> 관계 참여도 기술 -> 관계 필수 여부 확인
엔티티의 개념
- 독립적으로 식별 가능한 객체나 사물
- 업무에서 분석해야 하는 대상들로 이루어진 집합
- 인스턴스는 엔티티의 특정 속성 값들로 구성되며, 엔티티의 개념을 구체적으로 나타낸 것
[예시]
- 엔티티: 학생
- 속성: 학번, 이름, 학과 등
- 식별자: 학번(고유한 학번으로 학생 식별)
- 인스턴스: 특정 학생의 데이터
- 학번: 20251311
- 이름: 김나라
- 학과: 컴퓨터 공학
엔티티의 특징
- 유일한 식별자에 의해 식별 가능
- 유일한 식별자는 그 엔티티 인스턴스의 고유 이름
- 해당업무에 필요하고 관리하고자 하는 정보
- 업무 시스템 구축에 필요한 정보여야 한다.
- 인스턴스들의 집합
- 2개 이상의 인스턴스 집합
- 엔티티는 반드시 속성을 가진다
- 각 엔티티는 2개 이상의 속성을 가짐
- 엔티티는 업무 프로세스에 의해 이용
- 사용되지 않는 고립 엔티티는 제거 필요
- 다른 엔티티와 최소 1개 이상의 관계 성립
- 관계가 없는 엔티티는 부적절한 엔티티
엔티티의 분류
[유형과 무형에 따른 분류]
- 유형 엔티티
- 물리적 형태가 있음
- ex) 사원, 물품 등
- 개념 엔티티
- 물리적 형태가 없음
- ex) 조직, 보험상품 등
- 사건 엔티티
- 업무를 수행함에 따라 발생하는 엔티티
- ex) 주문, 청구, 미납 등
[발생 시점에 따른 분류]
- 기본 엔티티
- 업무에서 기본적으로 존재하는 정보
- 독립적으로 생성되고 자신의 고유한 식별자를 가진다.
- ex) 사원, 부서, 고객, 상품 등
- 중심 엔티티
- 기본 엔티티로 부터 발생되고 업무에서 중심적인 역할
- ex) 계약, 사고, 주문, 청구 등
- 행위 엔티티
- 2개 이상의 부모 엔티티로 부터 발생
- ex) 변경이력, 주문내역 등
엔티티 주의 사항
- 현업에서 사용하는 용어 사용
- 줄임말 사용 자제
- 단수 명사 사용
- 모든 엔티티에서 유일하게 이름 부여
- 엔티티 생성 의미대로 이름 부여
엔티티와 인스턴스 표기법
- 엔티티들의 관계를 선으로 표현
- 속성을 IE 표기법, Baker 표기법 각각 표현 방법이 다름
- 바커 표기법의 동그라미는 NULL 허용을 의미
속성의 개념
- 속성은 더 이상 분리되지 않는 최소의 데이터 단위
엔티티, 인스턴스, 속성, 속성값의 관계
- 1개의 엔티티는 2개 이상의 인스턴스 집합이어야 한다(1개의 테이블은 2개 이상의 행을 가진다)
- 1개의 엔티티는 2개 이상의 속성을 갖는다(1개의 테이블은 2개 이상의 컬럼으로 구성된다)
- 각 속성은 구체적인 값을 가진다
속성의 특징
- 주 식별자에 함수적 종속성을 가져야 한다
- 속성은 1개의 속성 값을 갖는다.
- 원자성이란 인스턴스가 해당 속성에 대해서 단일하고 명확한 값을 가지는것.
함수적 종속성
- 한 속성의 값이 다른 속성의 값에 종속적인 관계를 갖는 특징
- 속성 A의 값에 의해 속성 B의 값도 유일하게 결정된다면 B는 A에 함수적 종속 되었다고 한다
- 완전 함수적 종속 : 특정 컬럼이 기본키에 대해 완전히 종속 될 때를 말한다.
- 부분 함수적 종속 : 기본키 전체가 아니라 기본키 일부에 대해 종속 될 때를 말한다.
속성의 분류
[속성의 특성에 따른 분류]
- 기본 속성
- 업무로부터 추출된 모든 속성
- 엔티티에서 일반적으로 가장 많이 존재하는 속성
- ex) 원금, 예치기간 등
- 설계 속성
- 기본 속성 외에 업무를 규칙화 하기 위해 새로 만드는 속성
- ex) 상품코드, 지점코드 등
- 파생 속성
- 다른 속성에 의해서 만들어지는 속성
- 일반적으로 계산된 값들이 해당됨
- ex) 합계, 평균, 이자 등
[엔티티 구성 방식에 따른 분류]
- 기본키(PK)
- 인스턴스를 식별할 수 있는 속성
- 외래키(FK)
- 다른 엔티티와의 관계에서 포함된 속성
- 일반 속성
- PK또는 FK에 포함되지 않은 기본 속성
[분해 여부에 따른 속성]
- 단일 속성
- 하나의 의미로 구성된 경우
- ex) 회원 ID, 이름 등
- 복합 속성
- 여러개의 의미로 구성된 경우
- ex) 주소(시, 구, 동 등으로 분해)
- 다중 값 속성
- 속성에 여러 개의 값을 가질 수 있는 경우
- ex) 상품의 목록 등
속성의 규칙
- 해당 업무에서 사용하는 이름을 부여
- 서술식 속성명은 사용하지 않음
- 줄임말 사용을 가급적 제한
- 전체 데이터 모델에서 유일한 명칭
도메인
- 도메인은 각 속성이 가질 수 있는 값의 범위를 의미
- 엔티티 내에서 속성에 대한 데이터 타입과 크기, 제약사항을 지정하는 것
관계의 개념
- 관계는 엔티티간의 연관성을 나타낸 개념
- 관계를 정의할 때는 인스턴스 간의 논리적인 연관성을 파악하여 정의
관계의 종류
- 존재적 관계
- 한 엔티티의 존재가 다른 엔티티의 존재에 영향을 미치는 관계
- ex) 부서 엔티티는 사원 엔티티에 영향을 미침
- 행위적 관계
- 엔티티 간의 어떤 행위가 있는 것을 의미
- ex) 고객 엔티티를 통해 주문 엔티티가 발생
관계의 구성
- 관계명
- 차수(1:1, 1:N)
- 선택성
관계의 차수
- 1:1 관계
- 완전 1:1 관계
- 하나의 엔티티에 관계되는 엔티티가 반드시 하나로 존재하는 경우
- 선택적 1:1 관계
- 하나의 엔티티에 관계되는 엔티티가 하나이거나 없을 수 있는 경우
- ex) 사원은 하나의 소속 부서가 있거나 아직 없을 수도 있음
- 완전 1:1 관계
- 1:N 관계
- 엔티티에 하나의 행에 따른 엔티티의 값이 여러 개 있는 관계
- ex) 고객은 여러 개의 물건을 주문할 수 있음
- N:N 관계
- 두 엔티티가 다대다 연결 관계를 가진다.
- 두 엔티티를 연결하는 연결 엔티티를 추가로 만들어서 1:N 관계를 해소할 필요가 있다.
관계의 페어링
- 엔티티 안에 인스턴스가 개별적으로 관계를 가지는 것
- 차수는 하나의 엔티티와 다른 엔티티 간의 레코드 연결 방식을 의미
- 페어링은 두 엔티티 간의 특정 연결을 의미
식별자 개념
- 엔티티를 대표하는 속성을 나타냄
- 유일한 식별자가 존재해야 한다.
- 식별자는 논리 모델링에서 사용하는 용어, 물리 모델링에서는 키(Key)라고 표현
주 식별자 특징
- 유일성 : 모든 인스턴스를 유일하게 구분
- 최소성 : 최소한의 속성으로 구성
- 불변성 : 주 식별자의 값은 변하지 않아야 함
- 존재성 : 주 식별자는 반드시 값이 존재해야 하며 NULL 허용을 하지 않음
식별자 분류
[대표성 여부에 따른 식별자 종류]
- 주 식별자
- 유일성과 최소성을 만족하는 엔티티를 대표하는 식별자
- 엔티티 내에서 유일하게 구분할 수 있는 식별자
- 보조 식별자
- 엔티티 내에서 대표성을 가지지 못한 식별자
[생성 여부에 따른 식별자 종류]
- 내부 식별자
- 다른 엔티티 참조 없이 내부에서 스스로 생성되는 식별자
- 외부 식별자
- 다른 엔티티와의 관계로 인해 만들어지는 식별자(외래키)
[속성 수에 따른 식별자 종류]
- 단일 식별자
- 하나의 속성으로 구성
- 복합 식별자
- 2개 이상의 속성으로 구성
[대체 여부에 따른 식별자 종류]
- 본질 식별자
- 비즈니스 프로세스에서 만들어지는 식별자
- 인조 식별자
- 인위적으로 만들어지는 식별자
주 식별자 도출기준
- 자주 사용되는 속성을 주 식별자로 지정
- 이름 같이 변할 수 있는 것을 주 식별자로 사용하면 안됨
- 속성 수를 최대한 적게 구성하여 조인으로 인한 성능저하 방지
관계간 엔티티 구분
- 강한 개체
- 독립적으로 존재할 수 있는 엔티티
- ex) 고객과 계좌 엔티티 중, 고객은 독립적으로 존재 가능
- 약한 개체
- 독립적으로 존재할 수 없는 엔티티
- ex) 고객과 계좌 엔티티 중, 계좌는 독립적으로 존재 할 수 없음(파생 엔티티)
식별 관계와 비식별 관계
- 식별 관계
- 하나의 엔티티의 기본키를 다른 엔티티가 기본키로 가지는 관계
- 식별 관계는 ERD에서 실선으로 표시
- 비식별 관계
- 강한 개체의 기본키를 다른 엔티티의 기본키가 아닌 일반 속성으로 가지는 관계
- 비식별 관계는 ERD에서 점선으로 표시
관계의 개념
- 엔티티의 인스턴스 사이의 논리적인 연관성
- 관계를 맺는다는 의미는 부모의 식별자를 자식에 상속하고, 상속된 속성을 조인키로 활용
관계의 분류
- 존재 관계는 엔티티 간의 상태를 의미
- 행위 관계는 엔티티간의 어떤 행위가 있는것을 의미
조인의 의미
- 정규화에 의해 분리된 두 테이블의 데이터를 같이 출력하기 위해 데이터를 연결하는 과정
[JOIN SQL]
SELECT A.계좌번호, B.관리점
FROM 계좌 A, 관리점 B
WHERE A.관리점코드 = B.관리점코드
AND A.계좌번호 = ‘100111’
계층형 데이터 모델
- 자기 자신끼리 관계가 발생하는것
- 계층 구조를 갖는 인스턴스 끼리 연결하는 방식을 셀프 조인이라고 한다
트랜잭션이란
- 하나의 연속적인 업무 단위를 말함
- 트랜잭션에 의한 관계는 필수적인 관계 형태를 가짐
트랜잭션 특성
- 원자성 : 트랜잭션에서 정의된 연산은 모두 성공하거나 변하지 않은 상태로 남아야 한다
- 일관성 : 트랜잭션이 실행되기 전의 데이터에 문제가 없다면 트랜잭션 실행 후에도 문제가 없어야 한다
- 고립성 : 트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받으면 안된다
- 지속성 : 트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장
필수적, 선택적 관계와 ERD
- IE 표기법
- 원을 사용하여 필수적 관계와 선택적 관계를 구분
- 필수적 관계에는 원을 그리지 않는다
- 선택적 관계에는 관계선 끝에 원을 그린다
- Baker 표기법
- 실선과 점선으로 구분
- 필수적 관계에는 관계선을 신선으로 표기
- 선택적 관계에는 관계선을 점선으로 표기
NULL 이란
- DBMS에서 아직 정해지지 않은 값을 의미
- 0과 공백("")과는 다른 개념
- Oracle에서의 공백은 NULL, SQL Server에서의 공백은 공백
NULL의 특성
- NULL을 포함한 연산 결과는 항상 NULL
- 집계합수는 NULL을 제외한 연산 결과를 리턴
- sum, avg, min, max 등의 함수는 항상 NULL을 무시
식별자 구분
- 본질 식별자
- 업무에 의해 만들어지는 식별자
- 인조 식별자
- 인위적으로 만들어지는 식별자
- 불필요한 인덱스 생성 -> 데이터베이스 성능 저하 야기
- 중복 데이터 발생 가능 -> 데이터 품질 저하
'SQLD' 카테고리의 다른 글
[SQLD 개념 요약] 서브쿼리, 그룹함수, 계층형 질의 (1) | 2024.11.12 |
---|---|
[SQLD 개념 요약] DDL, DML, DCL, TCL (1) | 2024.11.11 |
[SQLD 개념 요약] 관계형 데이터베이스(DBMS) (0) | 2024.11.10 |