사용자 데이터베이스의 표준 구현이 있습니까?


14

내 웹 사이트에 대해 개인화 된 기본 사용자 기능을 구현해야합니다. 이 유형의 데이터베이스에 대한 표준 구조가 있습니까? 각 사용자가 자신의 행을 갖는 단일 테이블에 모든 사용자 정보 및 데이터를 갖는 것이 일반적인 관행과 마찬가지로, 또는이 정보를 다른 테이블로 분할하여 서로 연결해야합니까 (효율적일 수 있습니까?) 이 시점에서 분명히 암호 암호를 너무 오래 갖기를 원합니다.

Google에서 찾고있는 것을 찾으려고했지만 아무 소용이 없습니다. 질문에 추가 설명이 필요하면 알려주세요.

답변:


17

일반적인 정규화 표준을 사용하는 것이 좋습니다. 행당 한 명의 사용자

  • 사용자 ID (bigint 증가)
  • 사용자 공통 이름 (사이트에 표시)
  • 사용자 이메일 주소
  • 비밀번호 소금 (모든 사용자에 대해 고유하며 계정을 만들 때 삽입 됨)
  • 비밀번호 (소금-MD5 또는 SHA1, 기본 설정)
  • 계정이 생성 된 날짜

나머지는 귀하의 비즈니스 규칙에 따라 귀하에게 달려 있습니다.


최신 비밀번호 해싱 선택은 argon2, bcrypt 또는 scrypt입니다.
douggard

8

큰 구식 패션을 추구해야 할 것입니다.

물론이 테이블에는 일종의 키가 필요합니다. UserID로 시작할 수 있습니다. 이것은 증가하는 INT 일 수 있습니다 (또는 2.1 백만 명이 넘는 사용자의 경우 bigint).

많은 데이터베이스가 GUID를 기본 UserID로 사용하는 것을 보았습니다. 그러나 PK 용 GUID를 사용하여 완전히 다른 웜 캔을 열게됩니다.

그런 다음 데이터베이스의 정규화 방법을 결정해야합니다. 사용자가 여러 개의 이메일을 가질 수있게 하시겠습니까? 여러 전화 번호? 그렇다면 다른 테이블에 있어야합니다.

기본 사용자 테이블을 다음과 같이 유지합니다.

  • 사용할 수있는 일종의 ID 또는 PK
  • 이름 / 성 또는 사용자 이름
  • 사용자의 일종의 상태 (활성, 비활성화 등)-(상태 테이블에 작은 링크)
  • 만든 날짜

그것이 출발점이되어야합니다.

거기에서 저장하려는 항목에 따라 다른 열을 추가 할 수 있습니다. 이메일은 이메일 테이블, 주소 테이블 주소 등을 연결할 수 있습니다. 비밀번호는 hash + salt를 사용할 수 있지만 openid를 고려 했습니까?

- 내가보기 엔 당신이 비록이 문서 읽기 권장 http://www.sqlservercentral.com/articles/data-modeling/71725/을


0

사용자 인증에 관한 경우 LDAP를 사용합니다. 이미 데이터베이스를 사용하고 있고 다른 테이블 (주문, 제품 등)이있는 경우 사용자에 대해 별도의 데이터베이스를 작성하지 마십시오. 이 테이블을 결합 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.