우선 필요한 용어들을 알아보자
-
데이터 모델이란
물리적 혹은 추상적으로 존재하는 현실세계를 단순화되고 정형화된 형태로 표현하는 하나의 방식 또는 규범을 말한다.
-> 즉, 컴퓨터에 넣기 위해 현실의 것들을 바꾸어서 집어넣은 것을 말한다. (컴퓨터가 잘 알아들을 수 있도록)
-
관계형 데이터 모델 (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
'컴퓨터(Computer Science) > 데이터베이스, DB, DataBase' 카테고리의 다른 글
SQL(Structured Query Language) + 보충내용(NULL처리, 중첩질의, 뷰(VIEW)) (0) | 2020.12.12 |
---|---|
SQL(Structured Query Language)이란? (0) | 2020.12.12 |
데이터베이스에서의 키(Key) (0) | 2020.12.11 |
파일과 데이터베이스 -> DBMS를 쓰는 이유 (0) | 2020.09.08 |
데이터와 데이터베이스 (0) | 2020.09.08 |