Issue #1 - f-lab-edu/at_ticket GitHub Wiki

μ’Œμ„β€λ“±κΈ‰ λ§€ν•‘ ν…Œμ΄λΈ” 섀계에 κ΄€ν•˜μ—¬

κ°œμš”

At Ticket ν”„λ‘œκ·Έλž¨μ˜ 데이터 베이슀λ₯Ό 섀계 쀑, 각 κ³΅μ—°μ˜ 각 μ’Œμ„μ—, 등급을 지정해쀄 ν•„μš”μ„±μ„ λŠκΌˆμŠ΅λ‹ˆλ‹€.

곡연과 μ’Œμ„κ³Ό λ“±κΈ‰μ˜ κ΄€κ³„λŠ” μ΄λ ‡μŠ΅λ‹ˆλ‹€.

1. 각 μ’Œμ„μ—λŠ” 등급이 맀겨져 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.  
μ™œλƒν•˜λ©΄ 등급에 따라 μ’Œμ„μ˜ 가격이 달라지기 λ•Œλ¬Έμž…λ‹ˆλ‹€.    

2. μ’Œμ„μ˜ μœ„μΉ˜κ°€ 같은 곡연μž₯의 같은 μœ„μΉ˜μ˜ μžλ¦¬μ—¬λ„, 곡연에 따라 등급이 λ‹€λ₯΄κ²Œ 맀겨질 μˆ˜κ°€ μžˆμŠ΅λ‹ˆλ‹€.  
λ”°λΌμ„œ κ³΅μ—°λ³„λ‘œ 각 μ’Œμ„μ˜ 등급은 λ‹€λ₯΄κ²Œ 맀겨져야 ν•©λ‹ˆλ‹€.

κ³΅μ—°λ³„λ‘œ 각 μ’Œμ„μ˜ λ“±κΈ‰ 정보λ₯Ό μ €μž₯ν•˜κΈ° μœ„ν•΄,
ShowSheat λΌλŠ” ν…Œμ΄λΈ”μ„ λ§Œλ“€μ–΄μ„œ μ’Œμ„κ³Ό λ“±κΈ‰μ˜ λ§€ν•‘ 정보λ₯Ό μ €μž₯ν•˜λ„λ‘ ν…Œμ΄λΈ”μ„ λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€.

λ§€ν•‘ ν…Œμ΄λΈ” 생성

ν…Œμ΄λΈ”μ˜ κ΅¬μ‘°λŠ” λ‹€μŒκ³Ό κ°™μ•˜μŠ΅λ‹ˆλ‹€.

showid λ“±κΈ‰ μ’Œμ„ Id
1 A 1
1 A 2

μ’Œμ„ 1κ°œλ‹Ή 일일이 λ“±κΈ‰ λ§€ν•‘ν•œ 정보λ₯Ό μ €μž₯ν•œλ‹€.

μ’Œμ„ Id 1κ°œλ‹Ή λ“±κΈ‰ 정보λ₯Ό 1κ°œμ”© μ €μž₯ν•˜λ„λ‘ λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€.

문제점

λ©˜ν† λ‹˜μ΄ ν…Œμ΄λΈ” ꡬ쑰λ₯Ό λ³΄λ”λ‹ˆ 지적을 ν•΄μ£Όμ…¨μŠ΅λ‹ˆλ‹€.
μ˜ˆμ•½λ˜μ§€λ„ μ•Šμ€ μ’Œμ„μ˜ 데이터λ₯Ό μ €μž₯ν•˜λŠ” 것은 λ„ˆλ¬΄ λΉ„νš¨μœ¨μ μ΄λΌκ³  λ§μž…λ‹ˆλ‹€.

쑰금 생각을 ν•΄λ³΄λ‹ˆ, 예λ₯Ό λ“€μ–΄,
μƒμ˜κ΄€μ˜ μ’Œμ„μ΄ 300개라 치면 ν•˜λ£¨μ— 곡연이 4개만 μžˆλ‹€κ³  쳐도, μΌμ£ΌμΌμΉ˜μ— 30 0x 4 x 7 = 8400 λΌλŠ” λ§Žμ€ 행을 ν•„μš”λ‘œ ν•˜κ²Œ λ©λ‹ˆλ‹€.

일주일에 8400행인데, ν•œλ‹¬ 두달 N달이 μ§€λ‚˜κ²Œ 되면 λ”μš± μ—„μ²­λ‚œ 수의 데이터λ₯Ό μ˜ˆμ•½ν•˜μ§€λ„ μ•Šμ€ μ’Œμ„μ˜ μ €μž₯을 μœ„ν•˜μ—¬ 정보 μ €μž₯에 μ“°κ²Œ 될 κ²ƒμž…λ‹ˆλ‹€.

κ·Έλž˜μ„œ μ˜ˆμ•½λœ μ’Œμ„ λ°μ΄ν„°λ§Œ μ €μž₯ν•˜λ„λ‘ 섀계λ₯Ό λ°”κΎΈμ—ˆμŠ΅λ‹ˆλ‹€.

λ§€ν•‘ ν…Œμ΄λΈ” μˆ˜μ •

showid λ“±κΈ‰ μ’Œμ„ Id 리슀트
1 A 1,2,3,4,5,6,7
1 B 8,9,10,11

κ³΅μ—°μ˜ λ“±κΈ‰λ³„λ‘œ μ˜ˆμ•½λœ μ’Œμ„λ§Œ 리슀트둜 μ €μž₯ν•œλ‹€.

μ˜ˆμ•½λœ μ’Œμ„ μ •λ³΄λ§Œ μ €μž₯ν•˜κ²Œ λ³€κ²½ν•¨μœΌλ‘œμ¨
μ“Έλ°μ—†λŠ” 데이터λ₯Ό μ €μž₯ν•˜λŠλΌ DBμ €μž₯ 곡간을 λ‚­λΉ„ν•  ν•„μš”κ°€ μ—†μ–΄μ‘ŒμŠ΅λ‹ˆλ‹€.

[μˆ˜μ •] 섀계 μˆ˜μ •

ν…ŒμŠ€νŠΈμ— μ‚¬μš©ν•  데이터λ₯Ό μ§‘μ–΄λ„£λ‹€κ°€ ꡬ쑰적으둜 μ„μ—°μΉ˜μ•Šμ€ 점을 λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€.

μƒν’ˆ 상세 νŽ˜μ΄μ§€μ—μ„œ 곡연 μΌμžλ§ˆλ‹€ 남은 μ’Œμ„λ“€μ„ 보여쀄 ν•„μš”κ°€ μžˆλŠ”λ°,  
μ΄λ•Œ μ„œλ‘œ λ‹€λ₯Έ 일자(μ„œλ‘œ λ‹€λ₯Έ showId)λ§ˆλ‹€ 같은 λ§΅ν•‘ 데이터λ₯Ό 넣어쀄 ν•„μš”κ°€ μžˆμŠ΅λ‹ˆλ‹€.    

λ¬Έμ œλŠ” μ„œλ‘œ λ‹€λ₯Έ 곡연일지라도 같은 곡연μž₯이라면 λ§΅ν•‘ 데이터가 λŒ€λΆ€λΆ„ κ°™λ‹€λŠ” κ²ƒμ΄μ˜€μ§€μš”.
쀑볡 데이터듀을 μž”λœ© λ„£μ–΄μ•Ό ν•˜λŠ” 일이 λ°œμƒν•©λ‹ˆλ‹€.

λ¬Όλ‘  μ˜ˆμ™Έμ μœΌλ‘œ 같은 곡연μž₯ μ’Œμ„μ΄ 곡연이 μ„œλ‘œ λ‹€λ₯Έ μΌμžμ— λ‹€λ₯Έ 가격이 μ μš©λ˜λŠ” 일도 μžˆμ„ 수 μžˆμ§€λ§Œ (λΉ„μˆ˜κΈ°μ™€ μ„±μˆ˜κΈ°μ˜ 가격이 λ‹€λ₯Έ 것 처럼)
μ˜ˆμ™Έμ μΈ 사항은 λ”°λ‘œ ν…Œμ΄λΈ”μ„ κ΄€λ¦¬ν•΄μ£ΌλŠ” 편이 쀑볡 데이터λ₯Ό 더 많이 쀄일 수 μžˆμ„ 거라고 νŒλ‹¨ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

λ”°λΌμ„œ μ €ν¬λŠ” μ•„λž˜μ²˜λŸΌ showId λŒ€μ‹  productId와 hallIdλ₯Ό μΆ”κ°€λ‘œ λ§΅ν•‘ν•˜μ—¬,
μ„œλ‘œ λ‹€λ₯Έ μΌμžλ§ˆλ‹€ μΆ”κ°€ν•΄μ£Όμ–΄μ•Ό ν•˜λŠ” λ§΅ν•‘ 데이터 쀑볡을 μ œκ±°ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.