자격증/정보처리기사 필기

[정보처리기사 필기] DB 구축 : 논리적 데이터 모델링

Yuco 2023. 2. 2. 22:22

 

정보처리기사 필기 3과목 - 데이터베이스 구축 : 논리적 모델링 정의

 

** 논리적 데이터 모델링 **  ⭐⭐⭐

(p.452-463)

[1] 논리 데이터 모델링 정의

- 데이터 논리 모델링이란 데이터베이스 설계 프로세스의 기초 설계 단계로, 비즈니스 정보의 구조와 규칙을 명확하게 표현할 수 있는 기법

- E-R 다이어그램으로 표현된 개념적 구조를 데이터베이스에 저장할 형태로 표현한 논리적 구조이며, 물리적인 스키마(Schema) 설계를 하기 전 단계의 데이터 모델 상태를 일컫는 말

 

* 개념적 모델링과 논리적 모델링의 비교

개념적 모델링 논리적 모델링
Entity Table
Attribute Column
UID Primary Key
Relationship Foreign Key
Mandatory Not Null
Optional Null

 

[2] 관계 데이터 모델(RDM, Relational Data Model)

1. 관계 데이터 모델의 개념 및 구조

1) 개념

- 계층 모델과 망 모델의 복잡한 구조를 단순화시킨 모델

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

- 열(Column)과 행(Row)으로 이루어진 테이블(Table)과 수학적으로 정의된 연산들로 구성

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

- 높은 데이터의 독립성을 제공하는 것에 목적을 두며, 1:1 / 1:N / N:M 관계를 자유롭게 표현 가능

- 관계형 모델의 대표적인 언어는 SQL

 

2) 구조

- DB는 테이블(릴레이션)들의 모임으로 표현되며 스키마와 인스턴스로 이루어짐

- 테이블은 튜플(행, 레코드)들의 모임으로 표현되며, 튜플은 어트리뷰트(열, 필드, 속성)들로 구성

관계 데이터 모델은 데이터를 2차원 테이블 형태인 릴레이션으로 표현하며, 릴레이션에 대한 제약 조건과 관계 연산을 위한 관계 대수를 정의

 

2. 릴레이션

1) 용어 정리 ⭐⭐

요소  설명
릴레이션 =
테이블 (Table)
- 데이터를 열과 행의 관계로 표현한 것
튜플 (Tuple) - 테이블의 행을 구성하는 개체로 속성들의 모임으로 구성

- 파일을 구성하는 레코드(Record)와 같은 개념, 튜플의 수는 카디널리티(Cardinality) or 기수

# 튜플 / 행 / 레코드
속성 (Attribute) - 데이터베이스를 구성하는 가장 작은 논리적 단위

- 파일 구조상의 데이터 항목 또는 데이터 필드에 해당, 속성의 수는 디그리(Degree) or 차수

# 속성 / 열 / 필드
차수 (Degree) - 속성(Attribute)들의 수
기수 (Cardinality)  - 튜플(Tuple)들의 수
도메인
(영역, Domain)
- 하나의 속성이 취할 수 있는 같은 타입의 원자 값들의 집합

- 표현되는 속성값의 범위를 나타냄 ex. 성별의 도메인은 남/여로서 그 이외의 값은 입력될 수 없음
릴레이션 인스턴스
(Relation Instance)
- 릴레이션의 어느 시점에 들어있는 튜플들의 집합(동적인 성질)
- 튜플들의 집합으로 현재 들어가 있는 실제 데이터를 지칭

 

2) 릴레이션의 특징  ⭐

- 한 릴레이션(테이블)에 포함된 튜플(행)들은 모두 상이(서로 다른 값을 가짐), 중복된 튜플은 허용하지 않음

- 한 릴레이션(테이블)에 포함된 튜플(행) 사이에는 순서가 없음 (데이터의 수정, 삽입, 삭제 등에 따라 순서가 바뀔 수 있음)

 

- 속성은 단일 값을 가짐

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

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

- 한 속성의 값은 모두 같은 도메인 값을 가짐

- 각 속성 식별을 위해 릴레이션 내에서 유일한 이름을 가짐(=속성은 서로 다른 이름을 가짐), 그러나 그에 해당하는 도메인(애트리뷰트를 구성하는 값)에는 동일한 값이 있을 수 있음

 

* 튜플은 서로 상이한 값을 가지며 순서가 없고, 속성(Attribute)는 원자값을 가지고 순서가 중요하지 않으며 유일한 이름을 가짐

 

3. 키(Key) 정의 = 식별자(Identifier)  ⭐⭐

- 주어진 릴레이션에서 모든 인스턴스 가운데 유일함을 보장해주는 하나 이상의 속성의 집합

 

1) 키의 특징 

특징 설명
유일성 (Uniqueness) - 하나의 키 값으로 하나의 튜플을 유일하게 식별할 수 있어야 함
최소성 (Minimality) - 튜플을 유일하게 식별하기 위해  반드시 필요한 최소한의 속성으로 구성되어야 함

 

2) 키의 종류 

- 슈퍼키 > 후보키 > 대체키 > 기본키

 

종류 설명
기본 키
(Primary Key)
- 후보키 중에서 특별히 선정된 키중복값을 가질 수 없음 (튜플을 식별하기 위해 반드시 필요한 키)

- 후보키의 성질을 가짐(유일성, 최소성 모두 만족)

- 후보키가 2개 이상 존재하면 이 중 하나를 기본키로 선정

- NULL 값을 가질 수 없음
후보키
(Candidate Key)
- 튜플을 유일하게 구분할 수 있는 최소한의 속성들의 집합

- 유일성과 최소성을 모두 만족

- 모든 릴레이션에는 반드시 하나 이상의 후보키가 존재
대체키
(Alternate Key)
- 기본키가 아닌 후보키(후보키 - 기본키 = 대체키)

- 후보키가 둘 이상 되는 경우 그 중에서 어느 하나를 선정하여 기본키로 지정하면 나머지 후보키들을 대체키가 됨
슈퍼키
(Super Key)
- 한 릴레이션 내의 특정 튜플을 고유하게 식별하는 하나의 속성 또는 속성들의 집합

- 유일성은 만족하지만, 최소성은 만족하지 못함 
외래키
(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합

- 외래키는 참조 릴레이션의 기본키와 동일한 키 속성을 가짐

- 릴레이션들 간의 관계를 나타내기 위해서 사용
인조키
(Artificial Key)
- 기본키로 사용하기에 적절한 속성이 없을 때 기본키로 사용할 속성을 새롭게 만들어 줌

- 인위적으로 만들어 준 속성

 

4. 데이터 무결성 

- DB에 저장된 데이터의 정확성, 일관성, 유효성이 유지되는 것을 의미

- 데이터의 무결성을 유지하는 것은 DBMS의 중요한 기능이며, 그 행위를 무결성 강화라고 함

- 개체 또는 개체 간에 적용되는 업무 규칙을 위반하지 않도록 제약(Constraints)함으로써 데이터의 일관성과 정확성을 유지하도록 하는 관리 방법

 

1) 도메인 무결성 (Domain Integrity, 영역 무결성)

- 릴레이션 내의 튜플들이 각 속성(Attribute)의 도메인에 지정된 값만 가져야 함

 

2) 개체 무결성 (Entity Integrity, 개체/실체 무결성)  ⭐

- 기본키 제약(Primary Key Constraint)이라고도 함

- 테이블의 기본키를 구성하는 어떤 속성(Attribute)도 널(NULL)값이나 중복 값을 가질 수 없음

- 기본 키의 속성 값이 NULL 값이 아닌 원자 값을 갖는 성질 (* 원자 값 = 오직 하나의 값)

 

3) 참조 무결성 (Referential Integrity)  ⭐

- 외래키 제약(Foreign Key Constraint)이라고도 하며, 릴레이션 간의 참조 관계를 선언하는 제약 조건

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

- 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다는 규정

 

* 참조 무결성 제약 조건의 옵션(부모 릴레이션에서 튜플을 삭제할 경우)

 

명령어 의미 사례
RESTRICTED 자식 릴레이션에서 참조하고 있을 경우 부모 릴레이션이 삭제 작업을 거부 학과(부모)릴레이션의 튜플 삭제 거부
CASCADE 자식 릴레이션의 관련 튜플을 삭제 처리 학생(자식)릴레이션의 관련 튜플을 삭제
DEFAULT 자식 릴레이션의 관련 튜플을 미리 설정해둔 값으로 변경 학생(자식)릴레이션의 학과가 다른 학과로 자동 배정
NULL 자식 릴레이션의 관련 튜플을 NULL 값으로 설정 (NULL값을 허가한 경우 학과 릴레이션의 학과가 NULL 값으로 변경됨

 

4) 사용자 정의 무결성 (User-Defined Integrity)

- 속성 값들이 사용자가 정의한 제약 조건에 만족해야 함

 

5) 데이터 무결성 강화

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

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

- 제약 조건 : 데이터베이스에 제약 조건을 설정해 무결성을 유지

 

5. 관계 데이터 언어(관계대수, 관계해석) ⭐⭐⭐

- 관계 데이터베이스의 릴레이션을 조작하기 위한 기본 연산에는 관계대수(Relational Algebra)와 관계해석(Relational 

calculus)가 있음

 

1) 관계대수 (Relation Algebra)

- 어떤 데이터를 어떻게 찾는지에 대한 처리 절차를 명시하는 절차적인 언어이며 DBMS 내부의 처리 언어로 사용됨

- 릴레이션을 처리하기 위해 연산자와 연산 규칙을 제공하는 언어로 피연산자가 릴레이션이고 결과 역시 릴레이션

 

2) 관계대수 연산자의 종류

- 관계대수 연산자란 피연산자에 적용되는 연산 기호를 말함

- 관계대수 연산자는 크게 관계 데이터 모델을 위해 고안된 순수관계 연산자수학의 집합이론에서 차용된 일반집합 연산자로 구분

 

순수관계 연산자 셀렉트(Select), 프로젝트(Project), 조인(Join), 디비전(Division), 개명(Rename)
일반집합 연산자 합집합(Union), 교집합(Intersection), 차집합(Difference), 카티션 프로덕트(Cartesian Product)

 

2-1) 순수관계 연산자 ⭐⭐

- 관계 데이터베이스에 적용할 수 있도록 특별히 개발한 관계 연산자

 

연산자 기호 의미
Select (선택) σ 조건(Predicate)을 만족하는 튜플들의 부분 집합(수평적 부분 집합, 수평 연산)
Project (추출) π 속성들의 부분 집합, 중복은 제거됨 (수직 연산)
Join (조인) ▷◁ 
ex. R  ▷◁  S
두 개의 릴레이션이 공통으로 가지고 있는 속성을 이용하여 두 개의 릴레이션을 하나로 합쳐 새로운 릴레이션을 만드는 연산 (두 개의 릴레이의 연관된 튜플들을 결합)
Division (나누기) ÷
ex. R ÷ S
R 릴레이션에서 S릴 레이션의 속성 도메인 값과 일치하는 R 릴레이션의 튜플들을 찾아내는 연산

 

2-2) 일반집합 연산자

- 수학적 집합 이론에서 사용하는 연산자로 릴레이션 연산에도 그대로 적용 가능

- 릴레이션이 튜플의 집합이라는 개념을 이용하는 연산자 

- 일반 집합 연산자 중 합집합, 교집합, 차집합은 합병 조건이 가능해야 함

- 합병 조건은 합병하려는 두 릴레이션 간에 속성(Attribute) 수가 같고, 각 속성이 취할 수 있는 도메인의 범위가 같아야 함

 

연산자 기호 의미
교집합 (Instersection) ∩ 
ex. R S
R 릴레이션과 S 릴레이션의 중복되는 값들만 추출
합집합 (Union) U
ex, R U S
두 개의 릴레이션의 합이 추출되고, 중복은 제거됨
차집합 (Difference)
ex. R ㅡ S
R 릴레이션에서 S 릴레이션에 중복되지 않는 값들만 추출
곱집합
(Cartiesian Product)
x
ex. R x S
두 릴레이션의 가능한 모든 튜플들의 집합, 차수(Degree, 속성의 수)는 더하고 카디널리티(Cardinality, 튜플의 수) 는 곱해서 값을 구함
배정 (Assignment) 프로그래밍 언어 Assign과 비슷하며, 복잡한 질의를 단순하게 표현하는 방법

 

3) 관계해석 (Relational Calculus)

- 관계 데이터 모델의 제안자인 코드가 수학의 Predicate Calculus(술어 해석)에 기반을 두고 관계 데이터베이스를 위해 제안

- 관계 해석은 관계 데이터의 연산을 표현하는 방법으로, 원하는 정보를 정의할 때는 계산 수식을 사용하는 비절차적 언어

- 원하는 데이터만 명시하고 질의를 어떻게 수행할 것인가는 명시하지 않는 선언적인 언어

 

4) 관계해석의 특징

- 원하는 릴레이션을 정의하는 방법을 제공, 즉 원하는 정보가 무엇이라는 것만 정의하는 비절차적 언어

- 튜플 관계해석, 도메인 관계 해석이 있음

- 기본적으로 관계해석과 관계 대수는 관계 데이터베이스를 처리하는 기능과 능력면에서 동등함

- 수학의 Predicate Calculus에 기반을 둠

- 관계대수로 표현한 식은 관계해석으로 표현할 수 있음

 

구분 구성요소 기호 설명
연산자 OR 연산 V 원자식 간 "또는" 이라는 관계로 연결
AND 연산 원자식 간 "그리고"라는 관계로 연결
NOT 연산 원자식에 대해 부정
정량자 전칭 정량자 모든 가능한 튜플 "For All"
# All의 A를 뒤집은 형태
존재 정랼자   어떤 튜플 하나라도 존재 "There Exists"
# Exists의 E를 뒤집은 형태

 

5) 관계대수와 관계해석 비교

구분 관계대수 관계해석
특징 절차적 언어(순서 명시) 비절차적 언어(계산 수식의 유연적 사용)
+ 프레디킷 해석(Predicate Calculus) 기반
목적 어떻게 유도하는가? (How) 무엇을 얻을 것인가? (What)
종류 순수관계 연산자, 일반집합 연산자 튜플 관계 해석, 도메인 관계 해석