Pickple

Untitled

테이블 변경 사항 내역

Untitled

최종 DDL

CREATE TABLE IF NOT EXISTS `pickpledev`.`address_depth1`
(
    `id`         BIGINT      NOT NULL AUTO_INCREMENT,
    `name`       VARCHAR(10) NOT NULL,
    `created_at` DATETIME    NOT NULL DEFAULT now(),
    `updated_at` DATETIME    NOT NULL DEFAULT now() ON UPDATE now(),
    PRIMARY KEY (`id`)
);

CREATE TABLE IF NOT EXISTS `pickpledev`.`address_depth2`
(
    `id`                BIGINT      NOT NULL AUTO_INCREMENT,
    `name`              VARCHAR(10) NOT NULL,
    `created_at`        DATETIME    NOT NULL DEFAULT now(),
    `updated_at`        DATETIME    NOT NULL DEFAULT now() ON UPDATE now(),
    `address_depth1_id` BIGINT      NOT NULL,
    PRIMARY KEY (`id`),
    CONSTRAINT `FK_address_depth1_TO_address_depth2`
        FOREIGN KEY (`address_depth1_id`)
            REFERENCES `pickpledev`.`address_depth1` (`id`)
);

CREATE TABLE IF NOT EXISTS `pickpledev`.`member`
(
    `id`                 BIGINT        NOT NULL AUTO_INCREMENT,
    `email`              VARCHAR(100)  NOT NULL,
    `nickname`           VARCHAR(20)   NOT NULL,
    `introduction`       VARCHAR(1000) NULL,
    `profile_image_url`  VARCHAR(300)  NOT NULL,
    `status`             VARCHAR(10)   NOT NULL,
    `manner_score`       INT           NOT NULL DEFAULT '0',
    `manner_score_count` INT           NOT NULL DEFAULT '0',
    `oauth_id`           BIGINT        NOT NULL,
    `oauth_provider`     VARCHAR(10)   NOT NULL,
    `created_at`         DATETIME      NOT NULL DEFAULT now(),
    `updated_at`         DATETIME      NOT NULL DEFAULT now() ON UPDATE now(),
    `address_depth1_id`  BIGINT        NOT NULL,
    `address_depth2_id`  BIGINT        NOT NULL,
    PRIMARY KEY (`id`),
    CONSTRAINT `FK_address_depth1_TO_member_1`
        FOREIGN KEY (`address_depth1_id`)
            REFERENCES `pickpledev`.`address_depth1` (`id`),
    CONSTRAINT `FK_address_depth2_TO_member_1`
        FOREIGN KEY (`address_depth2_id`)
            REFERENCES `pickpledev`.`address_depth2` (`id`)
);

CREATE TABLE IF NOT EXISTS `pickpledev`.`chat_room`
(
    `id`               BIGINT      NOT NULL AUTO_INCREMENT,
    `name`             VARCHAR(20) NOT NULL,
    `type`             VARCHAR(10) NOT NULL,
    `member_count`     TINYINT     NOT NULL DEFAULT '0',
    `max_member_count` TINYINT     NOT NULL DEFAULT '2',
    `created_at`       DATETIME    NOT NULL DEFAULT now(),
    `updated_at`       DATETIME    NOT NULL DEFAULT now() ON UPDATE now(),
    PRIMARY KEY (`id`)
);

CREATE TABLE IF NOT EXISTS `pickpledev`.`chat_room_member`
(
    `id`           BIGINT   NOT NULL AUTO_INCREMENT,
    `active`       BOOLEAN  NOT NULL DEFAULT TRUE,
    `created_at`   DATETIME NOT NULL DEFAULT now(),
    `updated_at`   DATETIME NOT NULL DEFAULT now() ON UPDATE now(),
    `member_id`    BIGINT   NOT NULL,
    `chat_room_id` BIGINT   NOT NULL,
    PRIMARY KEY (`id`),
    CONSTRAINT `FK_member_TO_chat_room_member_1`
        FOREIGN KEY (`member_id`)
            REFERENCES `pickpledev`.`member` (`id`),
    CONSTRAINT `FK_chat_room_TO_chat_room_member_1`
        FOREIGN KEY (`chat_room_id`)
            REFERENCES `pickpledev`.`chat_room` (`id`)
);

ALTER TABLE `pickpledev`.`chat_room_member`
    ADD UNIQUE (`member_id`, `chat_room_id`);

CREATE TABLE IF NOT EXISTS `pickpledev`.`chat_message`
(
    `id`           BIGINT       NOT NULL AUTO_INCREMENT,
    `type`         VARCHAR(10)  NOT NULL,
    `content`      VARCHAR(500) NOT NULL,
    `created_at`   DATETIME     NOT NULL DEFAULT now(),
    `updated_at`   DATETIME     NOT NULL DEFAULT now() ON UPDATE now(),
    `sender_id`    BIGINT       NOT NULL,
    `chat_room_id` BIGINT       NOT NULL,
    PRIMARY KEY (`id`),
    CONSTRAINT `FK_member_TO_chat_message_1`
        FOREIGN KEY (`sender_id`)
            REFERENCES `pickpledev`.`member` (`id`),
    CONSTRAINT `FK_chat_room_TO_chat_message_1`
        FOREIGN KEY (`chat_room_id`)
            REFERENCES `pickpledev`.`chat_room` (`id`)
);

CREATE TABLE IF NOT EXISTS `pickpledev`.`crew`
(
    `id`                   BIGINT        NOT NULL AUTO_INCREMENT,
    `name`                 VARCHAR(20)   NOT NULL,
    `content`              VARCHAR(1000) NULL     DEFAULT NULL,
    `profile_image_url`    VARCHAR(300)  NOT NULL,
    `background_image_url` VARCHAR(300)  NOT NULL,
    `status`               VARCHAR(10)   NOT NULL,
    `like_count`           INT           NOT NULL DEFAULT '0',
    `member_count`         TINYINT       NOT NULL DEFAULT '1',
    `max_member_count`     TINYINT       NOT NULL DEFAULT '1',
    `competition_point`    INT           NOT NULL DEFAULT '0',
    `created_at`           DATETIME      NOT NULL DEFAULT now(),
    `updated_at`           DATETIME      NOT NULL DEFAULT now() ON UPDATE now(),
    `leader_id`            BIGINT        NOT NULL,
    `address_depth1_id`    BIGINT        NOT NULL,
    `address_depth2_id`    BIGINT        NOT NULL,
    `chat_room_id`         BIGINT UNIQUE NULL     DEFAULT NULL,
    PRIMARY KEY (`id`),
    CONSTRAINT `FK_address_depth1_TO_crew_1`
        FOREIGN KEY (`address_depth1_id`)
            REFERENCES `pickpledev`.`address_depth1` (`id`),
    CONSTRAINT `FK_address_depth2_TO_crew_1`
        FOREIGN KEY (`address_depth2_id`)
            REFERENCES `pickpledev`.`address_depth2` (`id`),
    CONSTRAINT `FK_member_TO_crew_1`
        FOREIGN KEY (`leader_id`)
            REFERENCES `pickpledev`.`member` (`id`),
    CONSTRAINT `FK_chat_room_TO_crew_1`
        FOREIGN KEY (`chat_room_id`)
            REFERENCES `pickpledev`.`chat_room` (`id`) ON DELETE SET NULL
);

CREATE TABLE IF NOT EXISTS `pickpledev`.`crew_member`
(
    `id`         BIGINT      NOT NULL AUTO_INCREMENT,
    `status`     VARCHAR(10) NOT NULL,
    `created_at` DATETIME    NOT NULL DEFAULT now(),
    `updated_at` DATETIME    NOT NULL DEFAULT now() ON UPDATE now(),
    `member_id`  BIGINT      NOT NULL,
    `crew_id`    BIGINT      NOT NULL,
    PRIMARY KEY (`id`),
    CONSTRAINT `FK_crew_TO_crew_member_1`
        FOREIGN KEY (`crew_id`)
            REFERENCES `pickpledev`.`crew` (`id`),
    CONSTRAINT `FK_member_TO_crew_member_1`
        FOREIGN KEY (`member_id`)
            REFERENCES `pickpledev`.`member` (`id`)
);

CREATE TABLE IF NOT EXISTS `pickpledev`.`game`
(
    `id`                BIGINT          NOT NULL AUTO_INCREMENT,
    `content`           VARCHAR(1000)   NULL     DEFAULT NULL,
    `play_date`         DATE            NOT NULL,
    `play_start_time`   TIME            NOT NULL,
    `play_end_time`     TIME            NOT NULL,
    `play_time_minutes` SMALLINT        NOT NULL,
    `main_address`      VARCHAR(50)     NOT NULL,
    `detail_address`    VARCHAR(50)     NOT NULL,
    `point`             POINT SRID 4326 NOT NULL,
    `status`            VARCHAR(10)     NOT NULL,
    `view_count`        INT             NOT NULL DEFAULT '0',
    `cost`              INT             NOT NULL DEFAULT '0',
    `member_count`      INT             NOT NULL DEFAULT '1',
    `max_member_count`  TINYINT         NOT NULL DEFAULT '2',
    `created_at`        DATETIME        NOT NULL DEFAULT now(),
    `updated_at`        DATETIME        NOT NULL DEFAULT now() ON UPDATE now(),
    `host_id`           BIGINT          NOT NULL,
    `address_depth1_id` BIGINT          NOT NULL,
    `address_depth2_id` BIGINT          NOT NULL,
    `chat_room_id`      BIGINT UNIQUE NULL     DEFAULT NULL,
    PRIMARY KEY (`id`),
    CONSTRAINT `FK_address_depth1_TO_game_1`
        FOREIGN KEY (`address_depth1_id`)
            REFERENCES `pickpledev`.`address_depth1` (`id`),
    CONSTRAINT `FK_address_depth2_TO_game_1`
        FOREIGN KEY (`address_depth2_id`)
            REFERENCES `pickpledev`.`address_depth2` (`id`),
    CONSTRAINT `FK_member_TO_game_1`
        FOREIGN KEY (`host_id`)
            REFERENCES `pickpledev`.`member` (`id`),
    CONSTRAINT `FK_chat_room_TO_game_1`
        FOREIGN KEY (`chat_room_id`)
            REFERENCES `pickpledev`.`chat_room` (`id`) ON DELETE SET NULL,
    SPATIAL INDEX (point)
);

CREATE TABLE IF NOT EXISTS `pickpledev`.`game_member`
(
    `id`         BIGINT      NOT NULL AUTO_INCREMENT,
    `status`     VARCHAR(10) NOT NULL,
		`is_review`  BOOLEAN     NOT NULL DEFAULT FALSE,
    `created_at` DATETIME    NOT NULL DEFAULT now(),
    `updated_at` DATETIME    NOT NULL DEFAULT now() ON UPDATE now(),
    `member_id`  BIGINT      NOT NULL,
    `game_id`    BIGINT      NOT NULL,
    PRIMARY KEY (`id`),
    CONSTRAINT `FK_game_TO_game_member_1`
        FOREIGN KEY (`game_id`)
            REFERENCES `pickpledev`.`game` (`id`),
    CONSTRAINT `FK_member_TO_game_member_1`
        FOREIGN KEY (`member_id`)
            REFERENCES `pickpledev`.`member` (`id`)
);

CREATE TABLE IF NOT EXISTS `pickpledev`.`game_position`
(
    `id`         BIGINT     NOT NULL AUTO_INCREMENT,
    `position`   VARCHAR(2) NOT NULL,
    `created_at` DATETIME   NOT NULL DEFAULT now(),
    `updated_at` DATETIME   NOT NULL DEFAULT now() ON UPDATE now(),
    `game_id`    BIGINT     NOT NULL,
    PRIMARY KEY (`id`),
    CONSTRAINT `FK_game_TO_game_position_1`
        FOREIGN KEY (`game_id`)
            REFERENCES `pickpledev`.`game` (`id`)
);

CREATE TABLE IF NOT EXISTS `pickpledev`.`member_position`
(
    `id`         BIGINT     NOT NULL AUTO_INCREMENT,
    `position`   VARCHAR(2) NOT NULL,
    `created_at` DATETIME   NOT NULL DEFAULT now(),
    `updated_at` DATETIME   NOT NULL DEFAULT now() ON UPDATE now(),
    `member_id`  BIGINT     NOT NULL,
    PRIMARY KEY (`id`),
    CONSTRAINT `FK_member_TO_member_position_1`
        FOREIGN KEY (`member_id`)
            REFERENCES `pickpledev`.`member` (`id`)
);

CREATE TABLE IF NOT EXISTS `pickpledev`.`refresh_token`
(
    `token`      VARCHAR(500) NOT NULL,
    `member_id`  BIGINT       NOT NULL,
    `created_at` DATETIME     NOT NULL DEFAULT now(),
    `updated_at` DATETIME     NOT NULL DEFAULT now() ON UPDATE now(),
    PRIMARY KEY (`token`)
);

CREATE TABLE IF NOT EXISTS `pickpledev`.`map_polygon`
(
    `id`                BIGINT          NOT NULL AUTO_INCREMENT,
    `address_depth1_id` BIGINT          NOT NULL,
    `address_depth2_id` BIGINT          NOT NULL,
    `latitude`          DECIMAL(18, 13) NOT NULL,
    `longitude`         DECIMAL(18, 13) NOT NULL,
    `polygon`           POLYGON         NOT NULL SRID 4326,
    PRIMARY KEY (`id`),
    CONSTRAINT `FK_address_depth11_TO_polygon`
        FOREIGN KEY (`address_depth1_id`)
            REFERENCES `pickpledev`.`address_depth1` (`id`),
    CONSTRAINT `FK_address_depth21_TO_polygon`
        FOREIGN KEY (`address_depth2_id`)
            REFERENCES `pickpledev`.`address_depth2` (`id`)
)