데이터 모델링은 현실 세계를 데이터베이스로 표현하기 위해서 추상화한다.고객의 업무 프로세스를 이해한 후, 데이터 모델링 표기법을 사용해서 모델링을 한다.데이터 모델링은 고객이 쉽게 이해할 수 있도록 복잡하지 않게 모델링해야 한다.데이터 모델링은 추상화해야 한다.추상화는
3층 스키마
엔터티는 업무에서 관리해야 하는 데이터 집합을 의미하며, 저장되고 관리되어야 하는 데이터이다.엔터티는 개념, 사건, 장소 등의 명사이다.엔터티는 고객의 비즈니스 프로세스에서 관리되어야 하는 정보를 추출해야 한다.예를 통하여 업무에서 관리해야 하는 엔터티를 도출위 시나리
관계는 엔터티 간의 관련성을 의미하며 존재 관계와 행위 관계로 분류된다.존재 관계는 두 개의 엔터티가 존재 여부의 관계가 있는 것이고, 행위 관계는 두 개의 엔터티가 어떤 행위에 의한 관련성이 있는 것이다.존재 관계는 엔터티 간의 상태를 의미한다.예를 들어 고객이 은행
식별 관계와 비식별 관계 식별 관계 고객과 계좌 엔터티에서 고객은 독립적으로 존재할 수 있는 강한 개체(Strong Entity)이다. 강한 개체는 어떤 다른 엔터티에게 의존하지 않고 독립적으로 존재한다. 강한 개체는 다른 엔터티와 관계를 가질 때 다른 엔터티에게 기본
속성이라는 것은 업무에서 필요한 정보인 엔터티가 가지는 항목이다.속성은 더 이상 분리되지 않는 단위로, 업무에 필요한 데이터를 저장할 수 있다.인스턴스의 구성요소이고 의미적으로 더 이상 분해되지 않는다.속성은 업무에서 관리되는 정보이다.속성은 일반적으로 하나의 값만 가
정규화는 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 방법이며 데이터를 분해하는 과정이다.정규화는 데이터 중복을 제거하고 데이터 모델의 독립성을 확보하기 위한 방법이다.정규화는 테이블을 분해해서 데이터 중복을 제거하기 때문에 데이터 모델의 유
정규화는 함수적 종속성을 근거로 한다.함수적 종속성이란 X -> Y 이면, Y는 X에 함수적으로 종속된다고 말한다.함수적 종속성은 X가 변화하면 Y도 변화하는지 확인한다.예를 들어 회원ID가 변화하면 이름도 변경된다.이런 경우는 회원ID가 기본키가 되고, 회원ID가 이
정규화는 데이터 조회(SELECT) 시에 조인(Join)을 유발하기 때문에 CPU와 메모리를 많이 사용한다.(직원)(부서)위와 같이 두 개의 테이블로 이루어진 경우 "사원번호, 부서코드, 부서명, 이름, 전화번호, 주소"를 조회하려면 조인을 해야 한다.위의 테이블은 직
데이터베이스의 성능 향상을 위하여, 데이터 중복을 허용하고 조인을 줄이는 데이터베이스 성능 향상 방법이다.반정규화는 조회(SELECT) 속도를 향상하지만, 데이터 모델의 유연성은 낮아진다.정규화에 충실하면 종속성, 활용성은 향상되지만 수행 속도가 느려지는 경우다량의 범
중앙 집중형 데이터베이스 데이터베이스 시스템 구축 시에 한 대의 물리적 시스템에 데이터베이스 관리 시스템을 설치하고 여러 명의 사용자가 데이터베이스 관리 시스템을 설치하고 여러 명의 사용자가 데이터베이스 관리 시스템에 접속하여 데이터베이스를 사용하는 구조분산 데이터베이
관계형 데이터베이스는 릴레이션(Relation)과 릴레이션의 조인 연산을 통해서 합집합, 교집합, 차집합 등을 만들 수 있다.현재 많이 사용되는 데이터베이스로 Oracle, MS-SQL, MySQL 등의 다양한 데이터베이스 관리 시스템이 있다.데이터베이스는 데이터를 어
SQL은 관계형 데이터베이스에 대해서 데이터의 구조를 정의, 데이터 조각, 데이터 제어 등을 할 수 있는 절차형 + 비절차형 언어이다.관계형 데이터베이스는 데이터베이스를 연결하고 SQL문을 사용하여 데이터베이스를 누구나 쉽게 사용할 수 있도록 한다.SQL은 ANSI/I
데이터베이스를 사용하기 위해서는 테이블을 먼저 생성해야 한다.테이블 생성은 Create Table 문을 사용하고 테이블 변경은 Alter Table 문을 사용한다.마지막으로 생성된 테이블을 삭제하고 싶을 때는 Drop Table 문을 사용하면 된다.테이블을 생성하는 방
INSERT 문은 테이블에 데이터를 입력하는 DML 문이다.EMP 테이블에 데이터를 삽입하려면 테이블명, 컬럼명, 데이터 순으로 입력하면 된다.(1) 입력을 원하는 테이블명을 지정한다.(2) 입력을 원하는 컬럼명을 지정한다.(3) EMP 테이블에 입력되는 데이터이다.(
WHERE 문이 사용할 수 있는 연산자는 비교 연산자, 부정 비교 연산자, 논리 연산자, SQL 연산자, 부정 SQL 연산자가 있다.|비교 연산자|설명|\|-\|-\||=|같은 것을 조회한다.||<|작은 것을 조회한다.||<=|작거나 같은 것을 조회한다.||
GROUP BY 는 테이블에서 소규모 행을 그룹화하여 합계, 평균, 최댓값, 최솟값 등을 계산할 수 있다.HAVING 구에 조건문을 사용한다.Grouping 된 결과에 대해 조건문을 사용한다.ORDER BY 를 사용해서 정렬을 할 수 있다.(1)(4)위의 GROUP B
SQL 의 실행 순서는 결과로 조회된 데이터를 이해하는데 아주 중요한 요소이다.SELECT 문의 실행 순서는 FROM, WHERE, GROUP BY, HAVING, SELECT, ORDER BY 순으로 실행된다.
형변환 이라는 것은 두 개의 데이터의 데이터 타입(형)이 일치하도록 변환하는 것이다.예를 들어 숫자와 문자열의 비교, 문자열과 날짜형의 비교와 같이 데이터 타입이 불일치할 때 발생한다.형 변환은 명시적(Explicit) 형변환과 암시적(Implicit) 형변환이 있다.
모든 데이터베이스는 SQL에서 사용할 수 있는 내장형 함수를 가지고 있다.내장형 함수는 데이터베이스 관리 시스템 벤더별로 약간의 차이가 있지만, 거의 비슷한 방법으로 사용이 가능하다.내장형 함수로는 앞서 배운 형변환 함수, 문자열 및 숫자형 함수, 날짜형 함수가 있다.
DECODE 문으로 IF 문을 구현할 수 있다.즉, 특정 조건이 참이면 A, 거짓이면 B로 응답한다.위의 예는 EMPNO를 1000과 비교해서 같으면 'TRUE'를 출력하고 다르면 'FALSE'를 출력한다.CASE 문은 IF ~ THEN ~ END 의 프로그래밍 언어처
ROWNUM은 ORACLE 데이터베이스의 SELECT 문 결과에 대해서 논리적인 일련번호를 부여한다.ROWNUM은 조회되는 행 수를 제한할 때 많이 사용된다.ROWNUM은 화면에 데이터를 출력할 때 부여되는 논리적 순번이다.만약 ROWNUM을 사용해서 페이지 단위 출력
WITH 구문은 서브쿼리(SubQuery)를 사용해서 임시 테이블이나 뷰처럼 사용할 수 있는 구문이다.서브쿼리 블록에 별칭을 지정할 수 있다.옵티마이저는 SQL을 인라인 뷰나 임시 테이블로 판단한다.GRANT 문은 데이터베이스 사용자에게 권한을 부여한다.데이터베이스 사
COMMIT 은 INSERT, UPDATE, DELETE 문으로 변경한 데이터를 데이터베이스에 반영한다.변경 이전 데이터는 잃어버린다.즉, A 값을 B로 변경하고 COMMIT을 하면 A 값은 잃어버리고 B 값을 반영한다.다른 모든 데이터베이스 사용자는 변경된 데이터를
조인은 여러 개의 릴레이션을 사용해서 새로운 릴레이션을 만드는 과정조인의 가장 기본은 교집합을 만드는 것이다.두 개의 테이블 간에 일치하는 것을 조인한다.EMP 테이블DEPT 테이블위의 예를 보면 EMP 테이블의 부서코드 와 DEPT 테이블의 부서코드가 같은 것을 사용
계층형 조회는 Oracle DB에서 지원하는 것으로 계층형으로 데이터를 조회할 수 있다.예를 들어 부장에서 차장, 차장에서 과장, 과장에서 대리, 대리에서 사원 순으로 트리 형태의 구조를 위에서 아래로 탐색하면서 조회하는 것이다.물론 역방향도 조회가 가능하다.CONNE
Subquery 는 SELECT 문 내에 다시 SELECT 문을 사용하는 SQL 문이다.Subquery 의 형태는 FROM 구에 SELECT 문을 사용하는 인라인 뷰(Inline View)와 SELECT 문에 Subquery 를 사용하는 스칼라 서브쿼리(Scala Su
ROLLUP은 GROUP BY의 컬럼에 대해서 Subtotal 을 만들어 준다.ROLLUP을 할 때 GROUP BY 구에 컬럼이 두 개 이상 오면 순서에 따라서 결과가 달라진다.위의 예시는 DEPTNO에 대해 GROUP BY로 급여합계를 계산하고 부서별 전체합계를 추가