[내가 공부하려고 ~] 정처기 요약 정리 - 3유형
[3유형]
1. 데이터베이스 기초 개념
릴레이션(Relation) : 데이터를 표의 형태로 표현한 것
속성(Attribute, 애트리뷰트) : 릴레이션의 열
차수(Degree) : 속성의 수가 몇 개?
튜플(Tuple) : 릴레이션의 행
기수(Cardinality, 카디널리티) : 튜플이 몇 개?
도메인(Domain) : 속성에 들어가는 원자값 집합(ex. 성별 : 남, 여 / 학점 : A, B, C...)
2. DDL, DML, DCL
- DDL 데이터 정의어
SQL 명령어 | 예문 |
CREATE | CREATE INDEX 고객번호 ON 고객(이름 DESC); |
ALTER | ALTER TABLE 학생 ADD 학년 VARCHAR(3); |
DROP | DROP SCHEMA 학생; |
- DML 데이터 조작어
SQL 명령어 | 예문 |
SELECT | SELECT 학번, 이름 FROM 학생 WHERE 학년 IN(3.4); |
INSERT | INSERT INTO 사원 VALUES ('홍길동', '마케팅', 27); |
UPDATE | UPDATE 사원 SET 주소 = '역삼동' WHERE 이름 = '홍길동'; |
DELETE | DELETE FROM 사원 WHERE 이름 = '홍길동'; |
- DCL 데이터 제어어
SQL 명령어 | 예문 |
GRANT | GRANT INSERT ON 고객 TO 짱구; |
REVOKE | REVOKE GRANT OPTION FOR UPDATE ON 고객 FROM 짱구; |
COMMIT | COMMIT; |
ROLLBACK | ROLLBACK; |
3. SELECT문
SELECT [ ALL | DISTINCT ] 속성이름들
FROM 테이블 이름들
[ WHERE 조건들 ]
[ GROUP BY 속성이름 ]
[ HAVING 조건들 ]
[ ORDER BY 속성이름 [ASC | DESC] ]
* 테이블에서 조건을 만족하는 속성들을 SELECT 한다.
※ DISTINCT 를 쓰면 겹치는 행은 반환하지 않는다.
※ 속성이름을 쓰지 않고 * 을 쓰면 전체 속성들을 의미한다.
※ ASC 는 오름차순(가나다), DESC는 내림차순(다나가)
4. 후보키 vs 슈퍼키
키의 종류 | 설명 |
후보키 | 튜플들을 식별할 수 있는 속성들. 기본키로 사용 가능한 후보들이 됨(유일성과 최소성을 모두 만족함) |
기본키 | 후보키 중에서 특별히 선정된 키이고, NULL 값이나 중복값은 가질 수 없다. ex) 학번, 주민번호 |
대체키 | 후보키가 둘 이상일 때 기본키를 제외한 나머지를 의미함. (기본키가 없을 때 그 자리를 대신해 줄 수 있으므로 대체키임) |
슈퍼키 | 릴레이션 내에 있는 속성들의 집합으로 구성되는 키 ex) 이름 + 주소 의 조합으로 키를 만들 수도 있는데, 그러면 슈퍼키가 됨. (유일성은 만족하지만 최소성은 만족하지 못함) |
외래키 | 다른 릴레이션의 기본키를 참조하는 속성들 ex) <학생> 릴레이션에 기본키가 주민번호이고, <수강> 릴레이션의 기본키는 학번이라면, <학생> 릴레이션에 있는 학번은 남의 기본키, 나의 외래키가 된다. |
5. 로킹
로킹(Locking) : 트랜잭션이 접근하는 동안 데이터를 잠궈서(lock) 다른 트랜잭션이 접근하지 못하도록 보호함
로킹 단위 | 로크의 수 | 병행성 | 오버헤드 | 공유도 | 관리 |
커짐▲ | 감소▼ | 감소▼ | 감소▼ | 감소▼ | 수월▼ |
작아짐▼ | 증가▲ | 증가▲ | 증가▲ | 증가▲ | 복잡▲ |
* 로킹 단위와 나머지는 관계가 반대!
* 로킹 단위가 커지면 나머지는 작아지고, 로킹 단위가 작아지면 나머지는 커짐
6. 정규화
- 데이터베이스 내부와 불필요한 중복과 종속을 제거하여 이상(Anomaly) 를 해결
- 정규화 된 데이터 모델은 일관성, 정확성, 단순성, 비중복성, 안정성 등을 보장함
※ 정규화 과정
7. 원자성
- 트랜잭션의 특징
특징 | 설명 |
원자성 (Atomicity) |
트랜잭션 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 한다. |
일관성 (Consistency) |
트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환한다. |
격리성 (Isolution) |
트랜잭션 실행 중 생성하는 연산의 중간 결과를 다른 트랜잭션이 접근 불가하다. |
영속성 (Durability) |
성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 한다. |
8. 개체 무결성
- 무결성
종류 | 설명 |
개체 무결성 | 기본 테이블의 기본키를 구성하는 어떤 속성도 NULL 값이나 중복값을 가질 수 없다. |
도메인 무결성 | 주어진 속성 값이 정의된 도메인에 속한 값이어야 한다. |
참조 무결성 | 외래키 값은 NULL 이거나 참조 릴레이션의 기본키 값과 동일해야 한다. |
사용자 정의 무결성 | 속성값들이 사용자 정의한 제약 조건에 만족해야 한다. |
NULL 무결성 | 릴레이션의 특정 속성 값이 NULL 이 될 수 없도록 한다. |
고유 무결성 | 릴레이션의 특정 속성에 대해 각 튜플이 갖는 속성 값들이 서로 달라야 한다. |
키 무결성 | 하나의 릴레이션에는 적어도 하나의 키가 존재해야 한다. |
관계 무결성 | 릴레이션에 어느 한 튜플의 삽입 가능 여부 또는 한 릴레이션과 다른 릴레이션의 튜플들 사이의 관계에 대한 적절성 여부를 지정한 규정이다. |
9. 관계 대수 연산
- 관계 대수란 관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는 가를 기술하는 절차적인 언어이다.
순수 관계 연산자
-> 관계 데이터베이스에 적용할 수 있도록 특별히 개발된 관계 연산자이다.
연산자 | 기호 | 설명 |
SELECT | 시그마 (σ) | 조건에 맞는 튜플 검색 |
PROJECT | 파이(π) | 특정 속성만 보여주기 |
JOIN | ⋈ | 합치기 |
DIVISION | 나누기(÷) | 해당하는 튜플의 검색 대상 속성은 제거하고 보여주기 |
일반 집합 연산자
-> 수학적 집합 이론에서 사용하는 연산자로, 일반 집합 연산자 중 합집합, 교집합, 차집합은 합병 조건이 가능해야 한다.
연산자 | 기호 | 설명 |
UNION | ∪ | 합집합 |
INTERSECTION | ∩ | 교집합 |
DIFFERENCE | ─ | 차집합 |
CARTESIAN PRODUCT | X | 교차곱(가능한 순서쌍) |
* 순수 관계 연산자 합치기(JOIN) vs 일반 집합 연산자 합집합(UNION) 차이
10. 뷰(View)
- 기본 테이블을 기반으로 만들어진 가상의 테이블
-> 실제 물리적으로 데이터를 저장하고 있지 않고 논리적으로만 존재한다.
-> 기본 테이블이 삭제되면 뷰도 같이 삭제된다.
-> 삽입(CREATE), 삭제(DROP) 은 가능하지만 변경(ALTER)은 되지 않는다.
-> 사용자에게 접근이 허용된 자료만을 제한적으로 보여준다. (데이터 관리 용이)