2010-01-27 2 views

답변

8

사용자 이름이 중복되지 않게하려면 UNIQUE constraint을 만드십시오.

DWong1145의 사용자 이름을 변경하려면 어떻게해야합니까? 모든 데이터베이스 관계를 UPDATE CASCADE으로 만들겠습니까?

+0

내 질문은 인증 시스템의 맥락에있다. 사용자 이름 변경 허용. 나는 그것을 언급 했어야했다. –

+1

@Emanuil - 쥬라기 공원에서 Jeff Goldblum의 말을 인용하면 "인생은 한 방법을 찾습니다." 언젠가 사용자 이름을 바꿀 필요가 있다면 지금 바로이 순간을 후회할 것입니다 ... –

+0

"''정보 '를 키로 사용해서는 안됩니다; '데이터'는 프로그램에서 항상 이해할 수있는 것처럼 변경 될 필요가 없습니다. SO에게 전화를 걸어 내 사용자 _id_을 (를) 변경 하시겠습니까? 그럴 수는 없지만 사용자 _name_을 (를) 변경할 수 있습니다. –

4

고객 관점에서 말하자면. 나는 사용자 이름이 DWong1145가되기를 원하지 않습니다.

7

은 고유 키/상수으로 만 사용하십시오. 사용자 이름은 변경 될 수 있으며, 예를 들어 상표 일 수 있으며 소유주는 사용자에게 삭제를 요청할 수 있습니다.

+0

약간 간결한 것 같습니다.) * 당신은 * 맞습니다. 나는 당신이 당신의 사용자 이름을 바꿀 수없는 시스템을 싫어한다 - 그러나 OP는 그가 그것을 바꿀 필요가 없다는 의견에 말했다. 그래서 ... –

5

어떤 의미에서 좋은 후보이지만, 실제로 수행하기를 원한다면 고려해야합니다. 예를 들어, 특정 사용자 이름을 가진 사용자가 있으면 사용자는 "삭제"(또는 삭제 된 것으로 표시)됩니다. 따라서 동일한 사용자 이름으로 다른 사용자를 만들지 못하게 할 이유는 없지만 기본 키이므로 이미 "가져 왔습니다".

2

문자열을 기본 키로 사용하는 것이 사용자 이름인지 여부에 관계없이 큰 단점은 테이블을 참조하는 모든 외래 키 열도 더 느려지고 더 많은 공간을 낭비하는 문자열이어야한다는 것입니다.

+0

더 느릴 필요는 없습니다. 좋은 데이터베이스 엔진은 모든 문자열 값을 사전 해시 할 수 있습니다. 게다가 자연 키를 사용하면 응용 프로그램에서 많은 조인이 필요하지 않으므로 쿼리가 빨라집니다. 자연 키는 일반적으로 더 많은 공간을 사용하지만 솔직히 공간은 저렴하고 풍부합니다. –

관련 문제