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

2020 정보처리기사 필기 - 3.1 논리 데이터베이스 설계(2)

지식냠냠 2020. 3. 3. 21:46
반응형



▶ 077 관계형 데이터 모델



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

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

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

- 1:1, 1:N, N:M 관계를 자유롭게 표현


관계형 데이터 모델의 구성

ex) E-R 모델에서 설명한 고객과 주문서 그리고 주문 관계를 관계형 데이터 모델로 표시하면 다음과 같다.



▶ 078 관계형 데이터베이스의 구조



관계형 데이터베이스

1970년 IBM에 근무하던 코드에 의해 처음 제안됨

- 개체와 관계를 모두 릴레이션이라는 표로 작성


관계형 데이터베이스의 Relation 구조 / 용어알기  

릴레이션은 데이터들을 표의 형태로 표현한 것

 튜플(Tuple)

- 릴레이션을 구성하는 각각의 행

- 튜플은 속성의 모임으로 구성

- 파일구조에서 레코드와 같은 의미

- 튜플의 수 = 카디널리티(Cardinality) = 기수 = 대응수


 속성(Attribute)

- 데이터베이스를 구성하는 가장 작은 논리적 단위

- 파일구조에서 데이터 항목 또는 데이터 필드와 같은 의미

- 개체의 특성을 기술

속성의 수 = 디그리(Degree) = 차수


 도메인(Domain)

- 하나의 속성이 취할 수 있는 같은 타입의 원자 값들의 집합


릴레이션의 특징 

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

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

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

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

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



▶ 079 관계형 데이터베이스의 제약조건 - 키(Key)



키(Key)

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

- 키의 종류 : 후보키, 기본키, 대체키, 슈퍼키, 외래키



1. 후보키(Candidate Key)

릴레이션을 구성하는 속성들 중 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분 집합, 즉 기본키로 사용할 수 있는 속성들

- 모든 릴레이션에는 반드시 하나 이상의 후보키가 존재

- 후보키는 릴레이션에 있는 모든 튜플에 대해서 유일성최소성을 만족시켜야 함

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

최소성(Minimality) : 모든 레코드를 유일하게 식별하는 데 꼭 필요한 속성으로만 구성되어야 함


ex) <학생> 릴레이션에서 '학번'이나 '주민번호'는 다른 레코드를 유일하게 구별할 수 있는 기본키로 사용할 수 있으며 후보키이다.



2. 기본키(Primary Key) 

후보키 중에서 특별히 선정된 주키, 중복된 값 가질 수 없음

기본키는 NULL 값을 가질 수 없음

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

- 기본키는 후보키의 성질을 갖음, 최소성과 유일성


ex) <학생> 릴레이션에서 '학번'이나 '주민번호'가 기본키가 될 수 있고, <수강> 릴레이션에선느 '학번'+'과목명'의 조합이 기본키이다.



3. 대체키(Alternate Key) 

후보키가 둘 이상일 때 기본키를 제외한 나머지 


ex) <학생> 릴레이션에서 '학번'을 기본키로 정의하면 '주민번호'는 대체키가 된다.



4. 슈퍼키(Super Key) 

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

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

- 유일성은 만족시키지만, 최소성은 만족시키지 못함


ex) <학생> 릴레이션에서 '학번', '주민번호', '학번'+'주민번호', '주민번호'+'성명', '학번'+'주민번호'+'성명' 등으로 슈퍼키를 구성할 수 있다.



5. 외래키(Foreign Key)

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

- 참조되는 릴레이션의 기본키와 대응되어 릴레이션 간에 참조 관계를 표현하는데 중요한 도구


ex) <수강> 릴레이션이 <학번> 릴레이션을 참조하고 있으므로 <학생> 릴레이션의 '학번'은 기본키이고, <수강> 릴레이션의 '학번'은 외래키이다.



▶ 080 관계형 데이터베이스의 제약 조건 - 무결성



무결성

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

- 무결성의 종류 : 개체 무결성, 도메인 무결성, 참조 무결성, 사용자 정의 무결성



1. 개체 무결성(Entity Integrity) / 중요  

기본키를 구성하는 어떤 속성도 NULL 값이나 중복 값을 가질 수 없다는 규정



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

주어진 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정


ex) <수강>릴레이션의 '과목명' 속성에는 영어, 수학, 컴퓨터, 미술, 음악 5가지만 입력되도록 유효값이 지정된 경우 반드시 해당 값만 입력해야 함



3. 참조 무결성(Referential Integrity) / 중요  

외래키 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일해야 함. 즉 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다는 규정



4. 사용자 정의 무결성

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



데이터 무결성 강화

데이터 무결성은 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화 할 수 있음

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

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

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



▶ 081 관계대수 및 관계해석



관계해석

코드가 수학의 Predicate Calculus에 기반을 두고 관계 데이터베이스를 위해 제안, 관계 데이터의 연산을 표현하는 방법

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

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

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



관계대수 

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

- 순수 관계 연산자 : Select, Project, Join, Division

- 일반 집합 연산자 : UNION(합집합), INTERSECTION(교집합), DIFFERENCE(차집합), CARTESIAN PRODUCT(교차곱)



1. Select

조건에 맞는 튜플,행을 선택해 새로운 릴레이션을 만드는 연산 

수평 연산이라고도 함

- 표기형식 : σ조건(Relation 명칭


- 조건에는 =, ≠, <, >, ≤, ≥, ∧(and), ∨(or) 등 사용



ex) σ평균90(성적<성적릴레이션에서 평균이 90점 이상인 튜플들을 검색하시오




2. Project

조건에 맞는 속성, 열을 선택해 새로운 릴레이션을 만드는 연산 

수직 연산이라고도 함

- 중복이 발생하면 중복이 제거 됨

- 표기형식 : 속성명칭(Relation 명칭)



ex) 이름, 평균(성적<성적릴레이션에서 '이름'과 '평균' 속성을 추출하시오











3. Join

공통 속성을 중심으로 두개의 릴레이션을 하나로 합치는 연산

- Join의 결과로 만들어진 릴레이션의 차수 = 조인된 두 릴레이션의 차수 합

- Join은 Cartesian Product(교차곱)을 수행한 다음 Select를 수행한 것과 같음

- 표기형식 : 키 속성 r 키 속성s S



ex) 성적 No=No 학적부 : <성적> 릴레이션과 <학적부> 릴레이션을 'No'속성을 기준으로 합치시오.



 자연 조인(Natural Join)

이중 중복된 속성을 제거해 같은 속성을 한 번만 표기하는 방법



4. Division

⊃ S인 두 릴레이션이 있을 때, R의 속성이 S의 속성의 값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 연산

표기형식 : R[속성r ÷ 속성s]S



ex) 입자[구입품 코드 ÷ 생산품 코드]생산품의 결과


ex) 입자[구입품 코드 ÷ 이름, 생산품 코드]생산품2의 결과



5. 일반 집합 연산자

합집합() : 두 릴레이션의 튜플의 합집합

교집합() : 두 릴레이션의 튜플의 교집합

차집합(–) : 두 릴레이션의 튜플의 차집합

교차곱(×) : 두 릴레이션의 튜플들의 순서쌍/ 차수 = 두 릴레이션의 차수를 더한 값/ 카디널리티 = 두 릴레이션의 카디널리티를 곱한 값 

 

ex) 이름(사원∪ 이름(직원) : <사원> 릴레이션과 <직원> 릴레이션에서 '이름'을 추출한 것의 합집합을 구한다.



ex) 이름(사원)  이름(직원) : <사원> 릴레이션과 <직원> 릴레이션에서 '이름'을 추출한 것의 교집합을 구한다.



ex) (사원)  – 이름(직원) : <사원> 릴레이션과 <직원> 릴레이션에서 '이름'을 추출한 것의 차집합을 구한다.



ex) 이름(사원) × 이름(직원) : <사원> 릴레이션과 <직원> 릴레이션에서 '이름'을 추출한 것의 교차곱을 구한다.




반응형