본문 바로가기

CS&알고리즘/CS지식

데이터베이스 정리 (공기업 , 금융권 필기 대비)

데이터 베이스는 항상 개,논,물 개념이랑 VIEW, KEY, 정규화 문제들이 많이 나오는거같다

SQL구문보다는 개념위주로 항상 출제되는듯 하다 

 

1. 데이터베이스 기본

데이터베이스(Database)

정의 : 여러 사용자나 응용 프로그램이 공유하며 사용할 수 있도록 정리된 데이터의 통합된 집합

특징

  1. 중복 최소화: 여러 데이터가 반복 저장되지 않도록 설계 (중복이 아니라 중복 제거가 핵심)
  2. 데이터 독립성: 응용 프로그램과 데이터를 분리
  3. 데이터 공유성: 여러 사용자 간 동시 사용 가능
  4. 보안성: 권한에 따른 접근 제어

 

DBMS(Database Management System)

데이터를 생성, 저장, 검색, 갱신, 삭제 등 관리하는 시스템 소프트웨어

ex) oracle, mysql, pstgresql, sqlite등

기능 : 데이터 정의 , 데이터 조작, 트랜잭션 처리, 동시성 제어, 보안 기능

 

 

스키마(Schema): DB의 구조와 제약 조건을 정의한 설계도

3단계 스키마 구조

외부 스키마 : 사용자 관점 , 뷰

개념 스키마 : 전체 논리 구조( ERD모델)

내부 스키마 : 물리적 저장 구조(파일, 인덱스), (디스크 배치)

⇒ 데이터 독립성을 보장

 

인스턴스(Instance)

스키마에 따라 실제로 저장된 특정 시점의 실제 데이터

스키마는 고정된 구조, 인스턴스는 변할 수 있는 값의 집합

 


 

2. 키(key)

키종류 

기본키(Primary Key): 유일하게 식별하는 속성, NULL 불가, 후보키 중 선택하고 유일성과 최소성을 만족, 중복 안됨

후보키(Candidate Key): 기본키가 될 수 있는 후보들(여러 개일 수 있음) (유일+최소),

슈퍼키(Super Key): 유일성은 있으나 최소성은 없음

외래키(Foreign Key): 다른 테이블의 기본키 참조, NULL가능, 중복 가능

대체키(Alternate Key): 기본키로 선택되지 않은 후보키 (유일+최소 )

복합키: 두개 이상의 속성으로 구성된 키 (유일, 속성)

유일키(Unique Key): 중복 불가능한 속성, null허용, 제약 조건의 일종

 

유일성과 최소성

유일성: 각 튜플을 유일하게 식별 가능

최소성: 유일성을 유지하는 최소한의 속성만 포함

 

무결성 제약 조건

개체 무결성: 기본키는 NULL이나 중복 불가

참조 무결성: 외래키는 참조 대상이 존재해야함

도메인 무결성: 속성 값은 정의된 범위 내 존재

 


 

 

3. 정규화(Normalization) 

함수 종속

A→ B이다 (A가 결정자, B가 종속자 )

ex) 학번→ 이름

학번 20201101110이면 → 이름은 “꼬마김밥”으로 정해짐

학번만 보면 이름이 바로 결정되므로 , 학번이 결정자, 이름이 종속자

완전 함수 종속 : 기본키 전체에 종속

부분 함수 종속: 기본키 일부 속성에만 종속 : 2NF위반

이행 함수 종속: A→B , B→C ⇒ A→C : 3NF위반

 

 

이상의 종류

정규화를 통해 제거하고자 하는 문제들

 

        종류                           설명                                                                예시

삽입 이상 일부 속성 없이 데이터 삽입 불가 교수 없이 강의 개설 불가
삭제 이상 불필요한 데이터까지 함께 삭제됨 한 강좌 취소 시 교수 정보도 삭제됨
갱신 이상 동일 정보 중 일부만 갱신되어 불일치 교수 전화번호 변경 시 일부만 반영됨

 

 

 

정규화

중복 제거, 이상(Anomaly) 방지

1NF: 원자값

2NF: 부분 함수 종속 제거 (기본키의 일부분 → 속성 X)

3NF: 이행 함수 종속 제거 (A→B, B→C → A→C 형태 제거) ⇒ A→B→C구조에서 C를 분리

BCNF: 결정자가 후보키가 아닌 경우 제거

===========위에 까지가 자주 나옴==========

4NF: 다치 종속 제거 ( A→→B :한 A에 여러 B) 제거

5NF: 조인 종속 제거

6NF: 거의 안나옴 나오면 걍 틀려야지뭐

 

 

 

반정규화

성능 향상을 목적으로 정규화된 테이블을 일부 통합

읽기 성능 향상, 데이터 중복 가능성 증가

 

 

 


4. 트랜잭션(Transaction)

DB의 논리적 작업 단위, 반드시 4가지 ACID 만족

 

                  특성                                                                 의미                                                     시험 포인트

Atomicity (원자성) 모두 수행하거나 전혀 수행하지 않음 실패 시 ROLLBACK
Consistency (일관성) 트랜잭션 전후에 DB 상태가 일관됨 제약 조건 유지
Isolation (고립성) 동시에 실행되는 트랜잭션이 서로 간섭 못 함 병행 제어로 보장
Durability (지속성) 성공한 트랜잭션 결과는 영구 저장 COMMIT 후 보장

 

 

데드락 관련

트랜잭션이 서로 락 해제를 기다리는 상황

해결 방법: 타임 아웃, 선점, 자원 순서 고정 등

 

 

 

개념                                                               설명

COMMIT 트랜잭션 종료, 변경사항 확정
ROLLBACK 트랜잭션 취소, 변경사항 취소
SAVEPOINT ROLLBACK 시 복원 지점 설정
AUTO COMMIT 명령 실행 후 자동 커밋 (SQL 기본 설정)

 

 

 

 


 

 

5. SQL 주요 구문

SQL은 문제로도 나오고 개념으로도 나오는데, 이건 기본 SQL문제들로 커버 가능

 

DML: SELECT, INSERT, UPDATE, DELETE

DDL: CREATE, ALTER, DROP, 

DCL: GRANT, REVOKE

TCL: COMMIT, ROLLBACK, SAVEPOINT

 

 


 

6. 이외 빈출 개념

VIEW

가상의 테이블, 실제 데이터를 저장하지 않음

정의된 SQL쿼리 결과를 테이블 처럼 사용

보안 및 복잡한 쿼리 단순화에 유용

삭제 시 실제 데이터 영향 없음

주로 보안 목적

읽기 전용 가능( 기본 테이블 변경 불가 )

cf)

read only일때는 기본 테이블 변경 불가인 것이 맞음 

하지만, 항상 기본 테이블 변경 불가능 한건 아니고 특정 조건을 만족하면 가능하다………………..

시험에서 절대~ 수정 불가능하다 이러면 틀린거고 , 일부 뷰는 기본 테이블 변경이 가능하다 이러면 맞는 선지로 고려

 

 

 

인덱스

데이터의 검색 속도 향상을 위해 사용하는 구조

책의 ‘색인’처럼 특정 값을 빠르게 찾게 도와줌

 

 

조인 (Join)

두 개 이상의 테이블을 공통 컬럼(속성) 기준으로 결합

 

            종류                                              설명                                              예시

INNER JOIN 공통되는 값만 SELECT ... FROM A JOIN B ON A.id = B.id
LEFT JOIN 왼쪽 테이블은 모두, 오른쪽은 일치할 때만 일치 안 하면 NULL
RIGHT JOIN 오른쪽 테이블은 모두 반대방향
FULL OUTER JOIN 양쪽 모두, NULL 포함 (MySQL 미지원)

 

 

 

관계대수 (Relational Algebra)

관계형 DB에서 데이터를 수학적으로 다루는 연산 집합

 

연산                                                                                  기호              설명

선택 (Select) σ 조건에 맞는 튜플(행) 선택
투영 (Project) π 특정 속성(열)만 선택
조인 (Join) 두 릴레이션 병합
합집합 (Union) 공통된 속성의 릴레이션 합
차집합 (Difference) 한 릴레이션에만 있는 튜플
카티션 곱 (Cartesian Product) × 모든 조합 생성

 

 

 

 

이름 고르는 것도 가끔 나옴

 

속성 = 열 = 필드 = 칼럼

튜플 = 행 = 레코드

릴레이션 = 테이블

차수= 열 수

카디널리티 = 행수

도메인= 속성의 값 범위