Foreign Key
FK
- 키 자체를 말함
- 컬럼의 값을 말할 수도 있고, FK 가 설정된 컬럼 자체를 일컫는 말일 수도 있다.
- 외래키는 참조 대상이 있다.
FK constraints
- constraints, 즉 제약 조건은 데이터 무결성을 강제한다.
- 데이터 무결성이란, 참조하고 있는 키가 반드시 참조 대상 컬럼에 있는 키들 중 하나를 참조를 한다는 뜻이다.
외래키 제약조건 없이 참조 구현
data class Restaurant(
val name: String,
val menus: List<String>,
val menusScore: List<Double>
)
data class Menu(
val name: String,
val restaurantName: String,
val menuScore: Double
)
메뉴 읽기 read
-
restaurantRepository.findByName()
호출 -
menuRepository.findByRestaurantName()
호출 - FK 를 사용안하고, RestaurantName이란 컬럼을 만든다
메뉴 생성 write
이벤트 소싱이란?
사례
일례로 모 커머스 플랫폼 서비스에서는 상품별 카테고리 분류와 카테고리 목록 관리가 모두 필요해서 카테고리 하나 추가하면 상품의 카테고리 분류 칼럼과 카테고리 목록 row가 모두 업데이트됐고 서로 조인할 수 있는 형태는 아니었습니다. 원문