一个问卷有 500个题目,每个题目都有五个选项,有些ABCDE都为常规选项,有些题目的E选项为其他,需要用户填写。如下:
1.你的职称
A.111
B.222
C.333
D.444
E.555
2.你的学校
A.111
B.222
C.333
D.444
E.其他(请注明:_________)
这个问卷需要
1、能统计每个题目的每个选项有多少人选了。
2、能查看每个用户的每个题的选择(要打印问卷出来)
请教写这样的数据库该怎么设计合理,方便日后select?
最最笨的办法(我第一反应)就是一个表搞定含有500多个字段
ID userid username timu1 timu2 timu3 …… timu500
这样字段也太多了,而且有些题目选的其他,注明的内容字段还没算。
请教大侠们,帮帮忙。
回复讨论(解决方案)
不需要500字段,一个就够了,用格式化数据保存就可以了
不过最重要还是统计需要,怎样方便统计就怎样设计表
mysql 限定字段数 所以实际可用的字段数要综合考虑字段宽度、编码类型等来决定
我以前处理这个问题是考虑这是否是一张问卷的问题
一张问卷,就是说题目要全部读出,当然有可能只显示部分(分页、跳转题之类操作),这样的话既然要全部读出,没必要分什么字段,用json、xml什么的格式化一下就可以了,不要把工作负担留给数据库
如果不是一张问卷,而是一个题库,就是说在生成问卷的时候要从这些题选择若干条组成一张问卷,这样的话也不是字段问题,而是记录问题,每条题作为一个记录
另外,搞调查(考试也是类似性质),最重要是答卷而不是问卷,问卷部分只要能读出,能给答卷完整参照就足够了,当然有些问卷的逻辑很复杂(跳题或者题目之间的选项有关联等等),那是另话
我的建议是花时间在答卷的建表上,做到方便统计,问卷一旦形成,基本都不怎么增删改的,答卷如果要详细分析的话,涉及到统计学的知识,单一个“交叉分析”就可能推翻原来的答卷表设计方案
我以前处理这个问题是考虑这是否是一张问卷的问题
一张问卷,就是说题目要全部读出,当然有可能只显示部分(分页、跳转题之类操作),这样的话既然要全部读出,没必要分什么字段,用json、xml什么的格式化一下就可以了,不要把工作负担留给数据库
如果不是一张问卷,而是一个题库,就是说在生成问卷的时候要从这些题选择若干条组成一张问卷,这样的话也不是字段问题,而是记录问题……
谢谢,请问为了方便统计的话应该怎么设计数据库合理呢?我是新手,大大多指教啊。
我的建议是只要统计方法不同,就分开不同的表
例如调查A和调查B用不同的方法统计,就分开两表
如果统计方法相同,就可以放在同一张表内,加个字段区分AB
如果统计的方法的差异不涉及数据库读取,例如都是全部读到数组再使用不同的方法,这样也没必要分表
我以前就习惯问卷、答卷、逻辑各用一个表

TomakePHPapplicationsfaster,followthesesteps:1)UseOpcodeCachinglikeOPcachetostoreprecompiledscriptbytecode.2)MinimizeDatabaseQueriesbyusingquerycachingandefficientindexing.3)LeveragePHP7 Featuresforbettercodeefficiency.4)ImplementCachingStrategiessuc

ToimprovePHPapplicationspeed,followthesesteps:1)EnableopcodecachingwithAPCutoreducescriptexecutiontime.2)ImplementdatabasequerycachingusingPDOtominimizedatabasehits.3)UseHTTP/2tomultiplexrequestsandreduceconnectionoverhead.4)Limitsessionusagebyclosin

Dependency injection (DI) significantly improves the testability of PHP code by explicitly transitive dependencies. 1) DI decoupling classes and specific implementations make testing and maintenance more flexible. 2) Among the three types, the constructor injects explicit expression dependencies to keep the state consistent. 3) Use DI containers to manage complex dependencies to improve code quality and development efficiency.

DatabasequeryoptimizationinPHPinvolvesseveralstrategiestoenhanceperformance.1)Selectonlynecessarycolumnstoreducedatatransfer.2)Useindexingtospeedupdataretrieval.3)Implementquerycachingtostoreresultsoffrequentqueries.4)Utilizepreparedstatementsforeffi

PHPisusedforsendingemailsduetoitsbuilt-inmail()functionandsupportivelibrarieslikePHPMailerandSwiftMailer.1)Usethemail()functionforbasicemails,butithaslimitations.2)EmployPHPMailerforadvancedfeatureslikeHTMLemailsandattachments.3)Improvedeliverability

PHP performance bottlenecks can be solved through the following steps: 1) Use Xdebug or Blackfire for performance analysis to find out the problem; 2) Optimize database queries and use caches, such as APCu; 3) Use efficient functions such as array_filter to optimize array operations; 4) Configure OPcache for bytecode cache; 5) Optimize the front-end, such as reducing HTTP requests and optimizing pictures; 6) Continuously monitor and optimize performance. Through these methods, the performance of PHP applications can be significantly improved.

DependencyInjection(DI)inPHPisadesignpatternthatmanagesandreducesclassdependencies,enhancingcodemodularity,testability,andmaintainability.Itallowspassingdependencieslikedatabaseconnectionstoclassesasparameters,facilitatingeasiertestingandscalability.

CachingimprovesPHPperformancebystoringresultsofcomputationsorqueriesforquickretrieval,reducingserverloadandenhancingresponsetimes.Effectivestrategiesinclude:1)Opcodecaching,whichstorescompiledPHPscriptsinmemorytoskipcompilation;2)DatacachingusingMemc


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

SublimeText3 Linux new version
SublimeText3 Linux latest version
