2012-08-07 3 views
-1

내 사이트는 등록 된 사용자와 등록되지 않은 사용자 간의 통신을 가능하게합니다. 데이터베이스에 등록되지 않은 사용자를 저장하는 가장 좋은 방법을 결정하려고합니다. 응용 프로그램의 작동 방식을데이터베이스에 외부/인증되지 않은 사용자를 저장하는 적절한 방법은 무엇입니까?

Users 
------------ 
user_id 
device_id *Unique* (this is for mobile app users) 
email *Unique* 
phone *Unique* 
first_name 
last_name 
image_url 
date_joined 

UserNames (Users have custom names for each group potentially) 
------------- 
name_id 
user_id 
group_id 
first_name 
last_name 

더 자세한 사항 :

  • 사용자가 등록하고 모두
  • 메시지는 다음입니다 등록 및 비 등록 사용자를 포함하는 그룹/목록을 만들 다음과 같이 내 초기 스키마이었다 그룹/목록의 구성원에게 전송
  • 참고 : 등록 된 사용자는 명시 적 승인없이 목록에 등록되지 않은 사용자를 추가 할 수 있습니다.

전자 메일, 전화 번호 및 장치 ID가 고유하기 때문에 위에 나열된 디자인을 선택했습니다. 그러나 사용자는 각 사용자마다 다른 이름/별명을 가질 수 있으므로 UserNames 테이블이 있습니다. 그러나 등록되지 않은 사용자를 저장하는 것이 사이트의 기술적으로 등록 된 사용자가 아닌 경우 사용자 테이블에 저장해야하는지 여부는 분명하지 않습니다.

등록되지 않은 외부 사용자를 별도의 테이블에 저장해야합니까? 내가 무엇인가를 명확히하기 위해 나를 필요로한다면 알려줘.

답변

2

등록되지 않은 사용자를 자신의 테이블에 분류할지 여부는 디자인 결정 인 경우에만 답변 할 수 있습니다. 아마도 이러한 다양한 사용자 유형이 응용 프로그램 전체에서 어떻게 사용되는지에 달려 있습니다. 사용자가 등록되었음을 나타내는 0 또는 1 값이있는 tinyint 필드를 갖는 것만 큼 간단 할 수 있습니다.

+0

"비 사용자"를 "사용자"테이블에 저장하는 데 문제가 있습니까? 그것은 내가 추측하는 의미 론적 토론에 가깝다. 비 사용자를 "사용자"로 저장하는 것에 대해 잘못된 점이 있습니다. –

+1

tinyint 필드 사용시 +1. "등록되지 않은"사용자가 앱 디자인의 일부인 것처럼 들리지만 (예 : 메시지를 보내려는 경우), 이는 레코드를 유지하려는 것입니다. 그렇다면 질문은 다른 표 또는 아닙니다. 특성이 등록 된 사용자와 매우 유사하면 동일한 테이블에 보관하십시오. – Chad

+0

내게는 응용 프로그램과 예상되는 테이블 크기에 따라 다릅니다. 당신이 정말로 non-registeres 사용자들에 대한 어떤 데이트도 지속하지 않는다면 아마 데이터베이스에 이들을 가지고 있지 않을 것입니다. (그리고 아마 익명의 사용자로 코드를 처리 할 것입니다.)하지만 만약 당신이 등록 된 사용자가 등록되지 않은 사용자를 등록되지 않은 사용자의 정보를 유지해야하는 곳에 초대하면 데이터베이스에 등록되지 않은 사용자는 없습니다. –

관련 문제