정규화(Normalization)

 

  • 정규화란 논리적 설계 단계에서 발생할 수 있는 종속으로 인한 이상(Anomaly) 현상의 문제점을 해결하기 위해, 속성들 간의 종속 관계를 분석하여 여러 개의 릴레이션으로 분해하는 과정을 말한다.
  • 정규화된 결과를 정규형이라고 하며, 정규형의 종류로는 제1정규형, 제2정규형, 제3정규형, BCNF, 제4정규형, 제5정규형 등이 있다.
  • 정규형의 종류
  • 제1정규형(1NF : First Normal Form) : 한 릴레이션을 구성하는 모든 도메인이 원자 값(Atomic Value)만으로 구성되도록 하는 정규형을 말한다.

  1. 위 사진을 보면 한 회원이 하나 이상의 수강과목을 수강하고 있으므로 원자값을 가지도록 테이블을 분해해야 한다.
  2. 따라서 회원번호를 기본키로 가진 회원(회원번호, 성명, 연락처) 테이블과 수강과목을 기본키로 가진 강좌(수강과목, 수강료) 테이블로 분해한다.
  3. 아래 사진처럼 분해한 후 수강과목을 외래키로 하여 참조 관계로 사용하면 된다.

  • 제2정규형(2NF : Second Normal Form) : 제1정규형을 만족하면서 릴레이션을 구성하는 모든 속성이 기본키에 완전 함수 종속이 되도록 분해하는 과정을 말한다. 즉, 부분 함수 종속을 제거하고 모든 속성이 기본키에 완전 함수 종속이 되도록 한다.

  1. 위 사진처럼 고객번호와 제품번호가 합성키(복합키)로써 주문량을 알 수 있는 기본키가 된다.
  2. 그러나 제품명은 제품번호만 알아도 알 수 있으므로 이는 부분 함수 종속관계에 있다.
  3. 부분 함수 종속 관계를 제거하는 정규화 과정이 2NF이다.
  4. 아래 사진처럼 주문량(고객번호, 제품번호, 주문량) 테이블과 제품(제품번호, 제품명) 테이블로 나눈다.

  • 제3정규형(3NF : Third Normal Form) : 제2정규형을 만족하면서 이행적 함수 종속 관계를 분해하여 비이행적 함수 종속이 되도록 하는 과정을 말한다.

  1. 위 사진을 보면 학번을 알면 전공을 알 수 있고 전공을 알면 담당교수를 알 수 있으며 학번을 알면 담당교수를 알 수 있다.
  2. 이행적 함수 종속은 학번 -> 전공, 전공 -> 담당교수 일 때, 학번 -> 담당교수인 경우를 말한다.
  3. 이행적 함수 종속을 없애는 과정이 제3정규화이다.

  • 보이스-코드 정규형(BCNF : Boyce-Codd Normal Form) : 제3정규형을 만족하면서, 릴레이션에서 모든 결정자가 후보키가 되도록 하는 과정을 말한다.

  1. 후보키 : 각 튜플을 유일하게 식별할 수 있는 속성이나 속성의 집합(튜플마다의 고유한 속성)
  2. 2NF와 다른 점 : 2NF에서는 복합키 안의 일부만 알아도 알 수 있는 속성이 있었지만 BCNF에서는 완전히 복합키로만 식별할 수 있게 되어있다.(부분 함수 종속 관계가 없다.)
  3. 위 사진에서 회원번호와 수강과목은 복합키로써 기본키의 역할을 한다. (회원번호, 수강과목) -> 강사
  4. 한 회원이 여러 수강과목을 신청할 수 있으므로 회원번호 하나만으로는 후보키가 될 수 없다.
  5. 또한 같은 수강과목에도 강사가 여러 명이 존재하므로 수강과목 하나만으로 후보키가 될 수 없다.
  6. 강사는 후보키가 아님에도 불구하고 수강과목을 결정하는 결정자이다. 강사 -> 수강과목
  7. 이와 같이 결정자가 후보키가 아닌 테이블을 분해하는 과정이 BCNF이다.
  8. 아래 사진처럼 회원등록(회원번호, 강사) 테이블과 강사(강사, 수강과목) 테이블로 분해한다.

  • 제4정규형(4NF : Fourth Normal Form) : 다치 종속(MVD : Multivalued Dependency) 관계가 성립되는 경우 분해하는 정규형을 말한다.

  1. 다치 종속 관계란 위의 사진처럼 모든 함수 종속 관계는 성립되지 않지만 한 속성이 다른 속성의 집합을 알 수 있는 경우를 의미한다. (과목명을 알면 강사들을 알 수 있고 마찬가지로 과목명을 알면 교재들을 알 수 있다.
  2. 표시 방법 : 과목명 ->-> 강사, 강사 ->-> 교재
  3. 다치 종속 관계의 테이블을 분해시키는 것이 제4정규형(4NF)이다.
  4. 아래 사진처럼 강사(과목명, 강사) 테이블과 교재(과목명, 교재) 테이블로 나눈다.

  • 제5정규형(5NF : Fifth Normal Form) : 조인 종속(Join Dependency)이 후보키를 통해서만 성립이 되도록 하는 정규형을 말한다.
  1. 조인 종속(Join Dependency) : 원래의 릴레이션을 분해한 뒤 자연 조인한 결과가 원래의 릴레이션과 같은 결과가 나오는 종속성

 

뷰(VIEW)와 시스템 카탈로그

 

  • 뷰(VIEW) : 하나 이상의 테이블로부터 유도되어 만들어진 가상 테이블로 처리 과정 중의 중간 내용이나 기본 테이블 중 일부 내용을 검색해 보여주거나 별도로 관리하고자 하는 경우 사용하는 임시 테이블이다. 실제 물리적으로 기억공간을 차지하지 않으며, 논리적 독립성을 제공하고, 데이터 접근제어로 보안성을 향상시킨다.
  • 뷰의 생성
  1. CREATE VIEW 뷰 이름(속성1, 속성2, ...) - 뷰의 이름과 뷰를 구성할 속성들의 이름 기입
  2. AS SELECT 기본 테이블의 속성1, 속성2, ... - 기본 테이블에서 가져올 속성들을 기입, 뷰의 속성 이름을 기입하지 않은 경우 동일한 이름으로 대체
  3. FORM 기본 테이블 이름
  4. WHERE 조건
  5. WITH CHECK OPTION; - 조건에 맞는 데이터가 없을 시 만들어지지 않음(실행 x)
  • 뷰의 삭제
  1. DROP VIEW 뷰 이름 [RESTRICT | CASCADE];
  2. RESTRICT : 삭제할 요소가 사용(참조) 중이면 삭제가 취소됨
  3. CASCADE : 삭제할 요소가 사용(참조) 중이더라도 삭제가 이루어지며, 연관된 모든 요소들도 일괄적으로 삭제됨(뷰만)
  • 뷰의 특징
  1. 뷰가 정의된 기본 테이블이 제거되면, 뷰도 자동적으로 제거된다.
  2. 뷰에 대한 검색(SELECT)은 일반 테이블과 거의 동일하다.
  3. 뷰에 대한 삽입, 삭제, 갱신은 제약이 따른다. 뷰의 속성에 기본 테이블의 기본키가 포함되어 있지 않으면 삽입, 삭제, 갱신이 되지 않는다.
  4. 보안 측면에서 뷰를 활용할 수 있다.
  5. 뷰는 ALTER 문을 이용하여 변경할 수 없다.
  6. 한 번 정의된 뷰는 변경할 수 없으며, 삭제한 후 다시 생성해야 한다.
  • 시스템 카탈로그(System Catalog)
  • 데이터베이스에 저장되어 있는 테이블, 인덱스, 뷰, 제약조건, 사용자 등 개체들에 대한 정보와 정보들 간의 관계를 저장한 것으로 그 자체가 하나의 작은 데이터베이스이다.
  • 시스템 카탈로그는 데이터 사전(Data Dictionary)이라고도 한다.
  • 시스템 카탈로그에 저장된 테이터를 메타 데이터(Meta Data)라고 한다.
  • 시스템 카탈로그는 일반 테이블과 같이 시스템 테이블로 구성된다.
  • 일반 사용자도 시스템 카탈로그의 내용을 검색할 수 있지만, 시스템 카탈로그의 내용을 삽입, 삭제, 갱신 등은 불가능하다.
  • 시스템 카탈로그 갱신은 사용자가 SQL문을 실행하면 시스템에 의해 자동적으로 이루어진다.

OLAP(Online Analytical Processing)연산 기법

 

  • Roll-up : 분석 대상 항목에 대해 한 차원의 계층 구조를 단계적으로 구체적인 내용으로 구분하여 구분된 세부 데이터로부터 요약된 형태의 데이터로 접근하는 기능이다.
  • Drill-down : 분석할 대상 항목에 대해 한 차원의 계층 구조를 단계적으로 요약된 형태의 데이터로부터 구체적인 세부 데이터로 접근하는 기능이다.
  • Pivoting : 보고서의 행과 열, 페이지 차원들을 서로 바꾸어 볼 수 있는 기능이다.
  • Slicing : 다차원 데이터의 항목들을 더욱 다양한 각도에서 조회하고 자유롭게 비교하는 기능이다.

트랜잭션의 성질

 

  • 원자성(Atomicity) : 트랜잭션의 가장 기본적인 특성으로 트랜잭션 내의 연산은 반드시 모두 수행되어야 하며 그렇지 않으면 모두 수행되지 않아야 함
  • 일관성(Consistency) : 트랜잭션이 정상적으로 완료된 후 언제나 일관성 있는 데이터베이스 상태가 되어야 하며, 결과에 모순이 생겨서는 안 된다. 무수한 트랜잭션의 실행에도 그 일관성이 유지되어야 한다.
  • 격리성(Isolation) : 독립성이라고도 하며, 하나의 트랜잭션이 수행 중에는 다른 트랜잭션이 접근할 수 없고 각각의 트랜잭션은 독립적이어야 함
  • 영속성(Durability) : 지속성이라고도 하며, 트랜잭션이 성공적으로 완료된 후 결과는 지속적으로 유지되어야 한다. 이는 논리적 장애 또는 오류 등으로 데이터의 내용이 변하지 않아야 한다.(완료된 후)

Trigger(트리거)

 

  • 이 개념은 참조 관계에 있는 두 테이블(상위 테이블과 하위 테이블)에서 하나의 테이블을 삽입, 삭제, 갱신 등의 연산으로 테이블의 내용이 바뀌었을 때 데이터의 일관성과 무결성 유지를 위해 이와 연관된 테이블도 연쇄적으로 변경이 이루어질 수 있도록 하는 것을 의미한다.

이상(Anomaly)과 함수적 종속

 

  • 이상현상은 데이터베이스의 논리적 설계 시 하나의 릴레이션에 많은 속성들이 존재하여, 데이터의 중복과 종속으로 인해 발생되는 문제점을 말한다.
  • 삭제 이상(Deletion Anomaly) : 테이블에서 하나의 자료를 삭제하고자 하는 경우 그 자료가 포함된 튜플이 삭제됨으로 인해 원하지 않는 자료까지 함께 삭제가 이루어져 발생하는 문제점을 말한다. -> 튜플 단위로 삭제하는데, 한 튜플을 삭제한 결과 다른 필요한 자료들까지 함께 삭제되어 그 후부터 그 자료를 찾을 수 없게 되는 경우
  • 삽입 이상(Insertion Anomaly) : 삽입하는 과정에서 원하지 않는 자료가 삽입된다든지 또는 삽입하는데 자료가 부족해 삽입이 되지 않아 발생하는 문제점을 삽입 이상이라고 한다. -> 역시 튜플단위로 삽입하는데, 기본키 없이 다른 자료들을 삽입하려는 경우 기본키를 알아낼 때까지 그 자료들을 저장할 수 없게 됨
  • 갱신 이상(Update Anomaly) : 관계 데이터베이스의 자료를 갱신하는 과정에서 정확하지 않거나 일부의 튜플만 갱신됨으로 인해 정보가 모호해지거나 일관성이 없어져 정확한 정보의 파악이 안 되는 현상을 말한다. -> 어떠한 자료를 변경하고자 할 때, 연관된 모든 튜플을 변경하는 것이 아닌 일부만을 바꾸게 된다면 변경된 자료를 정확하게 알 수 없게 됨

함수적 종속(Functional Dependency)

 

  • 종속이란 어떤 릴레이션에서 속성 A, B가 있을 때, 임의 튜플에서 A의 값이 B의 값을 함수적으로 결정한다면, 즉 A의 값을 알면 B의 값을 알 수 있거나 A의 값에 따라 B의 값이 달라진다면, B는 A에 함수적으로 종속되었다고 하고, 기호로는 'A -> B'로 표기한다.
  • 결정자 : B가 A에 종속되어 A값을 알면 B의 값을 알 수 있을 때, A를 '결정자'라고 하고 B를 '종속자'라고 한다.
  • 종속의 종류
  1. 완전 함수 종속(Full Functional Dependency) : 릴레이션에서 한 속성이 오직 기본키에만 종속이 되는 경우를 말한다. - ex) 학번을 알면 이름, 수강과목, 학년을 알 수 있음(학번 -> 이름, 학번 -> 수강과목, 학번 -> 학년)
  2. 부분 함수 종속(Partial Functional Dependency) : 릴레이션에서 한 속성이 기본키가 2개 이상 합성 키(복합 키)로 구성된 경우 이 중 일부 속성에 종속이 되는 경우를 말한다. - ex) 고객번호와 제품번호가 조합된 기본키가 있어야 주문량을 알 수 있고 제품번호만 알면 제품명을 알 수 있음({고객번호, 제품번호} -> 주문량, 제품번호 -> 제품명)
  3. 이행적 함수 종속(Transitive Functional Dependency) : 릴레이션에서 A, B, C 세 가지 속성 간의 종속이 A -> B, B -> C 일 때, A -> C 가 성립이 되는 경우를 말한다. - ex) 제품번호를 알면 제품명을 알 수 있고 제품명을 알면 단가를 알 수 있다. 제품번호를 알면 단가를 알 수 있다.(제품번호 -> 제품명, 제품명 -> 단가, 제품번호 -> 단가) 

회복 기법과 병행 제어

 

  • 회복이란 여러 가지 요인으로 인해 손상된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구시키는 작업을 말한다.
  • 즉시 갱신 기법 : 트랜잭션이 실행(활동) 상태에서 변경되는 내용을 바로 데이터베이스에 적용하는 기법, 변경되는 모든 내용은 로그(Log)에 기록하여 장애 발생 시 로그(Log)의 내용을 토대로 회복시킴
  • 지연 갱신 기법 : 트랜잭션이 수행되어 부분 완료가 될 때까지 데이터베이스에 적용하지 않고 지연시킨 후 부분 완료가 되면 로그(Log)의 내용을 토대로 데이터베이스에 적용하는 기법
  • 검사 시점 기법 : 트랜잭션이 실행되는 중간에 검사 시점(Check Point)을 지정하여 검사 시점까지 수행 후 완료된 내용을 데이터베이스에 적용하는 기법
  • 그림자 페이징(shadow paging) 기법 : 로그(Log)를 사용하지 않고, 데이터베이스를 동일한 크기의 단위인 페이지로 나누어 각 페이지마다 복사하여 그림자 페이지를 보관하는 기법
  • REDO(재수행) : 트랜잭션이 수행되어 COMMIT이 되면 변경된 내용을 데이터베이스에 반영하게 되는데, 이때 로그(Log)의 내용을 토대로 재수행하며 변경된 내용을 데이터베이스에 반영하게 되는 과정
  • UNDO(취소) : 트랜잭션이 수행되는 도중 오류가 발생하거나 비정상적으로 종료되는 경우 트랜잭션이 시작된 시점으로 되돌아가는 과정
  • 데이터베이스 수행 시 발생되는 장애의 유형
  • 트랜잭션 장애 : 하나의 트랜잭션이 수행되는 과정에서 발생하는 오류
  • 시스템 장애 : 트랜잭션 장애들로 인해 시스템 상의 문제가 발생하여 트랜잭션이 수행되지 못하는 경우
  • 미디어 장애 : 하드웨어적으로 하드디스크 등이 손상되는 경우
  • 병행 제어(Concurrency Control) : 동시에 여러 개의 트랜잭션이 실행되는 경우를 병행 실행이라고 하는데 이와 같은 병행 실행 시 트랜잭션 간의 격리성을 유지하여 트랜잭션 수행에 문제가 발생되지 않도록 제어하는 것
  • 로킹(Locking) : 트랜잭션의 병행 실행 시 하나의 트랜잭션이 사용하는 데이터베이스 내의 데이터를 다른 트랜잭션이 접근하지 못하게 하는 것 - ex) LOCK -> 트랜잭션 실행 -> 트랜잭션 완료 -> UNLOCK
  1. 공유 락(Shared Lock) : 사용 중인 데이터를 동시에 쓸 수는 없지만 읽을 수는 있음
  2. 베타 락(Exclusive Lock) : 사용중인 데이터를 읽기도 쓰기도 못함
  • 2단계 로킹 기법(Two-Phase Locking Protocol) : 로킹의 대표적인 기법으로 'LOCK' 설정 대상 데이터가 여러 개인 경우 모든 데이터에 'LOCK'을 설정하는 단계와 완료 후 'LOCK' 을 해제하는 단계의 2단계로 구성된 기법이다.
  1. 확장 단계(Growing Phase) : 트랜잭션 수행에 필요한 데이터들에 대해 'LOCK' 을 설정
  2. 축소 단계(Shrinking Phase) : 트랜잭션 수행에 사용되었던 데이터들이 더 이상 필요 없어 설정된 'LOCK' 을 해제
  3. 교착상태(Deadlock)가 발생할 수 있는 단점이 있다.
  4. ex) LOCk(T1) -> LOCK(T2) -> 실행 -> 완료 -> UNLOCK(T1) -> UNLOCK(T2) 
  • 타임스탬프(Time Stamp) : 각 트랜잭션이 데이터에 접근할 시간을 미리 지정하여 기억시킨 뒤 그 시간의 순서에 따라 순서대로 데이터에 접근하여 수행하는 방법

데이터베이스 관리 시스템(DBMS, DataBase Management System)

 

  • DBMS의 구조

 

SQL 제어어(DCL)

 

  • COMMIT : 데이터베이스 내의 연산이 성공적으로 종료되어 연산에 의한 수정 내용을 지속적으로 유지하기 위한 명령어를 말한다.
  • ROLLBACK : 데이터베이스 내의 연산이 비정상적으로 종료되거나 정상적으로 수행이 되었다 하더라도 수행되기 이전 상태로 되돌리기 위해 연산 내용을 취소할 때 사용하는 명령어를 말한다.
  • GRANT : 관리자가 사용자에게 데이터베이스에 대한 권한을 부여하기 위한 명령어이다. 
  • GRANT 권한내용 ON 테이블이름 TO 사용자 WITH GRANT OPTION(사용자가 관리자로부터 부여받은 권한을 다른 사용자에게 부여할 수 있는 권한 부여권까지 부여하고자 할 때 사용하는 옵션)
  • ex) GRANT UPDATE ON 학생 TO OTH WITH GRANT OPTION;
  • REVOKE : 관리자가 사용자에게 부여했던 권한을 취소하기 위해 사용되는 명령어이다.
  • REVOKE 권한내용 ON 테이블이름 FROM 사용자 CASCADE(이 사용자가 자신의 권한을 다른 사용자에게도 부여했을 경우 그 권한들도 연쇄적으로 취소한다.)
  • ex) REVOKE UPDATE ON 학생 FROM OTH CASCADE;

SQL 정의어(DDL)

 

  • 정의어는 관계 데이터베이스에서 사용될 테이블, 스키마, 도메인, 인덱스, 뷰 등을 정의(생성)하거나 수정, 제거하기 위해 사용되는 언어이다.
  • CREATE : 테이블, 스키마, 도메인, 인덱스, 뷰 등을 정의(생성)하기 위해 사용하는 명령문이다.
  • CREATE TABLE 테이블이름 - 지정한 '테이블이름' 으로 테이블 생성
  • ({속성이름 데이터 타입 [NOT NULL] [DEFALT값],} - 테이블을 구성하는 속성 수만큼 속성 이름과 데이터 타입 기입, NULL이 없도록 지정할 수 있으며 기본 값을 정할 수 있음
  • [PRIMARY KEY(속성이름),] - 기본키 속성을 지정할 때 사용(개체 무결성)
  • [UNIQUE(속성이름),] - 대체키 지정 시 사용, 속성의 모든 값이 고유한 값을 가지도록 지정할 때 사용(중복 없이)
  • [FOREIGN KEY(속성이름) REFERENCES 참조테이블(속성이름)] - 외래키를 지정할 때 사용, 속성이름을 정하고 원래 테이블 이름과 그 테이블에서의 속성이름을 써준다.(참조 무결성)
  • [ON DELETE CASCADE | SET NULL | SET DEFAULT | NO ACTION]  - 참조 테이블의 튜플이 삭제되면 기본 테이블은 어떤 형태로 대처할지 선택 -> 연쇄 삭제, NULL 값, 디폴트 값, 아무 조치도 안 함 
  • [ON UPDATE CASCADE | SET NULL | SET DEFAULT | NO ACTION], - 참조 테이블의 튜플이 변경되면 기본 테이블은 어떤 형태로 대처할지 선택 -> 연쇄 변경, NULL 값, 디폴트 값, 아무 조치도 안 함
  • [CONSTRAINT 제약조건이름] [CHECK(속성이름=범위 값)]); - 테이블을 생성할 때 특정 속성에 대해 속성 값의 범위를 지정할 때 사용(도메인 무결성)
  • 스키마 정의 : 시스템 관리자가 일반 사용자에게 스키마에 대한 권한을 주기 위한 스키마를 만들기 위해 사용 - CREATE SCHEMA 스키마이름 AUTHORIZATION 사용자;
  • 도메인 정의 - 한 속성 값의 범위를 지정하기 위한 도메인은 CREATE DOMAIN 문에 의해 생성됨
  • CREATE DOMAIN 도메인이름 데이터타입
  • [DEFAULTE 기본값]
  • [CONSTRAINT 제약조건이름 CHECK(VALUE IN 범위 값)]; -> 한 번 만든 제약조건을 다시 사용하는 경우 이름만 써도 됨
  • 인덱스 정의 : 데이터베이스 내의 자료를 보다 효율적으로 검색하기 위해 인덱스를 만들고, 시스템에 의해 자동 관리되며, CREATE INDEX문에 의해 생성된다.
  • CREATE [UNIQE] INDEX 인덱스이름 - 중복을 허용하지 않도록(UNIQE) 인덱스 생성(생략된 경우 : 중복 허용)
  • ON 테이블이름(속성이름[ASC | DESC]) - 지정된 테이블의 속성으로 인덱스를 만듦(오름차순, 내림차순)
  • [CLUSTER]; - 인접된 튜플들을 물리적인 그룹으로 묶어 저장 시 사용
  • ex)CREATE INDEX UNIQE stud_idx ON 학생(학과 ASC);
  • ALTER : 기존에 만들어진 테이블에 새로운 속성(항목)을 추가하거나 기존 속성을 변경, 삭제할 때 사용하는 명령어이다.
  • ALTER TABLE 테이블이름 ADD | ALTER | DROP 속성이름 데이터타입 [DEFAULT] | [SET DEFAULT] | [CASCADE | RESTRICT];
  • DROP : 기존에 사용되던 테이블, 스키마, 도메인, 인덱스, 뷰, 제약조건 등을 제거할 때 사용하는 명령으로 삭제 시 전체가 삭제된다.
  • DROP TABLE | SCHEMA | DOMAIN | INDEX | VIEW | CONSTRAINT 이름 [CASCADE | RESTRICT];
  • RESTRICT와 CASCADE의 차이점 : 삭제할 요소가 사용(참조) 중이면 삭제가 이루어지지 않는다.(RESTRICT) / 삭제할 요소가 사용(참조) 중이더라도 삭제가 이루어지며, 삭제할 테이블을 참조 중인 다른 테이블도 연쇄적으로 같이 삭제된다.(CASCADE)

스키마(SCHEMA)

 

  • 스키마는 데이터베이스의 전체적인 구조와 제약조건에 대한 명세를 기술, 정의한 것을 말하며, 스킴(Scheme)이라고도 한다.
  • 내부 스키마(Internal Schema) : 물리적 저장 장치 관점(기계 관점)에서 본 데이터베이스의 물리적 구조를 말한다.
  • 개념 스키마(Conceptual Schema) : 논리적 관점(사용자 관점)에서 본 전체적인 데이터 구조이다.
  • 외부 스키마(External Schema) : 전체 데이터 중 사용자가 사용하는 한 부분에서 본 논리적 구조를 말하며, 서브 스키마라고도 한다.
  • 순서 : 사용자 <-> 외부 스키마 <-> 개념 스키마 <-> 내부 스키마 <-> 저장 DB

관계 대수(Relational Algebra)

 

  • 일반 집합 연산자
  • 합집합() : 두 릴레이션의 튜플의 합집합을 구하는 연산 
  • 교집합 : 두 릴레이션의 튜플의 교집합을 구하는 연산
  • 차집합 : 두 릴레이션의 튜플의 차집합을 구하는 연산
  • 교차곱 : 두 릴레이션의 튜플들의 교차곱(순서쌍)을 구하는 연산
  • ∪, ∩, -, x
  • 순수 관계 연산자
  • Select : 조건에 맞는 튜플을 구하는 수평적 연산
  • Project : 속성 리스트로 주어진 속성만 구하는 수직적 연산
  • Join : 공통 속성을 기준으로 두 릴레이션을 합하여 새로운 릴레이션을 만드는 연산
  • Division : 두 릴레이션 A, B에 대해 B릴레이션의 모든 조건을 만족하는 튜플들을 릴레이션 A에서 분리해 내어 프로젝션하는 연산 
  • σ(조건)(R) , R = 릴레이션 이름
  • π(속성리스트)(R)
  • 테이블1 ⋈ <조인 조건> 테이블2
  1. 동일 조인(Equi Join) : 가장 기본이 되는 조인이며, 두 테이블의 모든 속성을 합한 하나의 테이블 구조로 만들어진다.(중복이 되는 속성도 모두 표현한다.)
  2. 자연 조인(Natural Join) : 동일 조인한 결과에서 중복되는 속성을 제거하여 표현한다.
  3. 외부 조인(Outer Join) : 조인 시 두 테이블 간에 관련 없는, 즉 조건에 맞지 않는 튜플도 결과 테이블에 포함시켜 조인하는 방법으로 해당 자료가 없는 부분은 NULL 값이 된다. -> 조건에 맞지 않더라도 튜플을 넣고 빈 공간은 NULL로 채운다.
  4. 세타 조인(Theta Join) : 세타 연산자 중 '=' 외의 연산자를 이용해 조건 수식을 표현하여 조인하는 연산이다. 중복되는 속성도 포함된다.
  • 테이블1(테이블1속성 ÷ 테이블2속성)테이블2 

 

+ Recent posts