👩🎓✍/SQL 개발자(SQLD)
02. 데이터 모델과 SQL
글로랴
2021. 8. 10. 15:47
1. 트랜잭션, Transaction
인가받지 않은 사용자로부터 데이터를 보장하기 위해 DBMS가 가져야 하는 특성이자, 데이터베이스 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위이다.
특성 | 설명 | 주요기법 |
원자성 (Atomicity) |
- 분해가 불가능한 작업의 최소단위 - 연산 전체가 성공 또는 실패 - 하나라도 실패할 경우 전체가 취소되어야 하는 특성 |
- Commit / Rollback - 회복성 보장 |
일관성 (Consistency) |
- 트랜잭션이 실행 성공 후 항상 일관된 데이터베이스 상태를 보존해야하는 특성 | - 무결성 제약조건 - 동시성 제어 |
격리성 (Isolation) |
- 트랜잭션 실행 중 생성하는 연산의 중간 결과를 다른 트랜잭션이 접근 불가한 특성 | - Read Uncomited - Read Commited - Repeatable Read - Serializable |
영속성 / 지속성 (Durability) |
- 성공이 완료된 트랜잭션의 결과는 영속적으로 데이터베이스에 저장하는 특성 | - 회복기법 |
2. 조인, Join
- 조인은 두 개 이상의 테이블을 연결하여 데이터를 검색하는 방법이다.
- 두 릴레이션으로부터 관련된 튜플들을 결합하여 하나의 튜플로 만드는 가장 대표적인 데이터 연결 방법이다.
유형 | 키워드 |
내부 조인 (Inner Join) |
Table1 [INNER] JOIN Table2 |
외부 조인 (Outer Join) |
- 왼쪽 외부 조인 (Left Outer Join) : Table1 LEFT [OUTER] JOIN Table2 - 오른쪽 외부 조인 (Right Outer Join) : Table2 RIGHT [OUTER] JOIN Table2 - 완전 외부 조인 (Full Outer Join) : Table1 FULL [OUTER] JOIN Table2 |
교차 조인 (Cross Join) |
Table1 CROSS JOIN Table2 |
셀프 조인 (Self Join) |
Table1 A [INNER] JOIN Table1 B |
- Oracle 조인 문법 vs. 1999 ANSI 조인 문법
Oracle 조인 문법 | 1999 ANSI 조인 문법 | ||
데이터가 부족한 테이블 쪽에 outer join sign (+) 를 붙여준다. | select e.ename, d.loc from emp e, dept d where e.deptno = d.deptno(+); |
select e.ename, d.loc from emp e left outer join dept d on (e.deptno = d.deptno); |
- 왼쪽 테이블이 기준 - 조인 조건에 부합하는 데이터가 조인 당하는 테이블(오른쪽)에 있으면 해당 데이터를, 없으면 NULL로 조회한다. - 모든 데이터를 조회하고 싶다면 데이터가 많은 테이블을 왼쪽에 작성한다. |
select e.ename, d.loc from emp e, dept d where e.deptno(+) = d.deptno; |
select e.ename, d.loc from emp e right outer join dept d on (e.deptno = d.deptno); |
- 오른쪽 테이블이 기준 - 조인 조건에 부합하는 데이터가 조인 당하는 테이블(왼쪽)에 있으면 해당 데이터를, 없으면 NULL로 조회한다. - 모든 데이터를 조회하고 싶다면 데이터가 많은 테이블을 오른쪽에 작성한다. |
|
❌ | select e.ename, d.loc from emp e full outer join dept d on (e.deptno = d.deptno); |
03. 정규화, Normalization
관계형 데이터베이스 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스이다.
단계 | 조건 |
1정규형 (1NF) | 원자 값으로 구성 |
2정규형 (2NF) | 부분 함수 종속 제거 (완전 함수적 종속 관계) |
3정규형 (3NF) | 이행 함수 종속 제거 |
보이스-코드 정규형 (BCNF) | 결정자 함수 종속 |
4정규형 (4NF) | 다치 (다중 값) 종속성 제거 |
5정규형 (5NF) | 조인 종속성 제거 |
*참고 : https://mangkyu.tistory.com/110
[Database] 정규화(Normalization) 쉽게 이해하기
지난 포스팅에서 데이터베이스 정규화와 관련된 내용을 정리했었다. 하지만 해당 내용이 쉽게 이해되지 않는 것 같아서 정규화 관련 글을 풀어서 다시 한번 정리해보고자 한다. 1. 정규화(Normaliz
mangkyu.tistory.com
04. NULL 속성
- NULL은 '알 수 없는 값' 또는 '아직 정해지지 않은 값'을 의미한다
- 컬럼 간 연산을 할 때 NULL이 포함되면 항상 NULL을 반환하지만, 여러 행 간에 SUM, AVG, MIN, MAX, COUNT 함수로 값을 집계할 때는 함수 인자 값이 NULL인 행이 포함돼도 결과를 정상적으로 반환한다. 👉 여러 행을 읽어 값을 집계할 때는 NULL 값을 연산 대상에서 제외하기 때문
- IS NULL : NULL 값인지 확인
- IS NOT NULL : NULL 값이 아닌지 확인
- NVL (NULL 값, 대체값) : NULL 값이 나타난다면 NULL을 특정 값으로 변환해주는 함수
반응형