나는 friends(friendship_id, fid1, fid2, ENUM('pending', 'accepted', 'ignored')
과 같은 테이블을 가지고 있습니다. 사용자가 다른 사람의 친구 요청을 무시하면 "나는 무시당했습니다!"라는 메시지가 나타나지 않도록하고 싶지만 데이터를 기록하기를 원합니다. 이것에 접근하는 방법에 대한 제안?친구가 PHP/MySQL 앱에서 누군가를 무시할 때 어떻게 처리해야합니까?
답변
확실히해야 할 첫 번째 일은 You've been ignored!
메시지를 표시하는 코드를 구현하지 않는 것입니다. 이렇게하면 대부분의 문제가 해결됩니다.
하지만 조심해야합니다. 더 미묘한 문제가 있습니다. 사용자가 무시를 클릭하지 않은 것처럼 모든면에서 보낸 사람의 관점에서 시스템이 작동해야합니다. 즉, 보낸 사람이 두 번째 요청을 발행하고 일반적으로 시스템에 "이미이 사용자에게 요청을 보냈습니다"라고 표시되면받는 사람이 첫 번째 요청을 무시한 후에도이 메시지가 계속 표시되어야합니다. 비공개로 예정된 이벤트에 대한 응답으로 메시지를 변경하여 정보가 유출되지 않도록주의해야합니다. 의견에
응답 :
당신이 그것을 심지어 처음에 "당신은 이미이 사용자에 요청을 보낸"메시지를 보내지하는 것이 가장 좋습니다 생각하십니까?
나는 이것이이 질문의 범위를 벗어 났으며 그 자체로 긴 토론이므로 여기서는 다루지 않을 것이라고 생각합니다. 답은 애플리케이션 구현 방식에 따라 다릅니다. 짧은 대답은 : 응용 프로그램이 사용자를 도우며 직관적이어야하므로 메시지가 도움을 줄 수 있어야합니다.
응답이없는 경우 요청이 1 주 후에 자동으로 만료됩니다. 현재 요청이 만료되면 사용자가 새 요청을하도록 허용 할 수 있습니다. 요청 무시는 해당 요청 또는 해당 사용자의 모든 요청을 무시한다는 것을 고려해야합니다.
나는 누가 내 현재 스키마에서 누가 무시하는지 구분하는 방법을 고려하지 않았습니다.
우정 요청은 입니다. 당신은 보낸 사람과받는 사람이 있습니다. 반면 우정은 보통 (항상 그런 것은 아니지만) 간접적 인 관계로 간주됩니다. 우정 요청에는 일반적으로 "안녕하세요, 저를 기억해주십시오. 지난 밤에 술집에서 만났습니다!"라는 메시지가 있습니다. 반면에 확립 된 우정에는 일반적으로 관련된 우정이 없습니다. 따라서 이러한 서로 다른 유형의 관계를 데이터베이스의 다른 테이블에 저장하는 것이 좋습니다.
마크, 기본적으로 내가 사용하고있는 미묘한 종류입니다. 명확하게 의사 소통을 할 수 없었습니다. "이미이 사용자에게 요청을 보냈습니다"메시지를 보내지 않는 것이 가장 좋다고 생각합니까 아니면 메시지가 무시 된 후에도 메시지가 계속 표시되어야한다고 생각하십니까? –
카슨 마이어스 (Carson Myers)가 말한 것에 대해 실제로 고려해보고 싶습니다. 현재 스키마에서 누가 누구를 무시하는지 구분하는 방법을 실제로 고려하지 않았습니다. –
누가 무시했는지 구분하는 방법은 무엇입니까? 만약 한 친구가 다른 친구를 무시한다면, 나는 ENUM
이 '무시'로 바뀌고, 무시당한 친구도 무시한 친구가 될 것이라고 생각합니다. 당신은 당신을 무시한 것처럼 보이기 때문에 누가 당신을 무시했는지 말할 수 있습니다.
ignore(ignorer, ignoree)
과 같은 중간 테이블을 넣는 것이 더 좋으며, 열은 그냥 친구 ID입니다. 그런 식으로 메시지가 업데이트 될 때마다 ... 한 친구에게 전송되는이 앱은 대상 친구가 원본 친구를 무시하고 있는지 여부를 먼저 확인합니다.
저는 이것을 최근에 응용 프로그램에서 구현했습니다. 사실 데이터베이스에 두 개의 행이 있습니다. 내 열은 sourceUserId 및 destUserId입니다.누군가 (사람 A)가 다른 사람 (사람 B)에게 요청을 보내면 A의 UserId가 sourceUserId이고 B의 UserId가 destUserId 인 행이 자동으로 삽입됩니다. 그들이 다시 보내면 행이 이미 있음을 알게됩니다. B가 A를 승인하도록하려면 B의 UserId를 sourceUserId로, A의 UserId를 destUserId로 삽입하십시오.
내 애플리케이션에도 알림 표가 있으므로 다른 사용자 (예 : A의 UserId = sourceUserId 및 B의 UserId = destUserId가 삽입 된 행)를 추가 할 때마다 알림이 대상으로 전송됩니다.
두 사람이 친구인지 확인하려면 단순히 상호 행이 있는지 확인하십시오.
예 : 사용자 A가 그/그녀의 요청이 무시되었다는 것을 모르는 : 사용자 B에 사용자 A 보낸 친구 요청, 사용자 B가이 요청을 무시했다. 사용자 A에게이 요청 상태는 '대기 중'으로 표시되어야합니다. 같은 2 사용자의
: 비록 사용자 B 지워야합니다 사용자 A. 이러한 행동과 친구가되기 위해 시도 할 수없는 A의 요청은 반드시 해당 사용자 B를 수반하지 않는 사용자가 이전 사용자의 '무시'무시 A의 요청 (일어난 적이없는 것처럼).
테이블 스키마가 괜찮습니다. 가능한 모든 시나리오의 언어와 논리를 생각하면됩니다.
- 1. Asp.net MVC 앱에서 권한 부여/인증을 어떻게 처리해야합니까?
- 2. 어떻게 처리해야합니까?
- 3. 사용자가 삭제 될 때 항목을 어떻게 처리해야합니까?
- 4. 컬렉션을 처리 할 때 예외는 어떻게 처리해야합니까?
- 5. 자바 스크립트와 PHPMySQL
- 6. 일회용 물건을 어떻게 처리해야합니까?
- 7. javax.persistence.OptimisticLockException을 어떻게 처리해야합니까?
- 8. 들소 : 갈등을 어떻게 처리해야합니까?
- 9. 소프트웨어 패키지는 어떻게 처리해야합니까?
- 10. Java에서 멀티 스레딩을 어떻게 처리해야합니까?
- 11. XML 내부의 URL을 어떻게 처리해야합니까?
- 12. libSystem.B.dylib에서 fsync 예외를 어떻게 처리해야합니까?
- 13. 애플리케이션에서 URL 라우팅을 어떻게 처리해야합니까?
- 14. 어떻게 PHP와 아파치에서 이미지로드를 처리해야합니까?
- 15. D에서 C 문자열을 어떻게 처리해야합니까?
- 16. 익명 사용자 입력을 어떻게 처리해야합니까?
- 17. .NET에서 소켓 분리를 어떻게 처리해야합니까?
- 18. PHP에서 쿼리 동기화를 어떻게 처리해야합니까?
- 19. 예전 SVN 브랜치를 어떻게 처리해야합니까?
- 20. 코드에서 celeryd_multi 작업을 어떻게 처리해야합니까?
- 21. 대기열 wcf 메시지는 어떻게 처리해야합니까?
- 22. LPCWSTR은 무엇을 의미하며 어떻게 처리해야합니까?
- 23. C/Windows 경로를 어떻게 처리해야합니까?
- 24. 불완전한 패킷 버퍼는 어떻게 처리해야합니까?
- 25. 누군가를 대신하여 전복에 전념
- 26. 누군가를 특정 도메인에 잠그기
- 27. iPhone에서 내 애플리케이션이 활성화되어있을 때 수신 전화를 어떻게 처리해야합니까?
- 28. 오프라인으로 Rspec을 실행할 때 온라인 종속성을 어떻게 처리해야합니까?
- 29. 변수를 선언 할 때 부목을 어떻게 무시할 수 있습니까?
- 30. oAuth에서 누군가를 고유하게 식별하는 방법
.. 필드를 무시하도록 설정했지만 사용자를 표시하지 않습니다. – Fosco
friends (... ENUM (...) parse error –