2010-05-22 5 views
0

나는 작업중인 벼룩 시장 시스템을 가지고 있습니다.연결 테이블에서 다음 레코드를 찾아서 업데이트하는 방법

사람들은 사진을 분류 된 사진에 추가 할 수 있지만 분류 된 사진의 목록을 표시 할 때만 사진을 표시 할 수 있습니다.

이렇게하려면 "is_main"부울 필드가있는 분류 된 사진과 사진 사이에 연결 테이블이 있습니다. 누군가가 자신의 비밀 사진 중 하나를 삭제하면

, 내가 원하는에 :

1) See if there is more than that photo tied to the classified. 
2) If there is, update the next photo and set that "is_main" field to TRUE. 

그냥이 작업을 수행하는 가장 효율적인 방법을 찾기 위해 노력.

답변

0

제 생각에는 사진 테이블에 'is_main'플래그를 설정하지 말고 그 사진의 ID를 분류 된 레코드에 추가하십시오. 디스플레이 목적을 위해 '메인'사진을 찾는 것이 훨씬 빠릅니다 (이것은 종종 발생합니다).

사진 테이블에서 사진을 삭제할 때 분류 테이블에서 참조 된 사진인지 확인해야합니다. 그럴 경우 다음 사진을 선택할 수 있습니다 (예 : min (PhotoID) 또는 min (Created) 사용). 사진이 사진 테이블에 추가 될 때 날짜가 생성됩니다.

결론 : 사진의 _main 속성은 사진 테이블의 깃발이 아니라 구직 테이블의 FK입니다.

+0

답변 해 주셔서 감사합니다.이 변경 사항을 살펴 봅니다. 내 생각이 바뀌어 의심치 않습니다. 사진 테이블이 아닌 링크 테이블에 is_main 플래그가 설정되어 있습니다 사진 테이블은 사이트의 다른 것들에도 사용됩니다 – someoneinomaha

+0

@someoneinomaha : '현재'사진에 대한 정보 '속한'분류 된 사진이나 링크가 아닙니다. 당신의 솔루션은 더 많은 공간과 작업을 필요로합니다. 사진을 표시하는 데 더 많은 시간이 필요합니다. 왜냐하면 당신이 3 개의 테이블에 합류 할 것이기 때문입니다 : 분류 <-> link_table <-> 사진 ... 그러나 제 제안은 직접 링크를 허용합니다. – lexu

0

제 생각에는 데이터베이스에 이미지 이름을 약간 저장하는 것이 있습니다.
차라리 분류 된 ID라는 이름의 디렉토리를 만들고 해당 이미지를 거기에 저장하십시오.

그래서 사용자가 사진을 삭제하면 사진을 삭제하면됩니다.

하나의 사진을 기본 사진으로 유지하려면 main.jpg라고합니다.
삭제 될 경우 디렉토리 내용을 읽고 어떤 사진이 먼저 왔는지 이름을 바꿉니다.
그게 전부 야.

관련 문제