Database/๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง

ํ•ต์‹ฌ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง 4์žฅ. ๋ฌผ๋ฆฌ ๋ชจ๋ธ๋ง

์ฑ”๐Ÿป 2024. 1. 25. 12:06
4๏ธโƒฃ

์ถœ์ฒ˜: ํ•ต์‹ฌ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง

https://product.kyobobook.co.kr/detail/S000001975842

6/13(ํ™”)

  • ์ผ์ด ์ž˜๋ชป๋˜์—ˆ์„ ๋•Œ ๋‚ด๊ฐ€ ์ฑ…์ž„์ง€๋Š” ๊ฒŒ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž…์‚ฌํ•ด์„œ๋Š” ๊ณ ์ง‘๋ถ€๋ฆฌ์ง€ ๋ง๊ณ  ์‹œํ‚ค๋Š”๋Œ€๋กœ ํ•  ๊ฒƒ ์˜๊ฒฌ ์ œ์‹œ์ •๋„๋งŒ ์กฐ์‹ฌ์Šค๋Ÿฝ๊ฒŒ ํ•˜๊ธฐโ€ฆ
  • ์ด ์ฑ…์˜ ์ด์Šˆ๋‚˜ ์ดˆ๋ก์ƒ‰ ๋ฐ•์Šค์˜ ๋‚ด์šฉ์ด ์ข‹์œผ๋‹ˆ๊นŒ ์ž์ฃผ๋ณด๊ธฐ

    ์šฐ๋ฆฌ๊ฐ€ ์ƒ๊ฐ ๋ชป ํ• ๋งŒํ•œ ๊ฒƒ๋“ค์„ ์ž˜ ์•Œ๋ ค์ค€๋‹ค.

๋ฌผ๋ฆฌ ๋ชจ๋ธ๋ง์ด๋ž€

= ๋…ผ๋ฆฌ ๋ฐ์ดํ„ฐ๋ชจ๋ธ์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ข…๋ฅ˜์— ๋งž๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์Šคํ‚ค๋งˆ ๊ตฌ์กฐ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.

  1. ํ…Œ์ด๋ธ” ์ƒ์„ฑ

    ์—”ํ‹ฐํ‹ฐ โ†’ ํ…Œ์ด๋ธ”

    ์†์„ฑ โ†’ ์ปฌ๋Ÿผ

  1. ๋ฐ์ดํ„ฐ ํƒ€์ž…, ๊ธธ์ด, ๊ธฐ๋ณธ๊ฐ’ ์ •ํ•˜๊ธฐ
  1. ์ œ์•ฝ์กฐ๊ฑด ์„ค์ • : PK, FK, Not Null, Unique, Check
  1. ๊ธฐ์ดˆ ๋ฐ์ดํ„ฐ ๋„ฃ๊ธฐ
  1. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ ํ–ฅ์ƒ
    1. ์—”ํ‹ฐํ‹ฐ๋ฅผ ๋ฐ˜์ •๊ทœํ™”(์—ญ์ •๊ทœํ™”)
    1. ์ค‘๋ณต ์ปฌ๋Ÿผ ์ถ”๊ฐ€

      ex) SELECT salary, salary * 12 as ์—ฐ๋ด‰

      ์—ฐ๋ด‰์€ ๊ณ„์‚ฐํ•˜๋ฉด ๋‚˜์˜ค๋Š” ์ปดํ“จํ‹ฐ๋“œ ์ปฌ๋Ÿผ์ด๊ธฐ ๋•Œ๋ฌธ์— DB์— ์ €์žฅํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ํ•˜์ง€๋งŒ ๊ธˆ์•ก ๊ณ„์‚ฐ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์œผ๋ฉด ๊ณ„์‚ฐํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ฆฐ๋‹ค. ์ด๋Ÿด ๋•Œ๋Š” ์ค‘๋ณต์„ ๊ฐ์ˆ˜ํ•˜๊ณ  ์„ฑ๋Šฅ์„ ์œ„ํ•ด ์ค‘๋ณต ์ปฌ๋Ÿผ์„ ๋งŒ๋“ ๋‹ค. DB์— ๋ฏธ๋ฆฌ ์ €์žฅ์„ ํ•ด๋†“์œผ๋ฉด ๊ณ„์‚ฐ์„ ์•ˆ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์ด ์ข‹์•„์ง„๋‹ค.

    1. index
    1. ํŒŒํ‹ฐ์…”๋‹

์ด๋ก ์ ์œผ๋กœ๋Š” ๋…ผ๋ฆฌ์™€ ๋ฌผ๋ฆฌ๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ๋ฌผ๋ฆฌ์—์„œ ํ•ด์•ผ ํ•  ์ผ์„ ๋…ผ๋ฆฌ์—์„œ ๊ฐ™์ด ํ•˜๊ธฐ๋„ ํ•œ๋‹ค. ์ด๊ฑด ๋…ผ๋ฆฌ์—์„œ ํ•ด์•ผ ํ•˜๊ณ  ์ด๊ฑด ๋ฌผ๋ฆฌ์—์„œ ํ•ด์•ผ ํ•œ๋‹ค ๊ตณ์ด ์ด๋ ‡๊ฒŒ ์„  ๊ทธ์–ด์„œ ๊ตฌ๋ถ„์ง€์„ ํ•„์š” ์—†์Œ. ์ƒํ™ฉ์— ๋”ฐ๋ผ ์œ ์—ฐํ•˜๊ฒŒ ํ•˜๋ฉด ๋œ๋‹ค.

ํ…Œ์ด๋ธ” ์„ค๊ณ„

โ‡’ ๋„˜์–ด๊ฐ

๊ด€๊ณ„ ์„ค๊ณ„

๊ธฐ๋ณธ์ ์ธ ๊ด€๊ณ„, ์ƒํ˜ธ๋ฐฐํƒ€์  ๊ด€๊ณ„

์žฌ๊ท€์  ๊ด€๊ณ„

์ฝ”๋“œ๊ฐ€ ๊ณ„์ธต ๊ตฌ์กฐ์ธ ๊ฒฝ์šฐ ์žฌ๊ท€์  ๊ด€๊ณ„๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ณ„์ธต ๊ตฌ์กฐ ์œ ๋™์ (๋ณ€๋™) โ†’ ์žฌ๊ท€

๊ณ„์ธต ๊ตฌ์กฐ ๋‹จ๊ณ„๊ฐ€ ์ •ํ•ด์ ธ์žˆ์Œ โ†’ ์žฌ๊ท€๋กœ ํ•  ํ•„์š” X

์žฌ๊ท€๋Š” ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— ์›ฌ๋งŒํ•˜๋ฉด ๊ณ ์ •์œผ๋กœ ํ•˜๋Š” ๊ฒŒ ์ข‹๋‹ค.

[ ๋ณ€๋™ ]

์˜ค๋ผํด์—์„œ๋Š” START WITH ~ CONNECT BY ~์„ ํ†ตํ•ด ์žฌ๊ท€ํ˜ธ์ถœ์„ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

[ ๊ณ ์ • ]

๊ณ ์ •์œผ๋กœ ํ•  ๊ฒฝ์šฐ์— ์‚ฌ์ „์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋ฉด ๊ณ„์ธต๊ตฌ์กฐ๊ฐ€ ์ซ™๋‚˜์˜จ๋‹ค.

์ปฌ๋Ÿผ ์„ค๊ณ„

๋ฌผ๋ฆฌ์—์„œ ์†์„ฑ์„ ์ปฌ๋Ÿผ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์ด ๋ณต์žกํ•˜์ง„ ์•Š๋‹ค.

๋ฐ์ดํ„ฐ ํ‘œ์ค€ํ™”๋ฅผ ์ด๋ฏธ ์ˆ˜ํ–‰ํ–ˆ๋‹ค๋ฉด ๋…ผ๋ฆฌ ๋ฐ์ดํ„ฐ๋ชจ๋ธ์˜ ์†์„ฑ์— ํ‘œ์ค€์šฉ์–ด์™€ ํ‘œ์ค€๋‹จ์–ด, ํ‘œ์ค€๋„๋ฉ”์ธ์„ ์ ์šฉํ•˜๋Š” ์ž‘์—…์ด ๋Œ€๋ถ€๋ถ„์ด๋‹ค.

๋…ผ๋ฆฌ์—์„œ๋Š” ์†์„ฑ์ด ์ž๋ช…์„ฑ์„ ์œ„ํ•ด ๊ตฌ์ฒด์ ์ด์—ˆ๋Š”๋ฐ ๋ฌผ๋ฆฌ์—์„œ๋Š” ์˜คํžˆ๋ ค ์ด๋ฆ„์ด ์งง์•„์ ธ์•ผ ํ•œ๋‹ค.

why? ์ง์ ‘ ํƒ€์ดํ•‘์„ ํ•ด์•ผ ํ•ด์„œ ๊ธธ๋ฉด ์•ˆ๋จ

์†์„ฑ-์ปฌ๋Ÿผ ๋ณ€ํ™˜

๋ณดํ†ต ๋…ผ๋ฆฌ์—์„œ ์ •์˜ํ•œ ์†์„ฑ์€ ๋ฌผ๋ฆฌ์—์„œ ๊ฑฐ์˜ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

[ ์‹œ์Šคํ…œ ์ปฌ๋Ÿผ ]

์ตœ์ดˆ๋“ฑ๋ก์ผ์‹œ, ์ตœ์ดˆ๋“ฑ๋ก์ž์‹๋ณ„๋ฒˆํ˜ธ, ์ตœ์ข…์ˆ˜์ •์ผ์‹œ, ์ตœ์ข…์ˆ˜์ •์ž์‹๋ณ„๋ฒˆํ˜ธ์™€ ๊ฐ™์€ ์‹œ์Šคํ…œ ์ปฌ๋Ÿผ์„ ๋ชจ๋“  ํ…Œ์ด๋ธ”์— ๊ณตํ†ต์œผ๋กœ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค. (ํ…Œ์ด๋ธ” ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์œ„์น˜ํ•˜๋„๋ก ํ•ด์•ผ ํ•จ)

๋ชฉ์  : ๋ฐ์ดํ„ฐ๊ฐ€ ์ž˜๋ชป์ž…๋ ฅ๋˜๊ฑฐ๋‚˜ ์ž˜๋ชป ์—…๋ฐ์ดํŠธ ๋˜์—ˆ์„ ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•ด์„œ ํ•„์š”

์ปฌ๋Ÿผ๋ช… ๋ถ€์—ฌ

์ปฌ๋Ÿผ๋ช…์€ ์†์„ฑ์„ ๊ตฌ์„ฑํ•˜๋Š” ํ‘œ์ค€๋‹จ์–ด์˜ ์˜๋ฌธ์•ฝ์–ด ์กฐํ•ฉ์œผ๋กœ ๋ถ€์—ฌํ•œ๋‹ค.

ํ‘œ์ค€์šฉ์–ด์— ๋“ฑ๋ก๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์†์„ฑ๋ช…์„ ๋‹จ์–ด์™€ ๋‹จ์–ด๋กœ ๋ถ„๋ฆฌํ•˜๊ณ , ํ‘œ์ค€๋‹จ์–ด์˜ ์–‘๋ฌธ์•ฝ์–ด๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ์ปฌ๋Ÿผ๋ช…์„ ๋ถ€์—ฌํ•œ๋‹ค.

์ด๋•Œ ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด ์˜๋ฌธ ์•ฝ์–ด ์‚ฌ์ด๋ฅผ ์–ธ๋”๋ฐ”๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.

๋ฐ์ดํ„ฐ ํƒ€์ž… ๋ฐ ๊ธธ์ด ์ง€์ •

p. 194 ์ฐธ๊ณ 

์ด์Šˆ1

: CHAR, VARCHAR2์ค‘ ์–ด๋А ๊ฒƒ์„ ์ ์šฉํ•  ๊ฒƒ์ธ๊ฐ€

๊ฒฐ๋ก  : 1๊ธ€์ž(Y/N)๋Š” CHAR๋กœ ํ•˜๊ณ  ๊ทธ ์™ธ๋Š” ๋‹ค VARCHAR๋กœ ํ•˜๋ฉด ๋œ๋‹ค.

+) CHAR๋Š” ๋นˆ ์นธ์„ ๊ณต๋ฐฑ์œผ๋กœ ์ฑ„์›€

๐Ÿšจย ์ด์Šˆ2

:์ผ์ž(YYYYMMDD) ์ปฌ๋Ÿผ์„ VARCHAR2(8)๋กœ ํ• ์ง€ DATE๋กœ ํ• ์ง€

๋‘ ๊ฐœ์˜ ์•ˆ์ด ์žˆ์„ ๋•Œ ๊ฐ ์žฅ๋‹จ์ ์„ ์ ๊ณ  ๋น„๊ตํ•ด์„œ ์„ ํƒํ•˜๋ฉด ๋œ๋‹ค.

DateYYYYMMDD
displayXO
์ •๋ ฌOO
๋‚ ์งœ๊ณ„์‚ฐOX
๋ฐ์ดํ„ฐ ํ’ˆ์งˆOX

  1. YYYYMMDD

    ์žฅ์  : to_char ์•ˆ ํ•ด๋„ ๋จ

    ๋‹จ์  : ๋ฐ์ดํ„ฐ ํ’ˆ์งˆ ๋–จ์–ด์ง

  1. Date

    ์žฅ์  : ๋ฐ์ดํ„ฐ ํ’ˆ์งˆ ์˜ฌ๋ผ๊ฐ, ์‹œ๊ฐ„๊นŒ์ง€ ์•Œ ์ˆ˜ ์žˆ์Œ, ๋‚ ์งœ ๊ณ„์‚ฐ ์‹œ ์œ ๋ฆฌ(but ๊ณ„์‚ฐํ•  ์ผ ๋ณ„๋กœ ์—†์Œ ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋” ๋งŽ์Œ)

    ๋‹จ์  : ๋ณด์—ฌ์ค„ ๋•Œ๋งˆ๋‹ค to_char๋ฅผ ์จ์•ผ ํ•จ

๋ฉด์ ‘์—์„œ ๋‚ ์งœ๋ฅผ ์™œ VARCHAR2(8) YYYYMMDD๋กœ ํ–ˆ๋Š”์ง€ ๋ฌผ์–ด๋ดค์„ ๋•Œ ๋Œ€๋‹ตํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

โ†’ ์œ„ ๋‘ ์ผ€์ด์Šค์˜ ์ฐจ์ด๋ฅผ ์•Œ๊ณ  ์žˆ๋Š”์ง€ ๊ฒ€์ฆ์šฉ ์งˆ๋ฌธ

๋‚ ์งœ๋ฅผ ๊ณ„์‚ฐํ•  ์ผ์ด ์—†์–ด์„œ VARCHAR2(8)๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค๊ณ  ๋Œ€๋‹ตํ•˜๋ฉด๋จ

์ด๋Ÿฐ ๊ฒƒ๋“ค์ด ๋‹จ์ˆœํ•˜์ง€๋งŒ ๊นŠ์ด๊ฐ€ ์žˆ๋Š” ๋‚ด์šฉ์ด๋‹ค.


+) ๐Ÿšจย VARCHAR2(8)๋กœ ํ•œ๋‹ค๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ CHECK CONSTRAINT๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ค์–ด์„œ ์˜ค๋ฅ˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž…๋ ฅ๋˜์ง€ ์•Š๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค.

ALTER TABLE EMP ADD CONSTRAINT EMP_CK ENT DI
CHECK (ENT_DT = TO_CHAR (TO_DATE (ENT_DT, 'YYYYMMDD'), 'YYYYMMDD')) ;
'CREATE INDEX EMP_IX01 ON EMP( TO_DATE (ENT_DT, 'YYYYMMDD') );
INSERT INTO EMP VALUES('20190230');
- ORA-01839 : date not valid for month specified

์ธ๋ฑ์Šค

YYYYMMDD๋ฅผ DATE๋กœ ๋ณ€ํ™˜ํ•ด์„œ ์ €์žฅํ•œ๋‹ค.

์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•˜๋ฉด INSERT ์‹œ ์ž˜๋ชป๋œ ํ˜•์‹์˜ ๋‚ ์งœ๊ฐ€ ๋“ค์–ด์˜ค๊ฒŒ ๋  ๊ฒฝ์šฐ ๋ณ€ํ™˜ ์‹œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

โ†’ ์ฒดํฌ๋ฅผ ํ†ตํ•ด์„œ ๊ฒ€์ฆํ•˜๋Š” ๊ฑด ๋‹ค๋“ค ๋งŽ์ด ์•„๋Š”๋ฐ ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋‚˜


+) ๐Ÿ’กย ์€ํ–‰์—์„œ๋Š” ๋‚ ์งœ๋ฅผ ๊ฑฐ์˜ ๋‹ค VARCAHR๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์ดˆ๋‹จ์œ„๊ฐ€ ํ•„์š”ํ•œ ๊ฑด DATE ์“ฐ๋Š”๋ฐ ๊ทธ ์™ธ๋Š” ๋‹ค VARCAHR๋‹ค.

์€ํ–‰์—์„œ๋Š” ์‹œ๊ฐ„๋ณด๋‹ค๋Š” ๋‚ ์งœ๊ฐ€ ๋” ์ค‘์š”ํ•˜๋‹ค.

์„œ๋ฒ„๊ฐ€ ์—„์ฒญ๋‚˜๊ฒŒ ๋งŽ์€๋ฐ ๊ทธ 4000๋Œ€์˜ ์„œ๋ฒ„ ์‹œ๊ฐ„์ด ๋‹ค ์ •ํ™•ํ•˜์ง€ ์•Š๋‹ค.

ex) ์ฆ์—ฌ์„ธ 10๋…„ ํ•˜๋ฃจ์ฐจ์ด๋กœ 10๋…„์ด ๊ฑธ๋ฆฌ๋ƒ ์•ˆ ๊ฑธ๋ฆฌ๋ƒ๊ฐ€ ๊ฒฐ์ •๋จ

๊ทธ๋ž˜์„œ 11์‹œ 50๋ถ„์ฏค์— ๊ฑฐ๋ž˜๋ฅผ ๋ชปํ•˜๊ฒŒ ๋ง‰๋Š”๋‹ค. ์ฒ˜๋ฆฌ ์ค‘๊ฐ„์— ๋‚ ์งœ๊ฐ€ ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋‚  ์š”์ฒญ ์‹œ๊ฐ„ํ•œ๊ฒŒ ๋‹ค์Œ๋‚  ๋๋‚˜๋ฉด ์•ˆ๋จ



Uploaded by N2T