MySQL Convention - Heart-Lee/server GitHub Wiki

๊ธฐ๋ณธ ์ด๋ฆ„ ๊ทœ์น™

  • ๋ชจ๋“  ์ด๋ฆ„์€ snake_case๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • ๋˜๋„๋ก ์•ฝ์ž๋ฅผ ์“ฐ์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ์˜๋ฏธ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋Š” ์˜๋‹จ์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.(Java Convention ๋น„์Šท)
  • ์˜๋ฏธ ์—†๋Š” prefix, suffix๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

ํ…Œ์ด๋ธ”

  • ํ…Œ์ด๋ธ”๋ช…์€ ๋‹จ์ˆ˜๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

  • ์šฐ๋ฆฌ๋Š” Native๊ฐ€ ์•„๋‹ˆ๋ผ์„œ ๋ถˆ๊ทœ์น™ ๋™์‚ฌํ˜•์—์„œ ์‹ค์ˆ˜๋ฅผ ํ•˜๊ณ ๋Š” ํ•œ๋‹ค.

  • ํŠน๋ณ„ํ•œ ์ผ€์ด์Šค๊ฐ€ ์•„๋‹ˆ๋ฉด 1:1 ๊ด€๊ณ„๋Š” ๋˜๋„๋ก ๋งŒ๋“ค์ง€ ์•Š๋Š”๋‹ค.

ํ”„๋ผ์ด๋จธ๋ฆฌํ‚ค

  • id: ๊ธฐ๋ณธ๊ฐ’. ๋˜๋„๋ก bigint(unsigned) auto increment ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • code: ์ž„์˜์˜ ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ code๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • uuid: uuid์˜ ๊ฒฝ์šฐ ํ—ˆ์šฉ

์™ธ๋ž˜ํ‚ค

  • ์ตœ์†Œํ•œ์˜ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๋ฐ ์ฐธ์กฐ ์ธ๋ฑ์Šค๋ฅผ ์œ„ํ•ด ์™ธ๋ž˜ํ‚ค๋ฅผ ํ•„์ˆ˜๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

  • CASCADE ์กฐ๊ฑด์„ ์ƒ๊ฐํ•˜์—ฌ ์ถ”๊ฐ€ํ•œ๋‹ค.

  • ๊ธฐ๋ณธ์ ์œผ๋กœ ์ฐธ์กฐ๋˜๋Š” ์ปฌ๋Ÿผ๋ช…์€ table_id ์™€ ๊ฐ™์€ ํ˜•์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

  • ํ–‰์œ„์ค‘์‹ฌ์˜ ์ฐธ์กฐํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ๋‹จ์ผํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ๋‹ค์ค‘ ์ฐธ์กฐ์˜ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด by, for ์™€ ๊ฐ™์€ ์ „์น˜์‚ฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

    • written_by, recorded_for
  • ๋ถ€๋ชจ/์ž์‹๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” parent_id๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

Polymorph

  • ref ๋ฅผ ๊ธฐ๋ณธ morph ๋ช…์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

    • ref_type, ref_id
  • ๋‹ค์ค‘ ์ฐธ์กฐ์ธ ๊ฒฝ์šฐ ์ค‘๊ฐ„์— ๊ตฌ์ฒด์ ์ธ ์ฐธ์กฐ ํƒ€์ž…์„ ๋ถ™์ธ๋‹ค.

    • ref_model_type, ref_model_id

์‹œ๊ฐ„/๋‚ ์งœ ์ปฌ๋Ÿผ

  • timestamp ํ˜•์‹์„ timezone๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•œ๋‹ค. ๋‚ ์งœ๋งŒ ์žˆ๋Š” ๊ฒฝ์šฐ๋Š” date ํ˜น์€ char(10) ์„ ์‚ฌ์šฉํ•œ๋‹ค.

  • ํ”„๋กœ๊ทธ๋žจ์— ์˜ํ•ด ์ž๋™์œผ๋กœ ๊ธฐ๋ก๋˜๊ฑฐ๋‚˜ ๊ณผ๊ฑฐ์˜ ์‹œ๊ฐ ๊ฐ™์€ ๊ฒฝ์šฐ "๊ณผ๊ฑฐ๋ถ„์‚ฌ_at" ์ด๋ฆ„ ํŒจํ„ด์„ ์‚ฌ์šฉํ•œ๋‹ค.

    • created_at, updated_at, deleted_at
  • ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•˜๋Š” ์‹œ๊ฐ„์€ โ€˜_onโ€™, โ€˜_toโ€™ ์ด๋ฆ„ ํŒจํ„ด์„ ์‚ฌ์šฉํ•œ๋‹ค.

    • send_on, registered_on, start_on, end_on

    • due_to

  • ๋˜๋„๋ก์ด๋ฉด ๋ชจ๋“  ํ…Œ์ด๋ธ”์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ record ์ƒ์„ฑ, ์ˆ˜์ • ์‹œ๊ฐ ์ปฌ๋Ÿผ์„ ์ƒ์„ฑํ•œ๋‹ค.

    • created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

    • updated_at TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

๋‹คํ๋จผํŠธ/๋น„์ •ํ˜•(doc) ๋ฐ์ดํ„ฐ ์ปฌ๋Ÿผ

  • doc JSON
    • json validation ์„ ์œ„ํ•ด JSON Type์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • ๋‹ค์Œ์˜ ๊ฒฝ์šฐ ๋‹คํ๋จผํŠธ/๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์ ๊ทน์ ์œผ๋กœ ์“ฐ๋„๋ก ํ•˜์ž.
    • ์ธ๋ฑ์Šค๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์€ ์ปฌ๋Ÿผ๋“ค
    • ์žฆ์€ alter ๊ฐ€ ์˜ˆ์ƒ๋˜๋Š” ๋ถˆ๋ช…ํ™•ํ•œ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ
    • schemaless ๋ชจ๋ธ ๊ตฌ์กฐ๋ฅผ ์ง€ํ–ฅํ•˜๋Š” ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ