답변
그것은 나중에 특정 행을 찾는 데 유용
여기에 간단한 소개입니다. 각 행에 대해 고유 한 다른 값이있는 경우 다른 열을 기본 (고유 한) 키로 사용할 수 있기 때문에 추가 ID 열이 반드시 필요하지는 않습니다.
그러나, 자동 증가 id 컬럼의 장점은
이 가) 각 행에 대한 고유하고
b)는 변경되지 않습니다 점이다.
예를 들어 StackOverflow를 가져옵니다. 모든 질문에는 ID (이 중 하나는 6886017)가 있으며 URL에 ID와 제목을 모두 사용합니다. ID가 여전히 고유하기 때문에 동일한 제목의 두 가지 질문이있을 수 있습니다. StackOverflow가 실제로보고있는 것이기 때문에 질문의 제목을 변경할 수도 있습니다. 이전의 링크도 계속 작동합니다. 제목 부분이 아닌 URL의 ID 부분입니다.
아니요, 실제로 필요하지는 않지만 다른 테이블의 행이 해당 행을 참조해야하는 경우 해당 행을 고유하게 식별하는 고유 한 방법이 있습니다.
편리하고 (WHERE name = 'blah' and somethingelse = 'foo'
대신 WHERE id = 123
) 그 외에 정수 인덱스는 일반적으로 예를 들어. 문자열 인덱스. 그 외에도
하지만 대개 데이터베이스에서 무언가를 얻으면 이름이나 다른 관련 필드로 처리하려고합니다. ID는 뭔가 "내부"처럼 보입니다 – Laura
@ laura : 그것은 시스템 측면에서 "내부"이지만 시스템 내부에 있습니다. 데이터베이스 내부에는 없습니다. 나는. MySQL은 ID 열을 사용하는지 여부는 신경 쓰지 않지만 모든 것에 대해 고유 한 ID를 사용하는 것은 큰 도움이됩니다. – Flambino
이름으로 열을 가져 오려면 해당 열에 인덱스를 넣으십시오. 그러나 예를 들어 실제 이름을 가진 사용자를 저장하는 테이블을 가져 가야합니다. 두 명의 사용자가 같은 이름을 가진 것은 거의 없습니다. 따라서 ID를 고유 한 방식으로 식별하려면 ID가 필요합니다. – ThiefMaster
필수는 아니지만 매우 좋습니다. 또한, 업데이트, 색인에 대한 고유 행을 유지하는 데 매우 유용 삭제 등
여기에 몇 가지 유용한 정보입니다 : http://en.wikipedia.org/wiki/Unique_key
의 ID 필드는 일반적으로 필드에 대한 기본 키입니다. 특정 테이블의 특정 필드를 식별하고 기본 키를 반복 할 수 없습니다. 테이블 조인에 도움이되는 외래 키로 사용할 수도 있습니다. HTTP : //www.opensourcevarsity.com/mysqldba/l8primaryforeignkey
관계형 데이터베이스로 작업 할 때 각 행을 고유하게 식별 할 수 있어야합니다. 대부분의 경우 행을 고유하게 식별 할 하나 또는 모드 데이터 열을 선택할 수 있습니다. 이를 natural key
이라고합니다. 각 행을 쉽게 식별 할 수있는 방법이 없으면이 식별을하기위한 목적으로 고유 한 열을 소개 할 수 있습니다. 그게 synthetic key
이고 그게 당신이 물어 보는 자동 증가가있는 id 열입니다.
각 행을 식별 할 수있는 다른 방법이있는 경우에는 필요하지 않습니다. 서로 구별 할 수없는 행을 가질 수도 있지만 관계형 데이터베이스 패러다임의 가치를 크게 떨어 뜨릴 수 있습니다. 또한 자동 증가 숫자 일 필요는 없습니다. 종종 UUID와 같이 고유 ID 문자열이 사용됩니다.
"ID"는 식별자를 의미합니다. 관계형 데이터베이스 설계의 컨텍스트에서 관계 내의 튜플 (행)은 키에 의해 고유하게 식별되며 모든 관계에는 하나 이상의 키가 있어야합니다.
키가없는 테이블은 중복 행을 허용하여 모호성, 부정확 한 결과 및 행이 설명하려는 실제 엔티티를 정확하게 식별하는 문제를 초래합니다. 따라서 키는 모든 데이터베이스 테이블에 대한 데이터 무결성의 중요한 측면입니다.
그러나 키는 이 아니며이 아니어야하며 "자동 증가"하지 않아야합니다. 이러한 기능은 테이블에 적합한 키를 선택하는 것과 관련이 없습니다.
중복 된 행을 허용하지 않고 중복 된 데이터를 허용하는 유일한 * 키 * ID 인 테이블을 추가합니다. 응용 프로그램에 따라 가능한 모든 세계에서 최악의 상황 일 수 있습니다. –
@Catcall, "ID 번호"의 의미에 달려 있습니다. 많은 것들이 숫자로 식별됩니다. "ID 번호"는 대용 암호뿐만 아니라 자연 키를 의미 할 수 있습니다. – sqlvogel
좋은 지적. 나는 "키가 인공 * ID 번호 인 테이블은 복제 행을 허용하지 않고 중복 데이터를 허용합니다." (자연 키를 대신하는 키를 설명하기 위해 * 대리 키 *라는 용어를 예약하려고합니다. 항상 성공하지는 않습니다.) –
- 1. Grails의 쿼리 - ID가 다른 테이블
- 2. 각 행에 동적 콤보 상자가있는 PHP 동적 테이블
- 3. jQuery 각 행에 첨부 된 데이터 테이블 동적 편집 버튼
- 4. xaml의 각 행에 EventToCommand 추가
- 5. MySQL의 각 행에 어떻게 추가합니까?
- 6. 각 행에 count() 열을 추가하십시오.
- 7. Facebook 연결 : 모든 도메인에 앱 ID가 필요합니까?
- 8. 테이블 행을 다른 테이블 행에 추가하십시오.
- 9. 각 OS마다 하나의 MSI가 필요합니까?
- 10. 테이블 행에 데이터를 동적으로 추가하십시오.
- 11. 테이블 행에 선택 기능 추가
- 12. 단일 행에 대한 linq 반복이 필요합니까?
- 13. MySQL - 각 행에 레퍼런스 배열 저장
- 14. JSF : TH를 각 행에 추가하는 방법은 무엇입니까?
- 15. 델파이가있는 Excel 시트의 각 행에 이미지 삽입
- 16. 각 행에 단추를 추가합니다. WPF 목록보기에서 만듭니다.
- 17. UISplitView - masterView의 각 행에 대해 다른 detailView로드
- 18. Excel : 각 행에 대해 새 시트 만들기
- 19. 각 행에 대해 빈 열 축소
- 20. OnMouseOver는 p : dataTable의 각 행에 이미지를 표시합니다.
- 21. 쿼리의 각 행에 대해 하위 함수 실행
- 22. DataGridViewComboBoxColumn은 각 행에 다른 항목을 추가합니다.
- 23. 링크가 인라인 대신 각 행에 표시됩니다.
- 24. jTable의 각 행에 숨겨진 값을 할당
- 25. 파이썬 django에서 html 테이블 행에 액세스
- 26. 테이블 행에 대한 새 ID 생성
- 27. 테이블 안의 논리. 형식화를위한 각 루프에 대해
- 28. html 테이블 행에 링크 이름을 지정하려면 어떻게해야합니까?
- 29. 테이블 릭스 매트릭스 - 여러 행에 걸친 차트
- 30. SQL Server - ID가 SELECT에있는 UPDATE 테이블?
+1은 고유 식별자라는 것을 강조합니다. –