Supplementary Materials

Database System Concepts (7th Edition)

  • 2. Introduction to the Relational Model

0. 데이터 모델

데이터 모델링

데이터 모델링

  • 실제 데이터를 컴퓨터의 데이터베이스로 옮기는 과정이다.
  • 데이터베이스 설계의 핵심이다.
  1. 개념적 데이터 모델링: 현실 세계에서 중요한 데이터를 추출해 개념적으로 표현한다.
  2. 논리적 데이터 모델링: 개념적 구조를 실제 데이터베이스의 논리적 구조로 변환한다.

데이터 모델

데이터 모델

  • 데이터 모델은 데이터의 구조와 의미를 표현하는 방법이다.

데이터 모델의 3요소

  1. 데이터 구조(data structure): 저장할 데이터의 타입과 관계
  2. 연산(operation): 데이터를 검색·삽입·삭제·수정하는 작업
  3. 제약조건(constraint): 올바른 데이터만 저장되도록 제한하는 규칙

개념적 데이터 모델

  • 사람이 현실 세계를 이해하기 쉽게 표현한다.
  • 예: ER(Entity-Relationship; 개체-관계) 모델 - 데이터베이스 설계에 주로 사용한다.

논리적 데이터 모델

  • 데이터베이스가 데이터를 저장하는 구조를 표현한다.
  • 예: 관계형, 계층형, 네트워크 데이터 모델

cf. 데이터 모델의 종류

1. 관계형 데이터 모델

관계형 데이터 모델 (Relational Model)

  • 데이터를 컬럼과 로우를 가진 2차원 테이블 형태로 표현한다.
  • 테이블 사이 관계를 외래 키로 연결한다.
  • 정형화된 데이터이다.
  • 현재 가장 널리 사용된다.
  • E. F. Codd가 1970년에 제안했다.

주요 목적은 다음과 같다.

  • 단순하고 이해하기 쉬운 모델 제공
  • 논리적 구조와 물리적 저장 구조를 분리해 데이터 독립성 향상
  • 레코드를 하나씩 처리하지 않고 집합 단위로 처리
  • 수학적 이론에 기반한 데이터베이스 제공

장점

  • 데이터 무결성 및 일관성
  • 표준화된 SQL 지원
  • 정교한 트랜잭션 관리 가능
  • 다양한 상용/오픈소스 생태계 존재

단점

  • 데이터 형식이 고정되어 스키마 변경이 번거롭고 유연성이 부족하다. (비정형 데이터를 다루기 어렵다.)
  • 대규모 분산 환경(Big Data)에 한계
  • 수평 확장(Scale-out)이 어렵다. (샤딩이 복잡하다.)

RDBMS 예시

  • PostgreSQL, MySQL, Oracle, Microsoft SQL Server, SQLite, MariaDB 등

스키마와 인스턴스

관계 모델일반 용어파일 시스템
스키마(Schema)구조, 내포헤더
인스턴스(Instance)현재 데이터, 외연데이터

릴레이션의 스키마(schema)

  • 릴레이션의 이름과 속성 구조

릴레이션의 인스턴스(instance)

  • 특정 시점에 실제로 저장된 튜플들의 집합
  • 무결성 제약조건은 존재할 수 없는 인스턴스들이 저장되는 것을 제한한다.

기본 구조

관계 모델일반 용어파일 시스템
릴레이션(Relation), 관계테이블(Table), 표, 행렬파일
속성, 애트리뷰트(Attribute)컬럼(Column), 열, 속성필드(Field)
튜플(Tuple)로우(Row), 행, 레코드레코드(Record)

릴레이션

  • 하나의 개체에 관한 데이터를 2차원 테이블의 구조로 저장한 것

속성과 차수

도메인 (Domain)

  • 속성에 허용되는 값의 집합이다.
  • 도메인의 값은 원자값이어야 한다.
  • 프로그래밍 언어의 데이터 타입과 비슷하다.
  • 같은 데이터 타입이라도 의미가 다르면 서로 다른 도메인일 수 있다.
  • 복합 속성이나 한 칸에 여러 값을 저장하는 다치 속성은 허용하지 않는다.

차수 (Degree)

  • 릴레이션의 속성의 수
  • 차수는 구조가 바뀌지 않는 한 거의 변하지 않는다.

튜플과 카디널리티

튜플

  • 각 행에서 정의된 모든 속성 값들의 집합

NULL (^)

  • NULL은 다음과 같은 상태를 의미하는 특수한 값이다.
    • 아직 알려지지 않은 값
    • 해당 사항이 없는 값
  • NULL은 숫자 0, 공백 문자, 빈 문자열과 다르다.

카디널리티 (Cardinality)

  • 릴레이션의 튜플의 수
  • 데이터가 하나도 없는 릴레이션은 카디널리티 0을 가질 수 있다.
  • 카디널리티는 데이터 삽입·삭제에 따라 자주 변한다.

릴레이션의 특성

관계형 모델의 릴레이션은 수학적으로 집합이므로 다음과 같은 특성을 갖는다.

속성의 특성

속성 이름의 고유성

  • 한 속성의 이름은 유일하다.
    • 하나의 릴레이션 안에서 속성들은 서로 다른 이름을 가져야 한다.

속성의 원자성

  • 각 속성은 더 이상 나눌 수 없는 원자값을 가진다.

속성의 무순서성

  • 속성의 순서는 의미가 없다.
    • 열의 순서를 바꾸어도 같은 릴레이션이다.

튜플의 특성

튜플의 무순서성

  • 튜플의 순서는 의미가 없다.
    • 행의 순서를 바꾸어도 같은 릴레이션이다.
    • 따라서 특정 순서가 필요하면 별도의 정렬 연산이 필요하다.

튜플의 유일성

  • 동일한 튜플이 중복되지 않는다.
    • 각 튜플을 고유하게 식별할 수 있어야 한다.

2. 릴레이션의 키

(Key)

  • 각 튜플을 고유하게 식별하기 위한 하나 이상의 속성 집합이다.

키의 성질

유일성 (Uniqueness)

  • 하나의 키 값으로 튜플 하나를 유일하게 식별해야 한다.

최소성 (Minimality)

  • 식별에 불필요한 속성이 포함되지 않는다.
  • 만약 하나의 속성을 제거하면 식별할 수 없다.

키의 종류

슈퍼키

슈퍼키 (Super Key)

  • 하나의 튜플을 유일하게 식별할 수 있는 속성의 집합이다.
  • 유일성을 만족하며, 최소성을 만족할 필요는 없다.

후보키

후보키 (Candidate Key)

  • 불필요한 속성을 포함하지 않는 슈퍼키이다.
  • 유일성과 최소성을 모두 만족한다.
  • 복합키(Composite Key): 두 개 이상의 속성으로 구성된 후보키이다.

기본키 (Primary Key)

  • 여러 후보 키 중 대표로 선택한 키이다.
  • 기본키 선정 기준
    • 값이 항상 고유한가?
    • NULL이 발생하지 않는가? (NOT NULL)
    • 값이 자주 변경되지 않는가?
    • 가능한 한 짧은 문자열이나 작은 정수인가?
    • 가능한 한 복합키가 아닌가?
  • 대리키(Surrogate Key): 자연스러운 기본키가 없는 경우, 레코드 번호와 같이 인위적인 키 속성을 릴레이션에 추가한 것이다.

대체키 (Alternate Key)

  • 후보키 중 기본키로 선택되지 않은 키이다.

외래키

외래키 (Foreign Key)

  • 다른 릴레이션의 기본키를 참조하는 속성이다.
  • 릴레이션 사이의 관계를 표현한다.
  • 참조 무결성을 보장해야 한다.

외래키는 다음 형태로 사용될 수 있다.

  • 다른 릴레이션의 기본키 참조
  • 같은 릴레이션의 기본키 참조
  • 복합 기본키의 구성요소

3. 무결성 제약조건

데이터 무결성 (Data Integrity)

  • 데이터가 정확하고 유효하며 일관된 상태를 유지하는 것을 말한다.
  • DBMS는 데이터가 갱신될 때 제약조건을 자동으로 검사한다.

도메인 무결성

도메인 무결성 제약조건

  • 속성은 정해진 도메인의 원자값만 가져야 한다.
  • SQL 관련 기능: 자료형, NOT NULL, DEFAULT, CHECK

엔터티 무결성

엔터티 무결성 제약조건

  • 기본 키의 어떤 속성도 NULL이 될 수 없다.
  • SQL 관련 기능: PRIMARY KEY

참조 무결성

참조 무결성 제약조건 (Referential Integrity Constraint)

  • 외래 키는 존재하는 기본 키를 참조해야 한다.
  • SQL 관련 기능: FOREIGN KEY

참조 무결성의 성립

  1. 참조되는 릴레이션에 동일한 기본 키 값이 존재한다. (외래 키의 도메인은 참조되는 기본 키의 도메인과 같아야 한다.)
  2. 외래 키가 자신의 기본 키 구성요소가 아니고, 외래 키가 선택적 관계를 표현하는 경우, 해당 외래 키를 NULL로 두고 참조 무결성 검사에서 제외한다. (외래 키가 복합 기본 키의 일부라면 엔터티 무결성 때문에 NULL을 가질 수 없다.)

참조 무결성의 위배

  1. 참조하는 릴레이션에 튜플을 삽입하는 경우, 그 튜플의 외래 키가 존재하지 않는 기본 키를 참조할 때 문제가 발생한다.
  2. 참조되는 릴레이션에 튜플을 삭제하는 경우, 그 튜플의 기본 키를 참조하는 외래 키가 있을 때 문제가 발생한다.

DBMS의 참조 무결성 유지

  1. 제한 (RESTRICT): 위반을 일으키는 연산을 거부한다.
  2. 연쇄 (CASCADE): 참조하는 행도 함께 삭제한다.
  3. 널값 설정 (SET NULL): 외래 키를 NULL로 변경한다.
  4. 기본값 설정 (SET DEFAULT): 외래 키를 지정된 기본값으로 변경한다.

cf. 데이터 모델의 종류

시기유형핵심 특징
1960년대계층형데이터를 부모-자식 트리 구조로 표현
1960년대네트워크레코드와 관계를 그래프 구조로 표현
1970년대관계형데이터를 테이블로 표현하고 속성 값으로 연결
1980년대 후반객체지향형데이터와 관련 프로그램을 객체로 결합
1990년대 후반객체관계형관계 DBMS에 객체 지향 기능 추가
2000년대 이후NoSQL반정형·비정형 빅데이터와 분산 처리 지원

계층형·네트워크

계층형 데이터 모델 (Hierarchical)

  • 데이터를 트리 구조로 표현

네트워크 데이터 모델 (Network)

  • 데이터를 그래프 구조로 표현

한계

  • 데이터 접근 경로를 프로그램에 미리 정의해야 함
  • 레코드가 포인터로 연결되어 구조 변경이 어려움
  • 데이터 독립성이 낮음
  • 한 번에 하나의 레코드 중심으로 처리
  • 프로그램 개발 생산성이 낮음

객체 기반 모델

객체지향형 데이터 모델

  • 복잡한 데이터를 객체로 표현하고 데이터와 프로그램을 결합

객체관계형 데이터 모델

  • 관계형 모델에 사용자 정의 타입과 새로운 연산을 추가

표현력은 높아지지만 시스템 복잡성도 증가

NoSQL

NoSQL (Not only SQL)

  • 소셜미디어와 웹 서비스에서 발생하는 대규모 반정형·비정형 데이터를 처리하기 위해 등장했다.
  • 비정형 데이터 처리에 유리하다.

NoSQL Database

문서 기반 모델 (Document)

  • JSON 또는 BSON 형태의 문서 구조로 데이터를 저장한다.
  • 예: MongoDB, CouchDB 키-값 모델 (Key-Value)
  • 유일한 Key에 Value를 매핑하여 단순하고 빠르게 데이터를 읽고 쓴다.
  • 예: Redis, DynamoDB 그래프 데이터 모델 (Graph)
  • 노드(Node)와 간선(Edge)을 사용하여 데이터와 그 사이의 연결 관계를 직관적으로 표현한다.
  • 예: Neo4j 컬럼 기반 모델 (Column-family)

Vector

Vector

  • 데이터를 고차원 수치 공간으로 변환한 것

VectorDB

  • 텍스트, 이미지, 오디오 같은 비정형 데이터를 벡터 임베딩 형태로 저장하고 검색하는 데이터베이스
  • 활용 목적: 유사성 검색, 의미 기반 검색

벡터 임베딩

  • 자연어 문장 예시
    • “강아지” [0.12, 0.85, -0.33, …]
    • “개” [0.10, 0.88, -0.30, …]
  • 같은 의미의 단어일수록 벡터 간 거리가 가까움
  • 검색 시 키워드 매칭 대신 의미적 유사성으로 결과 제공

VectorDB의 주요 기능

  • 벡터 저장: 고차원 벡터를 효율적으로 저장
  • 근사 최근접 탐색(ANN)
    • 코사인 유사도, 유클리드 거리
    • 대규모 데이터에서도 빠르게 유사 벡터 검색
  • 메타데이터 관리: 벡터 + 원본 데이터(문서, 이미지 등) 함께 저장
  • 확장성: 대규모 AI 응용()

VectorDB의 장점

  • 의미 기반 검색 (키워드 매칭을 넘어선 검색)
  • 비정형 데이터(텍스트, 이미지, 음성) 활용 가능
  • 생성형 AI, 추천 시스템, 개인화 서비스에 최적화

VectorDB의 단점

  • 전통적인 트랜잭션/정합성 기능 부족(ACID 보장 약함)
  • 생태계 성숙도가 낮음 (새로운 분야)
  • 기존 RDBMS 대비 관리 경험/도구 부족

대표적인 VectorDB 제품

  • Pinecone: 클라우드 기반, SaaS
  • Weaviate: 오픈 소스, Graph + Vector
  • Milvus: 대규모 벡터 검색 특화
  • FAISS: Facebook AI, 라이브러리 형태