정보처리기사 필기 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) |
종류 | 순수관계 연산자, 일반집합 연산자 | 튜플 관계 해석, 도메인 관계 해석 |
'자격증 > 정보처리기사 필기' 카테고리의 다른 글
[정보처리기사] DB 구축 : 데이터 모델 (0) | 2023.02.18 |
---|---|
[정보처리기사 필기] DB 구축 : 개체-관계 모델 (E-R 모델) (0) | 2023.02.17 |
[정보처리기사 필기] DB 구축 : 식별자(Identifier) (0) | 2023.02.01 |
[정보처리기사 필기] SW 개발 : 인터페이스 구현 검증 (0) | 2023.01.31 |
[정보처리기사 필기] SW 개발 : 인터페이스 구현 (0) | 2023.01.31 |