---
# System prepended metadata

title: DB設計

---

# DB設計

``` sql
CREATE TABLE `accout` (
    `id` INTEGER AUTOINCREMENT PRIMARYKEY,
    `screen_name` STRING, -- @以降
    `name` STRING, -- なまえ
    `create_time` NOT NULL TIME,
    `update_time` NOT NULL TIME,
    `delete_time` TIME, -- 論理削除用
    `description` STRING,
    `header_img` STRING,
    `icon_img` STRING,
    -- TODO: おいおい決める: 誕生日, 場所
);

CREATE TABLE `following` (
    `id` INTEGER AUTOINCREMENT PRIMARYKEY,
    `from_account_id` INTEGER, -- フォローするAccount
    `to_account_id` INTEGER, -- フォローされるAccount
    `create_time` NOT NULL TIME,
    `delete_time` TIME, -- 論理削除用
);

CREATE TABLE `tweet` (
    `id` INTEGER AUTOINCREMENT PRIMARYKEY,
    `text` STRING,
    `create_time` NOT NULL TIME,
    `delete_time` TIME, -- 論理削除用
);

CREATE TABLE `tweet_to_media` (
    `id` INTEGER AUTOINCREMENT PRIMARYKEY,
    `tweet_id` INTEGER,
    `media_id` INTEGER,
);

CREATE TABLE `media` (
    `id` INTEGER AUTOINCREMENT PRIMARYKEY,
    `object` STRING, -- TODO: AWS S3側でバケットの中のオブジェクトがどう扱われるかを調査
    `order` INTEGER -- じゅんじょよう
);

CREATE TABLE `favorite` (
    `id` INTEGER AUTOINCREMENT PRIMARYKEY,
    `account_id` INTEGER,
    `tweet_id` INTEGER,
    `create_time` NOT NULL TIME,
    `delete_time` TIME, -- 論理削除用
);

CREATE TABLE `retweet` (
    `id` INTEGER AUTOINCREMENT PRIMARYKEY,
    `account_id` INTEGER,
    `tweet_id` INTEGER,
    `create_time` NOT NULL TIME,
    `delete_time` TIME, -- 論理削除用
);

```