2012-10-20 2 views
1

내 웹 사이트에 대한 사용자 로그인 시스템을 만들고 있는데 데이터베이스를 만드는 데 도움이 필요합니다. 그래서 나는이 세 개의 테이블을 가지고 있습니다. 이것이 적절한 데이터베이스 스키마라고 생각하십니까? 그렇지 않다면, 당신은 무엇을 제안하겠습니까?사용자 로그인 시스템 데이터베이스 스키마 ... 비평 하시겠습니까?

---Users--- 
user_id 
user_name 
user_email 
user_firstname 
user_lastname 
user_state 
user_country 
user_occupation 
user_dob 
user_accountcreationdate 
user_sex 
user_role 
user_password 

---Roles--- 
role_id 
role_name 
role_description 

---Logins---- 
user_id 
last_login 
browser_type 
ip_address 

편집 **** 이것이 올바른 것입니까? 4 번째 표에 사용자 역할을 추가했습니다. 네 번째 테이블을 추가하면 사용자 테이블에서 user_role을 제거 할 수 있습니까?

---Users--- 
user_id 
user_name 
user_email 
user_firstname 
user_lastname 
user_state 
user_country 
user_occupation 
user_dob 
user_accountcreationdate 
user_sex 
user_role 
user_password 

---Roles--- 
role_id 
role_name 
role_description 

---Logins---- 
user_id 
last_login 
browser_type 
ip_address 

---User Roles--- 
user_id 
role_id 

답변

0

스키마는 각 사용자가 하나의 역할 만 가질 수 있음을 보여줍니다. 당신은 아마 당신이 그것을보다 세분화하기를 원한다는 것을 빨리 발견 할 것입니다. user_id를 role_id (date_granted, date_revoked, granted_by 등과 함께)에 매핑하는 user_role 테이블을 갖는 것이 좋습니다.

당신이 정말로 정상화하고 싶었다면

, users.occupation직업 테이블에 대한 외래 키가 될 것입니다. 상태는이고 국가는입니다.

비밀번호를 저장하는 방법에 매우주의하십시오.

성공적인 로그인을 기록하는 경우 실패한 로그를 기록하십시오. 그러면 도움이 필요하거나 해킹당한 계정을 알 수 있습니다.

행운을 빈다.

+0

나는 나의 첫번째 포스트를 편집했다. 너 좀 봐 주실 수 있겠 니? Thanks –

+0

user_roles 테이블을 사용하여 두 테이블을 매핑하려면 users.user_role 열이 필요하지 않습니다. –

0

야 좋았어.하지만 왜 안되는거야? 활성 사용자를 활성화/비활성화하려면 플래그. 그리고 유일한 링크 또는 OTP로 이메일 신원을 확인한 후에 만 ​​로그인하도록 허용합니다.

관련 문제