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 ๋ชจ๋ธ ๊ตฌ์กฐ๋ฅผ ์งํฅํ๋ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ