데이터베이스에 대한 체크 박스 목록의 변경 사항을 저장하는 최선의 방법을 찾고 있습니다. 같은 좀 데이터베이스 항목을 기반으로 중 선택 또는 선택 해제하는 체크 박스의 목록을DB에 대한 체크 박스 저장 변경
: 여기 내 설정이다
Animals I like:
0 Cats
X Dogs
0 Birds
X Elefants
이제 사용자는 완전히 그/그녀의 마음을 변경하고 선택할 수 있습니다 Birds
을 선택하고 Dogs
을 선택 취소하고이 변경 사항을 가능한 한 효율적으로 데이터베이스에 저장하려고합니다.
db가 구조화 된 방식으로 user_id가있는 user 테이블과 animal_id가있는 animal 테이블이 있습니다. "likes"는 피봇 테이블에서 추적됩니다 (다 대다 관계이기 때문에). 여기
내가 생각 한 몇 가지 방법,하지만 난 다른/더/더 효율적 것들에 관심이 :1) 저장에이 사용자에 대한 피벗 테이블의 모든 항목을 삭제 만 입력 확인 된 것들.
이렇게하면 앞/뒤 옵션을 많이 비교할 필요가 없다는 장점이 있습니다. 단점은 변경되지 않은 항목을 삭제한다는 것입니다 (위의 예에서 elefants). 만약 내가 elefant와 같은 생성 타임 스탬프를 첨부하면, 그 선택을 변경하지 않아도 매번 변경 될 것입니다.
2) 저장시, db에 쿼리하여 모든 원본 좋아하는 것의 목록을 얻습니다. 나는이 목록을 새로운 사람들에게 새로운 것과 비교한다. 새 목록에없는 것과 같은 원본을 만날 때마다 제거합니다. 원래 목록에없는 것과 같은 새로운 것을 발견하면 추가합니다.
이것은 데이터베이스의 변경 사항 만 변경하는 장점이 있지만 엄청난 양의 쿼리처럼 보입니다. 동물 목록이 길고 많은 변경이 이루어지면 루핑으로 인해 많은 db 거래가 발생할 수 있습니다.
이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 제 말은 공통적 인 문제 여야하며 여기서 바퀴를 재발견하고 싶지는 않습니다.
나는 Elefants * (무엇인지 :-)). 접근법 1에 찬성표를 던졌습니다. –