굳2 제약 없는 일반 칼럼을 두고 primary/foreign key를 사용하는 이유

아뇨 민균데요·2025년 5월 21일
0

공부 못하는 애들 특징인데 나는 아무튼 간에 공부하다
의문 생기면 다른 길로 자꾸 샌다

우린 지금까지 Join이고 sub query고 그냥 일반칼럼에서 다 해결했다

근데 pk,fk를 배우니 혼란스러워졌다.

왜 그냥 일반 컬럼으로 다 때려박지 않고 굳이 PK, FK 같은 제약을 거냐?

간단히 말하면 “데이터의 무결성(정확성, 일관성)을 보장하기 위해서”다.


📌 일반 컬럼만 쓰면 무슨 일이 생기냐?

예시:

-- users 테이블 (PK 없이 그냥 일반 컬럼만)
| user_id | name    |
|---------|---------|
| 1       | 철수     |
| 1       | 철수     |
| NULL    | 영희     |
  • ID가 중복돼도 막을 수 없음
  • 심지어 NULL도 들어감
  • 누가 누구인지 구별 안 됨
  • 실수로 영희 주문을 철수에게 연결할 수도 있음

→ 즉, 데이터가 망가져도 아무도 못 막음


✅ 그래서 왜 PK, FK를 쓰냐?

🎯 1. PK (Primary Key): 데이터의 정체성 보장

  • 각 행을 고유하게 구분
  • 중복❌ / NULL❌
  • 예: 주민등록번호, 학번, 유저 ID

💡 없으면?
→ 철수 두 명 생김, 누구한테 포인트 줘야 할지 헷갈림


🔗 2. FK (Foreign Key): 테이블 간 관계 유지

  • 부모 테이블(PK) 없으면 자식 테이블(FK)도 못 생김
  • 참조 무결성 보장

💡 없으면?
→ 존재하지도 않는 유저한테 주문 기록 생김
→ 철수 탈퇴했는데 주문은 살아있음 (고아 데이터 발생)

머고... 어딜 가야 하는 거고...

🧠 한 줄 정리

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


결국 쓰는 이유는 실무에서는 대규모 데이터가 다 연결되어 있기 때문!!

PK, FK 안 걸고 그냥 쿼리 짜는 건 폭탄 돌리기 💣

그래서 DB 설계할 때 가장 먼저 "PK는 뭐로 할까?", "FK 관계는 어떻게 설정할까?"부터 고민함!!!!


profile
this man을 꿈 속에서 보신 적이 있으신가요?

0개의 댓글