나는 현재이 데이터베이스 구조를 가지고있다.SQL 모델링/쿼리 질문
이 항목들은 모두 데이터가 저장된 텍스트, URL 또는 파일 테이블에 정확히 하나의 해당 항목이 있습니다.
해당 항목과 해당 데이터가 모두 포함 된 항목을 효율적으로 선택하려면 쿼리가 필요합니다.
그래서 내 첫 번째 방법은 그것을 통해
SELECT * FROM entries LEFT JOIN entries_items LEFT JOIN texts LEFT JOIN urls LEFT JOIN files
같은가 someting 다음 루프이었고, 내 응용 프로그램의 후 처리 작업을 수행.
하지만 다른 유형의 항목이 여러 개 존재한다는 것은 거의 없습니다. 항목 당 하나 이상의 항목이 존재하는 드문 경우입니다. 그리고 대부분의 경우 파일이됩니다. 하지만 그게 필요해 ...
eveyr 항목에 대한 모든 3 개의 테이블을 스캔하지 않도록 case/switch와 같은 것을 할 수 있고 entries_items의 "type"값을 기준으로 해당 테이블을 스캔 할 수 있다고 생각했습니다.
하지만 제대로 작동하지 않습니다.
또한 응용 프로그램에서 case/switch 로직을 만들려고 생각했지만, mysql 서버가 외부에있을 때 느리게 실행되는 쿼리가 여러 개있을 것입니다.
더 나은 접근 방법을 사용하면 구조를 변경할 수도 있습니다.
"texts", "urls"및 "files"의 모든 필드가 entries_items 테이블 옆에 있으며, 단지 1 : 1 관계로 사용되며 null이 필요없는 모든 항목 만 있습니다. 그 찬성/반대 의견은 무엇이 될까요? 나는 그것이 더 많은 저장 공간을 필요로한다고 생각한다. 그리고 내가 지금 가지고있는 것에 따라 cannt는 나의 cosntraints를한다. 모든 것이 null이어야합니다 ...
글쎄, 나는 모든 종류의 아이디어에 열려 있습니다. 신청서는 아직 작성되지 않았으므로 기본적으로 원하는대로 변경할 수 있습니다.
이 질문은 당신이 여기에 설명 한 내용의 경계를 넘어 길을 간다 생각합니다. 예를 들어, 모든 테이블을 스캔하고 싶지는 않다고 말한 것입니다. 그것은 테이블 추구와 비교 되는가? 엔트리 테이블에 몇 행이 있습니까? 한 번에 하나의 항목을달라고한다면 얼마나 많은 전화를 할 것입니까? 여기서 일하는 데 너무 많은 요소가 있습니다. 나는 당신이 어떤 장점이있는 간단한 대답을 얻지 못할 것이라고 생각합니다. (선택된 답변자에게는 아무런 불쾌감이 없음) –