컴퓨터(Computer Science)/데이터베이스, DB, DataBase

관계형 데이터베이스, Relation Database 란?

게임이 더 좋아 2020. 12. 11. 22:59
반응형
728x170

우선 필요한 용어들을 알아보자

 

  • 데이터 모델이란

 물리적 혹은 추상적으로 존재하는 현실세계를 단순화되고 정형화된 형태로 표현하는 하나의 방식 또는 규범을 말한다.

-> 즉, 컴퓨터에 넣기 위해 현실의 것들을 바꾸어서 집어넣은 것을 말한다. (컴퓨터가 잘 알아들을 수 있도록)

 

 

  • 관계형 데이터 모델 (Relational data model)이란

테이블 형식을 사용하여 데이터들을 정의하고 설명한 모델이다.

현실의 데이터를 누구나 직관적으로 이해할 수 잇는 형태로 보여줌 (like table)

**테이블을 Relation이라고 부름.

 

 

 

** Relation은 수학적으로 수학적으로 두 개 이상의 집합으로부터 각 집합을 구성하는 원소들의 순서쌍에 대한 집합을 의미 

(이산수학에서 배운다)

 

 

  • 테이블에 대한 개념

1. 속성(= 필드, 컬럼 [field, column])

행렬에서 열을 의미 세로를 의미한다.

 

2. 튜플(= 레코드, 행[record, row])

행렬에서 형을 의미 가로를 의미한다.

 

**가로 횡으로 외우면 뭔가 행렬인지 쉽게 외울 수 있다.

 

 

  • 도메인이란

입력 가능 값들의 범위를 말한다, 즉 필드가 가질 수 있는 모든 값들의 집합이다.

-> 원자값(atomic value)여야 한다.

** 원자 값이란 더 이상 분리되지 않는 값을 말한다.

 

  • NULL

특정 필드의 값을 알지 못하거나 아직 정해지지 않아 입력하지 못한 경우의 필드의 값

0과 공백문자와는 다르다. 

 

 

릴레이션을 그림으로 표현하자면

 

 


** 이제 테이블에 대해서 더 알아보자 (가볍게 읽어보기만 하자)

테이블 스키마와 차수라는 것이 있다.

딱 보면 뭘말하는지 알겠지? 그거면 된다.

 

**차수 = 필드의 수, column의 개수

 

테이블 인스턴스와 기수라는 말도 있다.

인스턴스란 컴퓨터 과학에서 참 많이 쓰는데 그냥 쉽게 "하나의 항목"이라고 생각하면 된다.

(데이터베이스에 한해서)

 

++기수 = 레코드의 수, row의 개수

 

 

위의 테이블에 대한 특성은 무엇이 있을까?

 

1. 중복된 레코드 존재 x

2. 레코드 간의 순서 존재 x

->임의로 만들 수 있긴함

3. 레코드 내에서 필드의 순서는 의미 x

-> 어차피 필드는 순서로 구분하는 것이 아님.

4. 모든 필드는 원자값을 가짐

 

 


진짜 관계형 데이터베이스에 대해서 알아보자 

개념은 다 배웠으니까 ㅎㅎ

 

관계형 데이터베이스에서는 관계 대수라는 것이 있다., Relational Algebra

 

또한 질의어라고 있다.(query language)

*SQL에서 QL이 맞다

 

삽입, 삭제, 수정, 검색 (IDUS)등의 연산에 필요한 언어이다.

 

바로 관계대수가 관계형 데이터베이스에서의 대표적 질의어가 된다.

 

관계 대수는 다음의 특징을 갖는다

  • 절차적언어

  • 수학에서의 수식구조와 유사

  • 피연산자(operand): table

  • 연산자(operator): 1. 단항 연산자 2. 이항 연산자

 

그 기능들에 대해서 하나씩 파보자

**** 연산자들의 조합은 충분히 가능함

EX 해당 row를 "선택"하여 특별한 컬럼만 "추출" 이 가능하다는 소리다.

 

 

1. Selection(선택)

릴레이션(테이블)에서 주어진 조건에 만족하는 row들을 선택하는 연산이다.

 

2. Project(추출)

*왜 Project가 추출인지는 영영사전을 봐야한다.릴레이션에서 해당 컬럼(column)만 추출하는 연산.

 

3. Join(병합이라고 할 수 있겠다)

2 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산.**밑에 나오는 카디션 프로덕트와는 다른 점이 있음-> 특정 조건을 만족하는 레코드만을 선택함

 

-조인의 종류얘네들은 예로 이해해야 편한다. 말로는 잘 안된다.

 

세타 조인 -> 저기 중복되어 있는 dept_id가 보인다.  중복과 상관없이 join해버린 것이다.동등 조인-> 세타 조인 중 비교 연산자가  " = " 인 조인임

자연 조인 -> 중복된 필드는 삭제된다.(하나만 남음)

외부 조인 -> 연산하려는 릴레이션에서 대응되는 컬럼이 없으면 결과 릴레이션에서 그냥 값들을  NULL로 채운다.(조인 조건에 만족되지 않는 레코드까지 검색 결과에 포함시키기 위한 방법임)

 

4. Rename(재명명)

테이블의 이름을 부여하거나 변경하는 연산

 

5. 집합연산

-합집합(Union): 2 개의 릴레이션에 속한 모든 row로 이루어짐.-차집합(Minus): 말 안해도 알겠지.. R-S면 R에는 속하지만 S에는 속하지 않는 것들로만 이루어진 것이다.-카디션 프로덕트(Cartesian product): 크기가 매우 커질수도 있는 연산으로 순서쌍 조합과 비슷하다.-교집합(Intersection) ->차집합을 이용해서 만듬 : 2 개의 릴레이션 중 동시에 속하는 row로만 이루어짐

 

**합집합, 교집합, 차집합 연산에서는 두 피연산자(relation)이 차수와 필드이름이 동일해야 한다.++도메인(domain)도 일치해야함.

 

6. Assignment(지정) 연산

복잡한 질의를 여러 개의 질의로 분리하거나 중간 결과에 이름을 부여한다.최종 질의를 결과에 이름을 부여한다.연산기호로 ->를 사용하곤 한다.EX

 

 

 

 

728x90
반응형
그리드형