| keys | Keys = ํ
์ด๋ธ์ ์ปฌ๋ผ. n๊ฐ์ ์ปฌ๋ผ์ด ๋ชจ์ฌ ํ๋์ ํค๋ฅผ ๊ตฌ์ฑํ๊ธฐ๋ ํจ (= composite key) * superkey (์ํผํค) : ๊ณ ์ ์๋ณ์ฑ๋ง ๊ฐ์ง๋ฉด ์ต์๊ฐ ์๋์ด๋ ์ํผํค - K์ ๋ํ ๊ฐ์ด ๊ฐ ๊ฐ๋ฅํ relation r (R) (= relation instance)์ ๊ณ ์ ํ ํํ์ ๊ตฌ๋ถํ๊ธฐ ์ถฉ๋ถํ๋ฉด - ID ์์ฒด๊ฐ ๊ณ ์ ์๋ณ์๋ผ์, ํผ์์๋ ์ํผํค, ์กฐํฉํด์๋ ์ํผํค์ --> { ID }, { ID, name } ๋ ๋ค instructor์ ์ํผํค์ // ๊ณ ์ ์๋ณ์ ํฌํจ, 2๋๋จธ์ง๊ฐ์ * candidate key (ํ๋ณดํค) : ์ํผํค ์ค ์ต์์ธ ๊ฒ. - ๊ณ ์ ์๋ณ์ฑ์ ๊ฐ๊ธฐ ์ํด ์ ๋ง ํ์ํ ์ปฌ๋ผ๋ง ์๋ ๊ฒฝ์ฐ --> { ID } ๊ฐ instructor์ ํ๋ณดํค์ - RDB ์์๋ ํ๋ณดํค๊ฐ ๋ณต์ ๊ฐ ์กด์ฌ ๊ฐ๋ฅํจ * primary key (๊ธฐ๋ณธํค) : ํ๋ณดํค ์ค ํ๋๊ฐ ๊ธฐ๋ณธํค๋ก ์ ํ๋จ. (+) ๋ง์ฝ A, B, C ์ค A, B ๋๊ฐ๊ฐ ํฉ์ฑํด์ผ๋ง ๊ณ ์ ์๋ณ์ฑ์ ๊ฐ๋๋ค๋ฉด * superkey = { A, B }, { A, B, C } --> 2๊ฐ * candidate = { A, B } --> 1๊ฐ * primalykey = { A, B } --> 1๊ฐ * foreign key (์ธ๋ํค) : ์ฐธ์กฐ๊ด๊ณ์ ๊ด๋ จ๋ ํค. - ๋ค๋ฅธ ๋ฆด๋ ์ด์ ์ ๊ธฐ๋ณธํค๋ฅผ ์์ฑ(๋ค)์ผ๋ก ํฌํจํ ์ ์์ - RDB์ relation (ํ ์ด๋ธ)์ด ๋ณต์ ๊ฐ ์กด์ฌํ ์ ์์. ๊ทธ ํ ์ด๋ธ๋ค์ด ์๋ก๊ฐ ๋ ๋ฆฝ์ (๋ฌด๊ด)ํ์ง ์๊ณ ํ ์ด๋ธ ๊ฐ ์ฐธ์กฐ๊ด๊ณ๊ฐ ์กด์ฌํ๊ฒ ๋จ ** ์ธ๋ํค ์ ์ฝ ์กฐ๊ฑด (Foreign key constraint) : ํ relation์ ๊ฐ์ ์๋์ relation๋ค์ ๋ํ๋์ผ ํจ. (1) Referencing relation [FK ์ธ๋ํค] //๊ต์์ ํ ์ด๋ธ์ dept_name ์ปฌ๋ผ์ด ์ธ๋ํค (2) Referenced relation [PK ๊ธฐ๋ณธํค] //ํ๊ณผ ํ ์ด๋ธ์ dept_name ์ปฌ๋ผ์ด ์ฐธ์กฐ๋๋ ๊ธฐ๋ณธํค --> ์ธ๋ํค์ ๋ํ๋ null์ด ์๋ ๊ฐ์ ๋ฐ๋์ ๊ทธ๊ฒ์ด ์ฐธ์กฐํ๋ ๊ธฐ๋ณธํค์ ์กด์ฌํด์ผ ํจ -> ์ด ๋ฐ๋๋ ์ฑ๋ฆฝํ ํ์ ์์ // null์ด ์ธ๋ํค์ ๋ค์ด๊ฐ๋ ๊ฒ์ ๊ฐ๋ฅํจ. ์ด ๊ฒฝ์ฐ์๋ ๊ธฐ๋ณธํค์ ๋ํ๋์ง ์์ // ๊ธฐ๋ณธํค pk์๋ null์ด ๋ค์ด๊ฐ ์ ์์, pk์ ๊ฐ๋ค์ ์๋ก ๋ฌ๋ผ์ผ ํ๋ค๋ ์ ์ฝ๋ ์์ è ์ฐธ์กฐ๋นํ๋ ์ชฝ์ ํญ์ ๊ทธ ํ ์ด๋ธ์ ๊ณ ์ ์๋ณ์๋ก ์ ์ ๋ primary key๊ฐ ๋๋ค -> ์ด ๋ฐ๋๋ ์ฑ๋ฆฝํ์ง ์์๋ ๋จ (FK ๋ง๊ณ ๋ค๋ฅธ๊ฒ๋ PK ์ฐธ์กฐํ ์ ์์ : ์ฐธ์กฐ๋ฌด๊ฒฐ์ฑ?) // ์ฐธ์กฐ๋์์ ์ปฌ๋ผ์ด ๊ทธ ํ ์ด๋ธ์ PK ์ฌ์ผ FK๊ฐ ๋ ์ ์์. //๊ต์ฌ 1์ฅ 12์ชฝ ๊ต์ํ ์ด๋ธ, ํ๊ณผํ ์ด๋ธ… ๊ต์ํ ์ด๋ธ์ dept_name ์ปฌ๋ผ์ด ์ธ๋ํค๊ฐ ๋์ด์ ํ๊ณผํ ์ด๋ธ์ dept_name ์ปฌ๋ผ์ ์ฐธ์กฐํ๊ณ ์์ = ๊ต์ํ ์ด๋ธ์ dept_name ์ปฌ๋ผ์ ๊ฐ์ด ํ๊ณผํ ์ด๋ธ์์ ๋ฐ๋์ ์ฐพ์ ์ ์์ด์ผ ํจ section ํ ์ด๋ธ์์ <building, room number>์ ํฉ์ฑํค๋ก์ ์ธ๋ํค์. -> classroom ํ ์ด๋ธ์, <building, room number> ํฉ์ฑํค๋ก์ PK์ธ ๊ฒ์ ์ฐธ์กฐํจ --> PK๊ฐ ๋ถ๋ถ์ผ๋ก ์ธ๋ํค๋ก ๋์ํ ์ ์์. ๊ฐ๊ฐ ๋ฐ๋ก ๊ฐ๋ผ์ ธ ๋ค๋ฅธ PK๋ฅผ ๊ฐ๋ฆฌํฌ ์ ์๋ค๋ ๋ป -> takes ํ ์ด๋ธ์์ <ID>, <๋๋จธ์ง> ๊ฐ ๊ฐ๊ฐ ์ธ๋ํค๋ก ๋์ํจ. PK๊ฐ ๊ฐ๋ผ์ง --> FK์ PK์ ์ปฌ๋ผ ๋ช ์ ๋ค๋ฅผ ์ ์์ -> ๋์ ์ด๋ฆ์ ๋ค๋ฅด๊ฒ ํ๋ ๊ฒ ์ค์ํ์์ ๋ ์ ์ ํ ํํ์ผ ์๋ ์์ (์คํค๋ง ๊ฐ๋ ์ฑ) -> ๊ทธ๋ฌ๋ ์์ฐ์กฐ์ธ ๊ตฌ๋ฌธ์์๋ FK์ PK์ ์ปฌ๋ผ ์ด๋ฆ์ด ๊ฐ์์ผ ํจ --> ์ฐธ์กฐํ๋ ๋ฆด๋ ์ด์ ๊ณผ ํผ์ฐธ์กฐ ๋ฆด๋ ์ด์ ์ ๋์ผํ ๋ฆด๋ ์ด์ ์ผ ์๋ ์์ -> PK, FK์ด๋ฆ ๋ค๋ฅผ ์ ๋ฐ์ ์๋ค --> PK์ด๋ฉด์ ๋์์ FK์ผ ์ ์์ --> ํ๋ณดํค 2๊ฐ์ธ ๊ฒฝ์ฐ (ex. ํ๋ฒ๋ ๊ฐ๋ฅ, ์ฃผ๋ฏผ๋ฒํธ๋ ๊ฐ๋ฅ) PK๋ฅผ ํ๋ ์ ํํด์ผ ํ๋๋ฐ, ๋ค๋ฅธ ๋ฆด๋ ์ด์ ์ FK๊ฐ ํน์ ์ปฌ๋ผ์ ์ฐธ์กฐ์ค์ด๋ผ๋ฉด ๊ทธ๊ฑด ๋ฌด์กฐ๊ฑด PK์ฌ์ผ ํจ์ ๊ณ ๋ คํ๊ธฐ --> ๋ฆด๋ ์ด์ ์ ํํํ ํ ์ด๋ธ à ๊ทธ ์ ์๋ณ์๋ค ๊ฐ์ฒด์ ๋ํ ์ ๋ณด๋ฅผ ์ ์ฅํ ํ ์ด๋ธ์ ์ฐธ์กฐํ๊ฒ -> ์) works( employee, company ์ ๊ฐ์ฒด์ ์๋ณ์๋ฅผ ์ง์ง๊ธฐํด ๊ด๊ณ๋ฅผ ํํํ ํ ์ด๋ธ ) --> ํด๋น ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ์ค์ ํ๊ธฐ --> takes ํ ์ด๋ธ -> (ํ๋ฒ, ๊ณผ๋ชฉ๋ฒํธ) ํฉ์ฑํด์ PK์. ๊ฐ๊ฐ์ด ๋ค๋ฅธ PK๋ฅผ ๊ฐ๋ฆฌํค๋ FK์ผ ์ ์์ -> ๋ฐ๋๋ฐฉํฅ์ผ๋ก ์ฐธ์กฐ๋๋ฉด (=ํฉ์ฑํค๊ฐ PK์ธ ํ ์ด๋ธ์ ์ฐธ์กฐํ๋ค๋ฉด) ํผ์ฐธ์กฐ์ปฌ๋ผ์ด ๊ทธ ํ ์ด๋ธ์ PK๊ฐ ์๋... ํผ์์ PK๊ฐ ๋์ง ๋ชปํ๊ณ , ์๋ฏธ์ ์๋ง์์๋ * composite key (ํฉ์ฑํค) : n๊ฐ์ ์ปฌ๋ผ์ด ๋ชจ์ฌ ํ๋์ ํค๋ฅผ ๊ตฌ์ฑ |
'๋ฐ์ดํฐ๋ฒ ์ด์ค์ค๊ณ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [๋ฐ์ดํฐ๋ฒ ์ด์ค์ค๊ณ] 2-4 Select, Project (0) | 2024.11.13 |
|---|---|
| [๋ฐ์ดํฐ๋ฒ ์ด์ค์ค๊ณ] 2-3 ๊ด๊ณ๋์ ๊ฐ๋ (0) | 2024.11.12 |
| [๋ฐ์ดํฐ๋ฒ ์ด์ค์ค๊ณ] 2-1 attribute, ์คํค๋ง (0) | 2024.11.10 |
| [๋ฐ์ดํฐ๋ฒ ์ด์ค์ค๊ณ] 1-3 SQL, application programs ๊ฐ๋ (2) | 2024.11.09 |
| [๋ฐ์ดํฐ๋ฒ ์ด์ค์ค๊ณ] 1-2 DDL, DML (0) | 2024.11.08 |