컨텐츠 내용을 수정할 수 있습니다
데이터베이스는 여러 사용자가 공용으로 사용할 목적으로 통합하여 저장한 운영 데이터의 집합이다.
통합된 데이터는 중복을 배제한 데이터라는 뜻이다.
저장된 데이터는 컴퓨터가 접근할 수 있는 저장매체에 보관된 데이터라는 뜻이다.
운영 데이터는 조직의 업무 수행에 반드시 필요한 데이터라는 뜻이다.
공용 데이터는 여러 사용자가 함께 사용하는 데이터라는 뜻이다.
파일 시스템은 응용 프로그램마다 파일을 따로 두므로 같은 자료가 여러 곳에 중복 저장된다.
중복된 자료 사이에 값이 어긋나는 불일치가 발생한다.
파일의 구조가 바뀌면 응용 프로그램도 고쳐야 하는 데이터 종속성이 생긴다.
정의 기능은 데이터의 형식과 구조, 제약조건을 명세하는 기능이다.
조작 기능은 데이터를 삽입, 삭제, 수정, 검색하는 기능이다.
제어 기능은 무결성 유지, 보안과 권한 관리, 동시성 제어, 회복을 담당하는 기능이다.
실시간 접근성은 사용자의 질의에 즉시 응답할 수 있다는 성질이다.
계속적인 변화는 삽입, 삭제, 수정을 통해 내용이 계속 달라진다는 성질이다.
동시 공용은 여러 사용자가 같은 자료를 동시에 이용할 수 있다는 성질이다.
내용에 의한 참조는 저장 위치가 아니라 자료의 내용으로 자료를 찾는다는 성질이다.
| 구분 | 내용 |
|---|---|
| 통합된 데이터 | 중복을 배제한 데이터 |
| 저장된 데이터 | 컴퓨터가 접근 가능한 매체에 보관된 데이터 |
| 운영 데이터 | 업무 수행에 반드시 필요한 데이터 |
| 공용 데이터 | 여러 사용자가 함께 사용하는 데이터 |
스키마는 데이터베이스의 구조와 제약조건에 관한 명세를 말한다.
미국국가표준협회(ANSI)의 ANSI/X3/SPARC 위원회가 1975년 제안한 3단계 구조에 따라 스키마를 외부, 개념, 내부로 나눈다.
외부 스키마는 개별 사용자나 응용 프로그램이 보는 관점의 구조로, 서브 스키마 또는 뷰라고도 한다.
개념 스키마는 조직 전체의 관점에서 데이터베이스 전체를 정의한 구조이며 데이터베이스에 하나만 존재한다.
내부 스키마는 데이터가 저장장치에 실제로 저장되는 방법을 정의한 구조이며 하나만 존재한다.
논리적 독립성은 개념 스키마가 바뀌어도 외부 스키마와 응용 프로그램이 영향을 받지 않는 성질이다.
물리적 독립성은 내부 스키마가 바뀌어도 개념 스키마가 영향을 받지 않는 성질이다.
메타데이터는 데이터를 설명하는 데이터로, 데이터의 의미와 형식, 관계를 기술한다.
데이터 사전은 데이터베이스에 저장된 데이터에 관한 정보를 모아 둔 것으로 시스템 카탈로그라고도 한다.
데이터 사전에는 테이블과 속성의 정의, 제약조건, 인덱스, 사용자 권한 등이 담긴다.
사용자는 시스템 카탈로그를 SELECT로 검색할 수 있을 뿐 INSERT, UPDATE, DELETE로 직접 갱신할 수 없다.
갱신은 데이터 정의어가 실행될 때 데이터베이스 관리시스템이 자동으로 수행한다.
| 스키마 | 관점 | 특징 |
|---|---|---|
| 외부 스키마 | 개별 사용자·응용 프로그램 | 서브 스키마 또는 뷰, 여러 개 존재 |
| 개념 스키마 | 조직 전체 | 데이터베이스에 하나만 존재 |
| 내부 스키마 | 저장장치 | 실제 저장 방법의 정의, 하나만 존재 |
릴레이션은 행과 열로 이루어진 이차원 표 형태의 자료 구조이며 테이블이라고도 한다.
속성은 릴레이션의 열에 해당하며 필드라고도 한다.
튜플은 릴레이션의 행에 해당하며 레코드라고도 한다.
도메인은 하나의 속성이 가질 수 있는 원자값들의 집합이다.
한 릴레이션 안에 같은 튜플이 두 번 나타나지 않는다.
튜플 사이에는 순서가 없다.
속성 사이에도 순서가 없다.
모든 속성값은 더 이상 나눌 수 없는 원자값이다. 이 성질이 제1정규형의 근거가 된다.
차수는 릴레이션이 가진 속성의 개수다.
카디널리티는 릴레이션이 가진 튜플의 개수다.
속성의 수는 잘 바뀌지 않지만 튜플의 수는 자료가 쌓이면서 계속 변한다.
| 용어 | 대응 | 의미 |
|---|---|---|
| 릴레이션 | 테이블 | 행과 열로 이루어진 이차원 표 |
| 속성 | 열, 필드 | 릴레이션의 항목 |
| 튜플 | 행, 레코드 | 릴레이션의 개별 자료 |
| 도메인 | 값의 범위 | 속성이 가질 수 있는 원자값들의 집합 |
| 차수 | 속성의 개수 | 열의 수 |
| 카디널리티 | 튜플의 개수 | 행의 수 |
슈퍼키는 튜플을 유일하게 식별할 수 있는 속성 또는 속성의 집합이다.
후보키는 슈퍼키 가운데 더 이상 줄일 수 없는 최소성을 갖춘 키다.
기본키는 후보키 가운데 대표로 선정한 키다.
대체키는 후보키 가운데 기본키로 선정되지 않은 나머지 키다.
외래키는 다른 릴레이션의 기본키를 참조하는 속성이며 널 값을 가질 수 있다.
개체 무결성은 기본키를 구성하는 속성이 널 값을 가질 수 없고 중복될 수 없다는 제약이다.
참조 무결성은 외래키의 값이 참조하는 릴레이션의 기본키 값과 일치하거나 널이어야 한다는 제약이다.
도메인 무결성은 속성의 값이 정해진 도메인에 속해야 한다는 제약이다.
| 키 | 정의 |
|---|---|
| 슈퍼키 | 튜플을 유일하게 식별하는 속성 또는 속성 집합 |
| 후보키 | 유일성과 최소성을 모두 갖춘 키 |
| 기본키 | 후보키 가운데 대표로 선정한 키 |
| 대체키 | 기본키로 선정되지 않은 나머지 후보키 |
| 외래키 | 다른 릴레이션의 기본키를 참조하는 속성 |
개념적 설계는 현실 세계의 요구사항을 개체와 관계로 표현하는 단계이며 개체-관계 다이어그램을 작성한다.
논리적 설계는 개념적 모형을 특정 데이터베이스 모형에 맞는 논리 구조로 변환하는 단계이며 정규화를 수행한다.
물리적 설계는 저장 구조, 인덱스, 접근 경로를 정하는 단계다.
개체-관계 다이어그램은 개체, 속성, 관계로 데이터 구조를 표현한 그림이다.
첸(Peter Chen)이 1976년 제시한 표기법에서 개체는 사각형, 속성은 타원, 관계는 마름모로 나타낸다.
실무에서 널리 쓰이는 까마귀발(Crow's Foot) 표기법에서는 속성을 사각형 안에 목록으로 적고 관계를 선과 까마귀발 기호로 나타낸다.
관계에는 일 대 일, 일 대 다, 다 대 다의 대응 관계가 표시된다.
| 단계 | 산출물과 활동 |
|---|---|
| 개념적 설계 | 개체와 관계의 도출, 개체-관계 다이어그램 작성 |
| 논리적 설계 | 논리 구조로의 변환, 정규화 수행 |
| 물리적 설계 | 저장 구조, 인덱스, 접근 경로의 결정 |
삽입 이상은 자료를 넣을 때 원하지 않는 값까지 함께 넣어야 하거나, 다른 자료가 없어 삽입 자체가 불가능한 문제다.
삭제 이상은 자료를 지울 때 지우지 말아야 할 값까지 함께 지워지는 문제다.
갱신 이상은 중복된 값 가운데 일부만 고쳐져 자료가 어긋나는 문제다.
이 세 가지는 릴레이션에 여러 개념이 뒤섞여 있을 때 발생한다.
속성 X의 값이 정해지면 속성 Y의 값이 하나로 정해질 때 Y는 X에 함수적으로 종속된다고 하고 X를 결정자, Y를 종속자라 한다.
부분 함수 종속은 복합키의 일부 속성만으로도 다른 속성이 결정되는 경우다.
완전 함수 종속은 복합키 전체가 있어야 다른 속성이 결정되는 경우다.
이행적 함수 종속은 X가 Y를 결정하고 Y가 Z를 결정할 때 X가 Z를 결정하게 되는 경우다.
제1정규형은 모든 속성의 값이 원자값이어야 한다는 조건을 만족하는 형태다.
제2정규형은 제1정규형을 만족하면서 부분 함수 종속을 제거하여 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속되는 형태다.
제3정규형은 제2정규형을 만족하면서 기본키가 아닌 모든 속성이 기본키에 이행적으로 함수 종속되지 않는 형태다.
보이스-코드 정규형은 제3정규형을 만족하면서 모든 결정자가 후보키인 형태이며 강한 제3정규형이라고도 한다.
제4정규형은 다치 종속을 제거한 형태다.
제5정규형은 조인 종속을 제거한 형태다.
정규화의 목적은 중복을 제거하여 이상현상을 없애고 자료의 일관성을 유지하는 것이다.
정규화를 진행하면 릴레이션의 수가 늘어나 조인이 많아지고 조회 성능이 떨어질 수 있다.
반정규화는 성능을 위해 의도적으로 중복을 허용하거나 릴레이션을 합치는 것이다.
| 단계 | 조건 |
|---|---|
| 제1정규형 | 모든 속성의 값이 원자값 |
| 제2정규형 | 부분 함수 종속 제거, 기본키에 완전 함수 종속 |
| 제3정규형 | 기본키가 아닌 속성이 기본키에 이행적으로 종속되지 않음 |
| 보이스-코드 정규형 | 모든 결정자가 후보키(강한 제3정규형) |
| 제4정규형 | 다치 종속 제거 |
| 제5정규형 | 조인 종속 제거 |
데이터 정의어는 데이터베이스의 구조를 정의하는 명령이다.
CREATE는 테이블·뷰·인덱스 등의 객체를 생성한다.
ALTER는 이미 만들어진 객체의 구조를 변경한다.
DROP은 객체를 구조까지 완전히 삭제한다.
TRUNCATE는 객체의 구조는 남기고 그 안의 모든 행을 삭제한다.
데이터 조작어는 저장된 자료를 다루는 명령이다.
SELECT는 자료를 검색하고, INSERT는 삽입하며, UPDATE는 수정하고, DELETE는 삭제한다.
DELETE는 행을 삭제하는 데이터 조작어이고, DROP은 객체 자체를 삭제하는 데이터 정의어다.
데이터 제어어는 사용자의 권한을 다루는 명령으로 GRANT와 REVOKE가 있다.
트랜잭션 제어어는 트랜잭션의 확정과 취소를 다루는 명령으로 COMMIT, ROLLBACK, SAVEPOINT가 있다.
COMMIT은 트랜잭션의 결과를 데이터베이스에 영구적으로 반영하는 명령이다.
ROLLBACK은 트랜잭션의 결과를 취소하고 이전 상태로 되돌리는 명령이다.
SAVEPOINT는 트랜잭션 안에 되돌아갈 지점을 지정하는 명령이다.
SQL을 세 계열로 나누는 전통적인 구분에서는 COMMIT, ROLLBACK, SAVEPOINT를 데이터 제어어에 함께 포함시키기도 한다.
GRANT는 사용자에게 특정 객체에 대한 권한을 부여하는 명령이다.
REVOKE는 부여한 권한을 회수하는 명령이다.
GRANT에 WITH GRANT OPTION을 붙이면 권한을 받은 사용자가 그 권한을 다시 다른 사용자에게 부여할 수 있다.
REVOKE의 CASCADE는 회수하려는 권한에 딸려 부여된 권한까지 함께 회수하는 방식이다.
REVOKE의 RESTRICT는 딸려 부여된 권한이 있으면 회수를 수행하지 않는 방식이다.
의무기록 데이터베이스에서 접근권한 관리는 이 두 명령으로 이루어진다.
| 계열 | 명령 | 기능 |
|---|---|---|
| DDL | CREATE, ALTER, DROP, TRUNCATE | 구조의 생성·변경·삭제 |
| DML | SELECT, INSERT, UPDATE, DELETE | 자료의 검색·삽입·수정·삭제 |
| DCL | GRANT, REVOKE | 권한의 부여·회수 |
| TCL | COMMIT, ROLLBACK, SAVEPOINT | 트랜잭션의 확정·취소 |
SELECT 문은 SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY의 순서로 작성한다.
실제 처리는 FROM, WHERE, GROUP BY, HAVING, SELECT, ORDER BY의 순서로 이루어진다.
SELECT 절에서 붙인 별칭을 WHERE 절에서 쓸 수 없고 ORDER BY 절에서는 쓸 수 있는 것은 이 실행 순서 때문이다.
WHERE는 개별 행을 걸러내는 조건이다.
GROUP BY는 지정한 속성의 값이 같은 행을 묶는다.
HAVING은 묶인 그룹을 걸러내는 조건이다.
ORDER BY는 결과를 정렬하며 오름차순은 ASC, 내림차순은 DESC로 지정한다. 생략하면 오름차순이다.
WHERE 절에는 집계 함수를 쓸 수 없다.
HAVING 절에는 집계 함수를 쓸 수 있다.
집계 함수의 값은 그룹으로 묶은 뒤에 산출되므로 그보다 앞서 처리되는 WHERE에서는 참조할 수 없다.
HAVING은 GROUP BY 없이도 쓸 수 있으며, 이때는 테이블 전체가 하나의 그룹이 된다.
COUNT는 행의 개수, SUM은 합계, AVG는 평균, MAX는 최댓값, MIN은 최솟값을 구한다.
COUNT(*)는 널 값을 포함한 전체 행의 개수를 센다.
COUNT(컬럼명)은 그 컬럼의 값이 널이 아닌 행의 개수를 센다.
SUM, AVG, MAX, MIN은 널 값을 제외하고 계산한다.
AVG는 널 값을 분모에서도 제외하므로 널이 0으로 계산되지 않는다.
집계 함수는 GROUP BY와 함께 쓰여 그룹별 값을 산출한다.
GROUP BY 없이 쓰면 테이블 전체를 하나의 그룹으로 보아 하나의 값을 산출한다.
조인은 두 개 이상의 테이블을 연결하여 조회하는 것이다.
내부 조인(INNER JOIN)은 양쪽 모두에 대응하는 값이 있는 행만 결과에 포함한다.
외부 조인(OUTER JOIN)은 대응하는 값이 없는 행도 결과에 포함하고, 짝이 없는 쪽의 속성은 널 값으로 채운다.
왼쪽 외부 조인(LEFT OUTER JOIN)은 왼쪽 테이블의 행을 모두 포함한다.
오른쪽 외부 조인(RIGHT OUTER JOIN)은 오른쪽 테이블의 행을 모두 포함한다.
완전 외부 조인(FULL OUTER JOIN)은 양쪽 테이블의 행을 모두 포함한다.
교차 조인(CROSS JOIN)은 조건 없이 두 테이블의 모든 행을 짝지어 N×M개의 행을 만드는 카티션 프로덕트(Cartesian product)다.
자체 조인(SELF JOIN)은 하나의 테이블을 자기 자신과 조인하는 것으로 별칭을 붙여 구분해야 한다.
| 절 | 기능 | 적용 시점 |
|---|---|---|
| FROM | 조회 대상 테이블을 지정 | 가장 먼저 |
| WHERE | 개별 행을 걸러냄 (집계 함수 사용 불가) | 그룹으로 묶기 전 |
| GROUP BY | 값이 같은 행을 묶음 | 행을 묶는 단계 |
| HAVING | 묶인 그룹을 걸러냄 (집계 함수 사용 가능) | 그룹으로 묶은 뒤 |
| SELECT | 출력할 속성을 지정 | HAVING 다음 |
| ORDER BY | 결과를 정렬 | 마지막 |
데이터웨어하우스는 의사결정을 지원하기 위해 여러 원천의 자료를 통합하여 축적한 데이터베이스다.
인몬(Bill Inmon)은 데이터웨어하우스를 주제 지향적(subject-oriented), 통합적(integrated), 시계열적(time-variant), 비휘발적(nonvolatile)인 자료의 집합으로 정의하였다.
주제 지향적이라는 것은 업무 처리 단위가 아니라 분석 주제를 중심으로 자료를 구성한다는 뜻이다.
통합적이라는 것은 서로 다른 원천의 자료를 일관된 형식으로 맞추어 담는다는 뜻이다.
시계열적이라는 것은 특정 시점의 자료를 시간에 따라 축적한다는 뜻이다.
비휘발적이라는 것은 적재와 조회만 이루어지고 이미 적재된 자료의 갱신·삭제는 일어나지 않는다는 뜻이다.
추출(Extract)은 원천 시스템에서 필요한 자료를 뽑아내는 단계다.
변환(Transform)은 뽑아낸 자료를 일관된 형식과 코드 체계로 맞추고 오류를 정제하는 단계다.
적재(Load)는 변환된 자료를 데이터웨어하우스에 저장하는 단계다.
데이터웨어하우스의 통합적 특성은 이 추출·변환·적재 과정을 통해 구현된다.
데이터마트는 특정 부서나 주제에 맞추어 데이터웨어하우스의 일부를 떼어 구성한 것이다.
온라인 분석처리(OLAP)는 다차원으로 구성된 자료를 여러 각도에서 조회하고 요약하는 방식이다.
데이터마이닝은 대량의 자료에서 규칙이나 패턴을 찾아내는 분석 기법이다.
롤업(Roll-up)은 요약 수준을 높여 상위 차원으로 집계하는 연산이다.
드릴다운(Drill-down)은 요약 수준을 낮추어 하위 차원의 상세 자료로 내려가는 연산이다.
슬라이싱(Slicing)은 하나의 차원을 고정하여 단면을 잘라 보는 연산이다.
다이싱(Dicing)은 두 개 이상의 차원에 조건을 걸어 부분 집합을 잘라 보는 연산이다.
피벗(Pivoting)은 분석의 축을 바꾸어 자료를 다른 방향에서 보는 연산이다.
| 특징 | 내용 |
|---|---|
| 주제 지향적 | 분석 주제를 중심으로 자료를 구성 |
| 통합적 | 서로 다른 원천의 자료를 일관된 형식으로 통합 |
| 시계열적 | 시점별 자료를 시간에 따라 축적 |
| 비휘발적 | 적재와 조회만 이루어지고 갱신·삭제는 일어나지 않음 |
다음 이론을 계속 학습하려면 로그인하세요.
로그인하고 계속 학습필기노트, 하이라이터, 메모는 잘 쓰고 있어?
내보내줘운영진이 검토할게요!
마이페이지에서 차단한 회원을 관리할 수 있어요.