2012-11-01 3 views
0

저는 10 개 제품을 조립하는 제조 공장에서 일합니다. 각 제품은 기능면에서 유사하지만 테스트 할 때 다른 매개 변수가 필요합니다. 원래는 각 유닛에 대한 테스트 결과를 저장하기 위해 Access 데이터베이스를 만들었습니다. 각 제품에 대해 하나의 표를 사용하여 데이터베이스를 배치했습니다. 이 테이블은 테스트 매개 변수 (압력, 온도, 합격/불합격 정보 등)와 함께 프로덕션 ID를 저장합니다.이 접근 방법은 좋지 않지만 액세스의 바인딩 된 양식을 사용할 수있는 유일한 방법 인 것처럼 느껴집니다. 쉬운 데이터 입력. 문제는 이제 새로운 테스트 매개 변수를 추가해야 할 때마다 테이블 디자인과 폼을 변경해야한다는 것입니다.테스트 결과 기록 용 데이터베이스 설계

곧 mySQL에서이 시스템을 재현 할 수있게 될 것이며이 테스트 결과를 저장하는 더 좋은 방법이 있기를 바라고 있습니다. 모든 통찰력은 매우 유용 할 것입니다.

감사합니다.

답변

0

"데이터베이스 정규화"을 찾으십시오. 가장 극단적 인에서

, 당신은 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가 기능적으로 서로 종속되어 있기 때문에 (둘 다 존재하지 않아도 상관 없음)

+0

철저한 답변 Mayhem을 가져 주셔서 감사합니다. 이것은 나를 위해 훨씬 명확하게 해줍니다. 나는 미래에 참고할 질문이 하나있다. Access에서이 프로젝트를 다시 만들려면 여전히 데이터 입력을위한 바운드 폼을 사용할 수 있습니까? 아니면 언 바운드로 만들고 단순히 SQL로 레코드를 삽입하는 것이 더 낫지 않습니까? – Pluto035

+0

아이디어 없음 - 저는 Access를 사용한 적이 없으며 나머지 스택이 어떤 모습 인지도 모릅니다. – jfmatt

0

고유 ID/제품으로 제품 표를 만듭니다. 그런 다음 고유 테스트 ID와 해당 제품에 대한 열이있는 테스트 테이블을 만듭니다. 이들을 결합하여 어떤 제품에 어떤 테스트가 적용되는지 확인하십시오. 언제든지 새 테스트를 추가 할 수 있습니다. 당신이 등을 테스트 역사, 결과,

0

난 당신이 많은 테이블에 많은을 사용할 필요보고 생각을 저장하려면

은 또한 당신은 '테스트 버전'열을 가질 수 있습니다.

그래서 제품을 저장하는 하나의 테이블, 각 고유 테스트를 저장하는 테이블 및 제품 A를 필요한 많은 테스트에 연결하는 세 번째 M2M 테이블. M2M은 또한 테스트 결과를 (일반적으로) 저장할 수 있습니다.

0
내가 사용하는 것이

(이상) 다음 표 :

제품

ID, 이름, TestSchedule

분석 일예

ID, 이름, 설명, 지시

테스트, 예를 들어 1 켈빈 내결함성 정상 작동 매개 변수와 온도의 측정 제품 p의 온도 측정, 예상 결과는 300-360 Kelvin입니다. 배치 X, 예를 들어 대

이드, 제품 일련 번호, AnalysisId, LOWERLIMIT, UPPERLIMIT

TestResult 테스트 결과 342 켈빈

이드, 일괄 ID, 시험 ID, 결과적으로, 상태 (통과/실패)

Analysis 테이블과 Test 테이블 정규화 모두를 갖는 이유를 통과한다. analysis은 메소드를 지정하는 일반 사항입니다. test은 특정 제품에 대해 분석을 수행 할 때 허용되는 한도를 지정합니다.

+0

추가 정보를 제공해 주셔서 감사합니다! – Pluto035