프로그래밍

Db에서 로그인 테이블 구성시

Id를 pk로 하면 안 됨? 이유는?

 

스택오버플로에서도 좀 갈리네

23개의 댓글

2023.11.03

0
2023.11.03
@tolabose

안되는 이유가 보안상 취약해지기 때문인데

보통 id는 auto increment를 사용하니까 다른 id를 추측하기 쉬워지잖아

근데 뭐 id를 외부에 노출하지않고 id로 뭔가 이용할 수 있는 수단이 없다고 한다면 별 상관없어짐

0
2023.11.03
@tolabose

수정이 불가능한 경우지만, 삭제가 가능하다면? 문제가 생김? 보안상으로는 내가 파악한 한에서는 문제 없다 생각됨

0
2023.11.03
@비발디

외부에서는 id를 노출하면안됨 내부에서야 id로 북치고 장구치던 별 상관없는데

외부에 노출되면 보안이 떡락함

0
2023.11.03
@tolabose

오케. 결국 pk냐 아니냐가 중요한것이 아닌 노출여부가 더 중요하고, 아이디가 pk가 되어 노출된다면 나쁜 구조, 아니라면 무방하다 이거네?

좋은 첨언 감사. 덕분에 하나 더 배움

1
2023.11.03

pk는 의미를 가지지 않는 값으로 하는게 좋음.

시스템 정책상으로 아이디 변경을 허용하지 않는다고 해도 나중에 바뀔지 모르는 일이지

그리고 데이터의 pk를 이용자가 임의로 지정할 수 있게 만들면 해당 테이블과 조인하는 다른테이블에도 이용자 아이디가 분산되어 저장되는데, 이용자 아이디도 넓은 의미에서 개인정보이기 때문에 법률상으로 문제가 생길수 있음

그래서 pk fk같이 중요한거는 개발자가 통제할 수 있는 값으로 해야함.

 

개인정보 보호 의식이 없었을 때는 이용자 pk를 주민번호로 쓰는 곳도 있었는데 그런식으로 하면 전부 갈아엎어야 하는 일이 생김

0
2023.11.03
@짱깨고홈

이또한 맞는말이네. 결국 저걸로 fk 쓰는곳이 존나 많을텐데, 노출 위험이 커지니 리스크도 커질수있겠네

또 pk fk는 통제가능해야 한다는 말도 좋은듯

너는 뭘로 쓰는게 좋다 생각함?

0

id를 왜 auto increment로함?

0
2023.11.03
@년전개드립가입

? Pk는 다 ai가 아님

0
@비발디

아 잘못이해함 댓글에 id를 auto increment로 주로 한다고 써놧네 ㅋㅋㅋ 쏘리

0
2023.11.03
@년전개드립가입

ㅋㅋㅋㅋㅋㅋㅋ 그럴수이찌

0
2023.11.03

니들덕에 surrogate , natural key도 찾아보고있다. 식견이 넓어졌다 고맙다

0
2023.11.03

하나 더 적자면 id로 쓰면 인덱스 유지비용이 좀 비싸질걸? 작으면 상관없지만 어쨌든 비교연산은 문자열이 더 비쌈

0
2023.11.03
@6974

안 그래도 성능상 이슈 이야기도 나오긴 하더라

결국 join을 쟤로 쓰니까 점점 커질수록 부작용 나타날 확률이 있긴 하다네

몇번 테스트 해볼수있도록 고려하고있을게 ㄱㅅ

0
2023.11.07

id를 pk로 하면안됨 unique key로 해야지

mysql index에 대해서 배워두면 좋음 auto increment Integer 인덱스가 varchar인덱스보다 리소스 소비가 적음

auto increment로 설정된 id값을 하나 사용하셈

0
2023.11.07
@dsada12345

유니크하긴 하잖아

0
2023.11.07
@비발디

그래 유니크하긴 하지..

unique key는 pk의 속성중 하나고 unique key != pk지

보통 pk에 기대하는건 entity의 식별자 역할인데 식별자 역할은 만족하나

mysql 부하를 일으키는 방법이라 AI 값을 사용해야함

db index의 ai값은 재정렬을 발생시키지 않지만 id를 pk로 사용하면 매번 삽입때마다 데이터 재정렬이 들어가니까 ...

0
2023.11.07
@dsada12345

식별자역할을 만족하냐는게 어떤 뜻인지 잘 이해 안 가는데 자세히 설명 가능할까?

뒷 내용은 이해했어

0
2023.11.07
@비발디

객체지향 설계랑 도메인주도설계에서 사용하는 개념인데 자세히 설명하면 끝도 없어서 책이나 글한번 보는게 좋긴함.

Entity

Tracked through different states and across different implementations. The main characteristic of an entity is that it holds a clear identity. The identity is more important than its state, defined by other attributes. It defines an object that exists over a timeline.

1
2023.11.07
@dsada12345

ㄱㅅㄱㅅ 더 공부해볼게

0
2023.11.07
@dsada12345

혹시 추천할만한 책이나 사이트가 있을까? 너무 떠먹여달라해서 미안해

0
2023.11.07
@비발디

일단 객체지향 입문은 객체지향의 사실과 오해 로 시작하는게 좋은데

조영호 란 분이 배달의 민족에서도 발표 많이하고 KSUG 에서도 발표많이해서 이분 자료들좀 보고

도메인주도개발은 에릭에반스의 DDD가 원조인데 이 책이 좀 난해해서 우리나라 사람들이 쓴 DDD 관련 책보는게 좋은거같음

 

근데 바로 들어가면 어려울 수도 있으니 https://subicura.com/2021/06/27/study-guide.html 이쪽으로 시작해

1
2023.11.07
@dsada12345

너는 신이다

0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜 조회 수
5694 [프로그래밍] 아 시발 퇴사마렵다 9 인간지표 0 12 시간 전 262
5693 [프로그래밍] C#이 ㅈ사기 언어인 이유 17 ye 4 21 시간 전 761
5692 [프로그래밍] 요즘 모바일 개발은 어떤 걸 사용하나요? 13 커피좋아용 0 3 일 전 331
5691 [프로그래밍] 취준생 안드로이드 팀플 주제 머할까요... 8 조강현 0 3 일 전 229
5690 [프로그래밍] 공통코드테이블은 대체 왜 만드냐 9 잠적자 0 5 일 전 429
5689 [프로그래밍] 토이프로젝트 주제 선정 3 개드립눈팅1세대 0 5 일 전 229
5688 [프로그래밍] 엥 구글 플러터 유기각 재는거임?? 4 최수연 0 7 일 전 360
5687 [프로그래밍] 반도체 장비 업계인 있음? 9 캡틴띠모 0 8 일 전 296
5686 [프로그래밍] 안드로이드 책 추천좀 6 집에가게해줘 0 8 일 전 159
5685 [프로그래밍] 폰 스크리닝 해 본 사람 있어? 3 무지개빛푸딩 0 9 일 전 395
5684 [프로그래밍] jsp 트리메뉴 만들고있는데 구상한게가능한지 의견좀물어볼께 11 평택국 0 9 일 전 176
5683 [프로그래밍] JPA 도와줘어억 ㅠ 10 모그리또 0 10 일 전 264
5682 [프로그래밍] 의사는 뽑는 인원 제한하는데 부캠은 왜 제한 안 할까 5 조강현 0 12 일 전 381
5681 [프로그래밍] 그 혹시 게임쪽 종사자 있음? 17 god79ii 0 15 일 전 638
5680 [프로그래밍] 코린이 ㅅㅂ 뭐가 문젠지 모르겠어요 9 집에가게해줘 0 16 일 전 463
5679 [프로그래밍] Dear Imgui 라고 아시나요? 2 년째모쏠 0 16 일 전 250
5678 [프로그래밍] 현업개발자분들 주말엔 편하게 쉴수있나요? 10 키로 0 17 일 전 887
5677 [프로그래밍] 무엇이든 물어보세요. 28 변현제 0 19 일 전 422
5676 [프로그래밍] 개발자보단 엔지니어가 취업이 잘됨 5 iillillill 2 20 일 전 767
5675 [프로그래밍] 프론트엔드 개발자 연봉 1억 넘는 사람 있어? 13 잠적자 0 20 일 전 668