공부 못하는 애들 특징인데 나는 아무튼 간에 공부하다
의문 생기면 다른 길로 자꾸 샌다
간단히 말하면 “데이터의 무결성(정확성, 일관성)을 보장하기 위해서”다.
-- users 테이블 (PK 없이 그냥 일반 컬럼만)
| user_id | name |
|---------|---------|
| 1 | 철수 |
| 1 | 철수 |
| NULL | 영희 |
→ 즉, 데이터가 망가져도 아무도 못 막음
💡 없으면?
→ 철수 두 명 생김, 누구한테 포인트 줘야 할지 헷갈림
💡 없으면?
→ 존재하지도 않는 유저한테 주문 기록 생김
→ 철수 탈퇴했는데 주문은 살아있음 (고아 데이터 발생)

머고... 어딜 가야 하는 거고...
일반 컬럼은 자유롭지만, 제약이 없어서 실수가 데이터베이스 전체를 망가뜨릴 수 있음.
PK와 FK는 귀찮아 보여도, 실수를 막고 데이터 신뢰성을 지키는 안전장치다.

결국 쓰는 이유는 실무에서는 대규모 데이터가 다 연결되어 있기 때문!!
PK, FK 안 걸고 그냥 쿼리 짜는 건 폭탄 돌리기 💣
그래서 DB 설계할 때 가장 먼저 "PK는 뭐로 할까?", "FK 관계는 어떻게 설정할까?"부터 고민함!!!!