개발/Spring Boot

[로그인 기능 만들기] 2. DB 기획(2)

졔졔311 2024. 5. 3. 10:06
728x90
반응형

이전까지의 DB 구조는 다음과 같다.

일단 정말 바보같은 실수를 했다는 것을 발견!

이렇게 되면 여러 외부 사이트 인증을 사용할 수 있도록 하겠다는 기획이 무색하게,

각 유저당 하나의 인증 방법으로만 로그인 가능하게 된다.

one to one의 관계를 가지게 되는 것이다!!

one to many의 관계가 성립하려면, UserInfo에서 AuthId를 FK로 가지는 것이 아니라,

AccountAuth에서 UniqueId를 FK로 가지도록 해야 한다.

수정한 그림은 다음과 같다.

 

 

AccountAuth 테이블에 User와 인증 정보가 함께 추가되므로 유저와 인증수단이 여럿으로 매칭될 것이다.

 

아래는 수정된 테이블 정보.

 

◎ <UserInfo> table : user의 정보를 담고있는 테이블

Column Name Type Description
UniqueId(PK) Long Int auto increment. 유저 아이디를 직접 PK로 사용하는 것은 보안상, 조회 상 문제가 될 수 있기 때문에 따로 유저를 구분할 수 있는 PK로서 숫자를 저장해 사용함
CreatedDate Date 생성된 시간을 JPA Audit 기능을 사용해 자동으로 저장
LastModifiedDate Date 마지막으로 데이터가 수정된 시간을 JPA Audit 기능을 사용해 자동으로 저장
UserId Varchar(20) 이 서버에서 사용될 사용자의 ID
만약 타 사이트 계정 인증으로 로그인 할 경우, 이 ID는 고유 번호로 자동 부여됨
UserPwd Varchar(30) 이 서버에서 사용될 사용자의 password
만약 타 사이트 계정 인증으로 로그인 할 경우, null이 입력될 것임

 

◎ <AccountAuth> table : 계정 인증을 타 사이트 연동을 통해 할 경우, 인증 관련 정보를 저장하기 위한 테이블

Column Name Type Description
AuthId(PK) Long Int auto increment. 외부 사이트 계정 인증 정보의 고유 ID
AuthType Varchar(10) 외부 사이트 이름(현재는 Naver, Kakao, Google 세 가지 고려)
UniqueId(FK) Long Int auto increment. user를 특정하기 위한 user의 unique key이다.

 

728x90
반응형