2017-09-30 1 views
0

데이터베이스의 관계의 카디널리티를 제한하는 방법이 있습니까? 어떤 친구들과 나 자신은 느슨한 메시지에 대한 반응을 추가하는 일에 열중하고있었습니다. 이제는 x 메시지 만 주어진 메시지에 적용 할 수있는 x 반응을 어떻게 적용 할 것인지 궁금합니다.주어진 엔티티에 대한 관계 수 제한

나는 이것이 데이터베이스로의 왕복을 방지하기 위해 저장 프로 시저가 될 수있는 유일한 방법으로 구현되어 어떻게 될지 궁금합니다. 일반적인 방법이 사용되고 있습니까?

답변

0

외래 키 관계가있는 것 같습니다. 잠재적으로 많은 행이 주어진 키를 가리킬 수 있습니다.

각 행에 판별 열 (column)이 있어야합니다 (예 : 신뢰 점수, 난수 또는 타임 스탬프를 포함 할 수있다. 그런 다음 행을 삭제하는 보고서를 실행하여 이전의 덜 흥미로운 행을 삭제하고 지정된 예산 인 x에 넣으십시오. 이를 구현하는 데 더 비싼 방법은 INSERT 트리거 중에 하나의 고대 행을 제거하는 것입니다.

퇴거 정책에 대해별로 신경 쓰지 않는다고 가정하면 x == 2입니다. 그런 다음 (reaction_id, parity)에 고유 색인을 작성하고 반응 패리티 비트 (sha1() 다이제스트의 낮은 순서)를 계산하고 각 INSERT에 대해이를 사용하십시오. 테이블에 두 개의 반응이 나타나면 향후 모든 INSERT가 충돌 할 것이 확실하므로 UPSERT (업데이트/삽입)는 원하는대로 이전 반응을 자동으로 제거합니다.

관련 문제