본문 바로가기

IT/정보처리기사

[시나공 토막강의] 40-43강 정리

40강. 관계형 데이터베이스 구조

- 관계형 데이터베이스는 2차원적인 표(Table)를 이용해서 데이터 상호 관계를 정의하는 데이터베이스

- 코드에 의해 처음 제안, 개체(Entity)와 관계(Relationship)를 모두 릴레이션(Relation)이라는 표(Table)로 표현하기 때문에 각 릴레이션이 별개로 존재

- 장점 : 간결하고 보기 편리, 다른 데이터베이스로의 변환이 용이

- 단점 : 성능이 다소 떨어짐

 

1. 관계형 데이터베이스의 릴레이션 구조

- 릴레이션(Relation)은 데이터들을 표(Table)의 형태로 표현한 것으로 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성

- 릴레이션 스키마 : 속성 이름들, 릴레이션 인스턴스 : 각 튜플들, 이걸 합친 표 : 릴레이션

- 속성의 수(차수) : Degree, 튜플의 수(대응수, 기수) : Cardinality

 

 1) 튜플(Tuple) : 튜플은 속성의 모임으로 구성, 파일 구조에서 레코드와 같은 의미

 2) 속성(Attribute) : 데이터베이스를 구성하는 가장 작은 논리적 단위, 파일 구조상 데이터 항목 또는 데이터 필드에 해당

 3) 도메인(Domain) : 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합

 

2. 릴레이션의 특징

- 한 릴레이션에는 똑같은 튜플이 포함될 수 없으므로 릴레이션에 포함된 튜플들은 모두 상이

- 한 릴레이션에 포함된 튜플 사이에는 순서가 없음

- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함

- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음

- 속성의 유일한 식별을 위해 속성의 명칭은 유일해야 하지만, 속성을 구성하는 값은 동일한 값이 있을 수 있음

- 릴레이션을 구성하는 튜플을 유일하게 식별하기 위해 속성들의 부분집합을 키(Key)로 설정

- 속성의 값은 논리적으로 더 이상 쪼갤 수 없는 원자값만을 저장

 

3. 관계형 데이터 모델(Relational Data Model)

- 2차원적인 표(Table)를 이용해서 데이터 상호 관계를 정의하는 DB 구조, 가장 널리 사용되는 데이터 모델

- 파일 구조처럼 구성한 테이블들을 하나의 DB로 묶어서 테이블 내에 있는 속성들 간의 관계를 설정하거나 테이블 간의 관계를 설정하여 이용

- 기본키(Primary Key)와 이를 참조하는 외래키(Foreign Key)로 데이터 간의 관계를 표현

- 계층 모델과 망 모델의 복잡한 구조를 단순화시킨 모델, 관계형 모델의 대표적인 언어는 SQL

- 1대1, 1대다, 다대다 관계를 자유롭게 표현 가능

 

 

41강. 관계형 데이터베이스 제약조건 - 키(Key)

 

1. 키(Key)

- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성

ex) 후보키, 기본키, 대체키, 슈퍼키, 외래키 / 유일성(유일하게 식별), 최소성(단일키)

 

 1) 후보키(Candidate Key)

 - 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합

 - 기본키로 사용할 수 있는 속성들을 의미

 - 후보키는 유일성(Unique)과 최소성(Minimality)을 모두 만족시켜야 함

  * 유일성 : 하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 있어야 함

  * 최소성 : 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성되어야 함

 

 2) 기본키(Primary Key)

 - 후보키 중에서 특별히 선정된 주키(Main Key)

 - 중복된 값을 가질 수 없고, NULL 값을 가질 수 없음

 - 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성

 

 3) 대체키(Alternate Key)

 - 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미, 보조키라고도 함

 

 4) 슈퍼키(Super Key)

 - 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키

 - 릴레이션을 구성하는 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음

 - 슈퍼키는 유일성은 만족하지만, 최소성은 만족하지 못함(단일키가 아님)

 

 5) 외래키(Foreign Key)

 - 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합

 - 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되었을 때 속성 A를 외래키라고 함(남의 나라 왕, 즉 남의 나라 기본키가 우리에겐 외래키)

 - 외래키로 지정되면 참조 릴레이션의 기본키에 없는 값은 입력할 수 없음

 

 

42강. 관계형 데이터베이스의 제약조건 - 무결성(Integrity)

- 데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제값이 일치하는 정확성을 의미

- 무결성 제약 조건은 데이터베이스에 들어 있는 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지하기 위한 제약 조건을 의미

 

1. 무결성의 종류

 개체 무결성 : 기본 테이블의 기본키를 구성하는 어떤 속성도 NULL 값이나 중복값을 가질 수 없음

 참조 무결성 : 외래키 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일해야 함

 - 도메인 무결성 : 주어진 속성 값이 정의된 도메인에 속한 값이어야 함

 - 사용자 정의 무결성 : 속성 값들이 사용자가 정의한 제약조건에 만족되어야 함

 - NULL 무결성 : 릴레이션의 특정 속성 값이 NULL이 될 수 없도록 함

 - 고유 무결성 : 릴레이션의 특정 속성에 대해 각 튜플이 갖는 속성 값들이 서로 달라야 함

 - 키 무결성 : 하나의 릴레이션에는 적어도 하나의 키가 존재해야 함

 - 관계 무결성 : 릴레이션에 어느 한 튜플의 삽입 가능 여부 또는 한 릴레이션과 다른 릴레이션의 튜플들 사이의 관계에 대한 적절성 여부를 지정한 것

 

2. 데이터 무결성 강화

- 데이터 무결성은 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화해야 함

- 데이터 무결성은 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화 가능

 1) 애플리케이션 : 데이터 생성, 수정, 삭제  시 무결성 조건을 검증하는 코드를 프로그램 내에 추가

 2) 데이터베이스 트리거 : 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL 추가

 3) 제약 조건 : 데이터베이스에 제약 조건을 설정하여 무결성을 유지

 

 

43강. 관계대수 및 관계해석

 

1. 관계대수 : 여러 개의 데이터 중 원하는 데이터를 '어떻게' 가지고 올 건지를 의미

 - 관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어

 - 릴레이션을 처리하기 위해 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션임

 - 질의에 대한 해를 구하기 위해 수행해야 할 연산의 순서를 명시함

 ex) 순수 관계 연산자 : 관계 데이터 베이스에 적용하기 위해 특별히 개발한 연산자

       일반 집합 연산자 : 수학적 집합 이론에서 사용하는 연산자

 

 1) 순수 관계 연산자

  - Select : 릴레이션에 존재하는 튜플 중에서 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만드는 연산, 수평 연산이라고도 함, 기호는 시그마

  - Project : 주어진 릴레이션에서 속성 리스트(Attribute List)에 제시된 속성 값만을 추출하여 새로운 릴레이션을 만드는 연산, 추출하여 새로운 릴레이션을 만드는 연산, 중복 발생 시 중복이 제거됨, 속성을 추출하므로 수직 연산자라고도 함, 기호는 파이

  - Join : 공통 속성을 중심으로 두 개의 릴레이션을 하나로 하쳐서 새로운 릴레이션을 만드는 연산, Join의 결과는 Cartesian Product(교차곱)를 수행한 다음 Select를 수행한 것과 같음, 기호는 나비넥타이 문양

  - Division : Y가 X의 부분집합인 두 개의 릴레이션 R(X)와 S(Y)가 있을 때, R의 속성이 S의 속성값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 연산, 기호는 나누기 기호

 

 2) 일반 집합 연산자

  - 합집합(UNION) : 기호는 U, 카디널리티는 |RUS| <= |R| + |S|

  - 교집합(INTERSECTION) : 기호는 뒤집은 U, 카디널리티는 |R기호S| <= MIN{|R|, |S|}

  - 차집합(DIFFERENCE) : 기호는 -, 카디널리티는 |R-S| <= |R|

  - 교차곱(CARTESIAN PRODUCT) : 기호는 x, 두 릴레이션에 있는 튜플들의 순서쌍을 구하는 연산, 카디널리티는 |R x S| = |R| x |S|

 

2. 관계해석(Relational Calculus) : 원하는 정보가 '무엇인지' 를 정의

- 관계 데이터의 연산을 표현하는 방법

- 원하는 정보가 '무엇' 이라는 것만 정의하는 비절차적 특성을 지님

- 원하는 정보를 정의할 때는 계산 수식을 사용