๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
[๊ฐœ๋ฐœ] Practice/SQL Database

[SQL / Database] ์ •๊ทœํ™”/์ •๊ทœํ˜• ์ดํ•ดํ•ด๋ณด๊ธฐ2

by Connecting-the-dots 2023. 5. 28.
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ’ก์ •๊ทœํ™”/์ •๊ทœํ˜• ์ดํ•ดํ•ด๋ณด๊ธฐ2

๐Ÿ’œ ์ œ3์ •๊ทœํ™”/์ œ3์ •๊ทœํ˜•

  • ์ œ2์ •๊ทœํ˜•์„ ๋งŒ์กฑํ•˜๋Š” ํ…Œ์ด๋ธ”์—์„œ primary key ๋˜๋Š” composite primary key ์ปฌ๋Ÿผ์— ์ข…์†๋˜์ง€ ์•Š์€ ์ปฌ๋Ÿผ์— ์ข…์†๋œ ์ปฌ๋Ÿผ์„ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”๋กœ ๋นผ๋Š” ์ž‘์—…์„ ์ œ3์ •๊ทœํ™”๋ผ๊ณ  ํ•˜๋ฉฐ, ์ด ์ž‘์—…์ด ์™„๋ฃŒ๋œ ํ…Œ์ด๋ธ”์„ ์ œ3์ •๊ทœํ˜•์ด๋ผ๊ณ  ํ•œ๋‹ค.
  • ์ œ3์ •๊ทœํ˜•์˜ ๊ต๊ณผ์„œ์  ์ •์˜๋Š” ์ œ2์ •๊ทœํ˜•์—์„œ transitive dependency ๋ฅผ ์ œ๊ฑฐํ•œ ํ…Œ์ด๋ธ”์„ ์˜๋ฏธํ•œ๋‹ค.
    • ์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” transitive dependency ์— ๋Œ€ํ•ด ๋งํ•˜์ž๋ฉด...
      • ํŠน์ • ํ…Œ์ด๋ธ”์— composite primary key  ๋˜๋Š” primary key ์—ญํ• ์„ ํ•˜๋Š” ์ปฌ๋Ÿผ์ด ์žˆ๊ณ 
      • ๊ฑฐ๊ธฐ์— ์ง์ ‘์ ์œผ๋กœ ์ข…์†๋œ ์ปฌ๋ŸผA๊ฐ€ ์žˆ๋Š” ์ƒํƒœ์—์„œ
      • ์ปฌ๋ŸผA์— ์ข…์†๋œ ์ปฌ๋ŸผB๊ฐ€ ์žˆ์œผ๋ฉด ์ปฌ๋Ÿผ B๋Š” primary key ์ปฌ๋Ÿผ์— transitive dependency ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ‘œํ˜„ํ•œ๋‹ค.

๐Ÿ’œ Primary key ์™€ Foreign key

  • ์ •๊ทœํ™”๋ฅผ ์œ„ํ•ด ํ…Œ์ด๋ธ”์„ ์ชผ๊ฐค ๋•Œ ์œ ์˜ํ•  ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
    • ํ…Œ์ด๋ธ”๋งˆ๋‹ค ํ•ญ์ƒ primary key ์—ญํ• ์„ ํ•˜๋Š” ์ปฌ๋Ÿผ์„ ๋„ฃ์–ด๋‘๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
    • ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ์„ ๊ฐ€์ ธ๋‹ค ์‚ฌ์šฉํ•  ๋•Œ์—๋„ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ primary key ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
      (๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ primary key ๋ฅผ ํŠน์ • ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ์— ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•  ๋•Œ, ์ด๋ฅผ foreign key ๋ผ๊ณ  ์ง€์นญํ•œ๋‹ค.)
// ์ปฌ๋Ÿผ ์ƒ์„ฑ ์‹œ FOREIGN KEY ๋“ฑ๋กํ•˜๊ธฐ
CREATE TABLE ํ…Œ์ด๋ธ”๋ช…1 (
    ์ปฌ๋Ÿผ๋ช…1 datatype PRIMARY KEY,
    ์ปฌ๋Ÿผ๋ช…2 datatype,
    ์ปฌ๋Ÿผ๋ช…3 datatype REFERENCES ํ…Œ์ด๋ธ”๋ช…2(ํ…Œ์ด๋ธ”๋ช…2_์ปฌ๋Ÿผ)
)

CREATE TABLE ํ…Œ์ด๋ธ”๋ช…1 (
    ์ปฌ๋Ÿผ๋ช…1 datatype,
    ์ปฌ๋Ÿผ๋ช…2 datatype,
    ์ปฌ๋Ÿผ๋ช…3 datatype,
    CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด์ž‘๋ช…1 PRIMARY KEY (์ปฌ๋Ÿผ๋ช…1), 
    CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด์ž‘๋ช…2 FOREIGN KEY (์ปฌ๋Ÿผ๋ช…3) REFERENCES ํ…Œ์ด๋ธ”๋ช…2(ํ…Œ์ด๋ธ”๋ช…2_์ปฌ๋Ÿผ),
)

// ์ด๋ฏธ ์ƒ์„ฑ๋œ ํ…Œ์ด๋ธ”์„ ์ˆ˜์ •ํ•˜์—ฌ FOREIGN KEY ๋“ฑ๋กํ•˜๊ธฐ
ALTER TABLE ํ…Œ์ด๋ธ”๋ช…1 ADD CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด์ž‘๋ช… FOREIGN KEY (์ปฌ๋Ÿผ๋ช…3) REFERENCES ํ…Œ์ด๋ธ”๋ช…2(ํ…Œ์ด๋ธ”๋ช…2_์ปฌ๋Ÿผ)
  • ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ primary key ๋ฅผ ๊ฐ€์ ธ์™€์„œ ํŠน์ • ์ปฌ๋Ÿผ์— ์‚ฌ์šฉํ•  ๋•Œ, ์ปฌ๋Ÿผ์—๋‹ค foreign key ์—ญํ• ์„ ํ•˜๋Š” ์ปฌ๋Ÿผ์ž„์„ ๋“ฑ๋ก ๋ฐ ํ‘œ์‹œํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
728x90
๋ฐ˜์‘ํ˜•