응용 프로그램에서 ASP 멤버십을 사용합니다.
UserProfile
테이블을 추가했으며 Users
(asp 회원)의 외래 키를 가지고 있습니다.
외래 키로 사용자 이름이 이메일이기 때문에 나는 Username
을 사용합니다.
어디서나 사용자를 참조해야하는 곳에서는 Username
을 외래 키로 사용합니다.
응용 프로그램에서 예를 들어 프로필을 가져올 때 저장 프로 시저에 Username
을 전달하여 데이터를 가져옵니다.
이것이 좋은 방법인지 궁금합니다. 여기에 몇 가지 잠재적 인 보안 문제가 있습니까?asp.net 회원에서 username을 외래 키로 사용 하시겠습니까?
답변
여기에서 볼 수있는 주된 문제는 외래 키에 대해 많은 "데이터 공간"을 소비하게되면 느려지고 테이블의 데이터베이스 공간을 차지하게됩니다. 또한 데이터베이스 테이블은 문자열 비교를 연결합니다 - 데이터베이스는주의를 기울여이 문자열에 대한 해시를 만들고 뒤에 숫자를 비교합니다. 그러나 약간의 오버 헤드가 있습니다.
UserName을 고유하게 만들고 숫자 외래 키를 사용하여 나머지 테이블에 연결하십시오.
두 번째 문제는 사용자가 이메일을 변경해야하거나 어떤 이유로 든 잘못 전달해야하는 경우 입니다. 이 경우 데이터베이스의 모든 연결을 업데이트하고 다른 유사한 전자 메일이 없는지 확인해야합니다.
또 다른 문제는 전자 메일과 외래 키가 대/소문자를 구분할 수 있는지 여부입니다. 어떤 이유로 든 대소 문자를 구분하면 대처할 수 없습니다.
보안 문제와 관련하여 매개 변수를 사용하여 데이터베이스를 열어보아야합니다. 이는 숫자 키 또는 문자열 키의 경우와 동일하므로이 경우에는 아무런 변화가 없습니다.
이것은 오래된 자연 대 대리 키 토론입니다. 어느 쪽의 방법이라도 "팬"이 있지만 단순한 진실은 장단점이 있다는 점입니다. 특정 상황에 가장 적합한 자신의 결정을 내려야합니다.
전자 메일이 PK 인 경우에는 this discussion을 참조하십시오.
많은 시스템에서 사용자가 사용자 이름을 변경할 수 있습니다. 귀하의 경우,이를 이메일 주소로 연결합니다. 사용자는이를 변경할 수 있어야합니다.
외래 키로 사용하는 경우 데이터를 동기화 상태로 유지하기 위해 업데이트를 실행해야합니다.
- 1. UserName을 외래 키로 설정하십시오.
- 2. 대리 키를 외래 키로 사용
- 3. System.Guid를 ASP.Net MVC의 기본 키로 사용 하시겠습니까?
- 4. 해시를 기본 키로 사용 하시겠습니까?
- 5. 별도의 프로젝트에있는 모델을 장고의 외래 키로 사용 하시겠습니까?
- 6. Grails : 외래 키를 기본 키로 사용 하시겠습니까? 이러한면에서 :
- 7. ASP.NET MVC - 기본 키로 외래 키?
- 8. 자식 테이블의 외래 키를 기본 키로 사용
- 9. MySQL - 기본 키로 외래 키 사용
- 10. sqlite의 외래 키로 열 이름 사용
- 11. 직렬 데이터 형식을 외래 키로 사용
- 12. 외래 키로 AutoIncrement 변수 사용 - 외래 키 얻기 contraint 오류
- 13. GUID를 세션 키로 사용 하시겠습니까?
- 14. Timespan을 사전의 키로 사용 하시겠습니까?
- 15. NSObject를 NSDictionary의 키로 사용 하시겠습니까?
- 16. 변수를 색인 키로 사용 하시겠습니까?
- 17. 외래 키로 외래 키로 하나 또는 여러 개의 매핑 매핑
- 18. 외래 키로 검색 admin에
- 19. Web2py : 외래 키로 ID
- 20. 외래 키로 어려운 작업
- 21. asp.net 회원에서 여러 사용자를 활성화/비활성화하는 방법
- 22. Asp.Net 회원에서 수동으로 사용자 이름을 변경하십시오.
- 23. aspnet 회원에서 ASP.Net MVC 검사 역할
- 24. MVC3 모델 외래 키로 바인딩하기
- 25. SQL : 기본 키로 사용 하시겠습니까? 기본 키로 사용하지 않으시겠습니까?
- 26. 외래 키에서 Django bulk_create 객체를 사용 하시겠습니까?
- 27. 외래 키로 Django ModelForm 저장하기
- 28. 복수 속성을 외래 키로 삽입하십시오.
- 29. 서버에 연결하는 사용자를위한 사전의 키로 사용 하시겠습니까?
- 30. jQuery 요소 객체를 배열 키로 사용 하시겠습니까?
예, 공간이 문제가 될 수 있습니다. 그럼 aspnet_Users UserId를 사용하는 것이 더 좋습니까?이 유형이 uniqueidentifier입니까? – 1110
@ 1110 예가 uniqueidentifier입니다. 이는 여러 측면에서 더 좋습니다. – Aristos