▲neo 6달전 | parent | favorite | on: GN⁺: 자연 키를 사용하는 것을 후회하게 될 꺼에요(blog.ploeh.dk)Hacker News 의견 고유하고 짧으며 사람이 읽기 쉬운 ID: Stripe에서 사용하는 cus_MJA953cFzEuO1z 같은 ID를 선호함. JavaScript/TypeScript로 생성하는 방법도 있음. 개인 식별 번호: 덴마크의 CPR 번호와 미국의 SSN을 비교. SSN은 고유하지 않으며, 변경될 수 있고, 미국 시민이 아니어도 발급 가능함. 데이터베이스 키로 사용하지 말 것을 권장. 별칭과 감사 로그: 덴마크 CPR 번호와 같은 자연 키를 사용할 때, 변경 사항을 기록하는 별도의 테이블이 필요함. URL도 자연 키로 사용 가능하지만 변경 시 리디렉션 테이블을 만들어야 함. 자연 키의 한계: 고유 식별자가 변경되면, 모든 관련 정보를 추적해야 함. 인위적인 키를 추가하면 추적해야 할 정보가 더 많아짐. 데이터 모델링은 현실 세계를 반영해야 함. 자연 키와 개인정보 보호: 자연 키에 개인 정보가 포함되면, 외래 키를 통해 다른 테이블에도 전파될 수 있음. 게임 태그 예시: PlayStation Network의 게임 태그를 자연 키로 사용하는 예시. 게임 태그가 변경되지 않으면 고유 식별자로 사용 가능함. 의료 분야 예시: 등록 직원이 잘못된 개인 건강 번호(PHN)를 입력하면 문제가 발생함. 인위적인 키를 사용하면 나중에 정정 가능함. 자연 키의 통제 불가능성: 이름, 주소, 공식 등록 번호 등은 통제할 수 없기 때문에 신뢰할 수 없음. 고유 키 시스템을 사용해야 함. 인위적인 키 사용: 모든 테이블에 고유 ID 필드를 사용하면 문제 해결이 쉬워짐. 데이터와 관계가 자주 변경되기 때문에 자연 키를 믿기 어려움. 변경 가능성과 고유 ID: 변경 가능성은 시간에 걸쳐 공통된 식별자를 필요로 함. 데이터베이스는 명시적인 대리 키를 스키마에 포함해야 함. ▲jsonobject 6달전 [-]인공키도 글로벌 리전 등에 대응하는 분산 환경에 대응 준비가 되어 있는 TSID를 사용하는 것을 추천합니다. 저는 MySQL, DynamoDB에서 PK로 TSID를 사용합니다. https://jsonobject.hashnode.dev/using-tsid-as-database-pk 답변달기
Hacker News 의견
cus_MJA953cFzEuO1z
같은 ID를 선호함. JavaScript/TypeScript로 생성하는 방법도 있음.