CS_๊ณต๋ถ€ ๋„์ „(DB)_01 ๐Ÿ˜€

์ด์ •๋นˆยท2023๋…„ 11์›” 8์ผ
0

CS์Šคํ„ฐ๋””

๋ชฉ๋ก ๋ณด๊ธฐ
1/10

์•ˆ๋…•ํ•˜์„ธ์š”! leebeanbin์ž…๋‹ˆ๋‹ค.

๋น„์ „๊ณต์ž๋กœ์จ ํ•ด๊ฒฐํ•ด์•ผ ํ•  ๊ณผ์ œ๊ฐ€ ์ฐธ ๋งŽ์€๋ฐ์š”,,, ๊ฐœ์ค‘์— ํ•˜๋‚˜์ธ CS ์Šคํ„ฐ๋””๋ฅผ ๋“œ๋””์–ด ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ์•„์ง ์ €๋Š” ๋„ˆ๋ฌด ๊ฐ์ž์ธ๋ฐ ๐Ÿฅ” :(

CS 1์ฃผ์ฐจ ์ฃผ์ œ!

๐Ÿ“Œ ํŒŒ์ผ์‹œ์Šคํ…œ๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ฐจ์ด

ํŒŒ์ผ ์‹œ์Šคํ…œ์€ ํŒŒ์ผ์„ ๋‹จ์ˆœํžˆ ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ๋กœ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์‹œ์Šคํ…œ์ด๋‹ค. ์šด์˜์ฒด์ œ์™€ ํ•จ๊ป˜ ์„ค์น˜๋˜๊ณ  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋ณ„๋กœ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ„๋„์˜ ํŒŒ์ผ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค.

โ“ ์ด๋Ÿฌํ•œ ์‘์šฉํ”„๋กœ๊ทธ๋žจ์˜ ํŒŒ์ผ์‹œ์Šคํ…œ์„ ์ด์šฉํ•ด์„œ ๋ฌผ๋ก  ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ ๊ทธ ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ๋งŽ์•„์ง€๊ฒŒ ๋œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?

  • ํŒŒ์ผ์‹œ์Šคํ…œ์€ ์œ„์˜ ์‚ฌ์ง„์—์„œ ๋ณด๋Š” ๊ฒƒ์„ ์ฐธ๊ณ ํ•˜์—ฌ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด, ์šด์˜์ฒด์ œ์™€ ๊ฐ™์ด ์„ค์น˜๋˜์–ด ๊ฐ ์‘์šฉํ”„๋กœ๊ทธ๋žจ์— ๋ณ„๋„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๊ณ  ์žˆ๋Š” ํŒŒ์ผ์ด ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ทธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ„๋กœ๋กœ ์ˆ˜์ •๋˜๋Š” ๋ถ€๋ถ„์— ๋Œ€ํ•˜์—ฌ ๋™์‹œ ๊ณต์œ ๊ฐ€ ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ผ๊ด€์ ์œผ๋กœ ๊ด€๋ฆฌ๊ฐ€ ๋  ์ˆ˜ ์—†๊ณ  ๊ฐ™์€ ๋‚ด์šฉ์„ ์—ฌ๋Ÿฌ๋ฒˆ ๋ฐ˜๋ณตํ•ด์„œ ๋‚˜ํƒ€๋‚ด๊ธฐ์— ๊ทธ ๋งŒํผ ๋ถˆํ•„์š”ํ•œ ์ €์žฅ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.

  • ํŒŒ์ผ์‹œ์Šคํ…œ์—์„œ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ ์˜€๋˜ ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ฑ, ์ข…์†์„ฑ, ์ผ๊ด€์„ฑ์— ๋Œ€ํ•œ ๊ฒƒ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋‚˜์˜จ ๊ฒƒ์ด DBMS ์ž…๋‹ˆ๋‹ค. DataBase๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ…Œ์ด๋ธ”์˜ ํ˜•์‹์œผ๋กœ ์ €์žฅํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์„ค์ • ํ•  ์ˆ˜ ์žˆ๋‹ค.

  mysql> CREATE TABLE topic(
      -> id INT(11) NOT NULL AUTO_INCREMENT,
      -> title VARCHAR(100) NOT NULL,
      -> description TEXT NULL, 
      -> created DATETIME NOT NULL, 
      -> author VARCHAR(15) NULL, 
      -> profile VARCHAR(200) NULL 
      -> );
CREATE TABLE ์ œํ’ˆ (

์ œํ’ˆ๋ฒˆํ˜ธ CHAR(3) NOT NULL,
์ œํ’ˆ๋ช… VARCHAR(2),
์žฌ๊ณ ๋Ÿ‰ INT,
๋‹จ๊ฐ€ INT,
์ œ์กฐ์—…์ฒด VARCHAR(2),
PRIMARY KEY(์ œํ’ˆ๋ฒˆํ˜ธ),
CHECK (์žฌ๊ณ ๋Ÿ‰ ใ€‰=  AND ์žฌ๊ณ ๋Ÿ‰ ใ€ˆ= 1)
);
CREATE TABLE ์ฃผ๋ฌธ (

์ฃผ๋ฌธ๋ฒˆํ˜ธ CHAR(3) NOT NULL,
์ฃผ๋ฌธ๊ณ ๊ฐ VARCHAR(2),
์ฃผ๋ฌธ์ œํ’ˆ CHAR(3),
์ˆ˜๋Ÿ‰ INT,
๋ฐฐ์†ก์ง€ VARCHAR(3),
์ฃผ๋ฌธ์ผ์ž DATETIME,
PRIMARY KEY(์ฃผ๋ฌธ๋ฒˆํ˜ธ),
FOREIGN KEY(์ฃผ๋ฌธ๊ณ ๊ฐ) REFERENCES ๊ณ ๊ฐ(๊ณ ๊ฐ์•„์ด๋””),
FOREIGN KEY(์ฃผ๋ฌธ์ œํ’ˆ) REFERENCES ์ œํ’ˆ(์ œํ’ˆ๋ฒˆํ˜ธ)

);

  • ์œ„์˜ ์ฝ”๋“œ๋ธ”๋Ÿญ๊ณผ ๊ฐ™์ด ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์ด๋ฆ„๊ณผ ๊ฐ ์ปฌ๋Ÿผ์— ๋„ฃ์„ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์ด ์•„์ฃผ ๊ธฐ๋ณธ์ ์ธ ๊ณผ์ •์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ์„ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ผ๊ณ  ํ•˜๊ณ  ๊ทธ๋Ÿฐ ๋ฐ์ดํ„ฐ๋ฅผ DBMS๋ผ๋Š” ์‹œ์Šคํ…œ ์•ˆ์—์„œ ํ†ตํ•ฉ๊ด€๋ฆฌ๋ฅผ ํ•˜์—ฌ ๊ธฐ์กด์— ํŒŒ์ผ์‹œ์Šคํ…œ์—์„œ ๊ฐ€์ง€๊ณ  ์žˆ๋˜ ๋ฌธ์ œ์ธ ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต, ์ข…์†, ์†์ƒ๋œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ํ†ตํ•ฉ ๊ด€๋ฆฌ ๋“ฑ์„ ํ•˜๋ฉด์„œ ๊ฐ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ชฉ์ ์— ๋งž๊ฒŒ ๋ณด๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํŠน์ง•

๐Ÿšจ ์š”์•ฝํ•˜๋ฉด, ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ, ์ผ๊ด€์„ฑ, ๋…๋ฆฝ์„ฑ, ๋™์‹œ ์ œ์–ด, ๋ณด์•ˆ, ๋ฐฑ์—… ๋ฐ ํšŒ๋ณต, ์ฟผ๋ฆฌ ์–ธ์–ด์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ฟผ๋ฆฌ ์–ธ์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜๊ณ  ์ˆ˜์ •ํ•˜๋Š” ๋“ฑ์˜ ๊ฐ€๊ณต ์ž‘์—…์„ ํ•œ๋‹ค.

  • ์ง€์†์„ฑ
    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅํ•œ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๋ฉด ์„œ๋ฒ„ ์žฌ๋ถ€ํŒ… ํ›„์—๋„ ๊ทธ ์ •๋ณด๋Š” ์‚ฌ๋ผ์ง€์ง€ ์•Š๊ณ  ์œ ์ง€๋œ๋‹ค.
  • ๊ณต์œ ์„ฑ
    ๋‹ค์ˆ˜์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ์ ‘๊ทผ๋„ ๊ถŒํ•œ์„ ๋ฐ›์€ ์‚ฌ๋žŒ์— ํ•œ์—์„œ๋งŒ ๊ฐ€๋Šฅํ•˜๊ณ  ๊ถŒํ•œ์— ๋”ฐ๋ผ ์ฝ๊ธฐ ๋ฐ ์ˆ˜์ •๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์ผ๊ด€์„ฑ
    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ผ๊ด€๋œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•œ๋‹ค. ์—ฌ๋Ÿฌ ํŠธ๋žœ์ ์…˜(โ“)์„ ์ฒ˜๋ฆฌํ•  ๋•Œ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํ•ญ์ƒ ์ผ๊ด€๋œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋„๋ก ํ•œ๋‹ค.

    ๐Ÿ’กํŠธ๋ Œ์ ์…˜์ด๋ž€, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ธฐ ์œ„ํ•œ ์ž‘์—…์˜ ๋‹จ์œ„๋ฅผ ๋งํ•œ๋‹ค.

    • ์ด๋Ÿฌํ•œ ํŠธ๋ Œ์ ์…˜์„ ์ƒ๊ฐํ• ๋•Œ ์˜คํ•ดํ•˜๋ฉด ์•ˆ๋˜๋Š” ๊ฒƒ์ด ์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ์ž‘์—…์€ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœํ•˜๋Š” ๊ณผ์ •์—์„œ ์ž…๋ ฅ๋˜๋Š” ์ปค๋งจ๋“œ๋ฅผ ๋ชจ๋‘ ๋ฌถ์–ด ํ•˜๋‚˜์˜ ์ž‘์—…์œผ๋กœ ๋ช…๋ช…ํ•œ๋‹ค. (ex. INSERT, SELECT ๋“ฑ๋“ฑ์˜ ์ปค๋งจ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ SQL์— ์ ‘๊ทผํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค. )
  • ์•ˆ์ „์„ฑ
    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋ฐ์ดํ„ฐ ์†์‹ค์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฑ์—… ๋ฐ ๋ณต๊ตฌ ๋งค์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
์žฅ์ ๋‹จ์ 
โ–ก ๋ฐ์ดํ„ฐ ์ค‘๋ณต์„ ํ†ต์ œํ•  ์ˆ˜ ์žˆ๋‹คโ–ก ๋น„์šฉ์ด ๋งŽ์ด ๋“ ๋‹ค
โ–ก ๋ฐ์ดํ„ฐ ๋…๋ฆฝ์„ฑ์ด ํ™•๋ณด๋œ๋‹คโ–ก ๋ฐฑ์—…๊ณผ ํšŒ๋ณต ๋ฐฉ๋ฒ•์ด ๋ณต์žกํ•˜๋‹ค
โ–ก ๋ฐ์ดํ„ฐ๋ฅผ ๋™์‹œ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹คโ–ก ์ค‘์•™ ์ง‘์ค‘ ๊ด€๋ฆฌ๋กœ ์ธํ•œ ์ทจ์•ฝ์ ์ด ์กด์žฌํ•œ๋‹ค
โ–ก ๋ฐ์ดํ„ฐ ๋ณด์•ˆ์ด ํ–ฅ์ƒ๋œ๋‹ค
โ–ก ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค
โ–ก ํ‘œ์ค€ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค
โ–ก ์žฅ์•  ๋ฐœ์ƒ ์‹œ ํšŒ๋ณต์ด ๊ฐ€๋Šฅํ•˜๋‹ค
โ–ก ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ ๋น„์šฉ์ด ์ค„์–ด๋“ ๋‹ค

๐Ÿ“Œ DBMS๋ž€?

DBMS๋Š” ์šฐ๋ฆฌ๊ฐ€ DataBase Management System์˜ ์•ฝ์ž๋กœ์„œ, ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ผ๊ณ  ๋ช…๋ช…ํ•˜์ง€๋งŒ, ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ฐ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ,๊ด€๋ฆฌ,๊ฒ€์ƒ‰,๊ฐฑ์‹ ํ•˜๋Š” ์ด๊ด„ ์†Œํ”„ํŠธ์›จ์–ด ์ž…๋‹ˆ๋‹ค.

๐Ÿ’ก DBMS์˜ ์—ญํ• 
DBMS๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๊ณ  ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ, ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋„ˆ๋ฌด ์˜์กดํ•˜๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์‹ค์ œ๋กœ DBMS๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๋„์™€์ฃผ์ง€๋งŒ, ์ทจ์•ฝ์ ์ด ์กด์žฌ ํ•  ์ˆ˜ ์žˆ๊ณ  ๊ทธ ์ ์œผ๋กœ ์ธํ•ด ๋ฐ์ดํ„ฐ๊ฐ€ ์†์‹ค๋˜๋Š” ๋ฌธ์ œ๋ฅผ ์•ผ๊ธฐ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜์กด์„ฑ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ


๐Ÿ“Œ Schema๊ฐ€ ๋ฌด์—‡์ด๊ณ  3๋‹จ๊ณ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ๋Š” ๋ญ˜๊นŒ?

  • ์œ„์˜ ์งˆ๋ฌธ์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ „์ฒด์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ด๊ด„ ๊ด€๋ฆฌ๋ฅผ ํ•˜๋ฉฐ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ์— ๋งž์ถฐ์„œ ๊ฐ€๊ณต์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋ผ๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๊ฐ€๊ณต์ด๋ผ๊ณ  ํ•จ์€ SQL ์–ธ์–ด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…, ์‚ญ์ œ, ๊ฒ€์ƒ‰, ์ˆ˜์ •ํ•˜๋Š” ๋“ฑ์˜ ํŠธ๋žœ์ ์…˜์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก DataBase's 3 steps

โœ… External Schema(for user)
์‚ฌ์šฉ์ž๊ฐ€ ํฐ ๋ฒ”์œ„์•ˆ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ค ์ค‘ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์„ ๋ณ„ํ•˜๊ณ  ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด External Schema๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
โœ… Conceptual Schema(for firm)
์ „์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๊ณ  ๋ชจ๋“  ํ…Œ์ด๋ธ”, ๊ด€๊ณ„ ๋ฐ ์ œ์•ฝ์กฐ๊ฑด์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
โœ… Internal Schema(for storage)
๋ฌผ๋ฆฌ์  ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์„ค๋ช…ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋“ค์ด ์–ด๋–ป๊ฒŒ ์ €์žฅ๋˜๊ณ  ์ธ๋ฑ์‹ฑ๋˜๋Š”์ง€๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

  • ์ด๋ ‡๊ฒŒ ๋ณด๋ฉด ๊ฐ ๋‹จ๊ณ„์˜ ์Šคํ‚ค๋งˆ ์œ ๊ธฐ์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ตœํ•˜์œ„ ๋‹จ์œ„์˜ ๋ ˆ์ฝ”๋“œ ๋“ฑ์—์„œ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋งž์ถฐ์„œ mappingํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์œ„ ์‚ฌ์ง„๊ณผ ๊ฐ™์€ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋˜๊ณ  ๋ฌผ๋ฆฌ์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ตฌ์กฐ๊ฐ€ ๋ฐ”๋€Œ๊ฒŒ ๋˜๋”๋ผ๋„ ๋…ผ๋ฆฌ์  ๋ฐ์ดํ„ฐ์˜ ๋…๋ฆฝ์„ฑ, ๋ฌผ๋ฆฌ์  ๋ฐ์ดํ„ฐ ๋…๋ฆฝ์„ฑ์„ ๋งŒ์กฑํ•  ๊ฒฝ์šฐ ์™ธ๋ถ€/๊ฐœ๋… ์‚ฌ์ƒ๊ณผ ๊ฐœ๋…/๋‚ด๋ถ€ ์‚ฌ์ƒ์„ ์กฐ๊ธˆ๋งŒ ๋ณ€๊ฒฝํ•ด์ฃผ๋ฉด ์‚ฌ์šฉํ•จ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ์ง€ ์•Š๋Š”๋‹ค.

๐Ÿ“Œ ๋ฐ์ดํ„ฐ ๋…๋ฆฝ์„ฑ

๋ฐ์ดํ„ฐ์˜ ๋…๋ฆฝ์„ฑ์ด๋ผ๊ณ  ํ•จ์€ ๋…ผ๋ฆฌ์ , ๋ฌผ๋ฆฌ์  ๋ฐ์ดํ„ฐ์˜ ๋…๋ฆฝ์„ฑ์„ ๋งํ•œ๋‹ค. ์˜ˆ๋ฅผ๋“ค๋ฉด ๋‚ด๋ถ€ ์Šคํ‚ค๋งˆ์— ์ €์žฅ๋˜์–ด ์žˆ๋˜ ์—ฐ๋ฝ์ฒ˜๋ผ๋Š” ์ปฌ๋Ÿผ์ด ์ „ํ™”๋ฒˆํ˜ธ๋ผ๊ณ  ๋ฐ”๋€Œ๋Š” ๊ฒฝ์šฐ ๊ฐœ๋…/๋‚ด๋ถ€ ์‚ฌ์ƒ์„ ์—ฐ๋ฝ์ฒ˜๋ผ๋Š” ์ปฌ๋Ÿผ์ด ์ „ํ™”๋ฒˆํ˜ธ๋ผ๋Š” ๋‚ด๋ถ€ ์Šคํ‚ค๋งˆ์˜ ์ปฌ๋Ÿผ๊ณผ ๊ด€๋ จ์ด ์žˆ๋‹ค๋ผ๊ณ  ํ‘œ์‹œ ํ•ด์ฃผ๋Š” ์‹์œผ๋กœ ์™„์ „ํžˆ ๊ฐ™์ง€๋Š” ์•Š์ง€๋งŒ, ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ์ €์žฅํ•˜๊ณ  ์ด๋ฅผ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.


๐Ÿ“Œ What is the RDBMS(Relational DataBase Management System)

RDBMS๋Š” ํ…Œ์ด๋ธ” ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ SpreadSheet๋“ฑ์„ ์ด์šฉํ•˜์—ฌ ์ •๋ฆฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์ง๊ด€์ ์ธ ๋ฐ์ดํ„ฐ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. RDBMS์˜ ๊ฒฝ์šฐ๋Š” ํ•œ ์Šคํ‚ค๋งˆ์— ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋“ค์— ํ•œํ•˜์—ฌ ์ค‘๋ณต์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ๋ฐ์ดํ„ฐ์˜ ์œ ์ง€ ๋ณด์ˆ˜์„ฑ์„ ํ–ฅ์ƒ ์‹œํ‚ค๊ณ  ๋ถ„๋ฆฌ ๋˜์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ง๊ด€์ ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.


๐Ÿ“Œ ๋ฆด๋ ˆ์ด์…˜ ์Šคํ‚ค๋งˆ์™€ ๋ฆด๋ ˆ์ด์…˜ ์ธ์Šคํ„ด์Šค

Relation Schema๋Š” MySql์—์„œ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๊ธฐ ์ „์— ์šฐ๋ฆฌ๋Š” ๋”ฐ๋กœ ์ปฌ๋Ÿผ๋ช…๊ณผ ๊ทธ ์•ˆ์— ๋“ค์–ด๊ฐˆ ๋‚ด์šฉ๋“ค์„ ์ •ํ•ด์คฌ์—ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์†์„ฑ๋“ค์„ ์ด๋ฆ„์œผ๋กœ ์ •์˜ํ•˜๋Š” ๊ฒƒ์„ Relation Schema๋ผ๊ณ  ํ•˜๊ณ  ๊ทธ ์•ˆ์— ๋“ค์–ด๊ฐ€๋Š” ๋‚ด์šฉ๋“ค์„ Relation Instance๋ผ๊ณ  ํ•œ๋‹ค.

mysql> CREATE TABLE topic(
    -> id INT(11) NOT NULL AUTO_INCREMENT,
    -> title VARCHAR(100) NOT NULL,
    -> description TEXT NULL, 
    -> created DATETIME NOT NULL, 
    -> author VARCHAR(15) NULL, 
    -> profile VARCHAR(200) NULL 
    -> );

๐Ÿ“Œ Degree & Cardinality of Relation Schema

์œ„์˜ ์‚ฌ์ง„์œผ๋กœ Degree ์™€ Cardinality๋Š” ์‰ฝ๊ฒŒ ์„ค๋ช… ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„์˜ ํ‘œ์— ์šฐ๋ฆฌ๊ฐ€ ์„ ์–ธํ•œ Relation schema์˜ Attribute์˜ ๊ฐœ์ˆ˜๋ฅผ ์ฐจ์ˆ˜๋ผ๊ณ  ํ•˜๊ณ  ๊ทธ ์ฐจ์ˆ˜์™€ ์ œ์•ฝ ์กฐ๊ฑด์— ๋งž์ถฐ ์ž…๋ ฅ์ด ๋œ ๋ฐ์ดํ„ฐ๋“ค์˜ ๊ฐœ์ˆ˜ ์ฆ‰ Relation Instance์˜ ๊ฐœ์ˆ˜๊ฐ€ ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๐Ÿ˜€


๐Ÿ“Œ What is the Key๐Ÿ”‘?

์—ฌ๊ธฐ์„œ ํ‚ค๋ผ๊ณ  ํ•จ์€, ์šฐ๋ฆฌ ์ž…๋ ฅํ•œ Relation Instance๋“ค์˜ ์ง‘ํ•ฉ์ธ ํŠœํ”Œ์„ ์ •๋ ฌํ•˜๊ฑฐ๋‚˜ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋งŒ๋“ค์–ด์ง„ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ชจ๋“  Attribute๋ฅผ ํ‚ค๋กœ ์ •ํ•˜์—ฌ ๊ตฌ๋ถ„ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์œ ์ผํ•˜๊ฒŒ ๊ตฌ๋ถ„์ด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ • ์†์„ฑ์„ Key๋กœ์จ ์„ ์ •ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋Š” ์ค‘๋ณต์„ ํ”ผํ•˜๊ณ  ๋‚ด๊ฐ€ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ง ํ•„์š”ํ•œ์ง€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ด ํŠœํ”Œ์˜ ์œ ์ผ์„ฑ๊ณผ ์ตœ์†Œ์„ฑ์„ ๊ฒ€ํ† ํ•ฉ๋‹ˆ๋‹ค.
  1. ์Šˆํผํ‚ค(Super Key) : ์œ ์ผ์„ฑ O, ์ตœ์†Œ์„ฑ X
    ๐Ÿ‘‰ ์Šˆํผํ‚ค๋Š” ์œ ์ผ์„ฑ์˜ ํŠน์„ฑ์„ ๋งŒ์กฑํ•˜๋Š” ์†์„ฑ ๋˜๋Š” ์†์„ฑ๋“ค์˜ ์ง‘ํ•ฉ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํ‚ค ๊ฐ’์ด ๊ฐ™์€ ํŠœํ”Œ์„ ์กด์žฌํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— id์˜ ๊ฒฝ์šฐ๋Š” ํ…Œ์ด๋ธ”์„ ์„ ์–ธ ๋‹น์‹œ์— Increment ์†์„ฑ์œผ๋กœ ํ–ˆ์œผ๋ฉด, ์Šˆํผํ‚ค๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ง์—…, ๋‚˜์ด ๋“ฑ์˜ ๊ฒฝ์šฐ๋Š” ๊ฒน์น  ์ˆ˜ ์žˆ์–ด ์Šˆํผํ‚ค๋กœ ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅ ํ•˜์ง€๋งŒ id์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์Šˆํผํ‚ค๋กœ์จ ์—ญํ• ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  2. ํ›„๋ณดํ‚ค(Candidate Key) : ์œ ์ผ์„ฑ O, ์ตœ์†Œ์„ฑ O
    ๐Ÿ‘‰ ์Šˆํผํ‚ค ์ค‘ ์ตœ์†Œ์„ฑ์„ ๋งŒ์กฑํ•˜๋Š”, ์ฆ‰ ์œ ์ผ์„ฑ๊ณผ ์ตœ์†Œ์„ฑ์„ ๋ชจ๋‘ ๋งŒ์กฑํ•˜๋Š” ์†์„ฑ ๋˜๋Š” ์†์„ฑ๋“ค์˜ ์ง‘ํ•ฉ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์Šˆํผํ‚ค์— ๋Œ€ํ•œ ์„ค๋ช…์„ ํ•˜๋ฉด์„œ id, ์ง์—…, ๋‚˜์ด๋“ฑ์˜ ํ‚ค๋Š” ์œ ์ผ์„ฑ์€ ๋งŒ์กฑํ•˜์ง€๋งŒ, ์ง์—…๊ณผ ๋‚˜์ด์˜ ๊ฒฝ์šฐ๋Š” ์ตœ์†Œ์„ฑ์„ ๋งŒ์กฑํ•˜์ง€ ์•Š๊ณ  ๊ฐ™์€ ๊ฐ’์ด ๋‚˜์˜ค๊ธฐ ๋•Œ๋ฌธ์— id๋งŒ์ด ํ›„๋ณดํ‚ค๋กœ์„œ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ๊ธฐ๋ณธํ‚ค(Primary Key) : ํ›„๋ณดํ‚ค ์ค‘ ์„ ํƒ๋ฐ›์€ ํ‚ค
    ๐Ÿ‘‰ ์œ„์˜ ํ›„๋ณดํ‚ค๋ฅผ ์„ ์ •ํ•˜๋Š” ๊ณผ์ •์—์„œ ์„ ๋ณ„๋œ ํ›„๋ณดํ‚ค๋“ค ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ธฐ๋ณธํ‚ค๋กœ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ธฐ๋ณธํ‚ค๋กœ ์„ ์ •ํ•จ์— ์žˆ์–ด ์•„๋ž˜ ๊ธฐ์ค€์„ ํ†ต๊ณผํ•ด์•ผ๋งŒ ๊ธฐ๋ณธํ‚ค๋กœ์จ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก๊ธฐ๋ณธํ‚ค ์กฐ๊ฑด

- null ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์†์„ฑ์ด ํฌํ•จ๋œ ํ›„๋ณดํ‚ค๋Š” ๊ธฐ๋ณธํ‚ค๋กœ ๋ถ€์ ์ ˆํ•ฉ๋‹ˆ๋‹ค.
- ๊ฐ’์ด ์ž์ฃผ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ์ด ํฌํ•จ๋œ ํ›„๋ณดํ‚ค๋Š” ๊ธฐ๋ณธํ‚ค๋กœ ๋ถ€์ ์ ˆํ•ฉ๋‹ˆ๋‹ค.
- ๋‹จ์ˆœํ•œ ํ›„๋ณดํ‚ค๋ฅผ ๊ธฐ๋ณธํ‚ค๋กœ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก๊ธฐ๋ณธํ‚ค๊ฐ€ ๋˜๊ธฐ ์œ„ํ•œ ์†์„ฑ ์กฐ๊ฑด

- null๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.(Entity ๋ฌด๊ฒฐ์„ฑ ์ฒซ๋ฒˆ์งธ ์กฐ๊ฑด์— ์–ด๊ธ‹๋‚œ๋‹ค.)
- ๊ธฐ๋ณธํ‚ค๋กœ ์ •์˜๋œ ์†์„ฑ๋ฐ๋Š” ๋™์ผํ•œ ๊ฐ’์ด ์ค‘๋ณต๋˜์–ด ์ €์žฅ๋  ์ˆ˜ ์—†๋‹ค.(Entity ๋ฌด๊ฒฐ์„ฑ ๋‘๋ฒˆ์งธ ์กฐ๊ฑด์— ์–ด๊ธ‹๋‚œ๋‹ค.)

  1. ๋Œ€์ฒดํ‚ค(Alternate Key, UNIQUE) : ํ›„๋ณดํ‚ค ์ค‘ ์„ ํƒ๋ฐ›์ง€ ๋ชปํ•œ ํ‚ค
    ๐Ÿ‘‰ ๊ธฐ๋ณธํ‚ค๊ฐ€ ๋˜๊ธฐ ์œ„ํ•œ ์กฐ๊ฑด์— ๋Œ€๋ถ€๋ถ„ ๋ถ€ํ•ฉํ•˜์ง€ ์•Š์•„ ํƒˆ๋ฝํ•œ ํ›„๋ณดํ‚ค๋“ค์„ ๋Œ€์ฒดํ‚ค๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.(๋ณด์กฐํ‚ค๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค!)
  2. ์™ธ๋ž˜ํ‚ค(Foreign Key) : ๋‹ค๋ฅธ ๋ฆด๋ ˆ์ด์…˜์˜ ๊ธฐ๋ณธํ‚ค๋ฅผ ์ฐธ์กฐ
    ๐Ÿ‘‰ ๋‘ ํ…Œ์ด๋ธ”์„ ์„œ๋กœ ์—ฐ๊ฒฐํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํ‚ค๋ฅผ ๋งํ•œ๋‹ค.
    ์—ฌ๊ธฐ์„œ ์กฐ๊ฑด์€ ์™ธ๋ž˜ํ‚ค๋กœ ์ง€์ •๋˜๋ฉด ์ฐธ์กฐ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธํ‚ค์— ์—†๋Š” ๊ฐ’์€ ์†์„ฑ์œผ๋กœ์„œ ์ž…๋ ฅ์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. + (์™ธ๋ž˜ํ‚ค๋Š” ์ฐธ์กฐ๋˜๋Š” ๋ฆด๋ ˆ์ด์…˜์˜ ๊ธฐ๋ณธํ‚ค์™€ ๋Œ€์‘๋˜์–ด ๋ฆด๋ ˆ์ด์…˜ ๊ฐ„์— ์ฐธ์กฐ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•˜๋Š”๋ฐ ์ค‘์š”ํ•œ ๋„๊ตฌ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.)

๊ด€๊ณ„๋ฅผ ๋งบ๊ณ  ์žˆ๋Š” ๋‘ ํ…Œ์ด๋ธ”๊ฐ„์˜ ํŠœํ”Œ ๋ณ€๊ฒฝ ๊ทœ์น™

  • ON UPDATE NO ACTION(ํˆฌํ”Œ์„ ๋ณ€๊ฒฝํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•จ)
  • ON UPDATE CASCADE(๊ด€๋ จ ํˆฌํ”Œ์—์„œ ์™ธ๋ž˜ํ‚ค ๊ฐ’์„ ํ•จ๊ป˜ ๋ณ€๊ฒฝํ•จ)
  • ON UPDATE SET NULL(๊ด€๋ จ ํˆฌํ”Œ์˜ ์™ธ๋ž˜ํ‚ค ๊ฐ’์„ NULL๋กœ ๋ณ€๊ฒฝํ•จ)
  • ON UPDATE SET DEFAULT(๊ด€๋ จ ํˆฌํ”Œ์˜ ์™ธ๋ž˜ํ‚ค ๊ฐ’์„ ๋ฏธ๋ฆฌ ์ง€์ •ํ•œ ๊ธฐ๋ณธ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•จ)

์ƒํ˜ธ ์ฐธ์กฐํ•˜๋Š” ํ…Œ์ด๋ธ”์„ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ƒˆ๋กœ์šด ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๋•Œ ์œ„์˜ 4๊ฐ€์ง€ ๊ทœ์น™ ์ค‘์—์„œ ํ•œ๊ฐ€์ง€๋ฅผ ์„ ํƒํ•˜์—ฌ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋กœ ์ง€์ •ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ์—๋Š” On update No action์ด ๊ธฐ๋ณธ์œผ๋กœ ์„ค์ •๋œ๋‹ค.


๐Ÿ“Œ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด์€ ๋ฌด์—‡์ผ๊นŒ?

๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด์„ ์•Œ์•„๋ณด๊ธฐ ์ „์— ๋ฌด๊ฒฐ์„ฑ์ด๋ผ๋Š” ๊ฒƒ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ๋ฌด๊ฒฐ์„ฑ์ด๋ž€ ๋ฐ์ดํ„ฐ์˜ ์ •ํ™•์„ฑ, ์ผ๊ด€์„ฑ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
    ๋ฌด๊ฒฐ์„ฑ ๋ฐ์ดํ„ฐ๋ผ๋Š” ๊ฒƒ์€ ๋‹ค์‹œ๋งํ•ด, ์ •ํ™•ํ•˜๊ณ  ์ผ๊ด€๋˜๊ฒŒ ์œ ์ง€๋œ ๊ฒฐํ•จ์ด ์—†๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด(Integrity Constraint)
    ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ •ํ™•์„ฑ, ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ €์žฅ, ์‚ญ์ œ, ์ˆ˜์ • ๋“ฑ์„ ์ œ์•ฝํ•˜๊ธฐ ์œ„ํ•œ ์กฐ๊ฑด์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ •ํ™•์„ฑ๊ณผ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋งŒ๋“  ์ œ์•ฝ ์กฐ๊ฑด์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค
    - ๊ฐœ์ฒด ๋ฌด๊ฒฐ์„ฑ
    ๊ฐ ๋ฆด๋ ˆ์ด์…˜์˜ ๊ธฐ๋ณธํ‚ค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์†์„ฑ์€ NULL์ด๋‚˜ ์ค‘๋ณต๋œ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
    - ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ
    ์™ธ๋ž˜ํ‚ค ๊ฐ’์€ NULL์ด๊ฑฐ๋‚˜ ์ฐธ์กฐํ•˜๋Š” ๋ฆด๋ ˆ์ด์…˜์˜ ๊ธฐ๋ณธํ‚ค ๊ฐ’๊ณผ ๋™์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰ NULL ๊ฐ’์ด๋‚˜, ๋ฆด๋ ˆ์ด์…˜ ์•ˆ์— ์ œํ•œ์„ ๊ฑธ์–ด๋‘” ๊ฐ’์ด ์•„๋‹Œ ๋‹ค๋ฅธ ๊ฐ’์„ ์ž…๋ ฅํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ๊ทธ๊ฒƒ์„ ์™ธ๋ž˜ํ‚ค๋กœ์จ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
    - ๋„๋ฉ”์ธ ๋ฌด๊ฒฐ์„ฑ
    ์†์„ฑ๋“ค์˜ ๊ฐ’์€ ์ •์˜๋œ ๋„๋ฉ”์ธ์— ์†ํ•œ ๊ฐ’์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    - ๊ณ ์œ  ๋ฌด๊ฒฐ์„ฑ
    ํŠน์ • ์†์„ฑ์— ๋Œ€ํ•ด ๊ณ ์œ ํ•œ ๊ฐ’์„ ๊ฐ€์ง€๋„๋ก ์กฐ๊ฑด์ด ์ฃผ์–ด์ง„ ๊ฒฝ์šฐ, ๋ฆด๋ ˆ์ด์…˜์˜ ๊ฐ ํŠœํ”Œ์ด ๊ฐ€์ง€๋Š” ์†์„ฑ ๊ฐ’๋“ค์€ ์„œ๋กœ ๋‹ฌ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    - null ๋ฌด๊ฒฐ์„ฑ
    ๋ฆด๋ ˆ์ด์…˜์˜ ํŠน์ • ์†์„ฑ ๊ฐ’์€ NULL์ด ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. SQL์˜ ์–ธ์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•  ๋•Œ NOT NULL๋กœ ์„ ์–ธ์„ ํ–ˆ์œผ๋ฉด ํ•ด๋‹น ๊ฐ’์€ NULL์ด ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
    - Key ๋ฌด๊ฒฐ์„ฑ
    ๊ฐ ๋ฆด๋ ˆ์ด์…˜์€ ์ตœ์†Œํ•œ ํ•œ ๊ฐœ ์ด์ƒ์˜ ํ‚ค๊ฐ€ ์กด์žฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ  ๋ชฉ๋ก
1. ํŠธ๋žœ์ ์…˜์— ๋Œ€ํ•œ ์„ค๋ช…
2. ์ „๋ฐ˜์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ๊ฐœ๋… ๋ฐ ์ฐธ๊ณ  ์‚ฌ์ง„
3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์„ค๋ช…
4. ๋ฆด๋ ˆ์ด์…˜ ์Šคํ‚ค๋งˆ
5. ํ‚ค์˜ ๊ฐœ๋…
6. ํ‚ค์˜ ๊ฐœ๋… ๋ฐ ์ œ์•ฝ์กฐ๊ฑด์˜ ์ดํ•ด
7. ๋ฌด๊ฒฐ์„ฑ์˜ ๊ฐœ๋…

profile
๋ฐฑ์—”๋“œ ํ™”์ดํŒ… :)

0๊ฐœ์˜ ๋Œ“๊ธ€