2011-10-04 2 views
1

데모 사이트 (PostgresSql을 사용하여 PHP에서 샘플 데이터로 완료)를 작성해야하는 것은 이번이 처음입니다. 현재 우리는 사용자가 로그인하여 웹 사이트에서 사용할 수있는 작업을 허용하고 있습니다. 일단 사용자가 작업을 완료하면 사용자가 만든 데이터를 제거해야합니다.데모 사이트에서 사용자가 추가 한 데이터를 제거하는 것이 가장 좋습니다.

하지만 문제는 무엇입니까? 사용자가 데모 도메인에서 만든 DB에 데이터를 삽입하면 다른 사용자가 다른 세션에 데이터를 삽입하거나 삭제할 수 있습니다. 도메인 데이터를 삭제하면 다른 사용자를 표시하고 싶지 않습니다. 작업 (삽입, 삭제 등)은 다른 사람과 충돌합니다. 충돌은 없습니다. 어떻게해야합니까?

답변

2

그런 식으로 할 수있는 몇 가지 방법이 있습니다.

  1. 세션을 사용하십시오. 이것이 가능한지 모르겠지만 세션의 모의 객체에 모든 데이터를 놓을 수 있다면 괜찮을 것입니다.
  2. 실제로 1b 일 수 있습니다. 쿠키를 사용하여 SESSION과 동일한 작업을 수행 할 수는 있지만 더 귀찮습니다.
  3. 새로운 사용자가 사인온 할 때마다 모의 표를 생성합니다. — 해당 사용자의 UID를 접두어로하여 일련의 고유 한 테이블을 만듭니다. 예. 스키마 크립을 생성하지만 공간을 확보 할 수있는 쉬운 방법을 알 수 있습니다.
  4. 데이터를 "태그 지정"하여 DB에 저장하십시오. 이것은 DB에 일시적으로 표시되는 사용자 데이터의 일부에 추가 데이터를 추가하는 것을 의미 할 수 있습니다. 그러나 문제는 데이터를 지운 후에 시퀀스가 ​​현재 위치에 머물러있어 귀하의 SERIAL 열을 올바르게 재설정 할 수 없다는 것입니다.
2

각 데모 사용자에 대해 새 데이터베이스를 만듭니다. 데모를 시도하는 사람이 변경하지 않는 "마스터"데이터베이스의 샘플 데이터로 각 새 데이터베이스를 채 웁니다. 그런 다음 사용자가 데모를 완료하면 전체 데이터베이스를 삭제하십시오.

각 사용자에 대해 몇 개의 임시 테이블을 만들면되므로 실제로 사용자가 데모를 사용할 때 수정되는 데이터가 무엇인지 정확히 달라질 수 있습니다.

+1

다시 채우기는 템플릿 데이터베이스를 사용하여 간단히 수행 할 수 있습니다. –

관련 문제