# 내장 PostgreSQL 데이터베이스 어댑터 스키마

## Content

## SQL

```auto
CREATE TABLE IF NOT EXISTS documents (
    id TEXT PRIMARY KEY,
    type TEXT NOT NULL,
    version INT NOT NULL,
    snapshot_version INT NOT NULL
);

CREATE TABLE IF NOT EXISTS operations (
    doc_id TEXT NOT NULL,
    version INTEGER NOT NULL,
    operation TEXT NOT NULL,
    PRIMARY KEY (doc_id, version),
    FOREIGN KEY (doc_id) REFERENCES documents (id) ON DELETE CASCADE
);

CREATE TABLE IF NOT EXISTS snapshot_fragments (
    doc_id TEXT NOT NULL REFERENCES documents(id) ON DELETE CASCADE,
    fragment_id TEXT NOT NULL,
    data TEXT NOT NULL,
    PRIMARY KEY (doc_id, fragment_id)
);
```

## 스키마

## SQL

```auto
CREATE TABLE IF NOT EXISTS documents (
    id TEXT PRIMARY KEY,
    type TEXT NOT NULL,
    version INT NOT NULL,
    snapshot_version INT NOT NULL
);

CREATE TABLE IF NOT EXISTS operations (
    doc_id TEXT NOT NULL,
    version INTEGER NOT NULL,
    operation TEXT NOT NULL,
    PRIMARY KEY (doc_id, version),
    FOREIGN KEY (doc_id) REFERENCES documents (id) ON DELETE CASCADE
);

CREATE TABLE IF NOT EXISTS snapshot_fragments (
    doc_id TEXT NOT NULL REFERENCES documents(id) ON DELETE CASCADE,
    fragment_id TEXT NOT NULL,
    data TEXT NOT NULL,
    PRIMARY KEY (doc_id, fragment_id)
);
```

## 스키마

| **테이블 이름** | **컬럼 이름** | **데이터 타입** | **설명** |
| ------ | ----- | ------ | --- |
| @cols=1:@rows=4:documents | id | TEXT | 문서의 고유 식별자 |
| version | INTEGER | 문서의 버전 번호 |
| snapshotVersion | INTEGER | 스냅샷 버전 번호 |
| type | TEXT | 문서 유형 |
| @cols=1:@rows=3:operations | doc\_id | TEXT | 문서의 고유 식별자 |
| version | INTEGER | 작업(operation)의 버전 |
| operation | TEXT | 작업과 관련된 데이터 |
| @cols=1:@rows=3:fragments | doc\_id | TEXT | 문서의 고유 식별자 |
| fragment\_id | TEXT | 프래그먼트의 고유 식별자 |
| data | TEXT | 프래그먼트와 관련된 데이터 |
