NAJUHA V2 ERD
Generated by
typeorm-markdown-generator
Table of Contents
User
erDiagram
policy {
uuid id PK
integer version
varchar type
boolean isMandatory
varchar title
text content
timestamptz createdAt
}
policy_consent {
uuid id PK
timestamptz createdAt
uuid userId FK
uuid policyId FK
}
user_profile_image {
uuid id PK
uuid userId FK
uuid imageId FK
timestamptz createdAt
timestamptz deletedAt "nullable"
}
user {
uuid id PK
varchar role
varchar snsAuthProvider
varchar snsId
varchar email
varchar name
varchar phoneNumber
varchar nickname
varchar gender
varchar birth
varchar belt
varchar status
timestamptz createdAt
timestamptz updatedAt
}
image {
uuid id PK
varchar path
varchar format
timestamptz createdAt
timestamptz linkedAt "nullable"
uuid userId FK
}
policy_consent }o--|| user: user
policy_consent }o--|| policy: policy
user_profile_image }o--|| user: user
user_profile_image }o--|| image: image
image }o--|| user: user
policy
Policy.
- ๊ฐ์ ํ์ ์ ์ฝ๊ด์์ ์ด ํ์ํ ๋๋ ์ ๋ฐ์ดํธ๊ฐ ์๋ ์๋ก์ด ์ฝ๊ด์ ์์ฑํฉ๋๋ค.
- ์๋ก์ด ์ฝ๊ด์ด ์์ฑ๋ ๋๋ง๋ค ๋ฒ์ ์ ์ฌ๋ฆฝ๋๋ค.
@namespace User
Properties
id
: UUID v7.version
: ์ฝ๊ด์ ๋ฒ์ .type
์ฝ๊ด์ ์ข ๋ฅ.
- TERMS_OF_SERVICE: ์๋น์ค ์ด์ฉ ์ฝ๊ด.
- PRIVACY: ๊ฐ์ธ์ ๋ณด ์ฒ๋ฆฌ ๋ฐฉ์นจ.
- REFUND: ํ๋ถ ์ ์ฑ .
- ADVERTISEMENT: ๊ด๊ณ ์ ์ฑ .
isMandatory
์ฝ๊ด๋์ ํ์์ฌ์.
- true: ํ์.
- false: ์ ํ.
title
์ฝ๊ด์ ์ ๋ชฉ.
- ex) ์๋น์ค ์ด์ฉ ์ฝ๊ด, ๊ฐ์ธ์ ๋ณด ์ฒ๋ฆฌ ๋ฐฉ์นจ, ํ๋ถ ์ ์ฑ .
content
์ฝ๊ด์ ๋ด์ฉ.
- ex) ์๋น์ค ์ด์ฉ ์ฝ๊ด, ๊ฐ์ธ์ ๋ณด ์ฒ๋ฆฌ ๋ฐฉ์นจ, ํ๋ถ ์ ์ฑ .
createdAt
policy_consent
PolicyConsent
- ์ฌ์ฉ์๊ฐ ๋์ํ ์ฝ๊ด ์ ๋ณด.
@namespace User
Properties
id
: UUID v7.createdAt
: ์ฝ๊ด ๋์ ๋ ์ง.userId
policyId
: - policyId.
user_profile_image
UserProfileImage.
์ฌ์ฉ์ ํ๋กํ ์ด๋ฏธ์ง ์ ๋ณด.
- ImageEntity ์ UserEntity ๋ฅผ ์ฐ๊ฒฐํ๋ ์ํฐํฐ.
- ์ค์ ์ด๋ฏธ์ง ์ ๋ณด๋ ImageEntity ์ ์ ์ฅ๋์ด ์์ต๋๋ค.
@namespace User
@erd Image
Properties
id
: UUID v7.userId
: userIdimageId
imageId
- u-9-1 createImage ๋ก ์์ฑ๋ image์ id
createdAt
deletedAt
user
User.
์ฌ์ฉ์ ์ ๋ณด.
@namespace User
Properties
id
: UUID v7.role
User ์ญํ . User์ ์ ๊ทผ ๊ถํ์ ๋ํ๋ ๋๋ค.
- ADMIN: ๊ด๋ฆฌ์ ๊ถํ.
- HOST: ๋ํ ์ฃผ์ต์ ๊ถํ.
- USER: ์ผ๋ฐ User ๊ถํ.
- TEMPORARY_USER: ํ์๊ฐ์ ์ ์๋ฃํ์ง ์์ User ๊ถํ.
snsAuthProvider
SNS ๊ณต๊ธ์. User๊ฐ ๋ก๊ทธ์ธํ๋๋ฐ ์ฌ์ฉํ SNS ํ๋ซํผ์ ๋ํ๋ ๋๋ค.
- KAKAO: ์นด์นด์ค.
- NAVER: ๋ค์ด๋ฒ.
- GOOGLE: ๊ตฌ๊ธ.
- APPLE: ์ ํ.
snsId
: SNS ID. ์์ ๋ก๊ทธ์ธ์ ์ํ ๊ณ ์ ์๋ณ์์ ๋๋ค.email
: User ์ด๋ฉ์ผ ์ฃผ์.name
User ์ด๋ฆ.
- ์ปฌ๋ผ๊ธธ์ด๋ 256์ผ๋ก ์ค์ ํ์์ผ๋, ์ ๋ ฅ๊ฐ ์ ํจ์ฑ๊ฒ์ฌ๋ 64์ ์ด๋ด๋ก ์ค์ ํ๋๋ก ํฉ๋๋ค.
- User ์ด๋ฆ์ ํ๊ธ, ์๋ฌธ, ์ซ์๋ง ์ ๋ ฅ ๊ฐ๋ฅํฉ๋๋ค.
phoneNumber
User ์ ํ๋ฒํธ.
- ์ ํ๋ฒํธ๊ฐ ์ ์ฅ๋์ด ์์ผ๋ฉด ์ธ์ฆ๋ ์ ํ๋ฒํธ ์ ๋๋ค.
- ex) 01012345678.
nickname
User ๋ณ๋ช .
- ์๋ฌธ, ํ๊ธ, ์ซ์๋ง ์ ๋ ฅ ๊ฐ๋ฅํฉ๋๋ค.
gender
: User ์ฑ๋ณ.birth
: User ์๋ ์์ผ (BirtDate YYYYMMDD).belt
: User ์ฃผ์ง์ ๋ฒจํธ.status
User ์ํ.
- ACTIVE: ํ์ฑ.
- INACTIVE: ๋นํ์ฑ.
createdAt
updatedAt
Application
erDiagram
player_snapshot {
uuid id PK
varchar name
varchar gender
varchar birth
varchar phoneNumber
varchar belt
varchar network
varchar team
varchar masterName
timestamptz createdAt
uuid applicationId FK
}
application_order {
uuid id PK
timestamptz createdAt
varchar orderId
varchar paymentKey "nullable"
varchar orderName
varchar customerName
varchar customerEmail
varchar status
boolean isPayed
uuid applicationId FK
uuid earlybirdDiscountSnapshotId FK "nullable"
uuid combinationDiscountSnapshotId FK "nullable"
}
application_order_payment_snapshot {
uuid id PK
timestamptz createdAt
integer normalAmount
integer earlybirdDiscountAmount
integer combinationDiscountAmount
integer totalAmount
uuid applicationOrderId FK
}
participation_division_info_snapshot {
uuid id PK
timestamptz createdAt
uuid participationDivisionInfoId FK
uuid divisionId FK
}
participation_division_info {
uuid id PK
timestamptz createdAt
varchar status
uuid applicationId FK
}
participation_division_info_payment {
uuid id PK
timestamptz createdAt
varchar status
uuid applicationOrderPaymentSnapshotId FK
uuid participationDivisionInfoId FK
uuid divisionId FK
uuid priceSnapshotId FK
}
price_snapshot {
uuid id PK
integer price
timestamptz createdAt
uuid divisionId FK
}
division {
uuid id PK
varchar category
varchar uniform
varchar gender
varchar belt
varchar weight
varchar birthYearRangeStart
varchar birthYearRangeEnd
varchar status
timestamptz createdAt
timestamptz updatedAt
uuid competitionId FK
}
additional_info {
uuid id PK
timestamptz createdAt
timestamptz updatedAt
varchar type
varchar value
uuid applicationId FK
}
application {
uuid id PK
timestamptz createdAt
timestamptz updatedAt
timestamptz deletedAt "nullable"
varchar type
varchar status
uuid competitionId FK
uuid userId FK
}
player_snapshot }|--|| application: application
application_order }o--|| application: application
application_order_payment_snapshot }o--|| application_order: applicationOrder
participation_division_info_snapshot }|--|| participation_division_info: participationDivisionInfo
participation_division_info_snapshot }o--|| division: division
participation_division_info }|--|| application: application
participation_division_info_payment }o--|| application_order_payment_snapshot: applicationOrderPaymentSnapshot
participation_division_info_payment }o--|| participation_division_info: participationDivisionInfo
participation_division_info_payment }o--|| division: division
participation_division_info_payment }o--|| price_snapshot: priceSnapshot
price_snapshot }|--|| division: division
additional_info }o--|| application: application
Indexes
Table | Index Name | Columns | Unique | Spatial | Where |
---|---|---|---|---|---|
player_snapshot | IDX_PlayerSnapshot_applicationId | applicationId | false | false | |
application_order | IDX_ApplicationOrder_applicationId | applicationId | false | false | |
application_order_payment_snapshot | IDX_ApplicationOrderPaymentSnapshot_applicationOrderId | applicationOrderId | false | false | |
participation_division_info_snapshot | IDX_ParticipationDivisionInfoSnapshot_participationDivisionInfoId | participationDivisionInfoId | false | false | |
participation_division_info | IDX_ParticipationDivisionInfo_applicationId | applicationId | false | false | |
participation_division_info_payment | IDX_ParticipationDivisionInfoPayment_applicationOrderPaymentSnapshotId | applicationOrderPaymentSnapshotId | false | false | |
price_snapshot | IDX_PriceSnapshot_divisionId | divisionId | false | false | |
division | IDX_Division_competitionId | competitionId | false | false | |
additional_info | IDX_AddtionalInfo_applicationId | applicationId | false | false | |
application | IDX_Application_userId_createdAt | userId, createdAt | false | false |
player_snapshot
PlayerSnapshot.
์ฃผ์ง์ ๋ํ ์ฐธ๊ฐ์์ ์ ๋ณด ์ค๋ ์ท.
- ๋ํ ์ฐธ๊ฐ์์ ์ ๋ณด๋ฅผ ์ค๋ ์ทํ์ฌ ์ ์ฅํฉ๋๋ค.
- ๋ํ ์ฐธ๊ฐ์์ ์ ๋ณด๋ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์ค๋
์ท์ ์์ฑํฉ๋๋ค. (๋ณ๊ฒฝ ์ด๋ ฅ ์ถ์ )
@namespace Application
Properties
id
: UUID v7.name
: ์ ์ ์ด๋ฆ. (ํ๊ธ, ์๋ฌธ, ์ซ์, ๊ณต๋ฐฑ ์ ๋ ฅ ๊ฐ๋ฅํฉ๋๋ค).gender
: ์ ์ ์ฑ๋ณ.birth
: ์ ์ ์๋ ์์ผ (BirtDate YYYYMMDD).phoneNumber
: ์ ์ ํด๋ํฐ ๋ฒํธ. ex) 01012345678.belt
: ์ ์ ์ฃผ์ง์ ๋ฒจํธ.network
: ์ฃผ์ง์ ๋คํธ์ํฌ. (ํ๊ธ, ์๋ฌธ, ์ซ์, ๊ณต๋ฐฑ ์ ๋ ฅ ๊ฐ๋ฅํฉ๋๋ค).team
: ์์ ํ. (ํ๊ธ, ์๋ฌธ, ์ซ์, ๊ณต๋ฐฑ ์ ๋ ฅ ๊ฐ๋ฅํฉ๋๋ค).masterName
: ๊ด์ฅ๋ ์ฑํจ.createdAt
applicationId
application_order
ApplicationOrder.
์ฐธ๊ฐ์ ์ฒญ ์ฃผ๋ฌธ ์ ๋ณด.
- ์ฐธ๊ฐ์ ์ฒญ์ ๋ํ ์ฃผ๋ฌธ ์ ๋ณด๋ฅผ ์ ์ฅํฉ๋๋ค.
- ์ฐธ๊ฐ์ ์ฒญ์ ๋ํด ๊ฒฐ์ ์คํจ ๋ฑ์ ์ด์ ๋ก ์ฌ๋ ค๊ฐ์ ์ฃผ๋ฌธ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
@namespace Application
Properties
id
: UUID v7.createdAt
orderId
- ์ฃผ๋ฌธ๋ฒํธ(์ด 63์)
${applicationOrder.id}_${competition.competitionPaymentId}
ํํ๋ก ์์ฑ.- 36์์ applicationOrder.id(uuidv7)์ 26์์ competition.competitionPaymentId(ULID)๋ฅผ ์กฐํฉํ์ฌ ์์ฑ.
- ex) 123e4567-e89b-12d3-a456-426614174000_01ARYZ6S41MK3W7DMT3RZR9K9Z
Q. ์ applicationOrder.id์ competition.competitionPaymentId๋ฅผ ์กฐํฉํ์ฌ ์์ฑํ๋์? A. ์ ์ฐ๊ณผ์ ์์ ๋์ผํ ๋ํ์ ์ฃผ๋ฌธ ๋ฒํธ๋ฅผ ์๋ณํ๊ธฐ ์ํจ์ ๋๋ค.
paymentKey
tosspayments์์ ๋ฐ๊ธ๋ฐ์ ๊ฒฐ์ ํค.
- ๊ฒฐ์ ๊ฐ ์๋ฃ๋๋ฉด ๋ฐ๊ธ๋ฐ์ ๊ฒฐ์ ํค๋ฅผ ์ ์ฅํฉ๋๋ค.
- ๊ฒฐ์ ๊ฐ ์๋ฃ๋์ง ์์ ๊ฒฝ์ฐ null.
- ๊ณ ์ ํ ๊ฒฐ์ ์ ๋ณด๋ฅผ ์๋ณํ๊ธฐ ์ํ ํค์ ๋๋ค.
orderName
์ฃผ๋ฌธ๋ช (์ด 100์)
- ์ ์ฒญํ ๋ํ์ title์ด ์ ์ฅ๋ฉ๋๋ค.
customerName
: ์ฃผ๋ฌธ์ ์ด๋ฆ(์ด 64์)customerEmail
: ์ฃผ๋ฌธ์ ์ด๋ฉ์ผ(์ด 320์)status
์ฃผ๋ฌธ ์ํ.
- READY: ๊ฒฐ์ ๋๊ธฐ์ค
- DONE: ๊ฒฐ์ ์๋ฃ
- FAIL: ๊ฒฐ์ ์คํจ
- PARTIAL_CANCELED: ๋ถ๋ถ ์ทจ์
- CANCELED: ์ ์ฒด ์ทจ์
isPayed
: ๊ฒฐ์ ์ฌ๋ถ.applicationId
earlybirdDiscountSnapshotId
combinationDiscountSnapshotId
application_order_payment_snapshot
ApplicationOrderPaymentSnapshot.
์ฐธ๊ฐ์ ์ฒญ์ ๋ํ ๊ฒฐ์ ์ ๋ณด.
@namespace Application
Properties
id
: UUID v7.createdAt
: createdAt.normalAmount
: ํ ์ธ์ด ์ ์ฉ๋์ง ์์ ์ด ๊ธ์ก (์).earlybirdDiscountAmount
: ์ผ๋ฆฌ๋ฒ๋ ํ ์ธ ๊ท์น์์ํด ํ ์ธ๋ ๊ธ์ก. (์).combinationDiscountAmount
: ์กฐํฉํ ์ธ ๊ท์น์์ํด ํ ์ธ๋ ๊ธ์ก. (์).totalAmount
ํ ์ธ์ด ์ ์ฉ๋ ์ต์ข ๊ธ์ก. (์).
- ๊ณ์ฐ ๋ฐฉ๋ฒ : normalAmount - earlybirdDiscountAmount - combinationDiscountAmount.
applicationOrderId
: - application id.
participation_division_info_snapshot
ParticipationDivisionInfoSnapshot.
์ฐธ๊ฐ์ ์ฒญ์ ๋ํ ๋ถ๋ฌธ ์ ๋ณด.
- ์ฐธ๊ฐ์ ์ฒญ์ ๋ํ ๋ถ๋ฌธ ์ ๋ณด๊ฐ ๋ณ๊ฒฝ๊ฒฝ๋ ๋๋ง๋ค ์ค๋ ์ท์ ์์ฑํ๋ค.
- ๊ฒฐ์ ์ดํ์๋ง ์ค๋ ์ท์ด ์ ์ฅ๋๊ณ , ๊ฒฐ์ ์ด์ ์ ์ฐธ๊ฐ ๋ถ๋ฌธ ์์ ์, Application์์ฒด๋ฅผ ์๋ก ์์ฑํ๋ค.
- ํด๋น entity ๋ฅผ ํฌํจํ๋ Application์ด DONE ์ํ๋ผ๋ฉด, ์ต์ด์ ์ค๋ ์ท์ด ๊ฒฐ์ ์ ๋ณด๋ก ์ฌ์ฉ๋๋ค.
- ๋ง์ง๋ง ์ค๋
์ท์ด ํ์ ์ ์ฐธ๊ฐ ๋ถ๋ฌธ ์ ๋ณด๋ฅผ ๋ํ๋ธ๋ค.
@namespace Application
Properties
id
: UUID v7.createdAt
participationDivisionInfoId
divisionId
: ์ ์ ๊ฐ ์ฐธ๊ฐํ ๋ถ๋ฌธ ID.
participation_division_info
ParticipationDivisionInfo.
์ฐธ๊ฐ์ ์ฒญ์ ๋ํ ๋ถ๋ฌธ ์ ๋ณด ์๋ณํ๋ Entity.
- ์ฐธ๊ฐ์ ์ฒญ์ ๋ํ ๋ถ๋ฌธ ์ ๋ณด๊ฐ ๋ณ๊ฒฝ๊ฒฝ๋ ๋๋ง๋ค ํ์ entity์ธ ParticipationDivisionInfoSnapshot์ ์์ฑํ๋ค.
@namespace Application
Properties
id
: UUID v7.createdAt
status
์ฐธ๊ฐ๋ถ๋ฌธ ์ ๋ณด ์ํ.
- READY: ๊ฒฐ์ ๋๊ธฐ์ค
- DONE: ๊ฒฐ์ ์๋ฃ
- CANCELED: ๊ฒฐ์ ์ทจ์
applicationId
participation_division_info_payment
ParticipationDivisionInfoPayment.
ParticipationDivisionInfo ์ ๋ํ ๊ฒฐ์ ์ ๋ณด.
@namespace Application
Properties
id
: UUID v7.createdAt
status
๊ฒฐ์ ์ํ.
- READY: ๊ฒฐ์ ๋๊ธฐ์ค
- DONE: ๊ฒฐ์ ์๋ฃ
- CANCELED: ๊ฒฐ์ ์ทจ์
applicationOrderPaymentSnapshotId
participationDivisionInfoId
divisionId
priceSnapshotId
additional_info
AdditionalInfo.
๋ํ์ฌ๊ฐ ์ฐธ๊ฐ์์๊ฒ ์๊ตฌํ๋ ์ถ๊ฐ ์ ๋ณด. ex) ์ฃผ์, ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ ๋ฑ
๋ํ์ฌ๊ฐ ์์ฒญํ์ง ์์๊ฒฝ์ฐ ์ถ๊ฐ ์ ๋ณด๋ฅผ ์
๋ ฅํ์ง ์์๋ ๋๋ค.
@namespace Application
Properties
id
: UUID v7.createdAt
: createdAt.updatedAt
: updatedAttype
type.
- SOCIAL_SECURITY_NUMBER: ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ
- ADDRESS: ์ฃผ์
value
value. ๊ฐ type์ ํด๋นํ๋ ๊ฐ.
- SOCIAL_SECURITY_NUMBER: โ123456-1234567โ
- ADDRESS: โ์์ธ์ ๊ฐ๋จ๊ตฌ ํ ํค๋๋ก 123โ
applicationId
: Application id.
application
Application.
๋ํ ์ฐธ๊ฐ ์ ์ฒญ ์ ๋ณด.
@namespace Application
Properties
id
: UUID v7.createdAt
updatedAt
deletedAt
type
๋ณธ์ธ์ ์ฒญ๊ณผ ๋๋ฆฌ์ ์ฒญ์ ๊ตฌ๋ณํ๋ type.
- SELF: ๋ณธ์ธ ์ ์ฒญ
- PROXY: ๋๋ฆฌ ์ ์ฒญ
status
๋ํ ์ ์ฒญ ์ํ.
- READY: ๊ฒฐ์ ๋๊ธฐ์ค
- DONE: ๊ฒฐ์ ์๋ฃ
- PARTIAL_CANCELED: ๋ถ๋ถ ์ทจ์
- CANCELED: ์ ์ฒด ์ทจ์
competitionId
: ์ฐธ๊ฐ ๋ํ iduserId
: ์ ์ฒญ์ ๊ณ์ ์ userId
Competition
erDiagram
earlybird_discount_snapshot {
uuid id PK
timestamptz earlybirdStartDate
timestamptz earlybirdEndDate
integer discountAmount
timestamptz createdAt
uuid competitionId FK
}
combination_discount_snapshot {
uuid id PK
jsonb combinationDiscountRules
timestamptz createdAt
uuid competitionId FK
}
price_snapshot {
uuid id PK
integer price
timestamptz createdAt
uuid divisionId FK
}
division {
uuid id PK
varchar category
varchar uniform
varchar gender
varchar belt
varchar weight
varchar birthYearRangeStart
varchar birthYearRangeEnd
varchar status
timestamptz createdAt
timestamptz updatedAt
uuid competitionId FK
}
required_additional_info {
uuid id PK
varchar type
varchar description
timestamptz createdAt
timestamptz deletedAt "nullable"
uuid competitionId FK
}
competition_host_map {
uuid id PK
uuid hostId FK
uuid competitionId FK
}
competition_poster_image {
uuid id PK
uuid competitionId FK
uuid imageId FK
timestamptz createdAt
timestamptz deletedAt "nullable"
}
competition {
uuid id PK
varchar competitionPaymentId
varchar title
varchar address
timestamptz competitionDate "nullable"
timestamptz registrationStartDate "nullable"
timestamptz registrationEndDate "nullable"
timestamptz refundDeadlineDate "nullable"
timestamptz soloRegistrationAdjustmentStartDate "nullable"
timestamptz soloRegistrationAdjustmentEndDate "nullable"
timestamptz registrationListOpenDate "nullable"
timestamptz bracketOpenDate "nullable"
text description
boolean isPartnership
integer viewCount
varchar status
timestamptz createdAt
timestamptz updatedAt
}
image {
uuid id PK
varchar path
varchar format
timestamptz createdAt
timestamptz linkedAt "nullable"
uuid userId FK
}
earlybird_discount_snapshot }o--|| competition: competition
combination_discount_snapshot }o--|| competition: competition
price_snapshot }|--|| division: division
division }o--|| competition: competition
required_additional_info }o--|| competition: competition
competition_host_map }o--|| competition: competition
competition_poster_image }o--|| competition: competition
competition_poster_image }o--|| image: image
Indexes
Table | Index Name | Columns | Unique | Spatial | Where |
---|---|---|---|---|---|
earlybird_discount_snapshot | IDX_EarlybirdDiscountSnapshot_competitionId | competitionId | false | false | |
combination_discount_snapshot | IDX_CombinationDiscountSnapshot_competitionId | competitionId | false | false | |
price_snapshot | IDX_PriceSnapshot_divisionId | divisionId | false | false | |
division | IDX_Division_competitionId | competitionId | false | false | |
required_additional_info | IDX_RequiredAdditionalInfo_competitionId | competitionId | false | false | |
competition_host_map | IDX_CompetitionHostMap_competitionId | competitionId | false | false | |
competition | IDX_Competition_status | status | false | false | |
competition | IDX_Competition_competitionDate | competitionDate | false | false |
earlybird_discount_snapshot
EarlybirdDiscountSnapshot.
์ผ๋ฆฌ๋ฒ๋ ํ ์ธ ์ค๋ ์ท.
- ์ผ๋ฆฌ๋ฒ๋ ํ ์ธ ๊ท์น์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์ค๋
์ท์ ์์ฑํ๋ค.
@namespace Competition
Properties
id
: UUID v7.earlybirdStartDate
: ์ผ๋ฆฌ๋ฒ๋ ํ ์ธ ์์์ผ.earlybirdEndDate
: ์ผ๋ฆฌ๋ฒ๋ ํ ์ธ ๋ง๊ฐ์ผ.discountAmount
์ผ๋ฆฌ๋ฒ๋ ํ ์ธ ๊ฐ๊ฒฉ.
- ex) 10000.
- ๋จ์ : ์.
- ์์ ๊ฐ์ ํ์ฉํ์ง ์์ต๋๋ค.
createdAt
competitionId
combination_discount_snapshot
CombinationDiscountSnapshot.
๋ถ๋ฌธ ์กฐํฉ ํ ์ธ ์ค๋ ์ท.
- ์กฐํฉ ํ ์ธ ๊ท์น์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์ค๋
์ท์ ์์ฑํ๋ค.
@namespace Competition
Properties
id
: UUID v7.combinationDiscountRules
: ์กฐํฉ ํ ์ธ ๊ท์น.createdAt
competitionId
price_snapshot
PriceSnapshot.
๋ํ ๋ถ๋ฌธ์ด ๊ฐ๊ฒฉ ์ค๋ ์ท.
- ๋ํ ๋ถ๋ฌธ์ ๊ฐ๊ฒฉ์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์ค๋
์ท์ ์์ฑํ๋ค.
@namespace Competition
@erd Application
Properties
id
: UUID v7.price
: price, (์).createdAt
divisionId
division
Division.
- ๋ํ์ ๋ถ๋ฌธ ์ ๋ณด.
- ๋ํ์ ๋ถ๋ฌธ์ ๊ฐ๊ฒฉ ์ ๋ณด๋ PriceSnapshot Entity๋ฅผ ํตํด ๊ด๋ฆฌํฉ๋๋ค.
- ๊ฐ๊ฒฉ์ด ์์ ๋ ๋๋ง๋ค PriceSnapshot Entity์ ์ค๋
์ท์ ์์ฑํฉ๋๋ค.
@namespace Competition
@erd Application
Properties
id
: UUID v7.category
๋ถ๋ฌธ ์นดํ ๊ณ ๋ฆฌ.
- ex) โ์ด๋ฑ๋ถโ, โ์ค๋ฑ๋ถโ, โ์ด๋ํธโ.
uniform
: ์ ๋ํผ.gender
: ๋ถ๋ฌธ ์ฑ๋ณ.belt
์ฃผ์ง์๋ฒจํธ.
- ex) โํ์ดํธโ, โ๋ธ๋ฃจโ, โํผํโ, โ๋ธ๋ผ์ดโ, โ๋ธ๋โ.
weight
์ฒด๊ธ.
- weight type: โ-45โ, โ+45โ, โ-60.5โ, โ+60.5โ
- absolute type: โ-45_ABSOLUTEโ, โ+45_ABSOLUTEโ, โ-60.5_ABSOLUTEโ, โ+60.5_ABSOLUTEโ, โABSOLUTEโ
birthYearRangeStart
: ์ถ์๋ ๋ ๋ฒ์ ์์. YYYY.birthYearRangeEnd
: ์ถ์๋ ๋ ๋ฒ์ ๋. YYYY.status
ํ์ฑ ์ํ.
- ACTIVE: ํด๋น ๋ถ๋ฌธ์ ์ ์ฒญ ๊ฐ๋ฅ. (USER ์๊ฒ ๋ ธ์ถ๋จ.)
- INACTIVE: ํด๋น ๋ถ๋ฌธ์ ์ ์ฒญ ๋ถ๊ฐ๋ฅ. (USER ์๊ฒ ๋ ธ์ถ๋์ง ์์.)
createdAt
updatedAt
competitionId
required_additional_info
RequiredAdditionalInfo.
๋ํ์ ์ฒญ์ ์ถ๊ฐ ์ ๋ณด ์ ๋ ฅ ๊ท์น.
- ๋ํ์ฌ๊ฐ ์์ฒญํ๊ฒฝ์ฐ์๋ง ํด๋น Entity๋ฅผ ์์ฑํฉ๋๋ค.
@namespace Competition
Properties
id
: UUID v7.type
์ถ๊ฐ์ ๋ณด ํ์ ๊ฐ
- SOCIAL_SECURITY_NUMBER : ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ
- ADDRESS : ์ฃผ์
description
์ถ๊ฐ์ ๋ณด ์ค๋ช .
- ์ถ๊ฐ ์ ๋ณด๋ฅผ ์์งํ๋ ์ด์ ๋ฑ์ ์ค๋ช ํฉ๋๋ค๋ฑ
createdAt
deletedAt
competitionId
competition_host_map
Competition Host Map Entity
@namespace Competition
Properties
id
: UUID v7.hostId
: ์ฃผ์ต์ User ID.competitionId
: ์ฃผ์ฒด ๋ํ ID.
competition_poster_image
CompetitionPosterImage.
- ์ค์ ์ด๋ฏธ์ง์ ๋ํ ์ ๋ณด๋ Image Entity๋ฅผ ํตํด ๊ด๋ฆฌํฉ๋๋ค.
- ํด๋น Entity๋ ๋ํ ํฌ์คํฐ ์ด๋ฏธ์ง์ ๋ํ๋ฅผ ๋งคํํ๋ ์ญํ ์ ํฉ๋๋ค.
@namespace Competition
@erd Image
Properties
id
: UUID v7.competitionId
: competitionIdimageId
imageId
- u-9-1 createImage ๋ก ์์ฑ๋ image์ id
createdAt
deletedAt
competition
Competition.
๋ํ ์ ๋ณด.
@namespace Competition
Properties
id
: UUID v7.competitionPaymentId
๋ํ ๊ฒฐ์ ID.
- ๊ฒฐ์ ID๋ 26์๋ฆฌ ULID ํ์์ ๋๋ค.
- ๊ฐ ๋ํ๋ง๋ค ๊ณ ์ ํ ๊ฒฐ์ ID๋ฅผ ๊ฐ์ง๋๋ค.
- ํด๋น ๋ํ์ ์ฒญ์ ๊ฒฐ์ ํ ๋ ํ์ํ orderId์ ํฌํจ๋ฉ๋๋ค.
${orderId}_${competitionPaymentId}
(63์) - tosspayments์์ ํด๋น ๋ํ์ ๊ฒฐ์ ์ ๋ณด๋ฅผ ์กฐํํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
title
: ๋ํ๋ช .address
: ๋ํ๊ฐ ์ด๋ฆฌ๋ ์์น (๋๋ก๋ช ์ฃผ์).competitionDate
: ๋ํ ๋ ์ง.registrationStartDate
: ์ฐธ๊ฐ ์ ์ฒญ ์์์ผ.registrationEndDate
: ์ฐธ๊ฐ ์ ์ฒญ ๋ง๊ฐ์ผ.refundDeadlineDate
: ํ๋ถ ๊ฐ๋ฅ ๊ธฐ๊ฐ ๋ง๊ฐ์ผ.soloRegistrationAdjustmentStartDate
๋จ๋ ์ฐธ๊ฐ์์ ๋ถ๋ฌธ ์กฐ์ ์์์ผ.
- ๋ถ๋ฌธ์ ์ฐธ๊ฐ์๊ฐ ํ ๋ช ๋ง ์๋ ๊ฒฝ์ฐ, ํด๋น ์ฐธ๊ฐ์๋ฅผ ๋ค๋ฅธ ์ฒด๊ธ์ด๋ ๋ถ๋ฌธ์ผ๋ก ์กฐ์ ํ ์ ์๋ ๊ธฐ๊ฐ์ ์์์ ๋ํ๋ ๋๋ค.
soloRegistrationAdjustmentEndDate
: ๋จ๋ ์ฐธ๊ฐ์์ ๋ถ๋ฌธ ์กฐ์ ๋ง๊ฐ์ผ.registrationListOpenDate
: ์ฐธ๊ฐ์ ๋ช ๋จ ๊ณต๊ฐ์ผ.bracketOpenDate
: ๋์งํ ๊ณต๊ฐ์ผ.description
: ๋ํ ์์ธ ์ ๋ณด.isPartnership
: ํ์ฝ ๋ํ ์ฌ๋ถ.viewCount
: ์กฐํ์.status
๋ํ์ ์ํ.
- ACTIVE: ํ์ฑํ๋ ๋ํ ์ ์ ์๊ฒ ๋ ธ์ถ, ์ฐธ๊ฐ ์ ์ฒญ ๊ฐ๋ฅ.
- INACTIVE: ๋นํ์ฑํ๋ ๋ํ ์ ์ ์๊ฒ ๋ ธ์ถ๋์ง ์์, ์ฐธ๊ฐ ์ ์ฒญ ๋ถ๊ฐ๋ฅ.
createdAt
updatedAt
Post
erDiagram
comment_report {
uuid id PK
varchar type
varchar status
uuid userId FK
timestamptz createdAt
uuid commentId FK
}
comment_snapshot {
uuid id PK
text body
timestamptz createdAt
uuid commentId FK
}
comment {
uuid id PK
uuid userId FK
uuid parentId FK "nullable"
varchar status
timestamptz createdAt
timestamptz deletedAt "nullable"
uuid postId FK
}
comment_like {
uuid id PK
uuid userId FK
timestamptz createdAt
uuid commentId FK
}
post_like {
uuid id PK
uuid userId FK
timestamptz createdAt
uuid postId FK
}
post_report {
uuid id PK
varchar type
varchar status
uuid userId FK
uuid postId FK
timestamptz createdAt
}
image {
uuid id PK
varchar path
varchar format
timestamptz createdAt
timestamptz linkedAt "nullable"
uuid userId FK
}
post_snapshot_image {
uuid id PK
uuid postSnapshotId FK
uuid imageId FK
integer sequence
timestamptz createdAt
}
post_snapshot {
uuid id PK
varchar title
text body
timestamptz createdAt
uuid postId FK
}
post {
uuid id PK
uuid userId FK
integer viewCount
varchar status
varchar category
timestamptz createdAt
timestamptz deletedAt "nullable"
}
comment_report }o--|| comment: comment
comment_snapshot }|--|| comment: comment
comment }o--|| comment: parent
comment }o--|| post: post
comment_like }o--|| comment: comment
post_like }o--|| post: post
post_report }o--|| post: post
post_snapshot_image }o--|| post_snapshot: postSnapshot
post_snapshot_image }o--|| image: image
post_snapshot }|--|| post: post
comment_report
CommentReport.
๋๊ธ์ ์ ๊ณ ์ ๋ณด๋ฅผ ๋ด๋ Entity์
๋๋ค.
์ ๊ณ ํ์๊ฐ 10ํ ์ด์์ด๋ฉด ํด๋น ๋๊ธ์ด INACTIVE
์ํ๋ก ๋ณ๊ฒฝ๋๊ณ , ์ ์ ์๊ฒ ๋
ธ์ถ๋์ง ์์ต๋๋ค.
๋์ผํ ์ ์ ๊ฐ ๋์ผํ ๋๊ธ์ ์ฌ๋ฌ ๋ฒ ์ ๊ณ ํ ์ ์์ต๋๋ค. (์ค๋ณต์ ๊ณ ๋ถ๊ฐ๋ฅ)
@namespace Post
Properties
id
: UUID v7.type
์ ๊ณ ํ์ .
- SPAM_CLICKBAIT: ๋์ / ๋๋ / ๋๋ฐฐ
- COMMERCIAL_ADVERTISING: ์์ ์ ๊ด๊ณ ๋ฐ ํ๋งค
- SEXUAL_CONTENT: ์๋์ฑ / ์ ์ ์
- ABUSE_HARASSMENT: ์์ค/๋นํ
- POLITICAL_DISPARAGEMENT: ์ ๋น/์ ์น์ธ ๋นํ ๋ฐ ์ ๊ฑฐ์ด๋
- IMPERSONATION_FRAUD: ์ ์ถ/์ฌ์นญ/์ฌ๊ธฐ
- ILLEGAL_DISTRIBUTION: ๋ถ๋ฒ์ดฌ์๋ฌผ ๋ฑ์ ์ ํต
- RELIGIOUS_PROSELYTIZING: ์ข ๊ต ํฌ๊ต ์๋
- INAPPROPRIATE_CONTENT: ๊ฒ์ํ ์ฑ๊ฒฉ์ ๋ถ์ ์ ํจ
status
์ ๊ณ ์ํ.
ACCEPTED
์ํ์ ์ ๊ณ ๊ฐ 10ํ ์ด์์ด๋ฉด ํด๋น ๋๊ธ์ดINACTIVE
์ํ๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.ACCEPTED
: ์ ๊ณ ์น์ธ.REJECTED
: ์ ๊ณ ๊ฑฐ๋ถ.
userId
: ์ ๊ณ ์ UserId.createdAt
: ์ ๊ณ ์ผ์.commentId
: ์ ๊ณ ๋ ๋๊ธ์ Id.
comment_snapshot
CommentSnapshot.
๋๊ธ์ ์ค๋
์ท ์ ๋ณด๋ฅผ ๋ด๋ Entity์
๋๋ค.
comment
์์ ์ธ๊ธํ ๊ฒ์ฒ๋ผ ์ฆ๊ฑฐ๋ฅผ ๋ณด๊ดํ๊ณ ์ฌ๊ธฐ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๋๊ธ ๋ ์ฝ๋์์ ๋๊ธ ๋ด์ฉ์ ๋ถ๋ฆฌํ์ฌ ๋ณด๊ดํฉ๋๋ค.
@namespace Post
Properties
id
: UUID v7.body
: ๋๊ธ ๋ด์ฉ.createdAt
: ๋๊ธ ์์ฑ์ผ์.commentId
: ๋๊ธ Id.
comment
Comment, CommentReply.
๋๊ธ or ๋๋๊ธ์ ์๋ณํ๋ ์ต์์ ์ํฐํฐ๋ก์ ๊ฐ๋ณ ๋๊ธ์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์์ต๋๋ค.
๋๊ธ์ ๋ด์ฉ(body) comment
์ ์กด์ฌํ์ง ์๊ณ , comment_snapshot
์ ์ ์ฅ๋์ด ์์ต๋๋ค.
comment
์ comment_snapshot
๋ 1:N ๊ด๊ณ๋ก ์ฐ๊ฒฐ๋์ด ์๋๋ฐ, ์ด๋ ๋๊ธ์ด ์์ ๋ ๋๋ง๋ค ์๋ก์ด ์ค๋
์ท ๋ ์ฝ๋๊ฐ ์์ฑ๋๊ธฐ ๋๋ฌธ์
๋๋ค.
๋๊ธ์ด ์์ ๋ ๋๋ง๋ค ์๋ก์ด ์ค๋
์ท ๋ ์ฝ๋๊ฐ ์์ฑ๋๋ ์ด์ ๋ ์ฆ๊ฑฐ๋ฅผ ๋ณด์กด ๋ฐ ์ถ์ ํ๊ธฐ ์ํจ์
๋๋ค. ์จ๋ผ์ธ ์ปค๋ฎค๋ํฐ์ ํน์ฑ์ ์ฐธ์ฌ์ ๊ฐ์๋ ํญ์ ๋ถ์์ ์ํ์ด ์กด์ฌํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ถ์์ ๊ธ์ด๋ ๋๊ธ์ ํตํด ๋ฐ์ํ ์ ์์ผ๋ฉฐ, ๊ธฐ์กด ๋๊ธ์ ์์ ํ์ฌ ์ํฉ์ ์กฐ์ํ๋ ๋ฑ์ ํ์๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ด๋ฌํ ๊ตฌ์กฐ๋ก ์ค๊ณ๋์์ต๋๋ค. ์ฆ, ์ฆ๊ฑฐ๋ฅผ ๋ณด๊ดํ๊ณ ์ฌ๊ธฐ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํ ๊ฒ์
๋๋ค.
๋๋๊ธ์ ๋ถ๋ชจ ๋๊ธ์ id
๋ฅผ parentId
์ ์ ์ฅํ์ฌ ๊ด๊ณ๋ฅผ ๋งบ์ต๋๋ค. ๋๋๊ธ์ depth๋ 1๋ก ์ ํ๋์ด ์์ต๋๋ค. ์ฆ ๋๋๊ธ์ ๋๋๊ธ์ ์์ฑํ ์ ์์ต๋๋ค.
@namespace Post
Properties
id
: UUID v7.userId
: ๋๊ธ ์์ฑ์ UserId.parentId
๋ถ๋ชจ ๋๊ธ Id.
- ๋๊ธ์ ๊ฒฝ์ฐ
null
์ ์ ์ฅํฉ๋๋ค. - ๋๋๊ธ์ ๊ฒฝ์ฐ ๋ถ๋ชจ ๋๊ธ์
id
๋ฅผ ์ ์ฅํฉ๋๋ค.
- ๋๊ธ์ ๊ฒฝ์ฐ
status
๋๊ธ ์ํ. default:
ACTIVE
.ACTIVE
: ์ ์ ์๊ฒ ๋ ธ์ถ.INACTIVE
: ์ ์ ์๊ฒ ๋ ธ์ถ๋์ง ์์. ๊ด๋ฆฌ์์ ํ๋จ ํ์INACTIVE
๋ก ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค. ์ ๊ณ ํ์๊ฐ 10ํ ์ด์์ด๋ฉด ์๋์ผ๋กINACTIVE
์ฒ๋ฆฌ๋ฉ๋๋ค. ๊ด๋ฆฌ์์ ํ๋จ ํ์ACTIVE
๋ก ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค.
createdAt
: ๋๊ธ ์์ฑ์ผ์.deletedAt
: ๋๊ธ ์ญ์ ์ผ์.postId
: ๊ฒ์๊ธ Id.
comment_like
CommentLike.
๋๊ธ ์ข์์ ์ ๋ณด๋ฅผ ๋ด๋ Entity์
๋๋ค.
๋์ผํ ์ ์ ๊ฐ ๋์ผํ ๋๊ธ์ ์ฌ๋ฌ ๋ฒ ์ข์์๋ฅผ ๋๋ฅผ ์ ์์ต๋๋ค. (์ค๋ณต ์ข์์ ๋ถ๊ฐ๋ฅ)
@namespace Post
Properties
id
: UUID v7.userId
: ์ข์์๋ฅผ ๋๋ฅธ UserId.createdAt
: ์ข์์ ๋๋ฅธ ์ผ์.commentId
: ์ข์์๋ฅผ ๋๋ฅธ ๋๊ธ์ Id.
post_like
PostLike.
๊ฒ์๊ธ ์ข์์ ์ ๋ณด๋ฅผ ๋ด๋ Entity์
๋๋ค.
๋์ผํ ์ ์ ๊ฐ ๋์ผํ ๊ฒ์๊ธ์ ์ฌ๋ฌ ๋ฒ ์ข์์๋ฅผ ๋๋ฅผ ์ ์์ต๋๋ค. (์ค๋ณต ์ข์์ ๋ถ๊ฐ๋ฅ)
@namespace Post
Properties
id
: UUID v7.userId
: ์ข์์๋ฅผ ๋๋ฅธ UserId.createdAt
: ์ข์์ ๋๋ฅธ ์ผ์.postId
: ์ข์์๋ฅผ ๋๋ฅธ ๊ฒ์๊ธ์ Id.
post_report
PostReport.
๊ฒ์๊ธ์ ์ ๊ณ ์ ๋ณด๋ฅผ ๋ด๋ Entity์
๋๋ค.
์ ๊ณ ํ์๊ฐ 10ํ ์ด์์ด๋ฉด ํด๋น ๊ฒ์๊ธ์ด INACTIVE
์ํ๋ก ๋ณ๊ฒฝ๋๊ณ , ์ ์ ์๊ฒ ๋
ธ์ถ๋์ง ์์ต๋๋ค.
๋์ผํ ์ ์ ๊ฐ ๋์ผํ ๊ฒ์๊ธ์ ์ฌ๋ฌ ๋ฒ ์ ๊ณ ํ ์ ์์ต๋๋ค. (์ค๋ณต์ ๊ณ ๋ถ๊ฐ๋ฅ)
@namespace Post
Properties
id
: UUID v7.type
์ ๊ณ ํ์ .
- SPAM_CLICKBAIT: ๋์ / ๋๋ / ๋๋ฐฐ
- COMMERCIAL_ADVERTISING: ์์ ์ ๊ด๊ณ ๋ฐ ํ๋งค
- SEXUAL_CONTENT: ์๋์ฑ / ์ ์ ์
- ABUSE_HARASSMENT: ์์ค/๋นํ
- POLITICAL_DISPARAGEMENT: ์ ๋น/์ ์น์ธ ๋นํ ๋ฐ ์ ๊ฑฐ์ด๋
- IMPERSONATION_FRAUD: ์ ์ถ/์ฌ์นญ/์ฌ๊ธฐ
- ILLEGAL_DISTRIBUTION: ๋ถ๋ฒ์ดฌ์๋ฌผ ๋ฑ์ ์ ํต
- RELIGIOUS_PROSELYTIZING: ์ข ๊ต ํฌ๊ต ์๋
- INAPPROPRIATE_CONTENT: ๊ฒ์ํ ์ฑ๊ฒฉ์ ๋ถ์ ์ ํจ
status
์ ๊ณ ์ํ.
ACCEPTED
์ํ์ ์ ๊ณ ๊ฐ 10ํ ์ด์์ด๋ฉด ํด๋น ๊ฒ์๊ธ์ดINACTIVE
์ํ๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.ACCEPTED
: ์ ๊ณ ์น์ธ.REJECTED
: ์ ๊ณ ๊ฑฐ๋ถ.
userId
: ์ ๊ณ ์ UserId.postId
: ์ ๊ณ ๋ ๊ฒ์๊ธ์ Id.createdAt
: ์ ๊ณ ์ผ์.
post_snapshot_image
PostSnapshotImage.
@namespace Post
Properties
id
: UUID v7.postSnapshotId
: postSnapshotId.imageId
imageId.
- u-9-1 createImage ๋ก ์์ฑ๋ image์ id
sequence
sequence.
- ๊ฒ์๋ฌผ ์ด๋ฏธ์ง์ ์์.
- 0๋ถํฐ ์์.
createdAt
post_snapshot
PostSnapshot.
๊ฒ์๊ธ์ ์ค๋
์ท ์ ๋ณด๋ฅผ ๋ด๋ Entity์
๋๋ค.
post
์์ ์ธ๊ธํ ๊ฒ์ฒ๋ผ ์ฆ๊ฑฐ๋ฅผ ๋ณด๊ดํ๊ณ ์ฌ๊ธฐ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๊ฒ์๊ธ ๋ ์ฝ๋์์ ๊ฒ์๊ธ ๋ด์ฉ์ ๋ถ๋ฆฌํ์ฌ ๋ณด๊ดํฉ๋๋ค.
@namespace Post
Properties
id
: UUID v7.title
: ๊ฒ์๊ธ ์ ๋ชฉ.body
: ๊ฒ์๊ธ ๋ด์ฉ.createdAt
: ๊ฒ์๊ธ ์์ฑ์ผ์.postId
: ๊ฒ์๊ธ Id.
post
Post.
๊ฒ์๊ธ์ ์๋ณํ๋ ์ต์์ ์ํฐํฐ๋ก์ ๊ฐ๋ณ ๊ฒ์๊ธ์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์์ต๋๋ค.
๊ฒ์๊ธ์ ํ์ ์์ title
, body
๋ฑ์ post
์ ์กด์ฌํ์ง ์๊ณ , post_snapshot
์ ์ ์ฅ๋์ด ์์ต๋๋ค.
post
์ post_snapshot
๋ 1:N ๊ด๊ณ๋ก ์ฐ๊ฒฐ๋์ด ์๋๋ฐ, ์ด๋ ๊ธ์ด ์์ ๋ ๋๋ง๋ค ์๋ก์ด ์ค๋
์ท ๋ ์ฝ๋๊ฐ ์์ฑ๋๊ธฐ ๋๋ฌธ์
๋๋ค.
๊ฒ์๊ธ์ด ์์ ๋ ๋๋ง๋ค ์๋ก์ด ์ค๋
์ท ๋ ์ฝ๋๊ฐ ์์ฑ๋๋ ์ด์ ๋ ์ฆ๊ฑฐ๋ฅผ ๋ณด์กด ๋ฐ ์ถ์ ํ๊ธฐ ์ํจ์
๋๋ค. ์จ๋ผ์ธ ์ปค๋ฎค๋ํฐ์ ํน์ฑ์ ์ฐธ์ฌ์ ๊ฐ์๋ ํญ์ ๋ถ์์ ์ํ์ด ์กด์ฌํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ถ์์ ๊ธ์ด๋ ๋๊ธ์ ํตํด ๋ฐ์ํ ์ ์์ผ๋ฉฐ, ๊ธฐ์กด ๊ธ์ ์์ ํ์ฌ ์ํฉ์ ์กฐ์ํ๋ ๋ฑ์ ํ์๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ด๋ฌํ ๊ตฌ์กฐ๋ก ์ค๊ณ๋์์ต๋๋ค. ์ฆ, ์ฆ๊ฑฐ๋ฅผ ๋ณด๊ดํ๊ณ ์ฌ๊ธฐ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํ ๊ฒ์
๋๋ค.
@namespace Post
Properties
id
: UUID v7.userId
: ๊ฒ์๊ธ ์์ฑ์ UserId.viewCount
: ๊ฒ์๊ธ ์กฐํ์.status
๊ฒ์๊ธ ์ํ. default:
ACTIVE
.ACTIVE
: ์ ์ ์๊ฒ ๋ ธ์ถ.INACTIVE
: ์ ์ ์๊ฒ ๋ ธ์ถ๋์ง ์์. ๊ด๋ฆฌ์์ ํ๋จ ํ์INACTIVE
๋ก ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค. ์ ๊ณ ํ์๊ฐ 10ํ ์ด์์ด๋ฉด ์๋์ผ๋กINACTIVE
์ฒ๋ฆฌ๋ฉ๋๋ค. ๊ด๋ฆฌ์์ ํ๋จ ํ์ACTIVE
๋ก ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค.
category
Post category.
- FREE: ์์ ๊ฒ์ํ.
- COMPETITION: ๋ํ ๊ฒ์ํ.
- SEMINAR: ์ธ๋ฏธ๋ ๊ฒ์ํ.
- OPEN_MAT: ์คํ ๋งคํธ ๊ฒ์ํ.
createdAt
: ๊ฒ์๊ธ ์์ฑ์ผ์.deletedAt
: ๊ฒ์๊ธ ์ญ์ ์ผ์.
Image
erDiagram
competition_poster_image {
uuid id PK
uuid competitionId FK
uuid imageId FK
timestamptz createdAt
timestamptz deletedAt "nullable"
}
user_profile_image {
uuid id PK
uuid userId FK
uuid imageId FK
timestamptz createdAt
timestamptz deletedAt "nullable"
}
image {
uuid id PK
varchar path
varchar format
timestamptz createdAt
timestamptz linkedAt "nullable"
uuid userId FK
}
competition_poster_image }o--|| image: image
user_profile_image }o--|| image: image
image
Image.
์ด๋ฏธ์ง ์ ๋ณด.
- bucket์ ์ ์ฅ๋๋ ์ด๋ฏธ์ง ์ ๋ณด.
- UserImage, CompetitionPosterImage, PostImage ๋ฑ ์ ๋งคํ๋์ด ์ฌ์ฉ๋ฉ๋๋ค.
- ์ด๋ฏธ์ง๋ 10๋ถ ์ดํ์๋ UserImage, CompetitionPosterImage, PostImage ๋ฑ ์ ๋งคํ๋์ง ์์ผ๋ฉด ์ญ์ ๋ฉ๋๋ค.
- ์ด๋ฏธ์ง๊ฐ ๋งคํ๋๋ค๋ฉด linkedAt ์ ๋งคํ๋ ์๊ฐ์ด ์ ์ฅ๋ฉ๋๋ค.
@namespace Image
@erd Competition
@erd Post
@erd User
Properties
id
UUID v7.
- s3 bucket์ ์ ์ฅ๋๋ ์ด๋ฏธ์ง์ key๋ก ์ฌ์ฉ๋ฉ๋๋ค.
${bucketHost}/${bucketName}/${path}/${id}
๋ก ์ ๊ทผ ๊ฐ๋ฅํฉ๋๋ค.- ex) http://localhost:9000/najuha-v2-bucket/competition/019000fb-11c3-7766-ad55-17c0c2b18cae
path
s3 bucket์ ์ ์ฅ๋๋ ์ด๋ฏธ์ง์ ๊ฒฝ๋ก
- user ํ๋กํ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ:
user-profile
๋ก ์ค๋ก - competition ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ:
competition
๋ก ์ค์ - post ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ:
post
๋ก ์ค์
- user ํ๋กํ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ:
format
image format.
- โimage/jpeg'
- 'image/png'
- 'image/webpโ;
createdAt
createdAt.
- ์ด๋ฏธ์ง๊ฐ ์์ฑ๋ ์๊ฐ
linkedAt
linkedAt.
- ์ด๋ฏธ์ง๋ฅผ ์์ ํ entity์ FK๋ก ์ฐ๊ฒฐ๋ ์๊ฐ.
- null ์ด๋ฉด ์ฐ๊ฒฐ๋์ง ์์ ์ด๋ฏธ์ง.
- createdAt + 10๋ถ ์ดํ์๋ ์ฐ๊ฒฐ๋์ง ์์ ์ด๋ฏธ์ง๋ ์ฃผ๊ธฐ์ ์ผ๋ก ์ญ์ ๋ฉ๋๋ค.
userId
userId.
- ์ด๋ฏธ์ง๋ฅผ ์์ฑํ ๊ณ์ ์ userId.
TemporaryUser
erDiagram
temporary_user {
uuid id PK
varchar role
varchar snsAuthProvider
varchar snsId
varchar email
varchar name
varchar phoneNumber "nullable"
varchar nickname "nullable"
varchar gender "nullable"
varchar birth "nullable"
varchar belt "nullable"
varchar status
timestamptz createdAt
timestamptz updatedAt
}
temporary_user
TemporaryUser.
ํ์๊ฐ์ ์ด ์๋ฃ๋์ง ์์ ์ฌ์ฉ์.
- ํ์๊ฐ์
์ด ์๋ฃ๋๋ฉด User๋ก ์ด๋ํ๋ค.
@namespace TemporaryUser
Properties
id
role
snsAuthProvider
snsId
email
name
phoneNumber
nickname
gender
birth
belt
status
createdAt
updatedAt