변경사항

ERD(더블 클릭하면 확대가능)

Untitled

테이블 생성

DROP TABLE IF EXISTS `time_record`;
DROP TABLE IF EXISTS `work_group`;
DROP TABLE IF EXISTS `time_range`;
DROP TABLE IF EXISTS `work_day_type`;
DROP TABLE IF EXISTS `settlement`;
DROP TABLE IF EXISTS `company`;
DROP TABLE IF EXISTS `work_group_record`;
DROP TABLE IF EXISTS `distribution`;
DROP TABLE IF EXISTS `user`;

# 출퇴근기록
CREATE TABLE `time_record`
(
    `time_record_id` bigint auto_increment NOT NULL,
    `user_id`        bigint                NOT NULL,
    `date`           date                  NOT NULL,
    `start_work`     time                  NOT NULL,
    `leave_work`     time                  NULL,
    `work_state`     varchar(10)           NOT NULL,
    `date_created`   datetime              NOT NULL,
    `date_updated`   datetime              NOT NULL,
    PRIMARY KEY (time_record_id)
);

# 근로제
CREATE TABLE `work_group`
(
    `work_group_id` bigint auto_increment NOT NULL,
    `name`          varchar(50)           NOT NULL,
    `type`          char(2)               NOT NULL,
    `date_created`  datetime              NOT NULL,
    `date_updated`  datetime              NOT NULL,
    `date_deleted`  datetime              NULL,
    `is_deleted`    boolean               NOT NULL,
    `is_on`         boolean               NOT NULL,
    `company_id`    bigint                NOT NULL,
    PRIMARY KEY (work_group_id)
);

# 시간범위
CREATE TABLE `time_range`
(
    `time_range_id` bigint auto_increment NOT NULL,
    `type`          char(2)               NOT NULL,
    `start`         time                  NOT NULL,
    `end`           time                  NOT NULL,
    `work_group_id` bigint                NOT NULL,
    PRIMARY KEY (time_range_id)
);

# 근무요일타입
CREATE TABLE `work_day_type`
(
    `work_day_type_id` bigint auto_increment NOT NULL,
    `mon`              char(2)               NOT NULL,
    `tue`              char(2)               NOT NULL,
    `wed`              char(2)               NOT NULL,
    `thu`              char(2)               NOT NULL,
    `fri`              char(2)               NOT NULL,
    `sat`              char(2)               NOT NULL,
    `sun`              char(2)               NOT NULL,
    `work_group_id`    bigint                NOT NULL,
    PRIMARY KEY (work_day_type_id)
);

# 정산
CREATE TABLE `settlement`
(
    `settlement_id`        bigint auto_increment NOT NULL,
    `user_id`              bigint                NOT NULL,
    `date`                 date                  NOT NULL,
    `start_time`           time                  NOT NULL,
    `end_time`             time                  NOT NULL,
    `working_time`         time                  NOT NULL,
    `overtime`             time                  NOT NULL,
    `day_type`             char(2)               NOT NULL,
    `date_created`         datetime              NOT NULL,
    `date_updated`         datetime              NOT NULL,
    `work_group_record_id` bigint                NOT NULL,
    PRIMARY KEY (settlement_id)
);

# 회사
CREATE TABLE `company`
(
    `company_id`   bigint auto_increment NOT NULL,
    `name`         varchar(50)           NOT NULL,
    `code`         varchar(255)          NOT NULL,
    `logo_url`     varchar(255)          NULL,
    `date_created` datetime              NOT NULL,
    `date_updated` datetime              NOT NULL,
    `date_deleted` datetime              NULL,
    `is_deleted`   boolean               NOT NULL,
    PRIMARY KEY (company_id)
);

# 근로제 이력
CREATE TABLE `work_group_record`
(
    `work_group_record_id` bigint auto_increment NOT NULL,
    `date`                 datetime              NOT NULL,
    `work_group_name`      varchar(50)           NOT NULL,
    `work_group_type`      char(2)               NOT NULL,
    `time_range_type`      varchar(255)          NOT NULL,
    `start`                varchar(255)          NOT NULL,
    `end`                  varchar(255)          NOT NULL,
    `mon`                  char(2)               NOT NULL,
    `tue`                  char(2)               NOT NULL,
    `wed`                  char(2)               NOT NULL,
    `thu`                  char(2)               NOT NULL,
    `fri`                  char(2)               NOT NULL,
    `sat`                  char(2)               NOT NULL,
    `sun`                  char(2)               NOT NULL,
    `work_group_id`        bigint                NOT NULL,
    PRIMARY KEY (work_group_record_id)
);

# 배포
CREATE TABLE `distribution`
(
    `distribution_id` bigint auto_increment NOT NULL,
    `date`            datetime              NOT NULL,
    `user_id`         bigint                NOT NULL,
    `work_group_id`   bigint                NOT NULL,
    PRIMARY KEY (distribution_id)
);

# 회원
CREATE TABLE `user`
(
    `user_id`      bigint auto_increment NOT NULL,
    `user_code`    char(9)               NOT NULL,
    `name`         varchar(50)           NOT NULL,
    `email`        varchar(100)          NOT NULL,
    `password`     varchar(255)          NOT NULL,
    `phone`        varchar(20)           NOT NULL,
    `hire_date`    date                  NULL,
    `birthday`     date                  NOT NULL,
    `dept`         varchar(50)           NULL,
    `position`     varchar(20)           NULL,
    `distribution` boolean               NOT NULL,
    `date_created` datetime              NOT NULL,
    `date_updated` datetime              NOT NULL,
    `date_deleted` datetime              NULL,
    `is_deleted`   boolean               NOT NULL,
    `role`         varchar(10)           NOT NULL,
    `company_id`   bigint                NOT NULL,
    PRIMARY KEY (user_id)
);

샘플 데이터