관계형 데이터 모델(Relational Data Model)
가장 널리 사용되는 데이터 모델로, 2차원적인 표(Table)을 이용해서 데이터 상호 관걔를 정의하는 DB구조를 말한다.
특징
- 파일 구조처럼 구성한 테이블들을 하나의 DB로 묶어서 테이블 내에 있는 속성들 간의 관계(Relationship)을 설정하거나 테이블 간의 관계를 설정하여 이용
- 기본키(Primary Key)와 이를 참조하는 왜래키(Foreign Key)로 데이터 간의 관계 표현
- 계층 모델과 망 모델의 복잡한 구조를 단순화 시킨 모델
- 1:1, 1:N, N:M 관계 자유롭게 표현
- 대표적으로 SQL
관계형 데이터 모델의 구성
위 모델에서 '고객' 과 '주문서'는 개체 테이블, '주문' 은 관계로 만들어진 테이블이다.
데이터가 빠져있다고 생각하면 쉽다.
데이터 모델에 대해 알아보기
관계형 데이터 베이스의 구조
1. 개요
- 1970년 IBM에 근무하던 코드(E. F. Codd)에 의해 처음 제안
- 테이블에 데이터를 직관적이고 간단하게 표현하는 방법인 관계형 모델을 기반으로 한다.
- 관계형 데이터베이스를 구성하는 개체(Entitiy)나 관계(Relationship)를 모두 릴레이션(Relation)이라는 표(Table)로 표현하였다.
- 개체를 표현하는 개체 릴레이션, 관계를 나타내는 관계 릴레이션으로 구분할 수 있다.
장점 : 간결하고 보기 편리하며, 다른 데이터베이스로의 변환 용이
단점 : 성능 다소 떨어진다.
2. 관계형 데이터베이스의 Relation 구조
데이터들을 테이블 형태로 나타낸것으로 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성된다.
튜플(Tuple)
- 릴레이션을 구성하는 각각의 행으로, 속성의 모임으로 구성된다.
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티(Cardinality) 또는 기수, 대응수라고한다
속성(Attribute)
- 데이터베이스를 구성하는 가장 작은 단위로, 개체의 특성을 기술
- 파일 구조에서 데이터 항목 또는 데이터 필드에 해당
- 속성의 수를 디그리(Degree) 또는 차수라고 한다
도메인(Domain)
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합. 학년 속성이라면 그 값들의 집합
- 실제 애트리뷰트 값이 나타날 때 그 값의 합법여부를 시스템이 검사하는데도 이용가능
3. 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없고, 튜플들은 순서가 없다.
- 튜플들의 삽입, 삭제 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션을 구성하는 튜플을 유일하게 식별 위해 속성들의 부분집합을 키(Key) 로 설정한다. 예) '학번' 이나 '이름' 을 키로 두어 튜플들을 구분 가능
- 릴레이션 스키마를 구성하는 속성들 간 순서는 중요하지 않음
- 속성 명칭은 유일해야 하지만, 속성을 구성하는 값은 동일할 수 있다.
- 속성 값은 더이상 논리적으로 쪼갤 수 없는 원자값 만 저장 예) '학년' 에 저장된 1, 3, 4 등은 더이상 쪼갤 수 없음
관계형 데이터베이스의 제약조건
제약 조건이란 데이터베이스에 저장되는 데이터의 정확성을 보장하기 위해서 키(Key)를 이용하여 입력되는 데이터에 제한을 주는것으로, 개체 무결성 제약, 참조 무결성 제약 등이 있다.
1. 키(Key)
튜플들을 서로 구분할 수 있는 기준이 되는 애트리뷰트
후보키(Candidate Key)
릴레이션 구성 속성 중 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합, 즉 기본키로 사용할 수 있는 속성들
- 모든 릴레이션에는 반드시 하나 이상의 후보키 있어야 함
- 모든 튜플에 대해 유일성과 최소성 만족 해야함
유일성(Unique) : 하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 있어야 함
최소성(Minimality) : 모든 레코드들을 유일하게 식별하는데 꼭 필요한 속성으로만 구성
기본키(Primary Key)
- 후보키 중 특별히 선정된 키로 중복값 가질 수 없음
- 특정 튜플을 유일하게 구별할 수 있는 속성
- 기본키는 후보키의 성질을 갖는다.
- NULL 값 가질 수 없다.
예) '학번' 이나 '주민 번호' 가 기본키가 될 수 있고, <수강> 릴레이션 에서는 두 키를 조합해야 기본키가 될 수있다.
대체키(Alternate Key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미
- 보조키 라고도 함
슈퍼키(Super Key)
한 릴레이션 내에 있는 속성들의 집합으로 구성된 키로서 릴레이션을 구성하는 모든 튜플들 중 슈퍼키로 구성된 속성의집합과 동일한 값은 나타나지 않는다.
- 유일성은 만족, 최소성은 불만족
왜래키(Foreign Key)
다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되었을 때의 속성 A를 외래키라고 한다.
- 외래키로 지정되면 참조 릴레이션의 기본키에 없는값은 입력 불가
2. 무결성(Integrity)
- 데이터베이스에 저장된 값과 그것이 표현하는 현실 세계의 실제 값이 일치하는 정확성
- 애플리케이션, 데이터베이스 트리거, 제약 조건 이용하여 강화 가능
개체 무결성(Entity Integrity, 실체 무결성)
기본 테이블의 기본키를 구성하는 어떤 속성도 Null 이나 중복값을 가질 수 없다는 규정
도메인 무결성(Domain Integrity, 영역 무결성)
주어진 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정
참조 무결성(Referential Integrity)
왜래키 값은 Null이거나 참조 릴레이션의 기본키 값과 동일해야 한다.
사용자 정의 무결성(User-Defined Integrity)
속성 값들이 사용자가 정의한 제약 조건에 만족해야한다는 규정
관계대수 및 관계해석
1. 관계대수 개요
관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가 기술하는 절차적인 언어
- 연산자가 릴레이션, 결과도 릴레이션
- 순수 관계 연산자 : Select, Project, Join, Division
- 일반 집합 연산자 : UNION(합집합), INTERSECTION(교집합), DIFFERENCE(차집합), CARTESIAN PRODUCT(교차곱)
2. 순수 관계 연산자
Select
선택 조건을 만족하는 튜플의 부분집합 구하여 새로운 릴레이션 만듦.
- 예시에서는 Employee 릴레이션에서 DNO가 3인 튜플 선택
Project
속성 리스트(Attribute List)에 제시된 속성 값만을 추출하여 새로운 릴레이션 만드는 연산.
- 예시에서는 EmpName, Salary 속성 값만을 추출
Join
공통 속성을 중심으로 두 개의 릴레이션을 하나로 합침
- Join 결과로 만들어진 릴레이션의 차수는 두 릴레이션의 차수를 합한 것 과 같다
- Join 결과는 Cartesian Product 를 수행한 다음 Select 를 수행한 것과 같다.
- 예시에서는 DNO 와 DeptNo 가 같은것을 기준으로 합침.
- Natural Join 은 중복되는 속성을 제거한 것
Division
릴레이션 R, S 가 있을 때 R의 속성이 S속성 값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 연산이다.
- 표기형식 : R[속성r % 속성s]S
- r은 릴레이션 R의 속성(attribute), s 는 S의 속성
3. 일반 집합 연산자
수학적 집합 이론에서 사용하는 연산자로서 릴레이션 연산에도 그대로 적용 가능
- 합집합, 교집합, 차집합처리를 위해서는 합병조건 만족해야함
합병 조건 : 두 릴레이션 속성 수 같고, 대응되는 속성별 도메인이 같아야함. 속성이름은 같지 않아도 됨
연산자 | 기능 및 수학적 표현 | 카디널리티(Cardinality) |
합집합 UNION ∪ |
두 릴레이션에 존재하는 튜플의 합집합을 구하되, 결과로 생성된 릴레이션에서 중복되는 튜플은 제거하는 연산 - R ∪ S = { t | t ∈ R ∨ t ∈ S} - t는 릴레이션 R or S 에 존재하는 tuple |
합집합의 카디널리티는 두 릴레이션 카디널리티의 합보다 작음 |
교집합 INTERSECTION ∩ |
두 릴레이션에 존재하는 튜플의 교집합을 구하는 연산 - R ∩ S = {t | t ∈ R ∧ t ∈ S} - t는 R , S 동시 존재하는 tuple |
교집합 카디널리티는 두 집합중 카디널리티가 적은 릴레이션 카디널리티보다 크지 않음 |
차집합 DIFFERENCE - |
두 릴레이션에 존재하는 튜플의 차집합을 구하는 연산 - R - S = {t | t ∈ R ∧ ∉ S} - t는 R에는 존재, S에는 없음 |
릴레이션 R의 카디널리티보다 크지않다. |
교차곱 CARTESIAN PRODUCT x |
두 릴레이션에 있는 튜플들의 순서쌍 구하는 연산 - R x S = {r x s | r ∈ R ∧ s∈S } r은 R에 존재하는 튜플, s는 S에 존재하는 튜플 |
교차곱의 디그리는 두 릴레이션 디그리를 더한것과 같다 카디널리티는 두릴레이션 카디널리티를 곱한것과 같다 |
4. 관계해석(Releational Calculus)
관계 데이터 모델의 제안자인 코드(E. F. Codd)가 수학의 Predicate Calculus(술어 해석)에 기반을 두고 관계 데이터베이스를 위해 제안
- 원하는 정보 정의할 때는 계산 수식 사용
- 원하는 정보가 무엇이라는 것만 정의하는 비 절차적 특성
- 튜플, 도메인 관계해석 이 있음
출처
자료 참고:
시나공 정보처리기사 필기 2022를 참고하여 작성되었습니다
[1] https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=pusna25&logNo=100103435148
[2] https://liveyourit.tistory.com/213
[3] https://blog.naver.com/PostView.naver?blogId=jinsol1&logNo=100024640209&parentCategoryNo=&categoryNo=8&viewDate=&isShowPopularPosts=false&from=postView
[4] https://blog.naver.com/PostView.naver?blogId=jinsol1&logNo=100024771465
'정보처리기사 > 3과목' 카테고리의 다른 글
[정보처리기사 필기] 데이터베이스 저장 공간 테이블, 컬럼, 테이블 스페이스 개념 (0) | 2022.02.17 |
---|---|
[정보처리기사 필기] 정규화(Normalization) 와 반정규화(Denormalization) (0) | 2022.02.16 |
[정보처리기사 필기] E-R(개체-관계) 모델이란? (0) | 2022.02.16 |
[정보처리기사 필기] 데이터 모델 (0) | 2022.02.15 |
[정보처리기사 필기] 논리 데이터베이스 설계 (0) | 2022.02.14 |
댓글