DynamoDB는 외래 키를 지원하나요?
아니요. DynamoDB에는 외래 키, 참조 무결성 제약, 계단식 삭제가 없습니다 — NoSQL 데이터베이스로서 항목이나 테이블 간의 관계를 절대 강제하지 않습니다. 대신 관계를 직접 모델링합니다: 관련 데이터를 하나의 항목으로 비정규화하거나, 단일 테이블 설계로 관련 항목을 공유 파티션 키 아래에 함께 배치합니다.
외래 키가 없는 이유
외래 키는 조인을 지원하고 정규화된 테이블 간의 무결성을 강제하기 위해 존재합니다. DynamoDB는 의도적으로 JOIN 연산자를 생략하므로(AWS는 대신 비정규화를 권장합니다), 외래 키 제약은 쿼리 모델이 결코 활용하지 않는 관계를 단속하게 됩니다. 다른 항목의 키를 속성으로 _저장_하는 것을 막는 것은 없습니다 — DynamoDB가 이를 검증하거나 계단식 적용하지 않을 뿐입니다. 강제된 참조 무결성이 타협 불가라면 DynamoDB vs PostgreSQL이 두 모델의 경계를 그립니다.
관계를 대신 모델링하는 방법
- 임베드 — 작고 경계가 있는 하위 데이터를 부모 항목 내부에 리스트나 맵으로 둡니다.
- 함께 배치 — 부모와 자식이 서로 다른 정렬 키로 파티션 키를 공유해 하나의
Query가 전체 관계를 반환하도록 합니다. 이것이 단일 테이블 설계의 핵심입니다. - 복제 — 각 접근 패턴이 필요로 하는 필드를 필요한 항목에 복사하고, 단일 요청 읽기를 위해 쓰기 시점의 유지 관리를 감수합니다.
일대다 및 다대다 가이드가 각 형태를 깊이 있게 다룹니다.
중요할 때 무결성 강제하기
제약에 의존했을 법한 경우를 위해 DynamoDB는 구성 요소를 제공합니다: 조건 표현식은 쓰이는 항목의 상태를 기준으로 쓰기를 보호하고, 트랜잭션의 ConditionCheck는 동일한 전부-아니면-전무 작업 내에서 다른 항목(예: 부모)이 존재하는지 확인할 수 있습니다. 계단식 삭제는 명시적인 애플리케이션 로직이나 Streams 기반 정리로 이루어집니다.
더 알아보기
단일 테이블 설계로 시작하고, 보호 조건을 표현식 빌더에서 구성하며, 항목 컬렉션 — 부모와 자식을 나란히 — 을 한 화면에서 보려면 DynoTable을 다운로드하세요.
참고 자료
- What is Amazon DynamoDB? — Amazon DynamoDB Developer Guide
- Amazon DynamoDB Transactions: How it works — Amazon DynamoDB Developer Guide
- Best practices for NoSQL design — Amazon DynamoDB Developer Guide
Last verified 2026-07-13 against the official AWS documentation linked above.