관계형 데이터베이스
관계형 데이터베이스의 구조
관계형 데이터 베이스의 개요
개체나 관계를 릴레이션이라는 표로 표현한다.
장점 : 변환이 용이
단점 : 성능이 다소 떨어짐
관계형 데이터베이스의 Relation 구조
- 릴레이션은 릴레이션 스키마와 릴레이션 인스턴스로 이루어진다.
튜플
- 릴레이션을 구성하는 각각의 행을 의미한다.(행은 가로야)
- 속성의 모임으로 구성되어있다.
- 파일 구조에서 레코드와 같은 의미이다.(좋은 표현인거 같다.)
- 튜플의 수 = 카디널리티, 기수, 대응수
속성
- 데이터 베이스를 구성하는 가장 작은 논리적 단위이다.
- 파일 구조상의 데이터 항목 또는 데이터 필드에 해당된다.
- 개체의 특성을 기술한다.
- 속성의 수 = degree, 차수
도메인
- 하나의 속성이 취할 수 있는 같은 타입의 원자값들의 집합
릴레이션의 특징
- 튜플은 중복이 안된다
- 튜플 사이에는 순서가 없다.
- 릴레이션은 실시간으로 바뀐다.
- 릴레이션 스키마를 구성하는 속성의 순서도 중요하지 않다.
- 속성은 유일하나 속성의 값은 중복 가능
관계형 데이터 베이스의 제약 조건
키(key)의 개념 및 종류
튜플을 구별할 수 있게 하는 속성 이다.
기본 키로 사용될 수 있는 속성
릴레이션 당 적어도 하나의 후보키가 존재
후보키의 필수적 속성
- 유일성 : 하나의 키 값으로 하나의 튜플 만을 유일하게 식별할 수 있어야한다.
- 최소성 : 모든 레코드들을 유일하게 식별하는 데 꼭 필요한 속성으로만 구성
기본키
- 후보키 중에서 선택한 주 키(primally key)이다.
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성
- null 값을 못 가짐
- 기본키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없다.
대체키
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키들을 말한다.
- 보조키라고도 한다.
슈퍼키
- 릴레이션 내에 속성들의 집합으로 구성된 키
- 유일성은 만족시키지만 최소성은 만족시키지 못함
외래키
- 외래키는 참조되는 릴레이션의 기본키와 대응되어 릴레이션 간에 참조관계를 표현하는데 중요한 도구이다.
- 외래키로 지정되면 참조 릴레이션의 기본키에 없는 값은 입력할 수 없다.
무결성
개체 무결성
- 릴레이션에서 기본키를 구성하는 속성은 NULL값이나 중복값을 가질 수 없다.
참조 무결성
- 외래키의 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일해야한다.
- 참조할 수 없는 외래키 값을 가질 수 없다.
관계 대수 및 관계해석
관계 대수의 개요
절차적 언어이다.
릴레이션을 처리하기 위해 연산자와 연산규칙을 제공하는 언어
피연산자와 결과 모두 릴레이션이다.
질의에 대한 해를 구하기 위해 수행해야할 연산의 순성를 명시
순수 관계 연산자 :Select, Project, Join, Division
일반 집합 연산자 : UNION, INTERSECTION, DIFFERENCE,CARTENSIAN PRODUCTION
순수 관계 연산자
Select
- 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만든다.
- 릴레이션의 행에 해당하는 튜플을 구하는거라 수평연산 이라고도 한다
- 연산자 기호는 시그마
Proejct
- 수직 연산
- 조건을 만족하는 어트리뷰트만 추출
- 연산자 기호는 파이
Join
- 공통 속성을 중심으로 두개의 릴레이션을 합치는 연산자
- 기호는 세모 두개 붙인거
Division
- 특이한 놈임
- 체감상 나누기와 중복 제거가 합쳐진 느낌
일반 집합 연산자
- 합병 조건 : 두 릴레이션 간에 속성의 수가 같고, 각각의 속성이 취할 수 있는 도메인의 범위가 같아야한다.
관계해석
- 관계 데이터 모델의 제안자인 코드가 predicate calculus에 기반을 두고 관계 데이터 베이스를 위해 제안함
- 종류 : 튜플 관계해석, 도메인 관계해석
- 비절차적 특성을 가지고 있다. –> 원하는 정보가 무엇인지만 파악하는것 (종류만 봐도 감 오잖아 튜플 도메인 순서가 없거든)
- 관계 대수로 표현한 식은 관계해석으로 표현할 수 있다..
- 질의어로 표현한다.
- 관계 데이터의 연산을 표현하는 방법, 원하는 정보를 정의할 때는 계산 수식 사용
정규화
정규화의 개요
- 종속성 이론을 이용하여 잘못 설계된 관계형 스키마를 더 작은 속성으로 쪼개어 바람직한 스키마로 만들어가는 과정
- 하나의 종속성이 하나의 릴레이션에 표현될 수 있도록 분해하는 과정
- 논리적 설계 단계에서 수행
정규화의 목적
- 데이터 구조의 안정성을 최대화
- 어떠한 릴레이션이라도 데이터베이스 내에서 표현 가능하게 만든다.
- 효과적인 검색 알고리즘
- 중복을 배제! 각종 Anomaly 예방 차원
- 데이터 삽입시 릴레이션을 재구성할 필요성을 줄임
Anomal(이상)dml rosua alc whdfb
- 삽입 이상
- 데이터 삽입시 원하지 않는 값들도 함께 삽입되는 현상
- 삭제 이상
- 한 튜플 을 삭제 할 때 원치 않는 값들도 같이 삭제되는 연쇄 삭제 현상 이 일어나는 현상
- 갱신 이상
- 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 모순 이 생기는 현상
정규화의 원칙
- 정보의 무손실 표현
- 분리의 원칙 : 하나의 독립된 관계썽은 하나의 독립된 릴레이션으로 분리시켜야 한다.
- 데이터의 중복성 감소
SQL의 개념
SQL의 개요
- sequel(IBM 연구소에서 개발)에서 유래한다.
- 국제 표준 데이터베이스 언어
- 관계 대수와 관계 해석을 기초로 한 혼합 데이터 언어
- 질의어지만 데이터 구조 정의, 데이터 조작, 데이터 제어 기능을 모두 갖추고 있음
SQL의 분류
DDL
- 논리적 데이터 구조와 물리적 데이터 구조의 사상을 정의
- 데이터 베이스 관리자나 데이터베이스 설계자가 사용한다.
명령어 | 기능 |
---|---|
CREATE | SCHEMA, DOMAIN,TABLE, VIEW, INDEX 정의 |
ALTER | TABLE에 대한 정의를 변경하는데 사용 |
DROP | SCHEMA DOMAIN TABLE VIEW INDEX 삭제 |
DML
데이터 베이스 사용자가 응용프로그램이나 질의어를 통하여 실질적으로 데이터 처리하는데 사용되는 언어
데이터 베이스 사용자와 데이터 베이스 관리 시스템 간의 인터페이스 제공
명령어 | 기능 |
---|---|
SELECT | 테이블에서 조건에 맞는 튜플을 검색 |
INSERT | 테이블에 새로운 튜플을 삽입한다. |
DELETE | 테이블에서 조건에 맞는 튜플을 삭제한다. |
UPDATE | 테이블에서 조건의 맞는 튜플의 내용을 변경한다. |
DCL
- 데이터의 보안 무결성 회복 병행 수행 제어 등을 정의하는데 사용되는 언어
- 데이터 베이스 관리자가 데이터 관리를 목적으로 사용한다
명령어 | 기능 |
---|---|
COMMIT | 명령에 의해 수행된 결과를 실제 물리적 디스크로 저장하고 데이터 베이스 조작 작업이 정상적으로 완료되엇음을 관리자에게 알려준다. |
ROLLBACK | 데이터 베이스 조작 작업이 비정상적으로 종료되었을 때 원래의 상태로 복구한다. |
GRANT | 데이터베이스 사용자에게 사용 권한을 부여한다. |
REVOKE | 데이터 베이스 사용자의 사용 권한을 취소한다. |
VIEW
- 사용자에게 접근이 허용된 자료를 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 부터 유도된 이름을 가지는 가상의 테이블
- 물리적 저장장치에 존재하지 않지만, 사용자에게는 있는 것으로 간주된다.
- 데이터 보정작업, 처리과정 시험 등 임시적인 작업을 위한 용도로 활용된다.
- VIEW는 JOIN문의 사용 최소화로 사용상의 편의성을 제공한다
VIEW의 특징
- 논리적 독십성 제공
- 관리가 용이하고 명령문이 간단함
- VIEW에 나타나지 않는 데이터를 효율적인 기법으로 사용할 수 있다.
- 기본 테이블의 기본키를 포함한 속성 집합으로 뷰를 구성해야만 삽입, 삭제, 갱신, 연산이 가능하다
- 일단 정의된 뷰는 다른 뷰 정의에 기초가 될 수 있다.
- VIEW를 삭제하면 그 VIEW를 기초로 정의된 다른 뷰들도 삭제된다.
VIEW의 장단점
장점
- 논리적 데이터 독립성 제공
- 동시에 여러 사용자의 상이한 응용이나 요구를 지원
- 사용자의 데이터 관리를 간단하게 해준다.
- 접근 제어를 통한 자동 보안 이 제공된다.
단점
- 독립적인 인덱스를 가질 수 없다.
- ALTER VIEW문을 사용할 수 없다. –> 뷰의 정의를 변경할 수 없다.
- 뷰로 구성된 내용에 대한 삽입 삭제 갱신 연산에 제약이 따른다
VIEW 정의문
- SELECT문을 부질의로 사용하여 SELECT문의 결과로 VIEW를 생성한다.
- 부질의로서의 SELECT문에는 UION ORDER BY절을 사용 할 수 없다.
VIEW 삭제문
- ALTER를 사용 못하니까 DROP 후 다시 생성한다.
시스템 카탈로그
시스템 카탈로그의 의미
- 시스템 자체에 관련이 있는 다양한 객체에 관한 정보를 포함하는 시스템 데이터 베이스 이다.
- 시스템 카탈로그 내의 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 데이터 베이스이다.
- DDL의 결과로 데이터 베이스 구조 및 통계정보를 저장한다.
- 카탈로그들이 생성되면 자료 사전(DATA DICTIONARY)에 저장된다.
- 걍 META DATA라고도 함
카탈로그의 특징
카탈로그도 시스템 테이블로 구성되어 있어 일반사용자도 SQL로 내용을 볼 수 있다.
INSERT, DELETE UPDATE로 카탈로그를 갱신하는 것은 허용되지 않는다.
카탈로그는 DBMS가 자가 생성하고 유지한다.
분산 시스템 의 경우에는 모든 제어 정보도 가진다.
카탈로그 / 데이터 사전을 참조하기 위한 DBMS 내의 모듈 시스템
DDL Compiler
- DDL을 메타데이터를 갖는 테이블(카탈로그) 데이터 사전에 저장시킴
DML Compiler
- 응용 프로그램에 삽입된 DML 문을 주 언어로 표현한 프로시저 호출로 변환하여 질의 처리기와 상호 통신한다.
DATA Directory
- 데이터 사전에 수록된 데이터를 실제로 접근하는데 필요한 정보를 관리 유지하는 시스템
- 데이터 디렉터리는 시스템만 접근 할 수 있다.
질의 최적화기
- 사용자의 요구를 효율적인 형태로 변화하고 질의를 처리하는 좋은 전략을 모색
트랙잭션 처리기
- 복수 사용자 환경에서 평행으로 동시에 일어나는 트랜잭션 문제를 해결하여, 각각의 사용자가 데이터베이스 자원을 베타적으로 이용할 수 있도록 한다.
Comment