Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

User/Partner Schema #2

Open
BAEKJungHo opened this issue Apr 9, 2022 · 6 comments
Open

User/Partner Schema #2

BAEKJungHo opened this issue Apr 9, 2022 · 6 comments
Assignees
Labels
docs Documentations

Comments

@BAEKJungHo
Copy link
Member

BAEKJungHo commented Apr 9, 2022

User Account

CREATE TABLE IF NOT EXISTS user_account(
    id           INT(11)  unsigned auto_increment COMMENT '유저 계정 일련번호',
    email        VARCHAR(255) NOT NULL COMMENT '이메일',
    password     VARCHAR(255) NOT NULL COMMENT '패스워드',
    external_id  VARCHAR(255) NOT NULL COMMENT 'OAuth 연동 아이디',
    active       TINYINT(1) NOT NULL DEFAULT 1 COMMENT '활성화 여부',
    created_at  DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) COMMENT '등록일시',
    created_by  VARCHAR(100) NOT NULL COMMENT '등록자',
    last_modified_at  DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) COMMENT '수정일시',
    last_modified_by  VARCHAR(100) NOT NULL COMMENT '수정자',
    PRIMARY KEY (id),
    UNIQUE (email)
) DEFAULT character set utf8mb4 collate utf8mb4_unicode_ci;

external_id 에 대한 필요성은 고민이 필요해 보임

User Info

CREATE TABLE IF NOT EXISTS user_info(
    id              INT(11)  unsigned auto_increment COMMENT '유저 정보 일련번호',
    account_id  INT(11) unsigned NOT NULL COMMENT '유저 계정 일련번호',
    last_name  VARCHAR(50) NOT NULL COMMENT '', 
    first_name VARCHAR(100) NOT NULL COMMENT '이름',
    birth_year CHAR(4) DEFAULT NULL COMMENT '생년월일 연도',
    birth_month CHAR(2) DEFAULT NULL COMMENT '생년월일 월',
    birth_date CHAR(2) DEFAULT NULL COMMENT '생년월일 일',
    gender CHAR(1)  DEFAULT NULL COMMENT '성별',
    phone_country_code VARCHAR(20) DEFAULT NULL COMMENT '연락처 국가 코드',
    phone      VARCHAR(20) DEFAULT NULL COMMENT '연락처',
    emergency_phone_country_code VARCHAR(20) DEFAULT NULL COMMENT '비상 연락처 국가 코드',
    emergency_phone      VARCHAR(20) DEFAULT NULL COMMENT '비상 연락처',
    created_at  DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) COMMENT '등록일시',
    created_by  VARCHAR(100) NOT NULL COMMENT '등록자',
    last_modified_at  DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) COMMENT '수정일시',
    last_modified_by  VARCHAR(100) NOT NULL  COMMENT '수정자',
    PRIMARY KEY (id),
    FOREIGN KEY (account_id) REFERENCES user_account(id)
) DEFAULT character set utf8mb4 collate utf8mb4_unicode_ci;

Expedia Group Account

CREATE TABLE IF NOT EXISTS expedia_group_account(
    id           INT(11)  unsigned auto_increment COMMENT '파트너 계정 일련번호',
    name     VARCHAR(255) NOT NULL COMMENT '사용자 이름',
    email        VARCHAR(255) NOT NULL COMMENT '이메일',
    password     VARCHAR(255) NOT NULL COMMENT '패스워드',
    active       TINYINT(1) NOT NULL DEFAULT 1 COMMENT '활성화 여부',
    created_at  DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) COMMENT '등록일시',
    created_by  VARCHAR(100) NOT NULL COMMENT '등록자',
    last_modified_at  DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) COMMENT '수정일시',
    last_modified_by  VARCHAR(100) NOT NULL COMMENT '수정자',
    PRIMARY KEY (id),
    UNIQUE (email)
) DEFAULT character set utf8mb4 collate utf8mb4_unicode_ci;

Expedia Group Info

CREATE TABLE IF NOT EXISTS expedia_authentication.expedia_group_info(
    id              INT(11)  unsigned auto_increment COMMENT '파트너 정보 일련번호',
    account_id  INT(11) unsigned NOT NULL COMMENT '파트너 계정 일련번호',
    group_type ENUM('EXPEDIA', 'TRIVAGO', 'HOTELS.COM') COMMENT '그룹 유형', 
    active       TINYINT(1) NOT NULL DEFAULT 1 COMMENT '활성화 여부',
    created_at  DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) COMMENT '등록일시',
    created_by  VARCHAR(100) NOT NULL COMMENT '등록자',
    last_modified_at  DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) COMMENT '수정일시',
    last_modified_by  VARCHAR(100) NOT NULL  COMMENT '수정자',
    PRIMARY KEY (id),
    FOREIGN KEY (account_id) REFERENCES expedia_group_account(id)
) DEFAULT character set utf8mb4 collate utf8mb4_unicode_ci;

User Point

point-service 추가 해야할 듯 reward 도 같이 갈지는 고민 필요

@BAEKJungHo BAEKJungHo self-assigned this Apr 11, 2022
@shbada
Copy link
Member

shbada commented Apr 18, 2022

USER_ACCOUNT, USER_INFO 의 PK 'id' 를 숙박업체의 경우 'idx'로 두었는데, 이는 하나의 서비스 안에서 통일하는게 나아보이는데, id 로 지정하신 이유가 있으실까요?

아래 질문은 Expedia 앱 안의 메뉴로 확인했습니다!
[계정] 탭 > 이메일 및 비밀번호 / 개인 정보 메뉴로 분리하신것으로 보여져서 항목은 잘 정리된 것 같습니다!

USER_ACCOUNT, USER_INFO 로 테이블을 나누셨는데, USER의 계정 정보와 유저의 기본 정보로 나눠진 이유
EMAIL이 로그인할 때의 ID로 보여지는데, 유저의 이메일은 ID로 쓰이는 이메일 뿐인가요? 담당자 이메일 또는 대표 이메일이 별도로 없이 관리가 USER_ACCOUNT의 'EMAIL'로만 관리 여부

@BAEKJungHo
Copy link
Member Author

USER_ACCOUNT, USER_INFO 의 PK 'id' 를 숙박업체의 경우 'idx'로 두었는데, 이는 하나의 서비스 안에서 통일하는게 나아보이는데, id 로 지정하신 이유가 있으실까요?

이건 통일하면 되는 부분이라 ㅎㅎ id 로 한 이유는 idx 는 일단 index 의 축약어 이기도 하고, 보통 JPA 를 쓰게되면 엔티티의 PK 컬럼을 id 로 잡는 경우가 많아서 id 로 선언해줬습니다.

EMAIL이 로그인할 때의 ID로 보여지는데, 유저의 이메일은 ID로 쓰이는 이메일 뿐인가요? 담당자 이메일 또는 대표 이메일이 별도로 없이 관리가 USER_ACCOUNT의 'EMAIL'로만 관리 여부

일반 유저의 경우 ID = EMAIL 로 사용하면 될 것 같습니다 :)

반면 관리자의 경우에는 Expedia 기준 내 숙박 시설 등록을 클릭하면 헤더 좌측 상단을 보면 Partner Central 이라고 되어있습니다. 실제로 Partner Central 에 가입을 해야지 숙박 관련한 관리자 기능들을 사용할 수 있는 것 같습니다.

제가 일반 유저로 가입한 아이디가 Partner Central 에는 로그인이 안됩니다.

호텔스 닷컴 숙박 등록 화면을 보면 익스피디아와 동일합니다.

따라서, 익스피디아 그룹에 속하는 브랜드들은 Expedia Partner central Id 를 사용하여 관리할 수 있는 것 같습니다.

그래서 일반 유저를 관리하는 user_account 와 expedia partner central 에 관한 계정을 관리하는 테이블이 분리되어야 할 것 같습니다.

@BAEKJungHo BAEKJungHo changed the title User Schema User/Partner Schema Apr 18, 2022
@shbada
Copy link
Member

shbada commented Apr 19, 2022

아하 넵! 답변 내용 이해했습니다~

USER의 상태 정보(탈퇴 등)에 관련된 기능 제공은 없을까요?

@BAEKJungHo
Copy link
Member Author

USER의 상태 정보(탈퇴 등)에 관련된 기능 제공은 없을까요?

감사합니다 :) ~ active 정도만 추가해 놓을게요. History Table 은 제외 시키겠습니다.

@shbada
Copy link
Member

shbada commented Apr 26, 2022

정호님~ Expedia Group Account 관련 스키마는 잘 정리해주신거 같아요!
한가지 질문이 있는데,

expedia_group_account, expedia_group_info 두 테이블 모두 '활성화 여부 컬럼'이 존재하는 이유가 뭔가요?

@BAEKJungHo
Copy link
Member Author

expedia_group_account, expedia_group_info 두 테이블 모두 '활성화 여부 컬럼'이 존재하는 이유가 뭔가요?

INFO 는 내가 'EXPEDIA', 'TRIVAGO', 'HOTELS.COM' 에 가입한 상태에서, TRIVAGO 를 탈퇴하는 경우, 비활성화 처리하기 위한 컬럼이고, account 는 전체 탈퇴 개념으로 넣어두었습니다 :)

@BAEKJungHo BAEKJungHo added docs Documentations and removed schema labels Sep 18, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
docs Documentations
Projects
None yet
Development

No branches or pull requests

2 participants