Skip to content

Accommodation Schema  #4

Description

@shbada

ACCOMMODATION (숙박업체)

CREATE TABLE ACCOMMODATION (
                               ID INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
                               ACCOMMODATION_NAME VARCHAR(255) NOT NULL COMMENT '숙박업체명',
                               ACCOMMODATION_TYPE VARCHAR(255) NOT NULL COMMENT '숙박업체 타입',
                               BIZNO VARCHAR(20) NOT NULL COMMENT '사업자번호',
                               COUNTRY_CD VARCHAR(255) NOT NULL COMMENT '국가코드',
                               CITY VARCHAR(255) NOT NULL COMMENT '시/도',
                               STATE VARCHAR(255) NOT NULL COMMENT '행정구역',
                               STREET VARCHAR(255) NOT NULL COMMENT '나머지주소',
                               ZIPCODE VARCHAR(255) NOT NULL COMMENT '우편번호',
                               CHECKIN_DESCRIPTION LONGTEXT COMMENT '체크인 상세설명',
                               CHECKIN_START_TIME TIME NOT NULL COMMENT '체크인 시작시간',
                               CHECKOUT_END_TIME TIME NOT NULL COMMENT '체크아웃 종료시간',
                               MIN_CHECKIN_AGE INTEGER NOT NULL COMMENT '체크인 가능 최소 나이',
                               RESPE_USER_ID BIGINT NOT NULL COMMENT '담당자 유저 인덱스',
                               RESPE_EMAIL VARCHAR(255) NOT NULL COMMENT '담당자 이메일',
                               RESPE_HPNO VARCHAR(20) NOT NULL COMMENT '담당자 휴대폰번호',
                               TEL_NO VARCHAR(20) NOT NULL COMMENT '숙박업체 전화번호',
                               LAST_MODIFIED_AT DATETIME(6) NOT NULL COMMENT '수정일자',
                               LAST_MODIFIED_BY INT(11) NOT NULL COMMENT '수정자',
                               CREATED_AT DATETIME(6) NOT NULL COMMENT '등록일자',
                               CREATED_BY INT(11) NOT NULL COMMENT '등록자',
                               FOREIGN KEY (RESPE_USER_ID) REFERENCES USERS(ID)
) DEFAULT character set utf8mb4 collate utf8mb4_unicode_ci;

ACCOMMODATION_TYPE (숙박업체 타입)

Enum

  • 단독 아파트/홈(아파트,빌라)/호텔(게스트하우스,호스텔)/기타숙소(캠핑장/텐트)

ACCOMMODATION_ROLE (숙박업체 권한)

  • 진행 상태 코드 : 승인(APPROVAL) 과 반려(DENY), 대기(PENDING)
  • 숙박 업체 타입은 여러개일 수 있다 ?
CREATE TABLE ACCOMMODATION_ROLE (
                                   ID INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
                                   ACCOMMODATION_ID BIGINT NOT NULL COMMENT '숙박업체 인덱스',
                                   PROG_STATUS_CD BIGINT NOT NULL COMMENT '진행상태 코드',
                                   STOPPED_DTS DATETIME(6) COMMENT '중지일자',
                                   STOPPED_RSN LONGTEXT COMMENT '중지사유',
                                   LAST_MODIFIED_AT DATETIME(6) NOT NULL COMMENT '수정일자',
                                   LAST_MODIFIED_BY INT(11) NOT NULL COMMENT '수정자',
                                   CREATED_AT DATETIME(6) NOT NULL COMMENT '등록일자',
                                   CREATED_BY INT(11) NOT NULL COMMENT '등록자',
                                   FOREIGN KEY (ACCOMMODATION_ID) REFERENCES ACCOMMODATION(ID)
) DEFAULT character set utf8mb4 collate utf8mb4_unicode_ci;

ACCOMMODATION_ROOM (객실)

CREATE TABLE ACCOMMODATION_ROOM (
                                    ID INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
                                    ROOM_TYPE VARCHAR(255) NOT NULL COMMENT '객실 타입',
                                    ROOM_NAME VARCHAR(255) NOT NULL COMMENT '객실명',
                                    PRIORITY INTEGER NOT NULL COMMENT '객실 우선순위',
                                    MAX_ENTRANCT_CNT INTEGER NOT NULL COMMENT '투숙 가능 인원',
                                    STOCK INTEGER NOT NULL COMMENT '재고',
                                    ACCOMMODATION_ID BIGINT NOT NULL COMMENT '숙박업체 인덱스',
                                    LAST_MODIFIED_AT DATETIME(6) NOT NULL COMMENT '등록일자',
                                    LAST_MODIFIED_BY INT(11) NOT NULL COMMENT '수정자',
                                    CREATED_AT DATETIME(6) NOT NULL COMMENT '등록일자',
                                    CREATED_BY INT(11) NOT NULL COMMENT '등록자',
                                    FOREIGN KEY (ACCOMMODATION_ID) REFERENCES ACCOMMODATION(ID)
) DEFAULT character set utf8mb4 collate utf8mb4_unicode_ci;

ACCOMMODATION_GROUP_COMMON_CODE (숙박업체 그룹 공통코드)

  • 비즈니스 시설 : A001
  • 상점 : B001
  • 기타 : C001
CREATE TABLE ACCOMMODATION_GROUP_COMMON_CODE (
                                    ID INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
                                    GRP_CODE VARCHAR(5) UNIQUE,
                                    GRP_CODE_NAME VARCHAR(50) NOT NULL COMMENT '그룹코드명'
                                    GRP_CODE_DESC VARCHAR(200) NOT NULL COMMENT '그룹코드설명'
                                    LAST_MODIFIED_AT DATETIME(6) NOT NULL COMMENT '수정일자',
                                    LAST_MODIFIED_BY INTEGER NOT NULL COMMENT '수정자',
                                    CREATED_AT DATETIME(6) NOT NULL COMMENT '등록일자',
                                    CREATED_BY INTEGER NOT NULL COMMENT '등록자',
) DEFAULT character set utf8mb4 collate utf8mb4_unicode_ci;

ACCOMMODATION_COMMON_CODE (숙박업체 공통코드)

  • 비즈니스 시설 (A001)

    1. 비즈니스 센터 A001-01
    2. 회의 시설 A001-02
    3. 팩스/복사 A001-03
  • 상점

    1. 구매 상점 B001-01
    2. 미용실 B001-02
  • 기타

    1. 엘리베이터 C001-01
    2. VIP용 시설 C001-02
CREATE TABLE ACCOMMODATION_COMMON_CODE (
                                    ID INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
                                    CODE VARCHAR(10) UNIQUE,
                                    GRP_CODE_ID BIGINT NOT NULL COMMENT '숙박업체 그룹 공통코드 인덱스'
                                    CODE_NAME VARCHAR(50) NOT NULL COMMENT '코드명'
                                    CODE_DESC VARCHAR(200) NOT NULL COMMENT '코드설명'
                                    LAST_MODIFIED_AT DATETIME(6) NOT NULL COMMENT '수정일자',
                                    LAST_MODIFIED_BY INT(11) NOT NULL COMMENT '수정자',
                                    CREATED_AT DATETIME(6) NOT NULL COMMENT '등록일자',
                                    CREATED_BY INT(11) NOT NULL COMMENT '등록자',
                                    FOREIGN KEY (GRP_CODE_ID) REFERENCES ACCOMMODATION_GROUP_COMMON_CODE(�ID)
) DEFAULT character set utf8mb4 collate utf8mb4_unicode_ci;

ACCOMMODATION_ROOM_INFO (객실 부가정보)

  1. 침실 위치 침실 / 거실 / 기타공간
  2. 숙소에서 이용할 수 있는 부가기능 (bar, 사우나, 무료 WIFI, 에어컨 등)
  3. 숙소 정책 (흡연 가능 여부, 반려동물 동반 가능 여부 등)
CREATE TABLE ACCOMMODATION_ROOM_INFO (
                                    ID INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
                                    ACCOMMODATION_ROOM_ID BIGINT NOT NULL COMMENT '객실 인덱스',
                                    CODE_ID VARCHAR(10) NOT NULL COMMENT '숙박업체 공통코드 인덱스',
                                    ACTIVE TINYINT(1) NOT NULL COMMENT '�공통코드 제공여부',
                                    LAST_MODIFIED_AT DATETIME(6) NOT NULL COMMENT '수정일자',
                                    LAST_MODIFIED_BY INT(11) NOT NULL COMMENT '수정자',
                                    CREATED_AT DATETIME(6) NOT NULL COMMENT '등록일자',
                                    CREATED_BY INT(11) NOT NULL COMMENT '등록자',
                                    FOREIGN KEY (ACCOMMODATION_ROOM_ID) REFERENCES ACCOMMODATION_ROOM(ID),
                                    FOREIGN KEY (CODE_ID) REFERENCES ACCOMMODATION_COMMON_CODE(ID)
) DEFAULT character set utf8mb4 collate utf8mb4_unicode_ci;

ACCOMMODATION_ROOM_FEE (객실 요금)

  • 숙소 관련 요금 정보
    1. 뷔페 아침 식사 요금
    2. 주차 대행 요금
    3. 간이 침대 이용 요금
  • 결제 옵션
    1. 신용카드 결제 가능 여부
    2. 지불 요금
    3. 무료 취소가 가능한 일 수
CREATE TABLE ACCOMMODATION_ROOM_FEE (
                                   ID INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
                                   ACCOMMODATION_ROOM_ID BIGINT NOT NULL COMMENT '객실 인덱스',
                                   ACTIVE TINYINT(1) NOT NULL COMMENT '�기본요금 설정 여부',
                                   FEE_NAME VARCHAR(255) NOT NULL COMMENT '객실 요금제명',
                                   FEE DECIMAL NOT NULL COMMENT '객실 요금',
                                   LAST_MODIFIED_AT DATETIME(6) NOT NULL COMMENT '수정일자',
                                   LAST_MODIFIED_BY INT(11) NOT NULL COMMENT '수정자',
                                   CREATED_AT DATETIME(6) NOT NULL COMMENT '등록일자',
                                   REATED_BY INT(11) NOT NULL COMMENT '등록자',
                                   FOREIGN KEY (ACCOMMODATION_ROOM_ID) REFERENCES ACCOMMODATION_ROOM(ID)
) DEFAULT character set utf8mb4 collate utf8mb4_unicode_ci;

테이블 관계

  • 숙박업체(ACCOMMODATION) : 숙박업체 권한(ACCOMMODATION_ROLE) = 1: N
  • 숙박업체(ACCOMMODATION) : 객실(ACCOMMODATION_ROOM) = 1: N
  • 객실(ACCOMMODATION_ROOM) : 객실 부가정보(ACCOMMODATION_ROOM_INFO) = 1: N
  • 객실(ACCOMMODATION_ROOM) : 객실 요금(ACCOMMODATION_ROOM_FEE) = 1: N
  • 숙박업체 그룹 공통코드 (ACCOMMODATION_GROUP_COMMON_CODE) : 숙박업체 공통코드 (ACCOMMODATION_COMMON_CODE) = 1 : N
  • 숙박업체 공통코드 (ACCOMMODATION_COMMON_CODE) : 객실 부가정보(ACCOMMODATION_ROOM_INFO) = 1 : N

History

  • 숙박업체 관계 (ACCOMMODATION_REL) 테이블 제거

각 지점별 숙박업체는 관계성이 없고, 숙박업체 서비스 확인 결과, 상위-하위 관계로 관리되고 있는 부분 미존재. 각 숙박 업체는 별개의 사업자로 생각

  • IDX -> ID 컬럼명 UPDATE
  • 숙박업체 타입 (ACCOMMODATION_TYPE) 테이블 제거 -> Enum

Aggregate

accommodation aggregate3

[3] accommodation aggregate3.png
[Aggregate : ACCOMMODATION]

  • Aggregate Root : ACCOMMODATION
  1. ACCOMMODATION_ROLE
  2. ACCOMMODATION_ROOM
    2-1) ACCOMMODATION_ROOM_INFO
    2-2) ACCOMMODATION_ROOM_FEE

[Aggregate : ACCOMMODATION_GROUP_COMMON_CODE]

  • Aggregate Root : ACCOMMODATION_GROUP_COMMON_CODE

[Aggregate : ACCOMMODATION_COMMON_CODE]

  • Aggregate Root : ACCOMMODATION_COMMON_CODE

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

docsDocumentations

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions