현재 상당히 큰 규모의 오피스 웹 애플리케이션을 유지 관리하고 있습니다. 나는 최근에 웹 브라우저 내의 다양한 개발자 툴을 통해 셀렉트 박스의 가치가 사용자에 의해 쉽게 변경 될 수 있다는 것을 알게되었다. 서버 측에서는 게시 된 데이터가 숫자인지 아닌지 (드롭 다운의 경우) 유효성 검사를 수행하지만 실제로 데이터베이스 테이블에 값이 있는지 확인하지는 않습니다. 예를 들어 인사말 용 드롭 다운 상자가 있습니다 ('mr ','ms ','mrs ','Mr/ms ') 등을 입력 할 수 있습니다.mysql에 대한 참조 무결성
은 현재 내가 참조 무결성 외래 키를 제공하지 않습니다 MySQL의의 MyISAM 테이블을 사용, 그래서 이노 디비 이동에 대해 생각하고, 아직이 다음과 같은 문제 민병대 : 나는 참조 무결성을 적용 할 경우
(보장하기를 유효한 ID가 삽입 된 경우), 성능 문제 (예 : 인사말 드롭 다운)에 대해 색인을 생성 할 필요가없는 모든 열 (무결성 검사를 사용하는 경우)을 색인화해야한다는 뜻입니다. 매우 큰 데이터베이스 클라이언트 테이블에 simular dropdowns (예 : clientgroup, 직원 수, country-region 등)이 10 개라고하면 연결된 모든 테이블을 과도하게 색인하는 것으로 보입니다.
내 질문 : 참조 무결성을 사용할 때
1), 열은 정말도 색인화해야합니까
?2) 제가 간과 할 수있는 다른 실질적인 해결책이 있습니까? (예 : 모든 드롭 다운 목록에 대해 값이 테이블에 있는지 확인하기 위해 별도의 쿼리를 사용하십시오.)
3) 다른 웹 응용 프로그램은 어떻게 이러한 문제를 처리합니까?
도움말 감사드립니다!
감사 패트릭
안녕하세요, 답장을 보내 주셔서 감사합니다 .-) 내 생각에 MyIsam 테이블은 이러한 검사를 수행하지 않습니다. 기본적으로 '외래 키'로 지정된 값을 삽입 할 수 있습니다. 인덱싱을 희박하게 적용해야한다는 것도 알고 있습니다. 높은 카디널리티를 발생시키는 열을 사용하여 성능을 향상시키는 데 필요한 경우에만 필요합니다. – user2022678
네, 맞습니다. myisam은 외래 키 선언을 구문 분석/허용하지만 기본적으로 자동 무시되고 절대 적용되지 않습니다. 그리고 아니, 인덱스에 대한 어림짐작은 어디에/조인/주문 또는 다른 "가치 테스트"유형 상황에서 사용되는 필드에 적용하는 것입니다. –