2014-04-19 5 views
0

SQL 데이터베이스에 외부 로그인 옵션에 대한 사용자 기본 설정을 저장하려고합니다. 사용자는 여러 옵션을 선택할 수 있으며 사용자 정의 로그인은 기본적입니다. 옵션은 다음과 고정됩니다SQL 데이터베이스에 여러 옵션을 저장하는 방법은 무엇입니까?

  1. 사용자 정의 로그인
  2. 페이스 북을
  3. 구글
  4. 트위터
  5. LinkedId
    .. 현재

나는 Preference 테이블이 등을하는 다른 환경 설정을 저장하고 있습니다. 그래서 내 질문은 Preference 테이블에 이러한 옵션을 저장할 수 있습니다.

수단 :

  1. 나는이 방법, 하나의 컬럼에 저장해야 하는가?

  2. 새 테이블 (LoginOptions)을 만들어야하고 Preference 테이블과 다 대일 관계로 연결해야합니까?

  3. 또는 다른 더 나은 옵션은 무엇입니까?

+0

각 사용자별로 저장 하시겠습니까? – Vadim

+0

아니요이 옵션을 포함하여 다른 환경 설정도 있습니다 – user1740381

+0

아니요, 로그인 자체와 관련해서 말했습니다. – Vadim

답변

1

사용자와 로그인 옵션간에 다 대다 관계를 제안하고 있습니다. 가장 좋은 방법은 LoginOption 테이블을 가지고 그 테이블과 Users (또는 Preference) 테이블간에 다 대다 관계를 만드는 것입니다.

옵션 1은 본질적으로 단일 필드로 다 대다 관계를 만듭니다. 장기적으로는 위에서 설명한 것보다 적은 비용으로 더 많은 노력을 기울입니다.

  • 각 외부 로그인 옵션에 대한 사용자 테이블에 부울 필드가 :에

    대안입니다.

  • 각 로그인 옵션에 대해 단일 Preference 레코드가 있어야합니다.

다시 "지름길"에 노력을 기울일 필요가 있지만 적절한 이점을 얻을 수는 없습니다. 적절한 다 대다 테이블 관계입니다.

+0

사용자와 로그인 옵션간에 적절한 다 - 대 - 다 관계를 만들고 싶습니다. 'LoginOption'을'User'에 직접 보내거나'Preference'를 통해 말입니다. –

+0

오케이, 나는 고마워! – user1740381

+0

** 윙크 **. 천만에요 –

0
  1. 단일 열에 저장하려면 구성을 단일 값으로 인코딩해야합니다. 바이너리 (사용자 정의 1, 페이스 북 2, 구글 4, 값에 OR 수행)를 사용하거나 문자열로 인코딩 할 수 있습니다. 이것은 대단히 추천되지는 않습니다 만, 모든 종류의 DB 장점을 잃어 버리거나 성능상의 불이익이 있습니다. 또한 각 로그인 환경 설정에 추가 정보를 추가하는 것이 매우 어렵 기 때문에 확장 성이 없습니다.
  2. 각 사용자가 로그인 기본 설정을 나타내는 여러 행을 가질 수있는 다른 테이블을 만들 수 있습니다. 이것은 쿼리 및 업데이트가 쉽고 각 환경 설정에 정보를 추가하려는 경우 더 많은 열을 추가하기 만하면됩니다.
  3. 나는 각 로그인 환경 설정에 대한 열을 만드는 것이 (테이블에 관계없이) 좋은 생각이 아니라면 Adrian에 동의한다.이렇게하면 다른 로그인 방법을 지원하기 위해 db 스키마 변경을 변경해야합니다.
관련 문제