테이블 디자인 시나리오가 있으며 비 DBA 유형으로 더 확장 가능한 의견이 필요합니다.
작은 동네 (200 채의 주택)부터 시작하여 5000000 개 이상의 주택으로 자라는 대도시 지역의 주택에 대한 정보를 기록하라는 메시지가 표시됩니다.
기본 정보를 저장해야합니다 : ID # (고유 인덱스로 사용할 수있는 고유 로트 번호), Addr, City, State, Zip. 훌륭하고 간단한 테이블이 처리합니다.
그러나 매년 모든 주택에 대한 추가 정보를 기록하라는 요청을 받게되며 매년 정보가 변경됩니다. 예를 들어 첫해에는 소유자의 성 및 평방 피트를 기록하라는 메시지가 표시됩니다. 두 번째 해에는 성을 유지하라는 요청을 받지만 제곱 피트를 버리고 대신 소유자 이름을 수집하기 시작합니다.
마지막으로 매년 추가 열 수가 변경됩니다. 2 개의 추가 열로 시작한 다음 내년에 6으로 이동 한 다음 다시 2로 내려갈 수 있습니다.
따라서 한 가지 테이블 접근 방식은 사용자 정의 정보를 하우스 테이블의 열로 추가하여 하나의 테이블 만 사용하는 것입니다.
그러나 누군가 누군가 이것을 위해 테이블을 배치 한 상황이 있습니다.
"집 테이블"열 : ID, 주소, 도시, 주, 우편 번호-집당 한 행
ID Addr City State Zip
-------------------------------------------
1 10 Maple Street Boston MA 11203
2 144 South Street Chelmsford MA 11304
3 1 Main Avenue Lowell MA 11280
"맞춤 정보 테이블"열 : ID, 이름, 값-다음과 같은 테이블 :
ID Name Value
1 Last Name Smith
2 Last Name Harrison
3 Last Name Markey
1 Square Footage 1200
2 Square Footage 1930
3 Square Footage
따라서 각 개별 주택 기록에 대해 여러 행이 있습니다. 매년 선택적 정보가 필요한 경우이 테이블은 문자 그대로 다시 작성되므로 내년에는 다음과 같이 보일 수 있습니다.
1 Last Name Smith
2 Last Name Harrison
3 Last Name Markey
1 First Name John
2 First Name Harry
3 First Name Jim
결국 당신은 10 만 개의 행을 모으고 1 년 동안 10 개의 추가 정보가 있습니다. 두 번째 표는 현재 1,000,000 행의 정보이며, 그 중 다수는 중복 (설명) 정보를 가지고 있습니다. 전체 데이터베이스 요구 사항은 사람들이 하루에 수천 번 하우스 행 정보 + 관련 사용자 정의 필드 값을 가져와야한다는 것입니다.
그래서 내 질문 : 대신 다음 중 하나를 수행하는 것이 나쁜 (또는 끔찍한) 연습입니까?
A) 최대 맞춤 열 수 ( '1'~ '10'이라고 함)를 추측하여 하우스 테이블을 배치하고 해당 맞춤 값을 하우스 행에 바로 삽입합니다.
또는
B) 커스텀 정보를 하우스 테이블에 저장하십시오. 그러나 요구 사항이 변경 될 때마다 커스텀 정보에 필요한 열 수만으로 하우스 테이블을 다시 작성하십시오. 선택적 필드가 필요할 수 있습니까?
감사합니다. 이것이 의미가 있기를 바랍니다.