본문 바로가기

카테고리 없음

1,2 장

데이터베이스
'논리적으로 연관된 데이터'를 모아 '구조적으로 통합'해 놓은 것

통합된 데이터, 저장된 데이터, 운영 데이터, 공용 데이터

특징
실시간 접근성, 계속적인 변화, 동시 공유, 내용에 따른 참조

DBMS는 데이터베이스 시스템의 부분집합이다.

데이터베이스 시스템의 구성
1.데이터베이스 관리 시스템(DBMS)
2.데이터베이스
3.데이터 모델 : 데이터가 저장되는 기법
계층, 네트워크, 관계(릴레이션 사용), 객체

파일 시스템 VS 데이터베이스 시스템
별도의 SW 설치가 필요없지만 파일을 다루어야한다.
별도의 SW가 필요해 컴퓨터 자원을 쓰지만 편리하다.

DBMS 장점
데이터를 공유하므로 중복 가능성 적음, 데이터의 일관성 유지,
데이터 구조가 변경되어도 프로그램 수정 필요 없어 독립성 유지

SQL : 데이터베이스 시스템에 사용하는 전용언어
DDL(데이터 정의어) : CREATE, ALTER, DROP
DML(데이터 조작어) :
INSERT INTO, UPDATE SET, DELETE FROM
DCL (데이터 제어어)

스키마 : 데이터베이스의 조직이나 구조

3단계 데이터베이스 구조
외부 스키마(서브 스키마) : 개념 스키마 중 사용자에게
필요한 부분 스키마
개념 스키마 : 전체 데이터베이스의 정의
내부 스키마 : 물리적 저장장치에 데이터베이스가 실제로
저장되는 방법

데이터 독립성 : 하위 스키마를 변경하여도 상위 스키마가
영향을 받지 않음
유지 보수 비용 적음, 데이터 복잡도 적음, 데이터 중복성 적음

1. 논리적 데이터 독립성 : 외부 단계와 개념 단계 사이의 독립성
개념 스키마가 변경 되어도 외부 스키마에는 영향을 안미침

2. 물리적 데이터 독립성
내부 스키마가 변경되어도 개념 스키마에 영향을 안미침

릴레이션 : 행과 열로 구성된 테이블
릴레이션 스키마와 릴레이션 인스턴스로 구성됨

릴레이션 스키마 (내포) : 관계 데이터베이스의 릴레이션이
어떻게 구성되는지 대한 기본적인 구조
릴레이션의 데이터 구조 (열)
EX) 도서 (도서번호, 도서이름, 출판사, 가격)

인스턴스(외연) : 정의된 스키마에 따라 테이블에 저장되는 데이터의 집합

두 개의 속성 집합 A, B에 기반한 릴레이션은
두 집합의 카티전 프로덕트의 부분집합이다.

속성 : 릴레이션 스키마의 열
도메인 : 하나의 속성이 가질 수 있는 값의 집합, INTEGER, DATE
차수 : 속성의 개수
튜플 : 릴레이션의 행
카디날리티 : 튜플의 수

속성은 단일 값, 서로 다른 이름, 순서 노상관
한 속성의 값은 모두 같은 도메인 값을 가짐

릴레이션 내에서 중복된 투플은 허용하지 않음
튜플의 순서는 상관없음

릴레이션과 테이블의 차이
릴레이션은 수학의 집합이론에 기초하므로
속성이나 인스턴스의 중복을 허용하지 않음.
릴레이션은 테이블 간의 논리적인 연결 및
데이터베이스의 구조를 설명하는 개념

키 : 릴레이션에서 특정 튜플을 식별할 떄 사용하는 속성

후보키 : 튜플을 유일하게 식별할 수 있는 속성의 최소 집합

기본키 (PRIMARY KEY) : 여러 후보키 중 하나를 선정하여
대표로 삼는 키

1. 릴레이션 내에서 튜플을 식별할 수 있는 고유한 값
2. NULL 값은 허용하지 않음
3. 키 값에 변동이 일어나면 안됨

대리키 : 마땅한 기본키 없을 떄 가상의 속성을 만들어 기본키로 삼음
대체키 : 기본키로 선정되지 않은 후보키

외래키 : 다른 릴레이션의 기본키를 참조하는 속성
릴레이션 간의 관계를 표현함

외래키가 성립하기 위해서는 참조하고 참조되는 양쪽 릴레이션의
도메인이 서로 같아야 함
외래키는 항상 데이터의 일관성을 유지

외래키는 자기 자신의 기본키를 참조할 수도 있다.
외래키는 NULL 값과 중복 값 등이 허용

무결성 제약조건
1. 도메인 무결성 제약조건
릴레이션 내의 투플들이 각 속성의 도메인
지정된 값만 가짐
즉, 지정된 자료형만 사용가능 하다.

2.개체 무결성 제약조건 (기본키 제약)
기본키는 NULL 값을 가지면 안되고 오직 하나의 값만 존재해야한다

3. 참조 무결성 제약조건 (외래키 제약)
릴레이션 간의 참조 관계를 선언
자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 '도메인이 동일'
자식 릴레이션 값이 변경되면 부모 릴레이션의 제약을 받음

부모 릴레이션에서 튜플이 삭제될 때
1. RESTRICTED 그냥 거부
2. CASCADE 부모 자식 둘 다 삭제
3. DEFAULT 자식 릴레이션 값을 미리 설정한 값으로 변경
NO ACTION
4. NULL 자식 릴레이션의 튜플을 NULL로 설정
SET NULL

릴레이션 R은 카티전 프로덕트의 부분집합으로 정의
카티전 프로덕트의 기초 집합이 가질 수 있는 값의 범위를
도메인이라고 함.

순수 관계 연산 : 셀렉션, 프로젝션, 조인, 디비전
일반 집합 연산 : 합집합, 차집합, 교집합, 카티전 프로덕트

셀렉션 : 릴레이션의 튜플을 추출
프로젝션 : 릴레이션의 속성을 추출

같은 속성 순서와 도메인 가져야 함
합집합, 교집합, 차집합

카티전 프로덕트 : 속성, 도메인 동일 필요 없음
수평적 연산
차수 : 두 릴레이션 차수의 합
카디날리티 : 두 릴레이션 카디날리티의 곱

조인!!!
카티전 프로덕트 연산을 하고, 셀렉션 연산

조인에 참여하는 속성이 서로 동일한 도메인으로 구성되어야 함.

세타조인 : 두 릴레이션 간의 속성 값을 비교하여
조건에 맞는 튜플 반환
동등조인 : 속성 값이 같은 튜플만을 반환 o.custid = c.custid

즉, 세타조인의 조건 중 '=' 이 동등조인

세타조인은 속성이 두 번 나오게 된다.

자연조인 : 동등조인에서 중복 속성 제거 -> N을 쓴다
두 릴레이션의 차수의 합 - 1

외부조인 : 조인에 실패한 값들을
NULL 값으로 채워서 반환
왼쪽 외부조인, 오른쪽 외부조인, 완전 외부조인
기호는 조인 기호를 구부리면 된다.

세미조인 : 두 릴레이션을 조인한 후
닫힌 쪽 릴레이션의 튜플만 반환
딱히 쓸모 없지 않나?

디비전 ÷
속성 A와 B로 이루어진 릴레이션 R과
속성 B로 이루어진 릴레이션 S의 디비전 연산은
릴레이션 S의 속성 B 값과 서로 동일하게 대응하는
릴레이션 R의 속성 A의 투플들을 반환