2017-09-23 1 views
0

다음과 같은 경우를 고려하십시오. 어느 것이 더 나은 접근 방법입니까?

table 1: assessment 

enter image description here

  • 이 studentID A1001은 assessment_ID했다 것을 보여줍니다 E1.
  • studentID A1002가 assessment_ID : E2를 (를) 수행 한 것을 보여줍니다.
  • assessment_ID : E1에는 5 개의 질문이 있습니다.
  • assessment_ID : E2에는 9 개의 질문이 있습니다.

학생의 대답을 저장하는 테이블이 필요합니다. 다음 중 어느 것이 더 나은 접근 방법입니까? 나는 그것의 질문 번호 (행) + 해당 답을 삽입해야합니다 enter image description here

두 표는

옵션 A를 assessment.id 참조 외래 키 역할 "REFERENCE_ID"을 가지고있다. 옵션 B : 학생들이 더 많은 질문으로 평가를 할 때마다 표에 새 열을 추가해야합니다.

하자고하자. assessment_ID : E3에 14 개의 질문이있는 경우 테이블에 row10 ~ row14 열을 추가해야합니다.

내 생각 옵션 A :이 경우 많은 레코드가 생성됩니다. 옵션 A에는 14 개의 레코드가 있고 옵션 B에는 레코드가 2 개만 있습니다.

옵션 B : 모든 평가에 9 가지 질문이 없으므로 일부 열이 낭비됩니다.

성능, 실행 속도 및 저장 공간면에서 어느 솔루션이 더 좋습니까?

감사합니다.

+1

열 이름에 숫자가 포함되어 있으면 뭔가 잘못되었습니다. 옵션 B는 대단합니다 –

+0

옵션 B는 전혀 확장되지 않습니다 ... 새로운 데이터를 가져올 때마다 열이 커집니다. 이것은 Excel에서도 좋은 옵션이 아닙니다. –

+0

확실히 옵션 A. 당신은 결코 당신의 가치에 수평이되어서는 안됩니다.나중에 40 개의 질문으로 시험을 치르면 어떨까요? A와 함께 가라. 적절한 인덱스를 정의하는 것을 잊지 마라. –

답변

1

짧은 버전 : 옵션 A가 가장 적합합니다. 입니다. 이유에 대한 자세한 내용은 explanation입니다.

중간 버전 : 옵션 A는 더 많은 공간을 차지합니다. 실행 속도는 실행중인 쿼리에 따라 다릅니다.

긴 버전 : 새 평가판을 추가 할 때 옵션 A에서 코드를 변경할 필요가 없습니다. 질문을 정의하고 나간다. (나는 또한 아마도 질문을 포함하는 "질문"이라는 표를 추가 할 것입니다.)

연고에서 파리 : 옵션 A가 고통스럽게 만드는 ONE 쿼리는 열에 답변을 표시하려는 것입니다. 왜냐하면 응답 테이블을 피벗하는 코드가 있어야하기 때문입니다.

샷 나누기 : "프로그램을 단순하게 만드는 데이터 표현을 선택하십시오." (Elements of Programming Style, 규칙 12). 따라서 데이터베이스를 설계하는 방법을 생각할 때 데이터베이스를 사용할 방법을 생각하고 코드 작성을 쉽게하는 디자인을 선택하십시오.

+0

고마워요! 그것은 나를 위해 매우 도움이되었습니다. – ethan17

관련 문제