정보처리기사

데이터베이스 구축-3

sejin2 2024. 6. 13. 13:58

관계 데이터 모델

데이터의 논리적 구조가 릴레이션, 즉 테이블 형태의 평면 파일로 표현되는 데이터 모델

즉, 테이블 형식을 이용하여 데이터를 정의하고 설명한 모델

 

관계 데이터 릴레이션의 구조

구조 설명
속성 ( 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