T-SQL (SQL Server 2008)에서 키가없는 열 (관계 없음)을 통해 두 테이블을 INNER JOIN하는 것이 기술적으로 올바른 것입니까? 고맙습니다.키가없는 경우 가입 하시겠습니까?
1
A
답변
2
동일한 데이터를 가진 두 필드에 모두 참여할 수 있으며 데이터 유형도 동일해야합니다. 필드가 인덱싱되면 두 개의 varchar (4000) 필드에 조인하지 않으면 성능 문제가 발생하지 않습니다. 데이터베이스 디자인이 좋지 않고 EAV 모델을 사용하는 경우 하나의 열이 둘 이상의 용도로 사용되는 경우에도이 작업을 수행해야 할 수도 있습니다.
그러나이 시나리오에서 얻지 못할 것은 데이터 무결성입니다. 규칙을 적용하는 외래 키가 없으면 관련 테이블에 상위 테이블과 일치하지 않는 값이 있음을 알 수 있습니다. 이로 인해 조회해야 할 조회에 레코드가 표시되지 않거나 올바르게 해석 될 수없는 레코드가 될 수 있습니다. 따라서 적용 가능한 곳에 외래 키를 설정하는 것이 좋습니다.
1
매우 효과적이지는 않지만 ... 가능한 경우 외래 키를 만들어야합니다.
1
기술적으로 작동합니다. 문제는 없습니다. 그러나 쿼리 계획 생성기에서 인덱스를 더 잘 활용할 수 있도록 FK를 사용하는 경우가 있습니다. 그러나 디자인 관점에서 볼 때 그다지 좋은 아이디어는 아닙니다. ORM 경로를 가고 싶다면 FK를 가능한 한 많이 사용해야합니다.
4
예. 나는 종종 "중간"테이블을 우회하는 자식 테이블의 자식에 가입합니다.
외래 키는 데이터 무결성을위한 제약 조건입니다. 쿼리 공식화와 관련이 없습니다. 데이터 품질 및 무결성에 신경 쓰지 않는 한 어쨌든 그들을 보유해야합니다.
관련 문제
- 1. 가입 조건에서 ANDing 하시겠습니까?
- 2. 에 가입 하시겠습니까?
- 3. ajax에 가입 하시겠습니까?
- 4. 동일한 테이블에 가입 하시겠습니까?
- 5. SQL 조건에서만 가입 하시겠습니까?
- 6. 테이블에 가입 하시겠습니까?
- 7. 상대 URL에 가입 하시겠습니까?
- 8. Mysql 한도로 가입 하시겠습니까?
- 9. 다른 유형의 열에 가입 하시겠습니까?
- 10. 기본 키가없는 테이블의 각 레코드를 변경 하시겠습니까?
- 11. LINQ로 2 목록에 가입 하시겠습니까?
- 12. MySQL 관계형 뷰 - 가입 하시겠습니까?
- 13. MySQL - 또는 성명을 사용하여 가입 하시겠습니까?
- 14. 제외 방법 2 NSArrays에 가입 하시겠습니까?
- 15. MSSQL 2000에서 테이블 반환 함수에 가입 하시겠습니까?
- 16. AJAX.NET Reorderlist ItemCommand 또는 DeleteCommand에 가입 하시겠습니까?
- 17. codeigniter 활성 레코드를 사용하여 가입 하시겠습니까?
- 18. DBus에 가입 된 신호를 선언 하시겠습니까?
- 19. 기본 키가없는 다수 Many
- 20. 기본 키가없는 Linq 삽입
- 21. 중복 키가없는 MySQL INSERT/UPDATE
- 22. entity-framework 고유 키가없는 테이블
- 23. 탭 키가없는 컨트롤 사이의 "Tab"
- 24. 이벤트 가입 및 가입 취소
- 25. 가입 요소
- 26. 레일 3 가입 질문
- 27. 가입 : has_many을 :
- 28. 외래 키가없는 JPA 엔티티 매핑
- 29. SQL 외래 키가없는 계단식 삭제?
- 30. Subsonic 기본 키가없는 테이블 생성