Skip to content

Accommodation Schema  #4

@shbada

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

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