2 테이블 간의 일대 다 관계를 설정하는 방법을 찾고 있습니다. 테이블 구조는 아래에 설명되어 있지만 문제를 전혀 상관없는 모든 것을 남기려고했습니다.SQL과 일대일 관계 정의
표 objects
에는 uuid
이라는 열이 있습니다.
표 contents
에는 content
, object_uuid
및 timestamp
이라는 3 개의 열이 있습니다.
기본적인 아이디어는 objects
에 행을 삽입하고 데이터베이스에서 새 uuid
을 얻는 것입니다. 이 uuid
은 contents
의 모든 행에 대해 내용을 개체와 연결하는 데 사용됩니다.
objects
의 어떤 행이없이 존재하지- 이상 a
row
incontents
objects
에서
contents
참조 행의 각 행 (외래 키가해야 할이)
이러한 제약 조건은 트랜잭션 커밋시 적용되어야합니다.
objects
테이블의 행을 쓸 때 contents
에 행이 없기 때문에 일반적인 트리거가 도움이되지 않을 수 있습니다. Postgres는 트랜잭션이 끝날 때까지 지연 될 수있는 constraint triggers
이라고합니다. 그것들을 사용할 수도 있지만 일상적인 사용을 목적으로하지 않는 일종의 내부 구조 인 것처럼 보입니다.
아이디어 또는 솔루션은 표준 SQL (선호) 또는 Postgres (버전은 중요하지 않음)와 함께 작동해야합니다. 모든 입력에 감사드립니다.
"내용"의 기본 키는 {object_uuid, the_timestamp}입니까? BTW * 왜 * 별도의 "객체"테이블을 원하십니까? IMHO는 content-> object_uuid의 도메인으로 만 제공됩니다. BTW2 : 당신이 원하는 제약 조건을 규칙으로 구현할 수 있습니까? (허용되는 이유는 postgres에 특정한 것입니까?) 그러나 새로운 행 삽입시 "content"값을 제공하는 데 여전히 문제가 있습니다. (나는 now()가 the_timestamp의 초기화 자로 충분하다고 생각한다.) – wildplasser
@wildplasser 여러 테이블을 사용하는 이유는 여러 개의 내용이있을 수 있고 실제 테이블에이 질문의 예제보다 많은 내용이 포함되어 있기 때문이다. 아래에 요약 된 솔루션은 문제를 해결했습니다. 시간 내 줘서 고마워. –