관계 데이터 모델
데이터의 논리적 구조가 릴레이션, 즉 테이블 형태의 평면 파일로 표현되는 데이터 모델
즉, 테이블 형식을 이용하여 데이터를 정의하고 설명한 모델
관계 데이터 릴레이션의 구조
구조 | 설명 |
속성 ( Attribute) | 릴레이션의 각 열 데이터를 구성하는 가장 작은 논리적인 단위 개체의 특성을 기술 속성의 수 = Degree = 차수 |
튜플 ( Tuple ) | 릴레이션의 행 속성들의 모임으로 구성 튜플의 수 = Cardinality = 기수 |
도메인 ( Domain ) | 하나의 속성이 가질 수 있는 값의 범위 성별은 남, 여를 가질 수 있고, 학년은 1~4를 가질 수 있다. 속성 값에 도메인을 정해두면, 정해진 값 외에 다른 값이 삽입될 수 없으므로 무결성이 유지 |
차수 ( Degree ) | 하나의 릴레이션에서 속성의 전체 개수 |
카디널리티 ( Cardinality ) | 하나의 릴레이션에서 튜플의 전체 개수 |
관계데이터 언어 ( 관계대수, 관계해석 )
관계대수
원하는 데이터를 얻기 위해 데이터를 어떻게 찾는지에 대한 처리 과정을 명시하는 절차적인 언어
질의에 대한 해를 구하기 위해 수행해야 할 연산의 순서를 명시
순수 관계 연산자
1) SELECT
- 릴레이션에서 주어진 조건을 만족하는 튜플을 선택하는 연산자
- 기호 : σ ( 시그마 )
- 표기법 : σ ( 조건 )( R )
- 예시 : σ( 성적 > 90 )(학생)
2) PROJECT
- 주어진 릴레이션에서 속성 리스트에 제시된 속성 값만을 추출하는 연산자
- 기호 : π ( 파이 )
- 표기법 : π ( 리스트 )( R )
- 예시 : π 학번, 성적 (학생) / π 학번, 성적 ( σ( 성적 > 90 )(학생) )
3) JOIN
- 두 개의 릴레이션으로부터 연관된 튜플들을 결합하는 연산자
- 기호 : ⨝ ( 보타이 )
- 표기법 : R ⨝ ( 조건 ) S
- 예시 : (학생) ⨝ 학번 = 학번 ( 수강과목 )
4) DIVISION
- 릴레이션 S의 모든 튜플과 관련이 있는 릴레이션 R의 튜플들을 반환
- 기호 : ÷ ( 나누기 )
- 표기법 : R ÷ S
일반 집합 연산자
1) 합집합 ( Union )
- 두 릴레이션에 존재하는 튜플의 합집합을 구하되, 결과로 생성된 릴레이션에서 중복되는 튜플은 제거
- 표기법 : ∪
2) 교집합 ( Intersection )
- 두 릴레이션에 존재하는 튜플의 교집합을 구하는 연산
- 표기법 : ∩
3) 차집합 ( Difference )
- 두 릴레이션에 존재하는 튜플의 차집합을 구하는 연산
- 표기법 : -
4) 교차곱 ( Cartesian Product )
- 두 릴레이션에 있는 튜플들의 순서쌍을 구하는 연산
- 표기법 : ×
관계해석
관계 데이터의 연산을 표현하는 방법으로, 원하는 정보를 정의할 때 계산 수식을 사용
원하는 정보가 무엇이라는 것만 정의하는 비절차적 특성
구분 | 기호 | 설명 |
연산자 | ∨ | OR 연산 |
∧ | AND 연산 | |
¬ | NOT 연산 | |
정량자 | ∀ | 모든 가능한 튜플 " For All" |
∃ | 어떤 튜플 하나라도 존재 |
속성
릴레이션에서 정보를 나타내는 최소 단위로, 각 열의 상태나 특성을 나타내는 항목을 말한다.
구성방식에 따른 분류
분류 | 설명 |
PK(Primary Key) 속성 | 릴레이션에서 튜플을 유일하게 구분할 수 있는 속성 |
FK(Foreign key) 속성 | 다른 릴레이션과의 관계에서 참조하고 있는 속성 |
일반 속성 | 릴레이션에 포함된 속성 중, PK와 FK가 아닌 속성 |
키 종류
1) 후보키 ( Cadidate Key )
- 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별할 수 있는 속성들의 부분집합
- 모든 릴레이션은 반드시 하나 이상의 후보키를 가져야 한다.
- 튜플에 대한 유일성과 최소성을 만족시켜야 한다.
2) 기본키 ( Primary Key )
- 후보키 중에서 선택한 주키
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성
- Null 값을 가질 수 없다 ( 개체 무결성 )
- 기본키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없다 ( 개체 무결성 )
3) 대체키 (Alternate Key )
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키
- 보조키라고도 한다
4) 슈퍼키 ( Super Key )
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 튜플에 대한 유일성은 만족하지만, 최소성은 만족시키지 못한다
5) 외래키 ( Foreign Key )
- 관계를 맺고 있는 릴레이션 R1, R2에서 릴레이션 R1이 참조하고 있는 릴레이션 R2의 기본키와 같은 R1 릴레이션 속성
- 참조되는 릴레이션의 기본키와 대응되어 릴레이션 간에 참조 관계를 표현하는 데 중요한 도구로 사용
- 외래키로 지정되면 참조 테이블의 기본키에 없는 값은 입력할 수 없다 ( 참조 무결성 )
데이터베이스 무결성
데이터의 정확성, 일관성, 유효성이 유지되는 것으로 데이터의 무결성을 유지하는 것은 DBMS의 중요한 기능이다.
종류
1) 개체 무결성 ( Entity Integrity )
- 모든 릴레이션은 기본 키를 가져야 한다.
- 기본키는 중복되지 않은 고유한 값을 가져야 한다.
- 릴레이션의 기본키는 NULL값을 허용하지 않는다.
2) 참조 무결성 ( Referential Integrity )
- 외래키 값은 NULL이거나 참조하는 릴레이션의 기본키 값과 동일해야 한다.
- 각 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다.
- 참조 무결성 제약조건
제약조건 | 설명 |
제한 ( Restrict ) | 문제가 되는 연산을 거절 ( 참조된 값을 지우려고 하면 못 지우게 하는 것 ) |
연쇄 ( Cascade ) | 부모 릴레이션에서 튜플을 삭제하면 자식 릴레이션에서 이 튜플을 참조하는 튜플도 함께 삭제 |
널값 ( Nullify ) | 부모 릴레이션에서 튜플을 삭제하면 자식 릴레이션에서 이 튜플을 참조하는 튜플들의 외래키에 NULL 등록 |
기본값( Default ) | Null을 넣는 대신에 디폴트 값을 등록 |
3) 도메인 무결성 ( Domain Integrity )
- 속성들의 값은 정의된 도메인에 속한 값이어야 한다.
- 성별이라는 컬럼에는 '남', '여'를 제외한 데이터는 제한되어야 한다.
4) 고유 무결성 ( Unique Integrity )
- 릴레이션의 특정 속성에 대해 각 튜플이 갖는 속성의 값들이 서로 달라야 한다.
5) 키 무결성 ( Key Integrity )
- 하나의 릴레이션에는 적어도 하나의 키가 존재해야 한다.
6) 릴레이션 무결성 ( Relation Integrity )
- 삽입, 삭제, 갱신과 같은 연산을 수행하기 전과 후에 대한 상태의 제약
옵티마이저 : 사용자가 질의한 SQL문에 대해 최적의 실행 방법을 결정하는 역할을 수행
튜닝 : SQL문을 최적화하여 빠른 시간 내에 원하는 결과 값을 얻기 위한 작업
분산 데이터 베이스
여러 곳으로 분산되어 있는 데이터베이스를 하나의 가상 시스템으로 사용할 수 있도록 한 데이터베이스
논리적으로 동일한 시스템에 속하지만, 컴퓨터 네트워크를 통해 물리적으로 분산되어 있는 데이터들의 모임
구성요소
- 분산 처리기 : 자체적으로 처리 능력을 가지며, 지리적으로 분산되어 있는 컴퓨터 시스템
- 분산 데이터베이스 : 지리적으로 분산되어 있는 데이터베이스로서 해당 지역의 특성에 맞게 데이터베이스가 구성
- 통신 네트워크 : 분산 처리기들을 통신망으로 연결하여 논리적으로 하나의 시스템처럼 작동할 수 있도록 하는 통신 네트워크
투명성 조건
1) 위치 투명성 ( Location )
- 액세스하려는 데이터베이스의 실제 위치를 알 필요 없이 데이터베이스의 논리적인 명칭만으로 액세스할 수 있음
- 데이터가 물리적으로 저장되어 있는 곳을 알 필요 없이 논리적인 입장에서 데이터가 모두 자신의 사이트에 있는 것처럼 처리하는 특성
2) 분할 투명성 ( Division )
- 하나의 논리적 테이블이 여러 단편으로 분할되어 각 단편의 사본이 여러 위치에 저장
3) 지역사상 투명성 ( Local Mapping )
- 지역 DBMS와 물리적 DB 사이의 Mapping 보장
- 각 지역시스템 이름과 무관한 이름 사용 가능
4) 중복 투명성 ( Replication )
- 동일 데이터가 여러 곳에 중복되어 있더라도 사용자는 마치 하나의 데이터만 존재하는 것처럼 사용하고, 시스템은 자동으로 여러 자료에 대한 작업을 수행
5) 병행 투명성 ( Concurrency )
- 분산 데이터베이스와 관련된 다수의 트랜잭션들이 동시에 실현되더라도 그 트랜잭션의 결과는 영향 받지 않음
6) 장애 투명성 ( Failure )
- 트랜잭션, DBMS, 네트워크, 컴퓨터 장애에도 불구하고 트랜잭션을 정확하게 처리
CAP 이론
어떤 분산 환경에서도 일관성 ( C ), 가용성 ( A ), 분단 허용성 ( P ) 세 가지 속성 중, 두가지만 가질 수 있다는 것으로 세 가지 모두 만족할 수는 없다.
- 일관성 ( Consistency ) : 모든 노드들은 같은 시간에 동일한 항목에 대하여 같은 내용의 데이터를 사용자에게 보여준다.
- 가용성 ( Availability ) : 모든 사용자들이 읽기 및 쓰기가 가능해야 하며, 몇몇 노드의 장애 시에도 다른 노드에 영향을 미치면 안된다.
- 분단 허용성 ( Partitaion Tolerance ) : 메시지 전달이 실패하거나 시스템 일부가 망가져도 시스템이 동작할 수 있어야 한다.
트랜잭션
데이터베이스 상태를 변환시키는 하나의 논리적인 기능을 수행하는 작업 단위
한꺼번에 모두 수행되어야 할 연산
트랜잭션의 성질 ( ACID ) 🐱
1) 원자성 ( Atomicity )
- 트랜잭션의 연산은 데이터베이스에 모두 반영되던지 아니면 모두 반영되지 않아야 한다.
- 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야하며, 모두가 완벽히 수행되지 않고 하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야 한다.
- Commit과 Rollback 명령어에 의해 보장받는다.
2) 일관성 ( Consistency )
- 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환한다.
- 시스템이 가지고 있는 고정요소는 트랜잭션 수행 전과 트랜잭션 수행 완료 후의 상태가 동일해야 한다.
3) 독립성, 격리성 ( Isolation )
- 둘 이상의 트랜잭션이 동시에 병행 실행하는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션 연산이 끼어들 수 없다.
- 수행 중인 트랜잭션은 완전히 완료될 때까지 다른 트랜잭션에서 수행 결과를 참조할 수 없다.
4) 영속성 ( Durability )
- 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장이 나더라도 영구적으로 반영되어야 한다.
트랜잭션의 상태
상태 | 설명 |
활동(Active) | 트랜잭션이 실행 중인 상태 |
실패(Failed) | 트랜잭션 실행에 오류가 발생하여 중단된 상태 |
철회(Aborted) | 트랜잭션이 비정상적으로 종료되어 Rollback 연산을 수행한 상태 |
부분 완료 ( Partially Committed ) | 트랜잭션의 마지막 연산까지 실행했지만, Commit 연산이 실행되기 직전의 상태 |
완료 ( Committed) | 트랜잭션이 성공적으로 종료되어 Commit 연산을 실행한 후의 상태 |
'정보처리기사' 카테고리의 다른 글
모의고사 -1 (0) | 2024.06.18 |
---|---|
운영체제 -1 (0) | 2024.06.17 |
데이터베이스 구축-4 (2) | 2024.06.14 |
데이터베이스 구축-2 (0) | 2024.06.13 |
데이터베이스 구축-1 (1) | 2024.06.13 |