[Chapter 9] DCL

๊น€์•„๋žŒยท2023๋…„ 7์›” 25์ผ

๐Ÿ“Œ 1. ๋ฐ์ดํ„ฐ ์ œ์–ด์–ด (Data Contol Language)

: ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ถŒํ•œ ์ƒ์„ฑ ํ˜น์€ ๊ถŒํ•œ ์‚ญ์ œ ๊ฐ™์€ ๋ช…๋ น์–ด

  • grant : ๊ถŒํ•œ ์ƒ์„ฑ
  • revoke : ๊ถŒํ•œ ์‚ญ์ œ

๐Ÿ“ ์ปฌ๋Ÿผ ์†์„ฑ(๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด)

  • not null : ๋„๊ฐ’์ด ์ž…๋ ฅ๋˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋Š” ์กฐ๊ฑด
  • unique : ์ค‘๋ณต๋œ ๊ฐ’์ด ์ž…๋ ฅ๋˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋Š” ์กฐ๊ฑด
  • check : ์ฃผ์–ด์ง„ ๊ฐ’๋งŒ ํ—ˆ์šฉํ•˜๋Š” ์กฐ๊ฑด
  • primary key : not null + unique + index์˜ ์˜๋ฏธ
  • foreign key : ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ํ•„๋“œ(์ปฌ๋Ÿผ)๋ฅผ ์ฐธ์กฐํ•ด์„œ ๋ฌด๊ฒฐ์„ฑ์„ ๊ฒ€์‚ฌํ•˜๋Š” ์กฐ๊ฑด

ใ…‹

๐Ÿ“Œ2. ๊ธฐ๋ณธํ‚ค (primary key)

  • PK
  • ๊ธฐ๋ณธํ‚ค ์—ญ์‹œ ๊ธฐ๋ณธ์ ์ธ ์ œ์•ฝ์กฐ๊ฑด๋“ค์€ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•  ๋•Œ ๊ฐ™์ด ์ •์˜
  • ํ…Œ์ด๋ธ”๋‹น ํ•˜๋‚˜๋งŒ ์ •์˜๊ฐ€ ๊ฐ€๋Šฅํ•˜(๋‘๊ฐœ ์ด์ƒ์˜ PK๋Š” ์กฐํ•ฉํ‚ค/ ๋ณตํ•ฉํ‚ค ๋ผ๊ณ  ๋ถˆ๋ฆผ. ๋ฌถ์–ด์„œ ํ•˜๋‚˜๋กœ ๋ด„.)
  • ์ฃผํ‚ค / ๊ธฐ๋ณธํ‚ค/ ์‹๋ณ„์ž/ PK ๋“ฑ์œผ๋กœ ๋ถˆ๋ฆผ
  • PK๋Š” NOT NULL + UNIQUE + Index
  • ์ž๋™ Index๊ฐ€ ์ƒ์„ฑ๋˜๋Š”๋ฐ ์ด๋Š” ๊ฒ€์ƒ‰ ํ‚ค๋กœ์„œ ๊ฒ€์ƒ‰ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค.

ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹๊ธฐ๋ณธํ‚ค ์„ ์–ธ ๋ฐฉ๋ฒ• (3๊ฐ€์ง€)

	create table pkTest(
		pkCol1 varchar2(10) primary key
	);

	create table pkTest(
		pkCol1 varchar2(10) constraints pk์ด๋ฆ„ primary key
	);

	create table pkTest(
		pkCol1 varchar2(10) ,
		pkCol2 varchar2(10) ,
		pkCol3 varchar2(10) ,
		constraints pk์ด๋ฆ„ primary key(pkCol1)
	);

๐Ÿ“Œ3. ์ฐธ์กฐํ‚ค (foreign key)

  • ์™ธ๋ถ€ํ‚ค/ ์™ธ๋ž˜ํ‚ค/ ์ฐธ์กฐํ‚ค/ ์™ธ๋ถ€ ์‹๋ณ„์ž/ FK ๋“ฑ์œผ๋กœ ๋ถˆ๋ฆผ
  • FK๊ฐ€ ์ •์˜๋œ ํ…Œ์ด๋ธ” = ์ž์‹ ํ…Œ์ด๋ธ”
  • ์ฐธ์กฐ๋˜๋Š” ํ…Œ์ด๋ธ” ์ฆ‰, PK๊ฐ€ ์žˆ๋Š” ํ…Œ์ด๋ธ”์„ ๋ถ€๋ชจ ํ…Œ์ด๋ธ”์ด๋ผ๊ณ  ํ•จ
  • ๋ถ€๋ชจ ํ…Œ์ด๋ธ”์„ PK์ปฌ๋Ÿผ์— ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ์ž์‹ ํ…Œ์ด๋ธ”์— ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Œ
  • ๋ถ€๋ชจ ํ…Œ์ด๋ธ”์€ ์ž์‹์˜ ๋ฐ์ดํ„ฐ๋‚˜ ํ…Œ์ด๋ธ”์ด ์‚ญ์ œ ๋œ๋‹ค๊ณ  ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Œ
  • ์ฐธ์กฐํ•˜๋Š” ๋ฐ์ดํ„ฐ ์ปฌ๋Ÿผ๊ณผ ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ ๋ฐ˜๋“œ์‹œ ์ผ์น˜
  • ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋Š” ์ปฌ๋Ÿผ์€ ๊ธฐ๋ณธํ‚ค(PK)์ด๊ฑฐ๋‚˜ UNIQUE๋งŒ ๊ฐ€๋Šฅ
  • ๋ณดํ†ต PK๋ž‘ ์—ฎ๋Š”๋‹ค.

ใ…‹zzzzzzzzzzzzzzzzzzzzzzzz์™ธ๋ž˜ํ‚ค ์ •์˜

1.
		create table fk_test(
		department_id	varchar2(10)	
		constraints fk์ด๋ฆ„ references departments(department_id)
		);
        
2.
		reate table fk_test(
		department_id	varchar2(10)	,
		...	,
		constraints dept_fk foreign key(department_id)
		reference departments(department_id)

	);

๐Ÿ“Œ4. ์‚ญ์ œ ์˜ต์…˜

  • ON DELETE CASCADE
    -> ์ฐธ์กฐ๋˜๋Š” ๋ถ€๋ชจ ํ…Œ์ด๋ธ”์˜ ํ–‰์— ๋Œ€ํ•œ delete๋ฅผ ํ—ˆ์šฉํ•œ๋‹ค.
    ใ…‹ ์ฆ‰, ์ฐธ์กฐ๋˜๋Š” ๋ถ€๋ชจ ํ…Œ์ด๋ธ” ๊ฐ’์ด ์‚ญ์ œ๋˜๋ฉด ์—ฐ์‡„์ ์œผ๋กœ ์ž์‹ ํ…Œ์ด๋ธ” ๊ฐ’ ์—ญ์‹œ ์‚ญ์ œ๋œ๋‹ค.
    -> ๋ณดํ†ต ๋งŽ์ด ์‚ฌ์šฉ
  • ON DELETE SET NULL
    -> ์ฐธ์กฐ๋˜๋Š” ๋ถ€๋ชจ ํ…Œ์ด๋ธ”์˜ ํ–‰์— ๋Œ€ํ•œ delete๋ฅผ ํ—ˆ์šฉํ•œ๋‹ค.
    ใ…‹z์ฆ‰, ๋ถ€๋ชจ ํ…Œ์ด๋ธ” ๊ฐ’์ด ์‚ญ์ œ๊ฐ€ ๋˜๋ฉด ํ•ด๋‹น ์ฐธ์กฐํ•˜๋Š” ์ž์‹ ํ…Œ์ด๋ธ”์˜ ๊ฐ’๋“ค์€ NULL๊ฐ’์œผ๋กœ ์„ค์ •๋œ๋‹ค.

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