설문 조사를위한 데이터베이스 설계

답변이 데이터베이스에 저장된 설문 조사를 작성해야합니다. 데이터베이스, 특히 필요한 테이블에서이를 구현하는 가장 좋은 방법이 무엇인지 궁금합니다. 설문 조사에는 여러 유형의 질문이 포함되어 있습니다. 예를 들면 다음과 같습니다. 설명을위한 텍스트 필드, 객관식 질문 및 둘 이상의 답변을 포함 할 수있는 질문 (예 : 해당되는 모든 항목 확인).

두 가지 가능한 솔루션을 생각해 냈습니다.

  1. 각 설문 제출에 대한 답변이 포함 된 거대한 테이블을 만듭니다. 각 열은 설문 조사의 답변에 해당합니다. 즉, SurveyID, Answer1, Answer2, Answer3

    이 설문 조사에 많은 질문이 있기 때문에 이것이 최선의 방법이라고 생각하지 않으며 설문 조사가 변경 될 경우 매우 유연하지 않은 것으로 보입니다.

  2. 내가 생각한 다른 것은 질문 테이블과 답변 테이블을 만드는 것이 었습니다. 질문 테이블에는 설문에 대한 모든 질문이 포함됩니다. 답변 표에는 설문 조사의 개별 답변이 포함되며 각 행은 질문에 연결됩니다.

    간단한 예 :

    tblSurvey : SurveyID

    tblQuestion : QuestionID, SurveyID , QuestionType, 질문

    tblAnswer : AnswerID, UserID QuestionID , 대답

    tblUser : 사용자 ID, 사용자 이름

    이것에 대한 나의 문제는 답변 테이블이 상당히 거대하게 만드는 많은 답변이있을 수 있다는 것입니다. 성능면에서 그렇게 큰지 잘 모르겠습니다.

나는 어떤 아이디어 나 제안에 감사드립니다.

 

모델 # 2는 훌륭하지만 질문과 사전 답변 (제공된 답변)을 저장하고 다른 설문 조사에서 재사용 할 수있는 더 복잡한 모델을 살펴볼 수 있습니다.

-한 설문 조사에는 많은 질문이있을 수 있습니다. 하나의 질문은 많은 설문 조사에서 (재) 사용될 수 있습니다.
-많은 질문에 대해 하나의 (사전 제작 된) 답변을 제공 할 수 있습니다. 하나의 질문에는 많은 답변이 제공 될 수 있습니다. 질문은 다른 설문 조사에서 다른 답변을 제공 할 수 있습니다. 설문 조사마다 다른 질문에 대한 답변을 제공 할 수 있습니다. 기본 "기타"답변이 있습니다. 사람이 다른 것을 선택하면 답변이 Answer.OtherText에 기록됩니다.
-한 사람은 많은 설문 조사에 참여할 수 있으며 한 사람은 설문 조사의 특정 질문에 한 번만 답변 할 수 있습니다.
 

survey_model_02

 113
 

내 디자인은 아래와 같습니다.

최신 작성 스크립트는 https://Gist.github.com/durrantm/1e618164fd4acf91e372 에 있습니다.

스크립트와 mysql workbench.mwb 파일은
https://github.com/durrantm/surveyenter image description here

 49
Michael Durrant

확실히 옵션 # 2, 또한 현재 스키마를 감독 할 수 있다고 생각하면 다른 테이블을 원할 수 있습니다.

+-----------+
| tblSurvey |
|-----------|
| SurveyId  |
+-----------+

+--------------+
| tblQuestion  |
|--------------|
| QuestionID   |
| SurveyID     |
| QuestionType |
| Question     |
+--------------+

+--------------+
| tblAnswer    |
|--------------|
| AnswerID     |
| QuestionID   |
| Answer       |
+--------------+

+------------------+
| tblUsersAnswer   |
|------------------|
| UserAnswerID     |
| AnswerID         |
| UserID           |
| Response         |
+------------------+

+-----------+
| tblUser   |
|-----------|
| UserID    |
| UserName  |
+-----------+

각 질문에는 아마도 사용자가 선택할 수있는 정해진 수의 답변이있을 것이며 실제 답변은 다른 표에서 추적 될 것입니다.

데이터베이스는 많은 데이터를 저장하도록 설계되었으며 대부분 확장 성이 뛰어납니다. 더 이상 공간을 절약하기 위해 더 적은 일반 형식 을 실제로 사용할 필요는 없습니다.

 17
tplaner

일반적으로 사용자가 변경할 수있는 내용 (예 : 설문 조사에 질문 추가)을 기반으로 스키마를 수정하는 것은 상당히 냄새 나는 것으로 간주해야합니다. 특히 많은 양의 데이터를 처리 할 때 적절할 수있는 경우가 있지만 다이빙하기 전에 어떤 정보가 나오는지 알고 있습니다. 각 설문 조사에 대해 "응답"표만 있으면 질문을 추가하거나 제거하는 데 많은 비용이 소요될 수 있습니다 질문에 무관하게 분석하는 것은 매우 어렵습니다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

두 번째 접근 방식이 가장 좋다고 생각하지만 규모가 크게 우려되는 경우 과거에 저에게 도움이 된 것은 하이브리드 접근 방식입니다.

  1. 2에서 설명한대로 질문 당 응답을 저장하기위한 자세한 응답 테이블을 작성하십시오.이 데이터는 일반적으로 애플리케이션에서 직접 쿼리되지 않지만보고 테이블에 대한 요약 데이터를 생성하는 데 사용됩니다. 이 데이터에 대해 보관 또는 정리 형식을 구현하고 싶을 수도 있습니다.
  2. 필요한 경우 1에서 응답 테이블을 작성하십시오. 사용자가 결과에 대한 간단한 표를보고 싶을 때마다 사용할 수 있습니다.
  3. 보고 목적으로 수행해야하는 모든 분석의 경우 1의 데이터를 기반으로 추가 요약 데이터를 작성하도록 작업을 예약하십시오.

이것은 구현하기 위해 훨씬 더 많은 작업 이므로이 테이블이 대규모의 우려에 부딪 칠 것이라는 것을 확신하지 않는 한 실제로 조언하지는 않습니다.

 3
Ryan Brunner

2는 괜찮아 보입니다.

열이 4 개만있는 테이블의 경우 수백만 개의 행이 있어도 문제가되지 않습니다. 물론 이것은 사용중인 데이터베이스에 따라 달라질 수 있습니다. SQL Server와 같은 것이면 문제가되지 않습니다.

TblAnswer 테이블의 QuestionID 필드에 색인을 작성하려고합니다.

물론, 사용중인 데이터베이스와 예상 볼륨을 지정해야합니다.

 

두 번째 방법이 가장 좋습니다.

더 표준화하려면 질문 유형에 대한 테이블을 만들 수 있습니다.

해야 할 간단한 일은 :

  • 데이터베이스를 배치하고 기본값으로 모두 C가 아닌 자체 디스크에 로그온
  • 데이터베이스가 커지는 동안 일시 정지하지 않도록 필요한만큼 데이터베이스를 작성하십시오.

우리는 SQL Server Table에 수천만 개의 행을 가진 로그 테이블을 가지고 있습니다.

 1
Shiraz Bhaiji

간단한 설문 조사를 위해 매우 완벽하게 보입니다. 고객이 텍스트 상자를 통해 의견을 제공 할 수있는 '공개 가치'에 대한 표를 추가하는 것을 잊지 마십시오. 외래 키를 사용하여 해당 테이블을 답변에 연결하고 성능을 위해 모든 관계형 열에 인덱스를 배치하십시오.

 0
Ben

2 번이 맞습니다. 성능 문제가 감지 될 때까지는 정확한 설계를 사용하십시오. 대부분의 RDBMS는 좁지 만 매우 긴 테이블에는 문제가 없습니다.

 0
Larry Lustig

자체적으로 큰 응답 테이블을 갖는 것은 문제가되지 않습니다. 인덱스와 제약 조건이 잘 정의되어 있으면 괜찮을 것입니다. 두 번째 스키마는 나에게 좋아 보인다.

 0
Dave Swersky

적절한 색인이 제공되면 두 번째 솔루션이 정규화되어 기존 관계형 데이터베이스 시스템에 적합합니다.

나는 얼마나 큰지 알지 못하지만 문제없이 몇 백만의 대답을 유지해야합니다.

 0
 

 

[출처] https://www.it-swarm.dev/ko/sql/%EC%84%A4%EB%AC%B8-%EC%A1%B0%EC%82%AC%EB%A5%BC%EC%9C%84%ED%95%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%84%A4%EA%B3%84/968974555/

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
공지 오라클 기본 샘플 데이터베이스 졸리운_곰 2014.01.02 86191
공지 [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE 가을의 곰을... 2013.02.10 78669
공지 [G_SQL] Sample Database 가을의 곰을... 2012.05.20 95405
72 [R library] library(XML) # install.packages("XML") 인스톨 에러 졸리운_곰 2023.05.06 1177
71 [R 데이터 분석] Titanic: Machine Learning from Disaster (타이타닉 생존 예측) file 졸리운_곰 2023.04.29 1178
70 [R 데이터 분석] R 유명한 패키지 정리 졸리운_곰 2023.04.24 1905
69 [R 데이터 분석] Shiny : 대시보드 배포하기 file 졸리운_곰 2023.03.19 1414
68 [stat(통계) R 언어] 유명하고 많이 사용하는 R 패키지 정리 졸리운_곰 2022.04.19 1296
67 [R 데이터 분석] anaconda에서 R 사용하기 file 졸리운_곰 2022.01.16 1307
66 [R 데이터 분석] Using C/C++ in R , R언어에서 C/C++ 사용하기 졸리운_곰 2021.11.21 1647
65 [데이터 통계분석 R언어] Shiny 웹앱 개발 졸리운_곰 2021.02.14 1389
64 How to Deploy Interactive R Apps with Shiny Server file 졸리운_곰 2021.02.13 1213
63 [통계, 데이터분석 언어 R] R Shiny Server를 사용해 보자. 졸리운_곰 2021.02.13 1415
62 통계분석툴 R & MongoDB 연동 방법 file 졸리운_곰 2020.12.12 1822
61 Reading OECD.Stat into R file 졸리운_곰 2019.04.04 1871
60 Scrape OECD Data by R lang : R언어로 OECD.net 데이터 가져오기 졸리운_곰 2019.04.04 1485
59 윈도우에서 통계 분석 프로그램 R Project 활용 방안 file 졸리운_곰 2018.12.24 1699
58 C#과 R을 연동하기 file 졸리운_곰 2018.12.24 1555
57 Use R in C# : C#에서 R 사용 졸리운_곰 2018.12.24 1549
56 R 언어_ 범주형 자료(factor) 함수 사용 file 졸리운_곰 2018.12.22 1665
55 R - 도수분포표/교차표, table( )함수 file 졸리운_곰 2018.12.22 1429
54 주피터 노트북에 R 커널 설치하기 + 아나콘다 설치 file 졸리운_곰 2018.12.21 2312
53 R기초입문_r_book_mac_v3.pdf file 졸리운_곰 2018.12.20 1590
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED