정보처리기사 - 데이터 입출력 구현 #40~43
2023. 8. 19. 11:08ㆍ자격증/정보처리기사
40. 관계형 데이터베이스의 구조 / 관계형 데이터베이스 모델
40.1 관계형 데이터베이스
2차원적인 표(Table)를 이용해서 데이터 상호 관계를 정의하는 데이터베이스
- 1970년 IBM에 근무하던 코드(E. F. Codd)에 의해 처음 제안
- 개체(Entity)와 관계(Relationship)를 모두 릴레이션(Relation)이라는 표(Table)로 표현하기 때문에 개체를 표현하는 개체 릴레이션과 관계를 표현하는 관계 릴레이션이 존재
- 장점 : 간결하고 보기 편리하며, 다른 데이터베이스로의 변환이 용이
- 단점 : 성능이 다소 떨어짐
40.2 관계형 데이터베이스의 릴레이션 구조
릴레이션은 데이터들을 표의 형태로 표현한 것으로, 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성
- 릴레이션 인스턴스 : 데이터 개체를 구성하고 있는 속성들에 데이터 타입이 정의되어 구체적인 데이터 값을 가진 것
40.3 튜플(Tuple)
릴레이션을 구성하는 각각의 행
- 튜플은 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티(Cardinality) 또는 기수, 대응수라고 함
- 학생 릴레이션에서 카디널리티는 4
40.4 속성(Attribute)
데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상의 데이터 항목 또는 데이터 필드에 해당
- 속성은 개체의 특성을 기술
- 속성의 수를 디그리(Degree) 또는 차수라고 함
- 학생 릴레이션에서 디그리는 5
40.5 도메인(Domain)
하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- 실제 애트리뷰트 값이 나타날 때 그 값의 합법 여부를 시스템이 검사하는데에도 이용
- 학생 릴레이션에서 학년의 도메인은 1~4
40.6 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없으므로 릴레이션에 포함된 튜플들은 모두 상이
- 한 릴레이션에 포함된 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 유일한 식별을 위해 속성의 명칭은 유일해야 하지만, 속성을 구성하는 값은 동일한 값이 있을 수 있음
- 릴레이션을 구성하는 튜플을 유일하게 식별하기 위해 속성들의 부분집합을 키(Key)로 설정
- 속성의 값은 논리적으로 더 이상 쪼갤 수 없는 원자값만을 저장
40.7 관계형 데이터 모델(Relational Data Model)
2차원적인 표(Table)를 이용해서 데이터 상호 관계를 정의하는 DB 구조
- 가장 널리 사용되는 데이터 모델
- 파일 구조처럼 구성한 테이블들을 하나의 DB로 묶어서 테이블 내에 있는 속성들 간의 관계(Relationship)를 설정하거나 테이블 간의 관계를 설정하여 이용
- 관계 모델에서의 테이블인 Relation과 개체와 개체 간의 관계를 Relationship의 차이 주의
- 기본키(Primary Key)와 이를 참조하는 외래키(Foreign Key)로 데이터 간의 관계를 표현
- 기본키(Primary Key) : 후보키 중에서 특별히 선정된 키로 중복된 값을 가질 수 있음
- 외래키(Foreign Key) : 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 계층 모델과 망 모델의 복잡한 구조를 단순화시킨 모델
- 관계형 모델의 대표적인 언어는 SQL
- 1:1, 1:N, N:M 관계를 자유롭게 표현 가능
41. 관계형 데이터베이스의 제약 조건 - 키(Key)
41.1 키(Key)
데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 키의 종류
- 후보키(Candidate Key)
- 기본키(Primary Key)
- 대체키(Alternate Key)
- 슈퍼키(Super Key)
- 외래키(Foreign Key)
41.2 후보키(Candidate Key)
릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들을 의미
- 후보키는 유일성(Unique)과 최소성(Minimality) 을 모두 만족시켜야 함
종류 | 내용 |
---|---|
유일성(Unique) | 하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 있어야 함 |
최소성(Minimality) | 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성되어야 함 |
41.3 기본키(Primary Key)
후보키 중에서 특별히 선정된 주키(Main Key)
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성
- NULL 값을 가질 수 없음
- 튜플에서 기본키로 설정된 속성에는 NULL 값이 있어서는 안 됨
41.4 대체키(Alternate Key)
후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키
- 보조키라고도 함
41.5 슈퍼키(Super Key)
한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 릴레이션을 구성하는 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하지만, 최소성은 만족하지 못함
41.6 외래키(Foreign Key)
다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되었을 때의 속성 A를 외래키라고 함
- 외래키로 지정되면 참조 릴레이션의 기본키에 없는 값은 입력할 수 없음
42. 관계형 데이터베이스의 제약 조건 - 무결성(Integrity)
42.1 무결성(Integrity)
데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제값이 일치하는 정확성
- 무결성 제약 조건은 데이터베이스에 들어 있는 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지하기 위한 제약 조건을 말함
42.2 무결성의 종류
종류 | 내용 |
---|---|
개체 무결성 | 기본 테이블의 기본키를 구성하는 어떤 속성도 Null 값이나 중복값을 가질 수 없다는 규정 |
참조 무결성 | - 외래키 값은 Null 값이거나 참조 릴레이션의 기본키 값과 동일해야 함- 즉 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다는 규정 |
도메인 무결성 | 주어진 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정 |
사용자 정의 무결성 | 속성 값들이 사용자가 정의한 제약조건에 만족되어야 한다는 규정 |
NULL 무결성 | 릴레이션의 특정 속성 값이 NULL 값이 될 수 없도록 하는 규정 |
고유 무결성 | 릴레이션의 특정 속성에 대해 각 튜플이 갖는 속성값들이 서로 달라야 한다는 규정 |
키 무결성 | 하나의 릴레이션에는 적어도 하나의 키가 존재해야 한다는 규정 |
관계 무결성 | 릴레이션에 어느 한 튜플의 삽입 가능 여부 또는 한 릴레이션과 다른 릴레이션의 튜플들 사이의 관계에 대한 적절성 여부를 지정한 규정 |
42.3 데이터 무결성 강화
데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화해야 함
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음
종류 | 내용 |
---|---|
애플리케이션 | 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 프로그램 내에 추가 |
데이터베이스 트리거 | 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가 |
제약 조건 | 데이터베이스에 제약 조건을 설정하여 무결성을 유지 |
- 트리거(Trigger) : 데이터베이스 시스템에서 데이터의 입력, 갱신, 삭제 등의 이벤트(Event)가 발생할 때마다 자동으로 수행되는 절차형 SQL
- 이벤트(Event) : 시스템에 어떤 일이 발생한 것을 말하며, 트리거에서 이벤트는 데이터의 입력, 갱신, 삭제와 같이 데이터를 조작하는 작업이 발생했음을 의미
43. 관계대수 및 관계해석
43.1 관계대수
관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어
- 릴레이션을 처리하기 위해 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션
- 질의에 대한 해를 구하기 위해 수행해야 할 연산의 순서를 명시함
- 관계 데이터베이스에 적용하기 위해 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 존재
- 기본적으로 관계대수와 관계해석은 관계 데이터베이스를 처리하는 기능과 능력면에서 동등
- 관계대수로 표현한 식은 관계대수로 표현 가능
43.2 순수 관계 연산자
종류 | 특징 | 기호 |
---|---|---|
Select | - 릴레이션에 존재하는 튜플 중에서 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만드는 연산- 릴레이션의 행에 해당하는 튜플(Tuple)을 구하는 것이므로 수평 연산이라고도 함- 예) σ score(점수) >70(학생 릴레이션) : 학생 릴레이션에서 점수가 70 초과인 튜플을 선택 | σ (시그마) |
Project | - 주어진 릴레이션에서 속성 리스트(Attribute List)에 제시된 속성 값만을 추출하여 새로운 릴레이션을 만드는 연산- 연산 결과에 중복이 발생하면 중복이 제거- 릴레이션의 열에 해당하는 속성을 추출하는 것이므로 수직 연산자라고도 함- 예) π Name(이름), Number(학번)(학생 릴레이션) : 학생 릴레이션에서 해당 이름과 학번 속성을 추출 | 𝝿 (파이) |
Join | - 공통 속성을 중심으로 두 개 의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산- Join의 결과는 교차곱(Cartesian Product)을 수행한 다음 Select를 수행한 것과 같음- 예) 학생 릴레이션 ⋈ Number = Number 정보 릴레이션 : 학생 릴레이션과 정보 릴레이션을 Number 기준으로 합체 | ⋈ |
Division | X⊃Y인 두 개의 릴레이션 R(X)와 S(Y)가 있을 때, R의 속성이 S의 속성값만을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 연산- 예) 학생 릴레이션 Number ÷ Number 출석 릴레이션 : 학생 릴레이션에서 출석 릴레이션에 있는 Number를 구함 | ÷ |
- 교차곱(Cartesian Product) : 두 릴레이션에 존재하는 모든 튜플들을 대응시켜 새로운 릴레이션을 만드는 연산
- 연산의 결과 차수는 두 릴레이션의 차수를 합한 것과 같음
- 튜플은 두 릴레이션의 튜플 수를 곱한 것과 같음
- 교차곱의 결과는 두 릴레이션을 연결하여 나타낼 수 있는 모든 튜플들을 표현할 수 있음
43.3 일반 집합 연산자
수학적 집합 이론에서 사용하는 연산자
- 일반 집합 연산자 중 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 함
- 합병 조건 : 합병하려는 두 릴레이션 간에 속성의 수가 같고, 대응되는 속성별로 도메인이 같아야 함
- 릴레이션 R과 S가 합병이 가능하다면, 릴레이션 R의 i번째 속성과 릴레이션 S의 i번째 속성의 도메인이 서로 같아야 함
- 속성의 이름이 같을 필요는 없음
- 합병 조건 : 합병하려는 두 릴레이션 간에 속성의 수가 같고, 대응되는 속성별로 도메인이 같아야 함
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징
연산자 | 기능 및 수학적 표현 | 카디널리티 |
---|---|---|
합집합 UNION ∪ |
- 두 릴레이션에 존재하는 튜플의 합집합을 구하되, 결과로 생성된 릴레이션에서 중복되는 튜플은 제거되는 연산- R∪S = {t|t∈R or t∈S}※ t는 릴레이션 R 또는 S에 존재하는 튜플 | - |R∪S| ≤ |R|+|S|- 합집합의 카디널리티는 두 릴레이션 카디널리티의 합보다 크지 않음 |
교집합 INTERSECTION ∩ |
- 두 릴레이션에 존재하는 튜플의 교집합을 구하는 연산- R∩S = {t|t∈R and t∈S}※ t는 릴레이션 R 그리고 S에 동시에 존재하는 튜플 | - |R∩S| ≤ MIN{|R|, |S|}- 교집합의 카디널리티는 두 릴레이션 중 카디널리티가 적은 릴레이션의 카디널리티보다 크지 않음 |
차집합 DIFFERENCE - |
- 두 릴레이션에 존재하는 튜플의 차집합을 구하는 연산R-S = {t|t∈R and t∉S}※ t는 릴레이션 R에는 존재하고 S에는 없는 튜플 | - |R-S| ≤ |R|- 차집합의 카디널리티는 릴레이션 R의 카디널리티보다 크지 않음 |
교차곱 CARTESIANPRODUCT × |
- 두 릴레이션에 있는 튜플들의 순서쌍을 구하는 연산- R×S = {r·s|r∈R and s∈S}※ r은 R에 존재하는 튜플이고, s는 S에 존재하는 튜플 | - |R×S| = |R|×|S|- 교차곱의 디그리는 두 릴레이션의 디그리를 더한 것과 같고, 카디널리티는 두 릴레이션의 카디널리티를 곱한 것과 같음 |
43.4 관계해석(Relational Calculus)
관계 데이터의 연산을 표현하는 방법
- 관계 데이터 모델의 제안자인 코드(E. F. Codd)가 수학의 술어 해석(Predicate Calculus)에 기반을 두고 관계 데이터베이스를 위해 제안
- 원하는 정보가 무엇이라는 것만 정의하는 비절차적 특성을 지님
- 원하는 정보를 정의할 때는 계산 수식을 사용
'자격증 > 정보처리기사' 카테고리의 다른 글
정보처리기사 - 데이터 입출력 구현 #46~49 (0) | 2023.08.19 |
---|---|
정보처리기사 - 데이터 입출력 구현 #44~45 (0) | 2023.08.19 |
정보처리기사 - 데이터 입출력 구현 #36~39 (0) | 2023.08.19 |
정보처리기사 - 데이터 입출력 구현 #31~35 (0) | 2023.08.19 |
정보처리기사 - 요구사항 확인 #26~30 (0) | 2023.08.19 |