2012-05-25 3 views
0

우리는 지금 계획을 세우고 있습니다. 그래서 내가 진전을 시작하기 전에 나는 최선의 방법으로 물건을 나눠주고 싶습니다.DISTINCT를 선택하거나 정규화 된 테이블을 분리 하시겠습니까?

우리는 'format'이라는 새로운 필드를 추가 할 제품 테이블을 가지고 있습니다.이 테이블은 제품 (가방, 상자 등)의 구조가 될 것입니다. 설정 값이 없으므로 사용자가 원하는대로 입력 할 수 있지만 사용자가 이미 입력 한 모든 형식의 드롭 다운 목록을 표시하려고합니다.

내가 생각할 수있는 두 가지 방법이 있습니다. 제품 테이블의 기본 SELECT DISTINCT를 사용하여 사용자가 이미 채운 모든 형식을 가져올 수 있습니다. 또는 형식을 저장하고 제품이 링크하는 별도의 테이블.

필자는 SELECT DISTINCT를 사용하고 싶습니다. 내 인생을 더 쉽게 만들어 줄 것입니다. 그러나 10 억 가지 제품을 가정 할 때 가장 좋은 방법은 무엇일까요?

+0

90 %의 케이스에서'DISTINCT '를 사용하면 잘못된 것을 의미합니다. 나는 그것이 쓸모 없다고는 말하지 않지만 잘못된 쿼리 나 스키마의 완벽한 지표이다. – zerkms

답변

1

모든 것을 하나의 테이블로 유지하려면 해당 열에 인덱스를 작성하십시오. 이렇게하면 사용자 응용 프로그램에서 목록을 만드는 처리 속도가 빨라집니다.

저는 어느 것이 가장 좋은 방법인지에 대해 다소 불가지론합니다. 종종 사용자 인터페이스를 디자인 할 때 다른 것을 시험해보기를 원합니다. 데이터베이스를 변경해야 응용 프로그램을 작성하는 창의적인 프로세스가 어려워집니다.

반면에 일반적으로 사용자가 응용 프로그램의 드롭 다운 상자에서 사물을 선택하면 이러한 "사물"이 "엔티티"의 훌륭한 예이며 이것이 테이블의 저장 대상입니다.

결국 응용 프로그램을 개발하는 동안 가장 편리한 것이 무엇인지 말하고 싶습니다. 마무리 단계에 가까워 질수록 이러한 것들을 별도의 테이블에 저장하는 것이 더 나은지 고려하십시오. 가장 큰 질문 중 하나는 현재 사용자가 정의 된 사용자가 없더라도 사용 된 모든 형식을 알고 싶은지 여부입니다.

+0

위대한 대답, 거의 정확하게 내가 생각하고 있었던 것이다. 나는 별도의 테이블에 형식을 저장하는 것이 더 정확한 방법 일 것이라고 생각했으나 이점은 추가 작업을할만한 가치가없는 것처럼 보였습니다. 결국 나는 DISTINCT와 함께 갔다. 감사! – ACobbs

0

사용자가 원하는대로 입력하게 해주기 때문에 두 번째 옵션으로 갈 것입니다.

새 테이블을 만들고 여기에 새로운 '형식'을 삽입하고 제품 테이블에 연결하십시오.

사용자가 입력 한 형식을 추가하는 코드를 만들 때 데이터베이스에 동일한 값이 있는지 확인하여 코드를 구별 할 필요가 없도록하십시오.

또한 각 단어의 첫 글자 upprcase 만 사용하여 일관성을 유지하십시오.

2

볼륨과 관련해서는 두 번째 옵션 (추가 테이블 + 외래 키)을 선택할 것이라고 생각합니다. 예를 들어 유사한 제품 양식을 병합하는 관리를 할 수 있기 때문입니다.

관련 문제