Relational DataBase - 1. Intro

Ui Jin·2022년 3월 29일
1

Data Base

목록 보기
1/11

Relational Database

1. 정의

Data Base는 Data를 어떤 것으로 보느냐에 따라서 다양한 종류의 모델로 나뉠 수 있다.

그 중에서 Relation model은 데이터를, 데이터간의 관계를 기술한 Table로 생각하는 방법이다.

위의 그림에서 각 행을 생각해보자. 각 행은 n개의 값을 가지는 Tuple 로 볼 수 있다.

이 때 각각의 n개의 원소들이 어떤 Relation를 표현하며 나열되었다고 볼 수 있고 Relation model은 이에 기반하고 있다.


2. 구조

1) Table Name

각 Table(=Relation)은 고유의 이름을 갖고 있다.

2) Tuple (Row)

  • N-Tuple
    Tuple이란 어떤 값들이 정해진 순서를 가지고 나열된 리스트를 의미한다.
    즉, n-Tuple이란 원소의 개수가 n개인 Tuple을 의미한다.

(Relation Instance: Table을 이루는 것은 이 N-Tuple들의 Set이다.
따라서, 이 Tuple들의 집합을 Relation Instance라고 한다.)

3) Attribute (Column)

  • Attribute
    Attribute는 Column 자체를 의미한다.

(위의 Table에서는 학번, 이름, 학년, 신장, 학과가 Attribute가 될 것이다.)


  • Domain
    Domain은 실제 Attribute에 입력이 허용되는 값의 집합을 의미한다.
    즉, Attribute의 type이라고 생각하자.

(유한 Domain: 만약 위의 Table에서 모든 학생은 1학년부터 6학년까지 있다고 주어졌다면 학년의 Domain은 1, 2, 3, 4, 5, 6이 된다.)
(무한 Domain: 만약 위의 Table에서 신장의 값은 100과 300사이의 모든 값이 허용된다고 하면 키의 Domain은 [0, 300]이 된다.)


  • Domain의 특징
    1. 모든 Attribute는 Domain을 가진다
    2. Atomic해야한다
      (그 값을 쪼개서 사용할 수 없어야 한다)
    3. 모든 Domain은 null을 허용한다.
      (null은 '값'이 아닌 '상태'라고 생각해야 한다.)

(Atomic하지않음: 만약 위의 Table에서 이름을 성과 이름으로 나누어 쓸 수 있다고 가정했다면 Atomic하지 않은 상태인 것이다.)
(Atomic함: 위와 반대로 성과 이름을 나눌 수 없다고 가정했다면 Atomic한 상태가 된다.)


3. Relation

이제 위에서 정의한 용어들을 가지고 Relation자체에 대해서 좀 더 알아보자. 다음은 Instructor라는 Table이다.

1) Relation의 정의

  • D1 x D2 x ... x Dn 의 부분 집합

    한 Table이 만약 n개의 Attribute를 가지고 있다고 하자.
    이 때, Relation이란 몇 N-Tuple들로 이루어진 집합이라고 정의할 수 있다.

(x, Catesian Product: x는 Catesian Product를 나타내는 연산기호로, 기호의 앞과 뒤의 두 집합에 대해 모든 조합을 구하는 연산기호이다.)

2) Relation Schema

먼저 Schema는 구조적인 것, 선언적인 것을 의미한다.

  • 정의
    해당 Table(=Relation)의 구조를 나타내는 표현

  • 표현
    • r(A1, A2, A3, ...) 로 표현한다.
    • r(R) 로 간단히 표현하는 경우도 있다.

(예시: r( ID, name, dept_name, salary ) )

3) Relation Instance

Schema와 다르게 Instance는 실제 어떤 값이 입력되어 있는지를 의미한다.

  • 정의
    해당 Table에 실제 어떤 값(n-Tuple)이 들어가 있는지를 나타내는 표현이다.

  • 표현
    • instructor의 Instance는 12개의 Tuple을 가지고 있다.

4. Key

어떤 Table(=Relation)을 조작할 때 각각의 Tuple들을 구별할 방법이 있어야 한다. 이 방법은 Key를 통해 구현할 수 있다.

1) Super Key

  • 정의
    Attribute의 부분 집합 중, 해당 Domain의 모든 값이 Unique하도록 하는 부분집합을 의미한다.

  • 예시
    • 위의 그림에서 ID는 Super Key이다.
    • 위의 그림에서 {ID, name}은 Super Key이다.
    • 위의 그림에서 name은 Super Key가 아니다.

(만약 해당 Table을 갖는 학교에 같은 이름의 교수는 절대로 받지 않는다는 특별한 규칙이 있다고 가정한다면, name도 Super Key가 될 수 있다.)

2) Candidate Key

  • 정의
    Super Key중에서 어떠한 부분 집합도 Super Key가 될 수 없을 때 해당 Key를 Candidate Key라고 한다.

  • 예시
    • 위의 그림에서 ID는 Candidate Key이다.
    • 위의 그림에서 dept_name은 Candidate Key이다.
    • 위의 그림에서 {ID, name}은 Candidate Key가 아니다.

3) Primary Key

  • 정의
    Candidate Key중에서 DB개발자가 Table안에서 튜플을 구별하기 위한 수단으로 선택한 Key를 Primary Key라고 한다.

  • 예시
    • 위 그림에서 ID를 student의 Primary Key로 선택할 수 있다.
    • 위 그림에서 dept_name을 department의 Primary Key로 선택할 수 있다.

(표기방법: 일반적으로 Relation Schema에서 다른 Attribute보다 Primary Key를 먼저 나열하고, 밑줄을 쳐서 표시한다.)
(선택기준: Primary Key는 그 값이 절대로 변하지 않거나 거의 변하지 않도록 선택해야 하도록 하자.)

4) Foreign Key

  • 정의
    Attribute의 값이 어떤 Table(=Relation)을 Reference하고 해당 Table에서 Primary Key로 사용될 경우 Foreign Key라고 한다.

(Referential integrity constraint: A의 한 Attriubute가 B를 참조할 경우 해당 Attribute에 등장하는 값은 반드시 B의 Attribute에서 적어도 하나의 Domain으로 출현해야 한다는 조건.)


  • 예시
    • 위의 그림의 student Table에서 dept_name은 Foreign Key로 선택할 수 있다.

profile
github로 이전 중... (https://uijinee.github.io/)

1개의 댓글

comment-user-thumbnail
2022년 4월 8일

잘 읽었습니다.

답글 달기

관련 채용 정보