[백엔드를 위한 DB] Relational Database 주요 용어 개념 정리

코딩하는 꽁지·2023년 11월 14일
post-thumbnail

유튜브 쉬운코드 님의 관계형 데이터베이스(relational database)개념과 relation, primary key(기본키), foreign key(외래키), constraints를 알아봅시다 영상을 보고 정리한 글입니다.

Relational Data Model

Relation

Relation in mathematics

Relation is a subset of the cartesian product of two sets.
Each pair (a, b) is a tuple of relation.

Relation in Relational Data Model

Relational Data Model에서 각각의 Set은 도메인을 의미한다.
도메인(Domain)은 값들의 집합을 말한다.

예) STUDENT Relation의 도메인 정의하기

  • students_id : 학번들의 집합, 7자리 Integer
  • human_namse : 이름의 집합, 문자열
  • university_grades : 대학교 학년 집합, {1, 2, 3, 4}
  • major_names : 대학교에서 배우는 전공 이름 집합, 문자열
  • phone_numbers : 핸드폰 번호 집합, 10자리 Integer

어트리뷰트(Attribute)

각각의 도메인이 릴레이션에서 수행하는 역할의 이름을 말한다. 예를 들어, students_id 도메인은 STUDENT 릴레이션에서 id 역할을 수행한다고 보면 된다. 따라서 하나의 릴레이션 안에서 어트리뷰트의 이름은 중복이 될 수 없다.

각 속성(어트리뷰트)들이 가질 수 있는 값의 범위를 도메인이라 생각하면 쉽다. 어트리뷰트는 도메인을 벗어난 값을 가질 수 없기 때문이다.

참고로, 어트리뷰트는 atomic value만 가져야한다. 즉, 하나의 어트리뷰트에는 더이상 분리될 수 없는 하나의 값만 존재해야 한다.

릴레이션과 테이블

위 그림에서도 볼 수 있듯이 릴레이션은 보통 테이블로 표현된다.

테이블의 각 행은 tuple이라고 한다. tuple은 어트리뷰트 하나하나의 값들로 이루어진 리스트이다. 그렇기 때문에 릴레이션은 튜플들의 집합(set of tuples)라고도 하며, 이는 relation state라고도 한다.

릴레이션은 튜플들의 집합이기 때문에 집합의 성질을 따른다. 중복된 튜플을 가질 수 없으며, 각 튜플들 사이에 순서가 존재하지 않는다. (참고로 어트리뷰트들의 순서도 중요하지 않다.)

Relation Schema

릴레이션의 구조를 나타낸다.
예) STUDENT(id, name, grade, major, phone_num, emer_phone_num)

Relational Database

Relational Data Model에 기반하여 구조화된 데이터베이스를 의미한다. 따라서 여러 개의 relation들로 구성된다.

RDB Schema

Relation schemas + Integrity constraints


Relational DB에서 Key 종류

Super Key

릴레이션에서 각각의 튜플들을 unique하게 식별할 수 있는 어트리뷰트들의 집합을 말한다.

PLAYER(id, name, team_id, back_num, birth_date)라는 릴레이션에서 Super Key는 {id, name, team_id, back_num, birth_date}, {id, name}, {name, team_id, back_num} 등이 될 수 있다.

Candidate Key

Super Key 중에서 어느 하나의 어트리뷰트를 제거했을 때 더이상 튜플들을 unique하게 식별할 수 없는 key를 말한다.

PLAYER 릴레이션에서 {id}, {team_id, back_num}이 해당된다.

Primary Key

Candidate Key 중에서 릴레이션에서 튜플들을 식별하기 위해 선택된 Key를 말한다. 보통 어트리뷰트 수가 적은 것을 선택한다.

PLAYER 릴레이션에서 {id}가 될 수 있다.

Unique Key

Candidate Key 중에서 PK가 되지 못 한 Key들을 말한다. Alternate Key라고도 한다.

Foreign Key

다른 릴레이션의 PK를 참조하고 있는 어트리뷰트 집합을 말한다.


Relational DB에서 Constraints

Constraints

Relational Database의 릴레이션들이 언제나 지켜야 하는 제약사항을 의미한다.

Implicit constraints

릴레이션은 중복되는 튜플을 가질 수 없다.
릴레이션 내에서 어트리뷰트의 이름은 중복되어선 안 된다.

Schema-based constraints

DDL을 통해 스키마에 직접 명시할 수 있는 제약사항을 말한다. Explicit constraints라고도 한다.

domain constraints

어트리뷰트의 값은 해당하는 도메인에 속한 값이어야 한다.
예를 들어, STUDENT 릴레이션의 grade 어트리뷰트는 university_grades 도메인에 해당하기 때문에 {1, 2, 3, 4} 중에서만 값을 가질 수 있다.

key constraints

PK에 해당하는 값들은 중복되어서는 안 된다.
예를 들어, STUDENT 릴레이션의 PK가 id 어트리뷰트라고 한다면 그 어떤 튜플도 동일한 id 어트리뷰트 값을 가질 수 없다.

NULL value constraints

NOT NULL 속성을 가지는 어트리뷰트는 NULL 값을 가질 수 없다.

entity integrity constraints

PK로 지정된 어트리뷰트는 NULL 값을 가질 수 없다.
PK는 각각의 튜플을 unique하게 식별하기 위해 존재하는데 NULL 값이 포함된다면 더이상 unique하게 식별할 수 없게 되기 때문이다.

referential integrity constraints

FK와 PK의 도메인이 같아야 하며 PK에 없는 값은 FK에 존재할 수 없다.

profile
프로그래밍으로 온 세상을 떠들썩 하게~🪼

0개의 댓글