- 데이터베이스
- 정의 : 공동으로 사용될 데이터를 중복을 배제하여 통합하고 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영데이터
- 통합된 데이터
- 저장된 데이터
- 운영 데이터
- 공용 데이터
- DBMS : 데이터베이스를 관리해주는 소프트웨어
- 스키마 : 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
- 종류
- 외부 스키마 : 각 개인의 입장에서 필요로하는 데이터 베이스의 논리적 구조
- 개념 스키마 : 데이터베이스의 전체적인 논리적 구조
- 내부 스키마 : 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 데이터베이스 설계
- 순서
- 요구 조건 분석
- 개념적 설계 : 현실세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 논리적 설계 : 특정 DBMS가 지원하는 논리적 자료 구조로 현실 자료를 변환시키는 과정
- 물리적 설계 : 논리적 구조로 표현된 데이터를 물리적 구조의 데이터로 변환시키는 과정
- 구현
- 데이터 모델
- 현실 세계의 정보들을 컴퓨터에 표현하기 위해서 체계적으로 표현한 개념적 모형
- 표시할 요소
- 구성 요소
- 개체 : 데이터 베이스에 표현하려는 것
- 속성 : 데이터베이스를 구성하는 가장 작은 논리적 단위
- 관계 : 개체와 개체 사이의 논리적인 연결
- E-R 모델
- E-R 다이어그램
- 사각형 : 개체 타입
- 마름모 : 관계 타입
- 타원 : 속성
- 이중 타원 : 다중값 속성
- 밑줄 타원 : 기본키 속성
- 복수 타원 : 복합 속성
- 선, 링크 : 개체 타입과 속성을 연결
- 관계형 데이터베이스
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 데이터베이스
- 릴레이션 : 데이터들을 표의 형태로 표현한 것
- 튜플 : 릴레이션 구성하는 각각의 행, 튜플 수 는 카디널리티
- 속성 : 데이터 베이스를 구성하는 가장 작은 논리적 단위, 속성 수는 디그리
- 도메인 : 하나의 속성이 취할 수 있는 같은 타입의 원자의 집합
- 제약 조건
- 키 : 탐색 혹은 정렬할 때 기준이 되는 속성
- 후보키 : 속성들 중에서 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합
- 기본키 : 후보키 중에서 특별히 선정된 주키
- 대체키 : 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키
- 슈퍼키 : 속성들의 집합으로 구성된 키, 최소성 만족 X
- 외래키 : 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 무결성 : 데이터베이스에 저장된 데이터 값과 현실세계의 실제값이 일치하는 정확성
- 종류
- 개체 무결성 : 기본키를 구성하는 어떤 속성도 Null이나 중복값을 가질 수 없다
- 참조 무결성 : 외래키 값은 Null이거나 참조 릴레이션의 기본키 값과 동일
- 도메인 무결성 : 주어진 속성 값이 정의된 도메인에 속한 값이어야 한다
- 사용자 정의 무결성 : 속성값들이 정의된 제약조건에 만족
- NULL 무결성 : 릴레이션의 특정 속성 값이 NULL이 될 수 없도록 하는 규정
- 고유 무결성 : 릴레이션의 특정 속성에 대해 각 튜플이 갖는 속성값들이 서로 달라야 한다
- 키 무결성 : 하나의 릴레이션에는 적어도 하나의 키가 존재
- 관계 무결성 : 릴레이션에 어느 한 튜플의 삽입 가능여부 또는 한 릴레이션과 다른 릴레이션의 튜플들 사이의 관계에 대한 적절성 여부를 지정한 규정
- 관계대수 & 관계해석
- 관계대수 : 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적 언어
- 순수 관계 연산자
- Select (시그마): 선택 조건을 만족하는 튜플의 부분집합을 구해 새로운 릴레이션을 만듦
- Project (파이): 릴레이션에서 속성값만을 추출하여 새로운 릴레이션을 만드는 연산
- Join (세모두개): 공통 속성을 중심으로 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만듦
- Division (나누기) : 교집합이 있는 두 릴레이션 에서 한 릴레이션에서 겹치는 속성을 제외한 속성만을 구하는 연산
- 일반 집합 연산자
- 합집합 : 튜플의 합집합
- 교집합 : 튜플의 교집합
- 차집합 : 튜플의 차집합
- 교차곱 : 두 릴레이션에 있는 튜플들의 순서쌍을 구하는 연산
- 관계해석 : 관계데이터의 연산을 표현하는 방법
- 이상 / 함수적 종속
- 이상 : 데이터의 중복이 발생하고 중복 때문에 테이블 조작 시 문제가 발생하는 현상
- 함수적 종속
- 정규화
- 테이블의 속성들이 상호종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해하는 과정
- 정규화 과정
- 제1정규형 : 테이블의 모든 속성 값이 원자값으로만 되어있는 정규형
- 제2정규형 : 기본키가 아닌 모든 속성이 기본키에 대하여 완전함수적 종속을 만족하는 정규형
- 제3정규형 : 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
- BCNF : 모든 결정자가 후보키인 정규형
- 제4정규형 : 다중값 종속이 존재할 경우 R의 모든 속성이 A에 함수적 종속관계를 만족하는 정규형
- 제5정규형 : 조인 종속이 R의 후보키를 통해서만 성립되는 정규형
- 도메인이 원자값 → 부분적 함수 종속 제거 → 이행적 함수 종속 제거 → 결정자이면서 후보키가 아닌 것 제거 → 다치 종속 제거 → 조인 종속성 이용
- 반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위배하는 행위
- 테이블 통합, 테이블 분할, 중복 테이블 추가, 중복 속성 추가
- 트랜잭션 분석/CRUD 분석
- 트랜잭션 : 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
- 특성
- 원자성 : 트랜잭션의 연산은 데이터베이스에 모두 반영되도록 완료되던지 전혀 반영되지 않도록 복구 되어야함
- 일관성 : 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성있는 데이터베이스 상태로 변환함
- 독립성 : 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없음
- 영속성 : 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야함
- CRUD 분석
- 프로세스와 테이블 간에 CRUD매트릭스를 만들어서 트랜잭션을 분석하는 것
- 인덱스 : 데이터 레코드를 빠르게 접근하기 위해 <키값, 포인터>쌍으로 구성되는 데이터구조
- 뷰 : 하나 이상의 기본 테이블로부터 유도된 이름을 가지는 가상 테이블
- 클러스터 : 동일한 성격의 데이터를 동일한 데이터블록에 저장하는 물리적 저장 방법
- 파티션 : 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것
- 분산 데이터베이스 설계
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
- 목표
- 위치 투명성, 중복 투명성, 병행 투명성, 장애 투명성
- 데이터베이스 보안
- 접근통제
- 3요소
- 접근통제 정책
- 접근통제 메커니즘
- 접근통제 보안모델
- 기술
- 임의 접근 통제 : 사용자의 신원에 따라 접근 권한을 부여 (DAC)
- 강제 접근 통제 : 주체와 객체의 등급을 비교하여 접근 권한을 부여 (MAC)
- 역할기반 접근 통제 : 사용자의 역할에 따라 접근 권한을 부여 (RBAC)
- 스토리지 : 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- 자료 구조
- 정렬