본문으로 건너뛰기

샘플 데이터 스키마 레퍼런스

대한카드 시나리오의 11개 테이블 상세 스키마입니다.

참고: card_crm과 card_log 카탈로그는 샘플 데이터 시딩(make seed-demo) 시 자동 생성됩니다. 기본 설치에는 포함되지 않습니다.

카탈로그 구조

iceberg.card           → transactions, fraud_labels, merchants, products
sourcedb.public → customers, accounts, credit_assessments
card_crm.public → consultations, marketing_consents, customer_segments
card_log.public → app_events

iceberg.card.transactions (거래 원장)

컬럼타입PII설명
txn_idVARCHAR거래 PK (UUID). 레거시 seed_card_demo.py에서는 transaction_id로 정의됨
customer_idVARCHARFK → customers
merchant_idVARCHARFK → merchants
card_numberVARCHAR부분마스킹카드번호 16자리
txn_datetimeTIMESTAMP거래 시점
amountDECIMAL(15,2)금액 (KRW)
currencyVARCHARKRW/USD/JPY
txn_typeVARCHARpayment
channelVARCHARonline/offline/atm/mobile
statusVARCHARapproved/declined/pending
mcc_codeVARCHAR업종 코드
countryVARCHAR거래 국가
ip_addressVARCHAR해싱온라인 거래 IP
device_idVARCHAR모바일 디바이스

스케일: tiny 10K / demo 1M / perf 50M


iceberg.card.fraud_labels (사기 탐지)

컬럼타입설명
fraud_idVARCHARPK
txn_idVARCHARFK → transactions
is_fraudBOOLEAN실제 사기 여부
fraud_typeVARCHARstolen_card/account_takeover/friendly_fraud/merchant_fraud
confidence_scoreDOUBLEML 신뢰도 (0.0~1.0)
detected_atTIMESTAMP탐지 시점
reported_byVARCHARsystem/customer/bank
investigation_statusVARCHARopen/investigating/confirmed/dismissed

iceberg.card.merchants (가맹점)

컬럼타입설명
merchant_idVARCHARPK
nameVARCHAR가맹점명 (한글)
business_numberVARCHAR사업자등록번호
mcc_codeVARCHAR업종 코드
categoryVARCHAR12개 업종 분류
cityVARCHAR소재 도시
regionVARCHAR소재 지역
registered_atDATE가맹 등록일
risk_scoreDOUBLE위험 점수 (0~100)
is_activeBOOLEAN활성 여부

sourcedb.public.customers (고객 마스터)

컬럼타입PII마스킹
customer_idVARCHARPK
nameVARCHAROhash
resident_numberVARCHAROredact
phoneVARCHAROpartial
emailVARCHAROpartial
addressVARCHAROredact
birth_dateDATEOgeneralize
genderVARCHAR
credit_scoreINTEGER300~850
annual_incomeBIGINTOrange
customer_gradeVARCHARVIP/Gold/Silver/Bronze
joined_atDATE
is_activeBOOLEAN

sourcedb.public.accounts (계좌)

컬럼타입PII설명
account_idVARCHARPK
customer_idVARCHARFK → customers
account_numberVARCHAR부분마스킹계좌번호
account_typeVARCHARchecking/savings/card_payment
balanceDECIMAL(15,2)잔액
credit_limitDECIMAL(15,2)신용한도
opened_atDATE개설일
statusVARCHARactive/dormant/closed

sourcedb.public.credit_assessments (신용 평가)

컬럼타입설명
assessment_idVARCHARPK
customer_idVARCHARFK → customers
assessment_dateDATE평가일
credit_scoreINTEGER평가 점수
risk_gradeVARCHARA/B/C/D/E
debt_to_incomeDOUBLEDTI 비율
delinquency_countINTEGER연체 횟수
assessed_byVARCHARsystem/manual

card_crm.public.consultations (상담 이력)

컬럼타입설명
consultation_idVARCHARPK
customer_idVARCHARFK → customers
channelVARCHARcall/chat/email/branch
categoryVARCHARbilling/fraud_report/product_inquiry/complaint/general
summaryTEXT상담 요약 (한글)
sentimentVARCHARpositive/neutral/negative
agent_idVARCHAR상담사 ID
started_atTIMESTAMP상담 시작
duration_secondsINTEGER상담 시간
resolutionVARCHARresolved/escalated/pending

card_crm.public.customer_segments (세그먼트)

컬럼타입설명
segment_idVARCHARPK
customer_idVARCHARFK → customers
segment_nameVARCHARhigh_value/at_risk/new/dormant/churned
assigned_atDATE배정일
rfm_recencyINTEGERRFM 최근성 (1~5)
rfm_frequencyINTEGERRFM 빈도 (1~5)
rfm_monetaryINTEGERRFM 금액 (1~5)

card_crm.public.marketing_consents (마케팅 동의)

컬럼타입설명
consent_idVARCHARPK
customer_idVARCHARFK → customers
consent_typeVARCHARsms/email/push/third_party
is_consentedBOOLEAN동의 여부
consented_atTIMESTAMP동의 시점
expires_atTIMESTAMP동의 만료 시점

iceberg.card.products (카드 상품)

컬럼타입설명
product_idVARCHARPK
nameVARCHAR상품명
card_typeVARCHARcredit/debit/prepaid
annual_feeDECIMAL(15,2)연회비 (KRW)
cashback_rateDOUBLE캐시백 비율 (0.0~1.0)
interest_rateDOUBLE이자율 (0.0~1.0)
min_credit_scoreINTEGER최소 신용점수
launched_atDATE출시일
is_activeBOOLEAN판매 중 여부

card_log.public.app_events (앱 이벤트)

컬럼타입설명
event_idVARCHARPK
customer_idVARCHARFK → customers
event_typeVARCHARlogin/page_view/txn_attempt/notification_click/logout
event_datetimeTIMESTAMP이벤트 시점
device_typeVARCHARios/android/web
app_versionVARCHAR앱 버전
screen_nameVARCHAR화면명
session_idVARCHAR세션 ID
ip_addressVARCHAR접속 IP
metadataJSON이벤트별 추가 데이터

FK 관계도

customers (PK: customer_id)
├── transactions.customer_id
├── accounts.customer_id
├── credit_assessments.customer_id
├── consultations.customer_id
├── marketing_consents.customer_id
├── customer_segments.customer_id
└── app_events.customer_id

transactions (PK: txn_id)
├── fraud_labels.txn_id
└── merchants.merchant_id (FK from transactions.merchant_id)

데이터 시딩

# 전체 데모 데이터 시딩 (2분)
make seed-demo

# CI/테스트용 최소 데이터 (10초)
make seed-demo-tiny

# 성능 벤치마크 (30분)
make seed-demo-perf