我正在使用cakephp,我需要让用户设计自己的表单(这只会在设置向导阶段完成一次,实际使用中创建了大约12个表单)。始终需要的表是用户,组和日志,设置。实际上,这是一个用户友好的数据库应用程序。
我在想创建视图并有两个实际的表来存储表单和后续数据:
Forms [id | name | structure ]
[1 | Details| {id:{type:key}q2:{type:text;validation:{select:male..}..} ]
[2 | Car | {id:{type:key};car:{type:text;validation:{select:Honda... }}]
列“结构”将包含列出字段,类型和验证规则的json或xml字符串。
Forms_data [id | form_id | survey_id | key | value ]
[1 | 1 | 1 | q1 | Male ]
[2 | 1 | 1 | q2 | 1/1/76]
[3 | 2 | 1 | Car | Honda]
[4 | 2 | 1 | Eng | Petrol]
[5 | 1 | 2 | q1 | Fem ]
[6 | 1 | 2 | q2 | 2/3/81]
[7 | 2 | 2 | Car | Ford ]
[8 | 2 | 2 | Eng | Diesel]
Forms_data表将包含表单的每个字段的数据,survey_id表示表单所涉及的主题人,被调查的一个人可以有许多关于它们的表单。键将是varchar,但值必须是最大可能数据类型的大小(例如“段落文本”)。
或者我应该让用户(通过params / sanitized等)执行“CREATE TABLE”并在数据库中创建真实的表,这样我就可以充分利用系统查询和优化,并在cakephp中获得所有的魔术功能工作
答案 0 :(得分:1)
这取决于您以后要对数据做什么以及将会有多少。 DBMS系统(如MySQL)可以非常快速地处理大量数据。您也可以以非常复杂的方式查询数据,而不是其他选择。权衡更复杂一点。我几乎总是站在数据库解决方案的一边。它为您提供最大的灵活性。