"데이터베이스 정규화"을 찾으십시오. 가장 극단적 인에서
, 당신은 4 개 테이블로 분할 수 :
- Product_Types : 제품 유형 (VARCHAR/CHAR), 아이디 (INT)
- 제품 : ID/생산 아이디 (INT)를, 제품 유형 (Product_Types.id에 바인딩 INT, 외래 키)
- Test_Parameters : 유형 (VARCHAR/CHAR - 압력, 온도 등), 아이디 (INT)
- TEST_SCORES : 제품 (INT, Products.id에 외래 키), 테스트 (INT, Test_Parameters.id에 대한 외래 키), 점수 (INT/적절한 것으로 보이는 모든 것), 타임 스탬프.
당신은 이론적으로 첫 번째와 세 번째 테이블없이 수행하고 대신 각 레코드에 저장된 이름을 가질 수있다 (즉, 제품 항목 : ID = 12345, 유형 = "의자"). 이런 방식으로 검색하는 데는 속도가 약간 빠르지 만 사람들이 철자를 잘못 쓰는 것에 대해서도 강력합니다 (즉, type = "chair"가 type = "chiar"인 항목을 놓친 제품에서 select *). 텍스트 이름을 계속해서 다시 저장합니다.
하나의 제품, 많은 테스트 (또는 4 개의 테이블 모두, 다 대다 : 여러 제품에 대한)의 다차원 관계에 대한 기본 모델입니다. , 많은 테스트 유형). 별도의 테이블에 각 제품에 ID가 부여 된 다음 외래 키가 있어야 각 테스트 결과를 해당 제품에 연결할 수 있습니다.
이제는 제약에 대해 이야기 해 봅시다.아마 그래서 인덱스 다음 제품 ID 및 시험 유형, "DUPLICATE KEY UPDATE ON"을 사용하십시오 모두 테스트 결과 테이블에 고유 키를 것에 던지는 대해 생각
하나 그 오래된 값은 새로운 값으로 덮어 씁니다. 그렇게하면 각 제품에 대한 각 테스트마다 하나의 결과 만있을 것입니다. 오래된 기록도 보관하려면이 단락을 무시하십시오.
당신이 분명히 놓치지 않을 점은 주어진 제품에 대해 모든 테스트가 수행되도록 요구하는 능력입니다. 그 정도는 데이터베이스 외부에서 수행되어야합니다. 모든 제품이 하나의 제품에 대해 모든 열이 채워지도록 요구하고 싶다면 모든 일에 대해 NOT NULL 제약 조건이 적용된 엄청난 통합 테이블에서 각각의 테스트에 대해 하나의 열을 사용해야합니다. 테스트 열) 테스트 결과와 객체 ID가 기능적으로 서로 종속되어 있기 때문에 (둘 다 존재하지 않아도 상관 없음)
철저한 답변 Mayhem을 가져 주셔서 감사합니다. 이것은 나를 위해 훨씬 명확하게 해줍니다. 나는 미래에 참고할 질문이 하나있다. Access에서이 프로젝트를 다시 만들려면 여전히 데이터 입력을위한 바운드 폼을 사용할 수 있습니까? 아니면 언 바운드로 만들고 단순히 SQL로 레코드를 삽입하는 것이 더 낫지 않습니까? – Pluto035
아이디어 없음 - 저는 Access를 사용한 적이 없으며 나머지 스택이 어떤 모습 인지도 모릅니다. – jfmatt