728x90
KEY: 무언가를 식별하는 고유한 식별자
- candidate key(후보키): 각 행을 유일하게 식별할 수 있는 최소한의 속성들의 집합
학번, 주민번호
- primary key(기본키): 후보키들 중에서 하나를 선택한 키 - 최소성, 유일성 만족
학번 or 주민번호
- super key(슈퍼키): 각 행을 유일하게 식별할 수 있는 하나 or 그 이상의 속성들의 집합 - pk가 들어가 있어야 하고 나머지 속성들이 원소로 들어가도 가능.
{학번, 이름, 나이}, {주민번호, 사는 곳, 이름}..
- foreign key(외래키): 테이블이 다른 테이블의 데이터를 참조할 때 관계 연결에 사용하는 key
1번 table과 2번 table을 연결하기 위한 key인 foreign key = 주민번호
- alternate key(대체키,보조키): 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키들을 말한다.
현재 기본키가 학번이라고 가정하면 -> 주민번호(대체키)
DB 정규화
- 제 1 정규화: 테이블 컬럼이 atomic 하도록 (하나의 값) 갖도록 테이블 분리시키는 것
- 제 2 정규화: 테이블의 모든 컬럼이 완전 함수적으로 종속. 기본키가 복합키로 묶여 있을 때 하나의 키만으로 다른 컬럼을 결정지을 수 있으면 안된다. - 오로지 기본키로 모든 컬럼 결정지을 수 있어야함.
- 제 3 정규화: 이행적 종속을 없애기 위한 테이블 분리 (A->B, B->C 면 A->C이다.) 키 여러개가 결정자가 되는 것 방지.
- 반 정규화: 시스템의 성능 향상, 개발 및 운영의 편의성 등을 위해 정규화된 데이터 모델을 통합, 중복, 분리하는 과정.
- 정규화의 단점: 테이블이 너무 분리되어 자주 JOIN 해주어야 하기에 그에 따른 성능상 단점을 감수해야함
데이터 베이스 Anomaly(이상)
- 삽입이상: 불필요한 데이터를 추가해야 삽입할 수 있는 상황
- 기본키가 {EmployeeID, DepartmentID} 일 경우 부서가 없는 직원의 경우 해당 row의 DepartmentID 값을 null로 해야하는데 복합키이기 때문에 null로 할 수 없어서 '부서없음' 등 불필요한 데이터를 추가해야 삽입 가능하다.
- 갱신이상: 일부 변경. 데이터가 불일치하는 모순의 문제
- 어떤 직원이 부서를 변경할 경우 해당 부서와 관련된 컬럼( ex. 부서 번호) 등을 함께 변경하지 않을 경우 나중에 데이터 조회했을 때 오류가 생김.
- 삭제이상: 튜플 삭제로 인해 꼭 필요한 데이터까지 함께 삭제되는 문제
- 어떤 직원이 퇴사할 경우 (해당 직원이 포함된 부서에는 이 직원밖에 없을시 && 부서와 직원 컬럼을 나누지 않음) 해당 부서에 대한 정보가 사라진다.
데이터 언어
- DDL (Data Definition Language)
- 데이터베이스의 논리적, 물리적 구조 정의, 변경, 스키마 제약조건 정의
- CREATE, ALTER, DROP, TRUNCATE
- DML (Data Manipulation Language)
- 데이터 처리를 위해 사용자와 DBMS 사이의 인터페이스를 위한 언어
- INSERT, DELETE, UPDATE, SELECT
- DCL (Data Control Language)
- 데이터베이스에 접근하거나 객체에 권한을 주는 등의 역할을 하는 언어
- grant: 특정 작업에 대한 수행 권한 부여
- revoke: 특정작업에 대한 수행 권한 박탈
- TCL(Transaction Control Language)
- 트랜잭션 제어할 때 사용(DML에 의해 조작된 결과를 트랜잭션 별로 제어)
- commit: 트랜잭션 작업 저장
- rollback: 트랜잭션 작업을 취소, 복구
DB 파티셔닝(Partitioning) - 테이블을 쪼개는 행위
- 데이터베이스를 여러 부분으로 분할하는 것
- 퍼포먼스, 가용성, 정비 용이성 등을 목적.
- 하나의 인스턴스에 여러 테이블 나눠 저장
샤딩(Sharding) - 수평 파티셔닝
- 데이터베이스의 table의 row를 자르는 행위
- ex) 1~1000번 고객까지 1번 샤드, 1001~2000 고객까지 2번 샤드
- 도출된 서브셋을 여러 인스턴스에 저장한다.
트랜잭션 - ACID 성질. - 하나 이상의 쿼리를 모아 놓은 하나의 작업 단위.
- atomicity - 트랜잭션의 연산들이 모두 성공 or 반대로 모두 실패되는 성질(A 출금 B 입금이 하나만 일어나면 안댐)
- consistency - 일관성 있게 트랜잭션이 일어나기 전과 후에 제약이나 규칙을 만족한다.
- isolation - 다른 트랜잭션과 종속되지 않고 독립적이다.(만원 짜리 계좌 하나로 B C로 6000원씩 동시에 계좌 이체 할 경우 돈이 부족하면 B만 보내고 C는 못보낸다. 둘다 한번에 보내져서 마이너스 통장이 되진 않음)
- durability - 하나의 트랜잭션 성공시 로그가 남아야한다. (계좌이체 내역)
728x90
'CS 개념정리 > 데이터베이스(DB)' 카테고리의 다른 글
[CS] 데이터베이스 이론 정리(5) (0) | 2023.01.09 |
---|---|
[CS] 데이터베이스 이론 정리(4) (0) | 2022.12.26 |
[CS] 데이터베이스 이론 정리(3) (0) | 2022.11.28 |
[CS] 데이터베이스 이론 정리(2) (0) | 2022.11.08 |