1. 데이터베이스 개요
Structured data
- 미리 정의된 예상 형식을 사용하는 데이터
- 제한된 수의데이터 포맷 사용 가능
- 데이터를 검색하고 찾기 쉬움
- 분석이 쉬움
Unstructured data
- 정의가 없이 모든 모양과 크기로 제공되는 데이터
- 매우 다양한 데이터 포맷을 사용 가능
- 특정 데이터 검색이 매우 어려움
- 분석이 매우 어려움
2. 관계형 데이터베이스
데이터베이스 관리 시스템(DBMS)
- 데이터의 방대한 집합체를 유지, 관리하고 이용하는데 도움을 주도록 설계된 소프트웨어
- 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- 방대한 데이터에 대한 수천명의 동시 접속을 캡슐화하여 처리

데이터베이스 관리 시스템의 기능
- 데이터 정의 기능
- 데이터 조작 기능
- 데이터 제어 기능
DBMS에서 데이터 명세 및 저장
- DBMS는 저장될 데이터를 데이터 모델 형식으로 정의

데이터 모델
- 데이터 또는 정보를 설명하기 위한 표기법
- 데이터의 구조
- 데이터에 대한 작업
- 데이터에 대한 제약 조건
- 주요 데이터 모델
- 관계 데이터 모델
- 반정형 데이터 모델
- 기타 데이터 모델
- 네트워크 데이터 모델
- 계층형 데이터 모델
- 객체 지향 데이터 모델
데이터 독립성
- DBMS의 데이터는 3개의 추상화로 표현됨

- 각 추상화 단계 별로 응용 프로그램의 데이터 구성 및 저장 방식으로부터 격리
- 논리적 데이터 독립성
- 데이터의 논리적인 구조, 저장 방식/공간의 변화로부터 보호
- 물리적 데이터 독립성
- 디스크 파일 내부에서 데이터가 실제로 어떻게 배치되어 있는지 등의 정보를 감춤
데이터베이스 질의
- DBMS는 일반적으로 질의(Query)를 만들수 있는 질의어를 제공
- 데이터 조작어(DML)
- 데이터 정의어(DDL)
- 데이터 제어어(DCL)
동시 접근 및 복구
- 데이터베이스에는 수 많은 사용자가 동일한 데이터에 동시 접근함
- 각 사용자의 요구사항을 상호 독립적으로 수행
- DBMS는 다른 사용자가 동일한 데이터에 접근하고 있다는 것을 사용자 관점에서 무시해도 되도록 동작
- 시스템의 장애 순간에도 일관성을 유지할 수 있도록 동작
- 장애 발생 순간에 동작에 참여중이던 데이터에 대한 일관성 유지
- 시스템이 재시동된 후 모든 데이터를 일관성 있는 상태로 유지해야 함
트랜잭션
- 분해가 불가능한 프로그램의 실행단위
- ACID
- Atomicity (원자성)
관련 작업이 전부 처리되거나 아예 처리되지 않아야 함
- Consistency(일관성)
트랜잭션 이전과 이후에 데이터베이스의 상태는 이전과 같이 유효해야 함
- Isolation(격리성)
모든 트랜잭션은 다른 트랜잭션들로부터 독립되어 동작해야 함
- Durability(지속성)
트랜잭션이 성공적으로 수행되었다면 완료의 효과는 지속되어야 함
- 원자성과 지속성을 위해 데이터베이스 로그(Log)와 로그 우선 기록(Write Log Ahead)을 사용
- 격리성을 위해 잠금 규약(Locking Protocol)을 사용
- 일관성을 위해 제약 조건(Constraint)을 사용
구조

장점
- 데이터 독립성
- 효율적인 데이터 접근
- 데이터 무결성과 보안성
- 데이터 관리
- 동시성 제어 및 장애 복구
- 응용 프로그램 개발 시간 감소
3. 릴레이션
1. 릴레이션 스키마
- 관계 모델에서 릴레이션 스키마는 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 의미
- 개체(Entity) 와 개체의 특성을 나타내는 속성(Attribute) , 개체 간의 관계(Relation), 이들의 제약 조건(Constraint) 을 기술한 것
- 릴레이션 스키마 명세
- 릴레이션 이름
- 필드(Field) 또는 열(Column) , 또는 속성(Attribute) 의 이름
- 각 속성의 도메인(Domain) 이름
2. 릴레이션 인스턴스
- 레코드(Record) 라고도 불리는 투플(Tuple) 의 집합
- 투플(Tuple)`
- 릴레이션 스키마에서 정의된 각 속성(필드) 로 정의되며, 하나의 데이터 묶음을 나타냄
- 릴레이션 인스턴스에서는 각 투플을 하나의 행(row) 으로 구성
- 릴레이션 인스턴스의 투플 수: 카디널리티(Cardinality)
- 릴레이션 인스턴스의 속성(필드) 수: 차수(Degree 또는 Arity)
- 릴레이션 인스턴스의 투플 순서는 중요하지 않음
3. 도메인
- 하나의 속성이 가질 수 있는 동일한 유형의 원자값들의 집합
- 릴레이션 스키마는 릴레이션 인스턴스의 각 필드의 도메인을 명세(도메인 제약조건)
- 프로그래밍 언어 관점에서 필드의 데이터 타입을 의미
4. 무결성 제약 조건
1. 개체 무결성
- 한 개체(투플)는 다른 개체들과 명확히 구분되어야 함
- 모든 릴레이션에 속한 필드들의 최소 부분집합이 각 투플에 대해 고유 식별자가 되어야 함
- 키 제약조건(Key Constraint)으로 개체 무결성을 유지
- 릴레이션에 속한 필드들의 최소 부분 집합이 각 투플에 고유한 식별자가 되어야 함
- 키 제약조건에서 투플을 식별하는 부분집합을 키(Key)라고 함
- 키(Key)
- 적법한 인스턴스의 서로 다른 두 투플은 한 키에 속하는 모든 필드 전체에 대해 동일한 값을 가질 수 없음
- 키를 구성하는 필드 집합의 어떠한 부분집합도 투플에 대해 유일한 식별자가 될 수 없음
- 수퍼 키(Super Key)
유일성을 만족하는, 필드들의 부분 집합
- 후보 키(Candidate Key)
유일성과 최소성을 만족하는 수퍼키 집합의 부분 집합
- 기본 키(Primary Key)
특정 투플을 구별하기 위해 후보 키에서 선택된 고유한 식별자
2. 참조 무결성
- 한 릴레이션에 저장된 정보와 다른 릴레이션에 저장된 정보가 연결되는 경우가 대부분
- 참조 관계에 있는 두 릴레이션의 데이터는 항상 일관된 값으로 유지되어야 함
- 한 릴레이션의 데이터가 수정될 경우 참조 관계에 있는 데이터 역시 수정되어야 함
- 한 릴레이션의 데이터가 삭제될 경우 참조 관계에 있는 데이터 역시 삭제되어야 함
- 외래 키 제약조건(Foreign Key Constraint)으로 참조 무결성을 유지
- 한 릴레이션의 필드가 다른 릴레이션의 키를 참조
- 참조하는 릴레이션의 데이터 변경에 따른 무결성을 유지
- 외래 키(Foreign Key)
- 한 릴레이션의 키 중에서 다른 릴레이션의 투플을 유일하게 식별할 수 있는 키
- 한 릴레이션의 투플에서 다른 릴레이션의 투플을 참조하기 위해 사용
3. 도메인 무결성
- 릴레이션의 각 속성은 필드에는 일관된 데이터가 저장되어야 함
- 속성에 지정된 형식이 아닌 다른 형식의 데이터는 포함될 수 없어야 함
- 도메인 제약조건(Domain Constaint)으로 도메인 무결성을 유지
- 릴레이션의 각 속성에 포함되는 데이터의 형식을 제약
- 각 속성의 값은 반드시 원자값이어야 함
- 속성에 지정된 도메인의 범위 내에 해당하는 값이어야 함
- 속성의 기본 값과 null 포함 가능 여부등에 대한 제약조건
4. 무결성 제약조건 집행
- 제약조건은 릴레이션 스키마에 정의되고 릴레이션의 수정될 때 집행됨
- 도메인 무결성과 개체 무결성은 직관적으로 즉시 집행됨
- 제약조건을 위배하는 삽입, 삭제, 갱신 명령은 즉시 거부됨
- 참조 무결성 집행 단계
- 참조하는 릴레이션에 없는 값에 대한 삽입이 시도되는 경우
- 명령이 거부됨
- 참조 릴레이션의 데이터가 삭제되는 경우
- 외래 키가 존재하는 릴레이션의 참조 데이터를 모두 삭제
- 참조 릴레이션의 데이터를 삭제할 수 없도록 명령을 거부
- 외래 키가 존재하는 릴레이션의 해당 데이터를 모두 다른 값으로 갱신
- 참조하는 릴레이션의 데이터가 변경되는 경우
- 세 가지 방법 중 하나를 선택
'SW Academy' 카테고리의 다른 글
| [SW Academy] 01.10 (0) | 2024.01.10 |
|---|---|
| [SW Academy] 01.09 (0) | 2024.01.09 |
| [SW Academy] 01.05 (0) | 2024.01.06 |
| [SW Academy] 01.04 (0) | 2024.01.06 |
| [SW Academy] 01.02 (0) | 2024.01.06 |