과목 1 : 데이터 모델링의 이해
데이터 모델링을 할때 유의 사항
- 중복 : 여러 장소에 같은 정보 X
- 비유연성 : 데이터의 정의와 사용 프로세스를 분리 -> 데이터가 적게 변화되도록
- 비일관성 : 데이터 간의 상호 연관관계를 명확히 정의
데이터 모델링의 종류
- 개념적 데이터 모델링
- 물리적 데이터 모델링
데이터 베이스 모델링의 특징
추상화, 단순화, 명확화
데이터베이스 스키마의 구조
- 외부 스키마 : 사용자 관점의 데이터베이스 구조
- 개념 스키마 : 전체 데이터베이스의 논리적 구조
- 내부 스키마 : 물리적 저장장치에 대한 데이터베이스 구조
엔터티의 특징
- 반드시 해당 업무에서 필요하고 관리하고자 하는 정보여야한다.
- 유일한 식별자에 의해 식별이 가능해야 한다.
- 영속적으로 존재하는 인스턴스의 집합이어야 한다.
- 엔터티는 업무 프로세스에 의해 이용 되어야 한다.
- 엔터티는 반드시 속성이 있어야 한다.
- 엔터티는 다른 엔터티와 최소 한 개 이상의 관계가 있어야 한다.
엔터티, 인스턴스, 속성, 속성값의 관계
- 한 개의 엔터티는 두 개 이상의 인스턴스로 구성
- 한 개의 엔터티는 두 개 이상의 속성을 갖는다
- 한 개의 속성은 한 개의 속성값을 갖는다
속성의 분류
- 기본 속성 : 본래의 속성
- 설계 속성 : 데이터 모델링 과정에서 추가된 속성
- 파생 속성 : 다른 속성에 의해 만들어지는 속성
관계의 표기법
- 관계명
- 관계차수
- 관계선택사양
식별자의 종류
- 주식별자 vs 보조식별자
- 내부식별자 vs 외부식별자 (타 엔티티에서 받아옴)
- 단일식별자 (하나의 속성) vs 복합식별자 (둘 이상의 속성)
- 본질식별자 vs 인조식별자
데이터 모델링의 순서
- 데이터모델링을 할 때 정규화를 정확하게 수행한다.
- 데이터베이스 용량산정을 수행한다.
- 데이터베이스에 발생되는 트랜잭션의 유형을 파악한다.
- 용량과 트랜잭션의 유형에 따라 반정규화를 수행 한다.
- 이력모델의 조정, PK/FK조정, 슈퍼타입/서브타입 조정 등을 수행한다.
조인
- Nested Loop Join
- Single Loop Join
- Sort Merge Join
- Hash Join
정규화
- 제 1 정규화
각 열은 원자값만을 포함하고 있어야 한다.
- 제 2 정규화
기본키가 복합키일 경우, 부분 함수 종속을 제거
- 제 3 정규화
이행적 함수 종속을 제거
- BCNF
결정자가 후보키가 아닌 함수 종속을 제거
- 제 4 정규화
다치 종속을 제거
과목 2 : SQL 기본 및 활용
순수 관계 연산자
SELECT
,PROJECT
,JOIN
,DIVIDE
SQL의 종류
- DDL : 데이터 정의어 :
CREATE
,ALTER
,DROP
,TRUNCATE
- DML : 데이터 조작어 :
SELECT
,INSERT
,UPDATE
,DELETE
- DCL : 데이터 제어어 :
GRANT
,REVOKE
- TCL : 트랜잭션 제어어 :
COMMIT
,ROLLBACK
,SAVEPOINT
집합 연산자
UNION
: 합집합INTERSECT
: 교집합UNION ALL
: 중복 포함 합집합EXCEPT
: 차집합 (MS-SQL)MINUS
: 차집합 (Oracle)
PRIOR문
PRIOR 자식 = 부모
: 부모->자식 순방향 전개PRIOR 부모 = 자식
: 자식->부모 역방향 전개
서브쿼리의 종류
- 일반 서브쿼리 : 하나의 변수처럼 사용
- SingleRow Subquery
- MultieRow Subquery
- MultieColumn Subquery
- 인라인 뷰 (Inline View) : 뷰 형태로써 테이블을 리턴하는 서브쿼리. FROM 또는 JOIN절에 사용한다.
- Scalar Subquery : 하나의 칼럼처럼 사용되는 서브쿼리.
- Correlative Subquery : 메인 쿼리의 값을 사용하는 서브쿼리. 즉 메인 쿼리의 결과로 서브쿼리가 실행되고 그 결과로 메인쿼리가 또 실행되는 서로 연관된 쿼리를 의미합니다.
참조 동작
- Delete(/Modify) Action : Cascade, Set Null, Set Default, Restrict (부서-사원)
- Cascade : Master 삭제 시 Child 같이 삭제
- Set Null
- Set Default
- Restrict : Child 테이블에 PK 값이 없는 경우만 Master 삭제 허용 : 참조무결성을 위반하는 삭제/수정 액션을 취하지 않음
- No Action
- Insert Action : Automatic, Set Null, Set Default, Dependent (부서-사원)
- Automatic : Master 테이블에 PK가 없는 경우 Master PK를 생성 후 Child 입력
- Set Null
- Set Default
- Dependent : 참조무결성을 위반하는 입력 액션을 취하지 않음
- No Action
트랜잭션의 특성 (ACID)
- 원자성(Atomicity) : 트랜잭션은 성공 또는 실패로 끝나야 한다.
- 일관성(Consistency) : 트랜잭션은 일관성 있는 상태로 변환한다.
- 독립성(Isolation) : 트랜잭션은 다른 트랜잭션에 영향을 미치지 않는다.
- 지속성(Durability) : 트랜잭션이 성공하면 그 결과는 영구적으로 반영된다.
단일행 NULL 관련 함수
NVL(a, b)
: a가 NULL이면 b를 반환 (Oracle)ISNULL(a, b)
: a가 NULL이면 b를 반환 (MS-SQL)NULLIF(a, b)
: a와 b가 같으면 NULL, 다르면 a를 반환COALESCE(a, b, c)
: 첫번째 NULL이 아닌 값을 반환
SELECT문의 실행 순서
FROM
->WHERE
->GROUP BY
->HAVING
->SELECT
->ORDER BY
뷰
- 정의만을 가지고 있으며, 실행시점에 재작성되어 수행한다
- 독립성 : 테이블 구조가 변경되어도 응용 프로그램은 변경하지 않아도 된다
- 편리성 : 복잡한 질의를 뷰로 생성하여 단순하게 작성할 수 있다, 자주 사용하는 질의를 뷰로 생성하여 사용할 수 있다
- 보안성 : 사용자에게 필요한 데이터만 뷰로 제공할 수 있다
집계 함수
ROLLUP
: 소그룹 간의 합계를 계산하는 함수 (첫번째 컬럼의 합계만 계산)CUBE
: 모든 소그룹 간의 합계를 계산하는 함수GROUPING SETS
: 특정 소그룹 간의 합계를 계산하는 함수
순위 함수
RANK
: 동일한 값이 있을 경우 동일한 순위를 부여, 이후 중간 순위를 건너뛰고 순위를 부여DENSE_RANK
: 동일한 값이 있을 경우 동일한 순위를 부여, 이후 중간 순위를 건너뛰지 않고 순차적으로 순위를 부여ROW_NUMBER
: 동일한 값이 있을 경우 고유한 순위를 부여
이전행, 다음행 함수
LAG
: 이전 행의 데이터를 가져옴LEAD
: 다음 행의 데이터를 가져옴
윈도우 함수
OVER
: 윈도우 함수를 사용할 때 사용하는 절PARTITION BY
: 윈도우 함수를 적용할 때 그룹을 나누는 기준ORDER BY
: 윈도우 함수를 적용할 때 정렬 기준
PL/SQL의 특징
- PL/SQL은 Block 구조로 되어있어 각 기능별로 모듈화가 가능하다.
- 변수, 상수 등을 선언하여 SQL 문장 간 값을 교환한다.
- IF, LOOP 등의 절차형 언어를 사용하여 절차적인 프로그램이 가능하도록 한다.
- DBMS 정의 에러나 사용자 정의 에러를 정의하여 사용할 수 있다.
- PL/SQL은 Oracle에 내장되어 있으므로 Oracle과 PL/SQL을 지원하는 어떤 서버로도 프로그램을 옮길 수 있다.
- PL/SQL은 응용 프로그램의 성능을 향상시킨다.
- PL/SQL은 여러 SQL 문장을 Block으로 묶고 한 번에 Block 전부를 서버로 보내기 때문에 통신량을 줄일 수 있다.
프로시저와 트리거의 차이
프로시저 | 트리거 |
---|---|
CREATE PROCEDURE | CREATE TRIGGER |
EXECUTE 명령어로 실행 | 트리거 조건에 의해 자동 실행 |
COMMIT, ROLLBACK 가능 | COMMIT, ROLLBACK 불가능 |