본문 바로가기
Database/MSSQL

MSSQL 기본 키(Primary Key)와 외래 키(Foreign Key) 설정 방법

by yazasus 2025. 5. 17.
728x90

MSSQL 기본 키와 외래 키 설정 방법 – 관계형 설계의 핵심 정리

기본 키(Primary Key)외래 키(Foreign Key)는 관계형 데이터베이스 설계의 핵심 요소입니다.
데이터 무결성을 보장하고, 테이블 간의 연결 관계를 정의하는 데 반드시 필요한 기능입니다.

---

1. 기본 키(Primary Key) 설정

▶ CREATE TABLE 시 설정


CREATE TABLE Users (
    UserId INT PRIMARY KEY,
    UserName NVARCHAR(100) NOT NULL
);

▶ 제약조건 이름 지정 (CONSTRAINT)


CREATE TABLE Users (
    UserId INT,
    UserName NVARCHAR(100),
    CONSTRAINT PK_Users PRIMARY KEY (UserId)
);

▶ 복합 기본 키 (2개 이상의 열 조합)


CREATE TABLE OrderItems (
    OrderId INT,
    ProductId INT,
    Quantity INT,
    CONSTRAINT PK_OrderItems PRIMARY KEY (OrderId, ProductId)
);

▶ ALTER TABLE로 기본 키 추가


ALTER TABLE Users
ADD CONSTRAINT PK_Users PRIMARY KEY (UserId);

---

2. 외래 키(Foreign Key) 설정

외래 키는 한 테이블이 다른 테이블의 기본 키를 참조하도록 만드는 제약조건입니다.

▶ CREATE TABLE 시 외래 키 설정


CREATE TABLE Orders (
    OrderId INT PRIMARY KEY,
    UserId INT,
    OrderDate DATETIME,
    CONSTRAINT FK_Orders_Users FOREIGN KEY (UserId)
    REFERENCES Users(UserId)
);

▶ ALTER TABLE로 외래 키 추가


ALTER TABLE Orders
ADD CONSTRAINT FK_Orders_Users
FOREIGN KEY (UserId) REFERENCES Users(UserId);

▶ 외래 키에 ON DELETE / ON UPDATE 옵션 지정


ALTER TABLE Orders
ADD CONSTRAINT FK_Orders_Users
FOREIGN KEY (UserId) REFERENCES Users(UserId)
ON DELETE CASCADE
ON UPDATE CASCADE;
  • ON DELETE CASCADE: 부모 데이터 삭제 시 자식 데이터도 자동 삭제
  • ON UPDATE CASCADE: 부모 키 변경 시 자식 키도 자동 반영

---

3. 제약조건 삭제

▶ 기본 키 삭제


ALTER TABLE Users
DROP CONSTRAINT PK_Users;

▶ 외래 키 삭제


ALTER TABLE Orders
DROP CONSTRAINT FK_Orders_Users;

▶ 제약조건 이름 확인 쿼리


SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME = 'Orders';

---

4. 실무 팁 💡

  • 기본 키와 외래 키에는 명확한 이름(PK_, FK_ 접두어)을 지정해두는 것이 유지보수에 유리합니다.
  • 외래 키는 반드시 참조 대상 테이블에 해당 키 값이 존재해야만 입력이 허용됩니다.
  • 대량 삭제 시 ON DELETE CASCADE 옵션이 적용된 외래 키가 있으면 예기치 않게 자식 데이터까지 삭제될 수 있으므로 주의하세요.

---

마무리

기본 키는 데이터의 고유성을 보장하고, 외래 키는 테이블 간의 관계를 강제합니다.
이 둘을 명확하게 설계하면 데이터 무결성과 연결 구조를 안정적으로 유지할 수 있습니다.
SQL Server에서 T-SQL을 통해 키 제약조건을 유연하게 설정하는 방법을 익혀두면 실무에서도 탄탄한 데이터베이스 모델을 구축할 수 있습니다.

728x90