CS (Computer Science)

[개발 공부 99일차] DB 개론 | 관계형 데이터 모델

MOLLY_ 2024. 9. 21. 20:37
728x90

< 목차 >

0. TL;DR

1. 릴레이션

2. 관계 데이터 모델 (Relation Data Model)

3. 무결성 제약 조건

 

 

0. TL;DR

  1. 릴레이션: 행과 열로 구성된 ‘테이블’
  2. 스키마: 테이블(릴레이션)이 무엇을 가지고 있는지를 나타내는 것
  3. 인스턴스: 릴레이션 스키마에 저장된 ‘데이터의 집합’
  4. 관계 데이터 모델: 데이터를 2차원 테이블 형태인 릴레이션으로 표현
  5. 데이터 무결성(integrity): 데이터의 일관성과 정확성을 지키는 것

 

 

1. 릴레이션

: 행과 열로 구성된 ‘테이블’

데이터를 표(Table) 형태로 표현한 것으로, 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성된다.

 

[출처] liveyourit.tistory.com/213

 

용어 한글 용어
relation 릴레이션 테이블
relational data model 관계 데이터 모델
relational database 관계 데이터베이스
relational algebra 관계대수
relationship 테이블과의 관계

 

용어를 잘 모르면 나중에 혼동할 수 있으니 새로운 용어가 나올 때마다 제대로 알아두자.

IT를 잘하기 위해서는 용어가 중요하다고 하시니 용어를 정확히 알고 넘어가자.

 

 

릴레이션은 수학의 ‘집합’에서 나온 개념이다.

예를 한 번 봐보자. 아래와 같은 데이터가 있다고 가정하자.

강의 번호 강의명 강사명 강의 가격
1 데이터베이스 김디비 10000
2 Java 김자바 7000
3 SQL 이큐엘 8000
4 Python 파이썬 9000

 

  1. 각 집합은 아래처럼 원소로 구성됨
    • 강의 번호 = {1, 2, 3, 4}
    • 강사명 = {김디비, 김자바, 이큐엘, 파이썬}
  2. 첫 번째 행은 4개의 집합에서 각 원소 1개씩 선택해 이뤄지며, 관계(= relationship)를 맺고 있음
  3. 강의 릴레이션은 이러한 관계 4개가 모여 생성됐음

 

 

(1) 릴레이션 스키마

: 테이블(릴레이션)이 무엇을 가지고 있는지를 나타내는 것

즉, 관계 데이터베이스의 릴레이션 구성과 어떤 정보를 담고 있는지에 대한 기본 구조를 정의한다.

 

  • 첫 행헤더이며 각 데이터의 특징을 나타내는 속성, 데이터 타입 등의 정보를 갖고 있음
  • 속성(attribute)이라고 하며, 속성은 각각의 이름을 갖고 있음
  • 도메인속성의 값이 무엇인지 정의
  • 차수릴레이션이 몇 개의 속성을 가지는지 나타냄

 

 

(2) 릴레이션 인스턴스

: 릴레이션 스키마에 저장된 ‘데이터의 집합’

즉, 데이터의 집합은 ‘하나의 행’을 뜻하며 릴레이션에서는 한 행을 튜플(tuple)이라고 부른다.

 

튜플에 대해 잠시 정리해 보자.

  • 튜플은 인스턴스의 각 행을 나타냄
  • 튜플의 속성값은 스키마에서 정의한 도메인 값으로 구성됨
  • 튜플 속성의 개수는 스키마의 차수와 동일함
  • 릴레이션 내의 모든 튜플은 서로 중복되지 않아야 함
  • 릴레이션에 저장된 튜플의 수를 카디널리티(cardinality)라고 함

 

상황에 따라서 용어를 사용하는 게 다른데, 표를 통해서 명확히 알아보자.

릴레이션 용어 일반적인 통용 용어 파일 시스템
릴레이션(relation) 테이블 (table) 파일 (file)
스키마 (schema) 내포 (intention) 헤더 (header)
인스턴스 (instance) 외연 (extension) 데이터 (data)
튜플 (tuple) 행 (row) 레코드 (record)
속성 (attribute) 열 (column) 필드 (field)

 

위 용어를 현업에서는 혼용해서 사용 중이라고 한다.

 

 

(3) 릴레이션 특징

  • 속성과 튜플은 단일 값으로 구성
    : [예시] 집합 = {운동, 독서, 음악}의 경우 {운동}, {독서}와 같이 단일 값으로 구성해야 함
  • 속성은 서로 다른 이름으로 구성
  • 한 속성의 값은 모두 같은 도메인으로 구성
    : [예시] 이름 column 인데 생년월일이 들어오면 안 됨
  • 속성과 튜플의 순서는 상관 없음
    : 순서가 달라도 릴레이션 스키마는 동일하기 때문

 

 

2. 관계 데이터 모델 (Relation Data Model)

: 데이터를 2차원 테이블 형태인 릴레이션으로 표현

 

인덱스로 2차원 배열의 요소에 접근

 

  • 릴레이션에 대한 제약조건과 관계 연산을 위한 관계대수를 정의
  • 제약조건은 각 릴레이션에 저장된 데이터 값이 가져야 하는 제약
  • 관계 데이터 모델을 시스템으로 구현한 것이 관계 데이터베이스

 

 

릴레이션 key 종류

키(key): 유일하게 식별한다는 의미

  • key 한 개로는 1개의 요소만 열 수 있음
  • 관계 데이터베이스에서 key는 릴레이션에서 튜플을 식별할 때 사용
  • key는 릴레이션을 맺는 데 사용

 

 

(1) 슈퍼키

: 튜플을 유일하게 식별할 수 있는 하나의 속성 or 속성 집합

 

  • 튜플을 유일하게 식별할 수 있는 값이면 모두 슈퍼키 가능
  • 슈퍼키는 포함하지 않아도 되는 속성을 포함할 수 있음
    • 튜플을 식별할 수 있는 최소한의 속성 집합
    • 키를 구성하는 속성이 많으면 관계 표현이 복잡해짐

 

 

(2) 후보키

: 튜플을 유일하게 식별할 수 있는 속성의 ‘최소’ 집합

 

  • 효율성 측면에서 매우 중요
  • 슈퍼키와 후보키의 차이
    : 슈퍼키는 유일한 속성이 아니어서 굳이 없어도 되는 속성을 포함해도 괜찮다면, 후보키는 절대 포함할 수 없음

 

 

(3) 기본키 (primary key)

: 여러 후보키 중 하나를 선정해 대표로 삼는 키

 

  • 후보키가 1개라면 그 키를 사용하고, 여러 개라면 릴레이션 특성을 반영해 하나를 선택
  • 기본키 제약조건
    1. 튜플을 식별할 수 있는 고유한 값을 가져야 함
    2. NULL 값을 허용하지 않음
    3. key 값의 변동이 발생하지 않아야 함

 

 

(4) 대리키 (surrogate key)

: 기본키가 보안을 요하거나 여러 개의 속성으로 구성돼 복잡하거나 마땅한 기본키가 없을 때, 일련번호 같은 가상의 속성을 만들어 기본 키로 사용

 

소프트웨어에서 임의로 생성하는 값으로, 사용자가 직관적으로 그 값의 의미를 알 수 없다. UUID와 비슷한 개념으로 보인다.

 

 

(5) 대체키 (alternate key)

: 기본키로 선정되지 않은 후보키

 

 

(6) 외래키 (foreign key)

: 다른 릴레이션의 기본키를 참조하는 속성

 

  • 관계 데이터 모델의 특징인 릴레이션 간의 관계(relationship)를 표현
  • 외래키가 성립하기 위해선 참조와 참조되는 양쪽 릴레이션의 도메인이 서로 동일해야 함
  • 릴레이션의 기본키 값이 변경되면 참조하는 외래키 값도 모두 변경
    ⇒ 이런 특징을 ‘외래키 제약조건’이라고 함
  • 다른 릴레이션이 아닌 자기 자신을 참조하는 것도 가능

 

 

3. 무결성 제약조건

데이터 무결성(integrity): 데이터의 일관성과 정확성을 지키는 것

 

  • DB에 저장된 데이터는 결함이 없어야 하고 질의에 대해 신뢰성 있는 답을 제공해야 함
  • DB는 일관성을 유지하고 중복을 제거하는 등 데이터의 신뢰도를 유지해야 함
  • 데이터의 삽입, 수정, 삭제 시 여러 가지 제약조건을 따름
  • 무결성 제약조건은 튜플에 삽입 가능한 데이터 값을 제한하는 도메인 무결성과 모델의 관계 표현을 위한 개체 무결성, 참조 무결성이 있음

 

 

(1) 도메인 무결성 제약조건 | 도메인 제약

: 릴레이션 내의 튜플의 속성이 도메인에 지정된 값만 허용하는 조건

 

  • 도메인 무결성 제약조건은 속성과 관련된 무결성
    1. 데이터 형식 (type)
    2. null, not null
    3. 기본값 (default)
    4. 체크 (check)
  • 프로그래밍에서 변수형 선언과 비슷함

 

 

(2) 개체 무결성 제약조건 | 기본키 제약

  • 기본키를 지정하고 그에 따른 무결성 원칙과 null을 가질 수 없음
  • 릴레이션 내에서 오직 1개의 값만 가질 수 있음

 

 

(3) 참조 무결성 제약조건 | 외래키 제약

: 릴레이션 간 참조 관계를 선언하는 제약조건

 

  • 참조되는 키들은 도메인이 동일해야 함
  • 자식 릴레이션은 부모 릴레이션의 제약을 받음
    1. RESTRICTED: 자식에서 참조하고 있을 경우, 부모의 삭제 불가
    2. CASCADE: 자식 릴레이션의 관련 튜플을 같이 삭제
    3. DEFAULT: 자식 릴레이션의 관련 튜플을 미리 설정해 둔 값으로 변경
    4. NULL: 자식 릴레이션의 관련 튜플을 NULL 값으로 설정 (NULL 허용 경우)

 

복습하면서 용어에 대한 개념을 정확히 해야 이후에 나오는 개념과 적용을 이해할 수 있다. 용어를 주의깊게 보고 익히도록 하자.

 

 

728x90