Bibi's DevLog ๐ค๐
[DB] ํค, ๊ธฐ๋ณธ ํค(Primary Key, PK)์ ์ธ๋ ํค(Foreign Key, FK) ๋ณธ๋ฌธ
[DB] ํค, ๊ธฐ๋ณธ ํค(Primary Key, PK)์ ์ธ๋ ํค(Foreign Key, FK)
๋น๋น bibi 2021. 4. 30. 19:54Key
์ํผํค super key
: ํด๋น ๊ฐ์ฒด๋ฅผ ๊ณ ์ ํ๊ฒ ์๋ณํ ์ ์๋ attribute์ ''์งํฉ''.
- [์ฃผ๋ฏผ๋ฒํธ ์์๋ฆฌ, ์ฃผ๋ฏผ๋ฒํธ ๋ท์๋ฆฌ, ์ด๋ฆ]
ํ๋ณดํค candidate key
: ์ํผํค์ ๋ถ๋ถ์งํฉ. ์ํผํค์์ ๊ตฐ๋๋๊ธฐ๋ฅผ ์ ๊ฑฐํ ๊ฒ.
(์ํ์ ์ ์) ''๋ชจ๋ ๋ค๋ฅธ attribute๋ค์ ํจ์์ ์ผ๋ก ๊ฒฐ์ ํ๋ attribute''
์ํผํค์ ๊ตฌ์ฑ attribute ์ค ํ๋๋ผ๋ ์ ๊ฑฐํ๋ฉด ์ํผํค๊ฐ ์๋ ๊ฒ.
ํ๋ณดํค ์ค์ ํ๋๊ฐ PK๊ฐ ๋ ์ ์๋ค.
[์ฃผ๋ฏผ๋ฒํธ ์์๋ฆฌ, ์ฃผ๋ฏผ๋ฒํธ ๋ท์๋ฆฌ, ์ด๋ฆ]์์ [์ฃผ๋ฏผ๋ฒํธ ์์๋ฆฌ, ์ฃผ๋ฏผ๋ฒํธ ๋ท์๋ฆฌ]๊ฐ ํ๋ณดํค์ ํด๋นํ๋ค.
๊ธฐ๋ณธํค primary key
: ์ฌ๋ฌ ํ๋ณดํค ์ค ๋ํ์ ์ธ ํค ํ๋๋ฅผ ์ ํํด ํ ์ด๋ธ์ ๊ธฐ๋ณธ ํค๋ก ๋ง๋ ๋ค.
์ธ๊ณต ํค vs ์์ฐ ํค
์ธ๊ณต ํค : ํ์ค์ ์กด์ฌํ์ง ์๋ ์์ฑ์ผ๋ก ๋ง๋ ํค
long id
์์ฐ ํค natural key : ํ์ค์ ์กด์ฌํ๋ ์์ฑ์ผ๋ก ๋ง๋ ํค
- ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ
๊ธฐ๋ณธํค์ ์ธ๋ํค
PK
: primary key. (=๊ธฐ๋ณธํค) ์ํฐํฐ๋ฅผ ์๋ณํ๋ ๋ํํค. uniqueํ๋ฉฐ null์ผ ์ ์๋ค
FK
: foreign key. ๋ค๋ฅธ ํ
์ด๋ธ์ PK
๋ฅผ ์ฐธ์กฐํ๋ ํค. ์ฐธ์กฐํ๋ PK
์ ๋์ผํ domain์ ๊ฐ๋๋ค.
์ธ๋ํค Foreign Key
์ฐธ๊ณ : ์ธ๋ํค๋?, MySQL Foreign Key
- ์ค๋ณต ๋ฐ์ดํฐ ์ ๊ฑฐ๋ฅผ ์ํด ํ ์ด๋ธ์ ๋ถ๋ฆฌํ ๋, ๋ฐ๋์ ํ์ํ ๊ฐ๋
- 'ํ ํ ์ด๋ธ์ ์กด์ฌํ๋ ๋ค๋ฅธ ํ ์ด๋ธ์ ์ ๋ณด'์ด๊ธฐ ๋๋ฌธ์ ์ธ๋ํค๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์ธ๋ํค์ ์ญํ
- ๋ ํ ์ด๋ธ์ ์ฐ๊ฒฐํด ์ฃผ๋ ๋ค๋ฆฌ ์ญํ ์ ํ๋ค.
- ์ฐธ์กฐํ๋ ํ ์ด๋ธ์ ๋ฌด๊ฒฐ์ฑ์ ๋์ฌ ์ค๋ค (์ฐธ์กฐ๋ฌด๊ฒฐ์ฑ)
์ด๋ฒ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ dish
ํ
์ด๋ธ์์ category
์ id
๋ฅผ ์ฐธ์กฐํ๋ค. (์ธ๋ํค = category_id
)
MySQL์์ ์ธ๋ํค ์ ์ธ
์ dish
ํ
์ด๋ธ์ ์๋์ ๊ฐ์ด ์ ์ธ๋์๋ค.
create table dish (
id varchar(5) not null,
main_image varchar(100) not null,
...
stock int not null,
point int not null,
primary key (id),
foreign key (category_id) references category (id)
);
FOREIGN KEY (์ธ๋ํค์ด๋ฆ) REFERENCES (์ธ๋ํคํ
์ด๋ธ์ด๋ฆ) (๊ทธํ
์ด๋ธ์์์์ด๋ฆ)
'๐ฅ BE ๋ฐฑ์๋ > Database' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Codesquad] ์์ ์ ๋ฆฌ - ์คํ ์ด๋ ํ๋ก์์ stored procedure (0) | 2021.06.02 |
---|---|
[MySQL] function does not exist ์ค๋ฅ ๋ฐ์ ์ ํด๊ฒฐ๋ฒ / ์ค๋ณต๋๋ ๋ ์ง๊ฐ ์๋๋ก ๋ ์ง ์กฐํํ๊ธฐ (0) | 2021.05.28 |
[DB] 1:1, 1:N, N:M ๊ด๊ณ (0) | 2021.04.30 |
[MySQL] CRUD - INSERT, SELECT, UPDATE, DELETE / JOIN (0) | 2021.01.28 |
[MySQL] ํ ์ด๋ธ ์์ฑํ๊ธฐ (0) | 2021.01.28 |