상황
테이블을 크게 회원(계정)정보 / 권한 수준 프로필 / 도메인 프로필 3개로 나누려는 상황임.
1. 비회원도 서비스를 이용 가능함. 단, 비회원은 모두 같은 권한 수준(everyone)을 가짐.
2. 회원은 각자 다른 권한 수준을 가질 수 있음.
3. 회원과 비회원 모두 고유한 도메인 프로필이 존재함.
4. 계정 정보와, 고유한 권한 프로필은 회원만 가지고 있음.
5. 접근하려는 리소스가 기본값(everyone)보다 더 높은 권한을 요구할 때에만 권한 수준 프로필의 정보가 필요함. (권한이 좀 세부적이고 따로 룰이 있어서 독립적인 도메인으로 분리했어)
1:1:1 관계(회원의 경우)이고, 이게 변할 것 같지는 않아.
JPA를 주로 사용하고, 몇몇 벌크 쿼리만 로우쿼리로 처리하고 있음.
질문
FK 컬럼을 두지 않고, 세 레코드의 PK를 모두 동일한 값을 사용하도록 설정하고 싶음. (PK의 유일성은 추가 비용 없이 보장이 된다고 가정해줘.)
쿼리도 단순해지고 연관관계를 느슨하게 만드는 면에서도 좋은 것 같은데 이렇게 해도 되는건지 확신이 안 들어서 질문함.
UUID를 만들어서 그걸로 논리적 FK를 만들어서 사용하는건 어떰? - dc App
현실적으로 PK가 동일한 값을 유지할 수가 없을 것 같아서 그럼 - dc App
그 UUID를 PK로 사용하는걸 생각하고 있었음. PK기준 클러스터드 인덱스 환경에 시퀀셜하지 않아서 생기는 문제까지 섞이면 글이 길어져서 생략했어
슈퍼ㅡ서브모델을 이용해보세용
단일테이블전략보단 클래스별 테이블전략이 좋아보임 즉 공통속성을 부모로 분리하고 서브타입 one to one으로 하면 무결성이 잘 지켜지겠쥬?