데이터 베이스는 항상 개,논,물 개념이랑 VIEW, KEY, 정규화 문제들이 많이 나오는거같다
SQL구문보다는 개념위주로 항상 출제되는듯 하다
1. 데이터베이스 기본
데이터베이스(Database)
정의 : 여러 사용자나 응용 프로그램이 공유하며 사용할 수 있도록 정리된 데이터의 통합된 집합
특징
- 중복 최소화: 여러 데이터가 반복 저장되지 않도록 설계 (중복이 아니라 중복 제거가 핵심)
- 데이터 독립성: 응용 프로그램과 데이터를 분리
- 데이터 공유성: 여러 사용자 간 동시 사용 가능
- 보안성: 권한에 따른 접근 제어
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) | × | 모든 조합 생성 |
이름 고르는 것도 가끔 나옴
속성 = 열 = 필드 = 칼럼
튜플 = 행 = 레코드
릴레이션 = 테이블
차수= 열 수
카디널리티 = 행수
도메인= 속성의 값 범위
'CS&알고리즘 > CS지식' 카테고리의 다른 글
[CS] DOM , Virtual DOM(VDOM) (feat. 리액트에서의 사용) (2) | 2025.01.15 |
---|---|
[CS] VUE 랑 REACT 차이 (feat. 라이브러리, 프레임워크) (2) | 2025.01.15 |
[CS]뿌론트가 알아야 할 지식 -1. WEB (0) | 2024.01.12 |
[알고리즘]정렬 & 해시 함수 (1) | 2024.01.12 |