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
'Database > MSSQL' 카테고리의 다른 글
| MSSQL 테이블 간 관계 설정과 조인(Join) 활용법 (0) | 2025.05.19 |
|---|---|
| MSSQL 인덱스(Index)의 종류와 생성 방법 (0) | 2025.05.18 |
| MSSQL DROP TABLE 제대로 사용하기 (0) | 2025.05.16 |
| MSSQL ALTER TABLE 완벽 가이드 (0) | 2025.05.15 |
| MSSQL CREATE TABLE 완전 정리 (0) | 2025.05.15 |