0

웹 사이트 섹션은 사용자에게 자신에 관한 객관식 질문 ("프로필")을 요청합니다. 웹 사이트의이 부분은 자주 열리고 때로는 업데이트됩니다. 웹 사이트는 많은 양의 트래픽을 발생시킬 것으로 예상되므로 성능 문제를 해결하기 위해 몇 가지 사항을 고려하고 있습니다. SQL Server 비정규 화 질문 - 사용자 데이터를 1,3 또는 21 개의 테이블에 저장 하시겠습니까?

제가 DB에이를 저장하기 위해 볼 수있는 3 가지 방법

은 다음과 같습니다

  1. 는 각 질문에 대한 1 개 테이블을 만들고, 각각의 테이블로, 프로파일 데이터를 저장하는 QuestionID 및 응답, 다음 CustomerInfo 테이블이 있습니다 질문에 매핑 된 외래 키.

  2. Question, Question_Type 및 Answers 테이블. 모든 것을이 구조에 채워라. 내 관심사는 특히 프로필을 업데이트하는 데 필요한 20 개 정도의 삽입입니다. 트래픽 양이 많을 때 실적이 좋을까요?

  3. 비정규 화 된 단일 테이블, 질문 당 하나의 필드, HTML 및/또는 C# 개체의 응답 코드를 하드 코딩하십시오.

나는 2 또는 3쪽으로 기울어 져있다. 가장 좋은 해결책은 무엇이라고 생각하십니까?

답변

5

나는 다음과 같은 테이블을 만들 것입니다 : 당신은 하나의 문에서 삽입을 수행하여 부하를 최소화 할 수

Survey (PK:SurveyID) 
Question (PK:QuestionID, FK:SurveyID) 
QuestionAnswer (PK:QuestionAnswerID, FK:QuestionID) 
QuestionResponse (PK:QuestionResponseID, FK:QuestionAnswerID, FK:UserID) 

, 예컨대 :

insert into QuestionResponse 
(QuestionAnswerID, UserID) 
select 23, 3 
union all 
select 72, 3 
union all 
select 488, 3