관계모델(Relational Model)
관계 데이터 모델은 데이터베이스를 관계(relation)로 간주하는 것을 의미한다. 여기서 관계는 테이블(table)을 의미한다. 이는 실제세계를 매우 자연스럽게 변환한 것이다.
관계데이터 모델은 수학적표기를 사용한다. 수학적 표기를 도입함으로써 2가지 장점이 생긴다.
1. 개념이 명확해진다.
2. 수학적으로 계산이 가능해 증명이 가능해진다.
관계 데이터 모델에서 데이터 모델은 테이블의 집합이다. 이러한 테이블은 아래와 같은 구조를 가진다.
: 속성(attribute) (또는 도메인(domain), 필드(field))
Name | Manufacturer |
Hite | Jinro |
Cass | OB |
Name,Manufacturer은 Attributes(속성)이다.
그리고 각 행들은 튜플을 의미한다. (Hite,Jinro) ,(Cass,OB)
스키마를 정의 하면 Beers(Name, Mnufacturer)이다.
관계 스키마
- 관계 이름 (relation name)
- 속성과 속성의 타입 또는 순서
(e.g. Beers(name, manufacturere) 또는 Beers(name:string, manf:string)) - 키에 대한 정의
- 제약조건에 대한 정의
위의 예시에서 밑줄은 해당 속성이 Key라는 것을 의미한다.
관계데이터를 사용하는 이유
- 매우 simple한 모델이다.
- 수학적인 이유( 수학적표기를 사용함으로써 얻는 이점)
- 표현이 쉬움
- 물리적인 독립성을 보장해주기 때문
=> 이 모델을 사용하면 SQL이라는 표준화된 언어를 사용할 수 있다. 이는 내부적인 구현을 모르고도 어떤 DBMS에서든 같게 사용 할수 있게 해준다.
관계 대수
관계 대수의 기본 양식은 아래와 같다.
여기서 피연산자(Operands)와 연산자(Operator)는 각각 다음을 의미한다.
- 피연산자 : 관계(테이블)
- 연산자 : 관계 연산
- - 집합 연산 : 합집합, 교집합, 차집합
- 선택(Selection)
- 프로젝션(Projection)
- 조인(Join)
- 집합(Aggregate) : 테이블에 존재하는 튜플에 대한 통계를 내는 연산자이다..
이러한 연산의 대상은 튜플 하나가 아니라 테이블 전체임을 유의해야 한다.
선택(Selection)은 테이블에서 특정한 조건을 만족하는 것을 뽑아내는 연산입니다. 일반적으로 B+ 트리나 동적 해시로 구현이 되어 연산을 수행하나 최악은 선형 탐색이 될 수 있는 명령이다. 아래의 예는 Student에서 score가 3.5가 넘는 학생 데이터를 추출하기 위한 명령어이다.
프로젝션(Projection)은 테이블에서 속성(Attribute)에 해당하는 내용 전체를 뽑는 방법이다. 전체를 뽑기 때문에 탐색 또한 전체로 수행되게 된다. 예를 들어, 학생들의 Student에서 score가 3.5가 넘는 학생들의 name을 추출하기 위해서는 아래와 같은 명령을 써서 추출할 수 있다.
조인을 설명하기에 앞서 먼저 곱집합(Cartesian Product)이란?
- 곱집합은 임의의 두 관계 , 에 대해서 이를 하면, 만약 의 튜플이 개이고 의 튜플이 개인 경우에 곱집합에 의해 나오는 새로운 관계의 튜플 개수는
일반적으로 이 값들을 모두 사용하지 않는다. . 저 중에서 만약 공통된 속성이 있으면 그 속성을 묶어서 추출해서 사용한다. 이때 속성으로 묶어서 추출하는 것이 조인이다.
즉, 조인은 곱집합에서 특정 조건을 만족하는 것만 뽑는 기능을 의미한다.
예를 들어, 학생에 관계된 어떤 스키마가 Student(StudentName, AdvisorProfessorID, Department, Score)라고 하고, 교수에 관계된 스키마가 Professor, ProfessorID, Department)라고 하자. 여기서 AdvisorProfessorID와 ProfessorID는 겹쳐지는 속성입니다. 따라서, 이 값이 같은 튜플끼리 합치도록 아래의 명령어를 써 보겠다.
조인에는 두가지 조인이 있다.
1. 자연(Natural) 조인 - 위에서 나오듯이 공통된 속성에 대해서 조인하는 것
2. 세타(Theta) 조인 - 조건을 통해 조인하는 것( ex. A>B)
조인은 매우 많은 시간이 필요할 수 있다. 따라서 시간을 염두에 두고 수행하도록 한다.
다음의 조인의 예이다.
관계 대수를 이용해서 질의문(Query)를 할 수 있다. (ex. 지도교수의 학과가 컴공이고 학생 학점이 3.5 초과인 학생을 찾아주세요)
이런 질의에 대해서 연산자를 통해 데이터를 찾는 과정의 식이 관계식이다. 이러한 관계식을 이용함으로써 컴퓨터가 쉽게 계산할 수 있다.
관계식은 같은 뜻이여도 다르게 표현될 수 있다.
또는
이를 보고 동치(Equivalent) 라고 한다. 이러한 동치를 하는 이유는 더 효율적인 방법을 찾기 위함이고
비용예측을 통해서 확인이가능하다. 이는 질의 전처리기로 최적화가 된다.
제약조건
관계 제약조건
관계 연산에도 제약조건을 줄 수 있다.
키 제약조건
테이블에서 하나이상의 속성이 Key가 존재하고 이를 이용해 각각의 튜플을 식별할 수 있어야한다..
위는 ID는 같은데 dept가 다른 것은 존재하지 않는다라는 뜻이다 -> 키 제약
즉 키가 같은데 속성이 다를 경우는 없음을 뜻한다.
여기서 아래 식이 사용되는데 아래 연산자는 Student라는 이름의 테이블의 이름을 Stud1으로 변경하겠다는 의미이다.
'Computer Science > 데이터베이스' 카테고리의 다른 글
관계데이터모델4 - More Relation Operation (0) | 2022.12.15 |
---|---|
관계 데이터 모델3- UML to Relational Model (0) | 2022.10.13 |
UML 클래스 다이어그램3 - Weak Entity Sets, E-R Model (0) | 2022.10.10 |
UML 클래스 다이어그램2 - 설계 예시, 제약 사항 (0) | 2022.10.10 |
UML 클래스 다이어그램1 - 정의, 핵심 요소 (0) | 2022.10.09 |